현대적 앱 개발 - 머신 러닝 및 인공 지능

데이터 과학자 및 머신 러닝 엔지니어는 인프라 프로비저닝, 업그레이드, 패치 적용, 보호에 시간을 투자할 필요가 없습니다. 이들은 업무에 영향을 미치는 모델을 구축, 교육, 배포하는 데 시간을 허비하고 싶습니다. 머신 러닝 플랫폼은 완벽하게 관리되어야 하며 모델 개발 라이프사이클의 모든 단계(빌드, 교육, 배포 및 모니터링)를 수행할 수 있도록 해야 합니다. 또한 머신 러닝 플랫폼이 특정 데이터 저장소에 종속되지 않아야 합니다. 대신 소스 독립적이어야 하며 데이터 과학자들이 서로 다른 클라우드의 다양한 데이터 저장소에 접속하도록 해야 합니다.

대부분의 최신 머신 러닝 툴은 오픈 소스이며 Python으로 작성됩니다. 따라서 머신 러닝 플랫폼은 오픈 소스 프레임워크와 Python에 대한 기본 지원을 제공해야 합니다. 또한 사용자는 자체 라이브러리를 설치하거나 이미 설치된 라이브러리를 업그레이드하여 머신 러닝 환경을 사용자 정의할 수 있습니다. 이 플랫폼을 통해 데이터 과학자들은 다양한 컴퓨트 리소스에서 ETL(추출, 변환, 로드)을 확장하거나 수직 또는 수평으로 훈련하는 동시에 정형, 비정형 또는 반정형 데이터에 대해 모델을 교육할 수 있습니다.

마지막으로, 머신 러닝 플랫폼은 최소한의 마찰을 통해(즉, 간단한 REST 호출을 통해) 실시간 소비를 위해 모델을 간편하게 배포하는 동시에 배포된 모델의 계보를 보존하여 감사 및 재현할 수 있도록 해야 합니다.

이 문서에서는 머신 러닝 플랫폼 및 최적의 구현 경로를 생성하는 것과 관련된 설계 원칙을 제공합니다. 이 패턴을 사용하여 데이터 과학자의 요구사항에 맞는 머신 러닝 플랫폼을 생성할 수 있습니다.

설계 원칙

이 아키텍처는 다음과 같은 방식으로 최신 앱 개발 원칙을 구현합니다.

  • 원칙: 경량 오픈 소스 프레임워크 및 성숙한 프로그래밍 언어 사용

    Python 가상 환경 또는 Docker 이미지 대신 Conda 환경을 사용하십시오. 오라클은 특정 활용 사례를 해결하도록 선택된 Python 라이브러리 컬렉션을 포함하는 선별된 Data Science conda 환경을 제공합니다. Conda 환경은 일반적으로 Python에서 적절한 수준의 분리를 제공하며, 동일한 노트북 환경이나 일괄 처리 작업에서 여러 환경을 실행할 수 있도록 함으로써 유연성을 제공하고 Docker 이미지보다 쉽게 구축할 수 있도록 합니다. Conda 환경은 간단한 아카이브(gzip 및 zip)이기 때문에 쉽게 익스포트하고 임포트할 수 있습니다.

    바로 사용할 수 있는 Conda 환경으로 시작하십시오. 이러한 환경은 포함된 패키지가 사용 가능한 최신 버전을 반영하도록 정기적으로 업그레이드됩니다. 각 환경에는 설명서와 코드 예제가 포함되어 있습니다. 이 환경은 Python 3.6 이상에서 머신 러닝 모델을 구축, 교육 및 배포하는 데 사용할 수 있습니다. 이러한 환경을 채택하여 서로 다른 아키텍처 구성 요소 간의 호환성을 보장합니다.

  • 원칙: API를 통해 통신하는 서비스로 앱 개발

    Data Science의 모델 배포 기능을 채택하여 모델 카탈로그의 모델을 다른 앱에서 사용할 수 있는 확장 가능한 HTTP 끝점으로 배포합니다. 모델 교육 환경에 배포 환경과 동일한 타사 종속성이 포함되어 있는지 확인하는 것은 어려울 수 있습니다. Data Science 모델 배포는 HTTP 엔드포인트 뒤에 모델을 실행하기 위한 적합한 Conda 환경을 풀링하여 이 문제를 해결합니다. 또한 모델 배포는 OCI(Oracle Cloud Infrastructure) IAM(Identity and Access Management) 인증 및 권한 부여를 제공하기 때문에 자체 사용자와 액세스 관리 프로토콜을 구축하고 구성할 필요가 없습니다.

    Oracle Functions를 통해 머신 러닝 모델을 배포할 수 있는 대안으로, API 게이트웨이에 대한 백엔드로 사용할 수 있습니다. 이 옵션은 특히 API를 정의하거나 OAuth 또는 기본 인증과 같은 다른 권한 부여 프로토콜을 사용할 때 유연성을 제공합니다. 그러나 더 많은 작업이 필요하며 자동화가 덜 가능하며 사용자 오류가 발생할 가능성이 높습니다. Oracle Functions를 사용하려면 자체 Docker 이미지를 구축하여 필요한 모든 종속성 및 Python 런타임 버전이 교육 환경과 일치하는지 확인해야 합니다. 대부분의 데이터 과학 팀은 이 옵션을 사용하지 않아야 합니다.

  • 원칙: 구축, 테스트 및 배포 자동화

    DevOps은 머신 러닝의 소프트웨어 개발입니다. 즉, 운영 환경에서 모델을 구축, 테스트, 평가, 배포 및 모니터링하는 과정에서 중앙 집중화된 일련의 프로세스와 자동화입니다. 데이터 과학의 직무와 모델 배포를 통해 반복 가능하고 감사 가능하며 재현 가능한 패턴의 사용을 선호합니다. 테스트 작성, 실행 및 자동화가 더 어려운 노트북 세션에서 직접 모델 교육 및 배포를 방지합니다. 데이터를 준비하고 모델을 교육하고 테스트를 정의하는 모든 코드가 버전 제어인지 확인합니다. OCI DevOps 서비스를 통해 구축 및 배포 파이프라인을 실행하거나 Data Science의 작업에서 직접 실행할 수 있습니다. 모델 카탈로그 아티팩트 상용 코드에 포함된 일련의 모델 검사 테스트를 실행합니다. 성공적으로 실행되면 이러한 테스트는 모델을 운용 환경에 배치할 때 발생하는 오류 수를 최소화합니다.

  • 원칙: 완전 관리형 서비스를 사용하여 애플리케이션 개발, 런타임 및 데이터 관리 전반에서 복잡성 해소

    데이터 과학자가 OCI 데이터 카탈로그를 통해 데이터 자산을 문서화하거나, OCI 데이터 플로우를 통해 대규모 데이터 처리 작업을 수행하거나, Data Science를 통해 머신 러닝 모델을 구축, 추세 분석 및 배포하는 경우 해당 모든 솔루션이 완전히 관리됩니다. Dell은 이러한 환경의 프로비저닝과 패치, 그리고 보안을 지원합니다. 완전하게 관리되는 솔루션은 데이터 과학자 팀에 대한 운영 부담을 크게 줄여주며, 인프라 관리가 아니라 모델을 교육 및 구축해야 한다는 목표를 가지고 있습니다. 우수한 머신 러닝 플랫폼은 추가 구성 없이 다양한 인프라 제공 서비스(CPU, GPU, 유연한 구성)를 제공합니다.

  • 원칙: 계좌(계약)의 엔드 투 엔드 모니터링 및 추적

    모든 작업 로드에는 OCI 모니터링 서비스를 통해 내보낸 기본 상태 측정 단위가 있어야 합니다. 사용자는 경보에 대한 사용자정의 측정항목 임계값을 정의할 수 있으며 제공된 임계값에 도달하면 통지를 받거나 작업을 수행할 수 있습니다. 따라서 작업, 노트북 세션 또는 모델 배포의 작동 상태를 모니터링할 수 있습니다.

    사용자가 작업 및 모델 배치에서 OCI 로깅 서비스로 사용자정의 로그를 내보낼 수 있도록 합니다. 대부분의 경우 데이터 과학자는 작업에서 실행되는 프로세스(예: 교육 반복 또는 오프라인 검증 점수)를 모니터링하거나 모델 배포로부터 기능 벡터 또는 모델 예측을 캡처하려고 합니다. 공통 패턴입니다. OCI 로깅 서비스에 액세스할 수 있는지 확인하고 OCI Logging Analytics 서비스를 통해 간단한 탐색 분석을 수행합니다.

  • 원칙: 보안 앱 및 데이터에 대한 심층적인 다계층 접근 방법 구현

    우수한 머신 러닝 플랫폼은 데이터 과학자의 접근을 해당 업무를 수행하는 데 필요한 자원으로만 제한합니다. 데이터 과학자 그룹에 대한 최소 권한 원칙을 따릅니다. 또한 다른 리소스 인증 또는 권한 부여를 위해 사용자 주체 대신 리소스 주체를 사용합니다. 이 연습에서는 사용자가 노트북 세션 또는 작업 내에 자신의 주도자 자격 증명을 삽입하지 못하도록 합니다.

    모든 사용자가 OCI Vault에 액세스할 수 있고 타사 데이터 소스에 액세스하기 위한 해당 인증서가 Vault에 저장되고 암호화되었는지 확인합니다. 특히 수첩 세션은 생성한 사용자만 액세스할 수 있어야 합니다. 노트북 세션 및 작업에 대한 액세스 권한을 해당 리소스 작성자에만 부여하도록 액세스 정책을 구성하십시오. 이렇게 하면 여러 사용자가 동일한 노트북 환경에 액세스하고 개인 키를 공유하며 동일한 코드를 덮어쓰지 못하게 됩니다. 언제 어디서나 공용 인터넷으로 송신 액세스를 제한합니다. 노트북 세션 및 작업을 실행하기 위한 보조 VNIC(가상 클라우드 네트워크 및 서브넷 선택)를 구성 및 선택하고, 사용자가 비보안 사이트에서 데이터 세트 또는 라이브러리를 다운로드하지 못하도록 방지합니다.

구조

이 의견이 있는 구조를 기반으로 배치를 사용하여 설계 원칙을 구현할 수 있습니다.

다음은 maf_ai_ml_design_pattern.png에 대한 설명입니다.
maf_ai_ml_design_pattern.png에 대한 설명

구조에는 다음과 같은 구성 요소가 있습니다.

  • Data Integration 서비스

    Oracle Cloud Infrastructure Data Integration은 전담 관리 멀티테넌트 서버리스 네이티브 클라우드 서비스로, 다양한 소스의 데이터 수집, 정리, 변환, 재매핑 등 일반적인 ETL 작업을 수행하고, 해당 데이터를 OCI의 대상 데이터 소스로 효율적으로 로드할 수 있습니다.

    다양한 소스(예: Amazon Redshift, Azure SQL Database 및 Amazon S3)에서 오브젝트 스토리지, Autonomous Data Warehouse로의 데이터 수집은 이 프로세스의 첫 단계입니다.

  • 객체 스토리지 및 Autonomous Database

    객체 스토리지 및 Autonomous Data Warehouse는 머신 러닝 모델 학습에 사용되는 기록 데이터에 대한 스토리지 계층을 제공합니다. 오브젝트 스토리지는 데이터 플로우를 사용하여 커스터마이징 데이터 처리 및 ETL 작업을 수행하기 위한 소스 및 대상 데이터 스토리지 레이어로 모두 사용할 수 있습니다.

  • OCI 데이터 카탈로그

    Autonomous Data Warehouse의 여러 테이블로 구성된 데이터 레이크, 오브젝트 스토리지의 버킷, 수천 개의 데이터 자산이 급격히 사라지게 됩니다. 데이터 과학자의 경우 이 문제는 검색 가능성 중 하나입니다. DBA는 아니지만 특정 업무 문제를 해결하는 데 필요한 데이터 자산을 빠르게 식별해야 합니다. Oracle Cloud Infrastructure 데이터 카탈로그를 사용하면 데이터 과학자가 머신 러닝 모델을 교육하기 위한 후보 데이터 자산을 빠르게 식별할 수 있습니다.

    데이터 카탈로그는 엔터프라이즈 데이터를 위한 전담 관리 셀프서비스 데이터 검색 및 거버넌스 솔루션입니다. 기술, 비즈니스 및 운영 메타데이터를 관리하는 단일 협업 환경을 제공합니다. 이 메타데이터를 수집, 구성, 찾기, 액세스, 이해, 보강 및 활성화할 수 있습니다.

  • OCI 데이터 흐름 서비스

    머신 러닝을 훈련하기 전에 오브젝트 스토리지 또는 Autonomous Data Warehouse의 원시 데이터에 대해 대규모로 여러 데이터 "왕복" 운영을 적용해야 합니다. 데이터 과학자는 데이터를 정제, 조인, 비정규화, 중복 제거, 인정, 분쟁, 크기 조정, 형태(대개 데이터 프레임)로 만들어야 합니다. 이 단계는 일반적으로 데이터 엔지니어가 수행하지만 이 단계에 포함된 데이터 과학자가 많습니다. 이 단계를 수행하기 위한 실질적인 툴킷은 Apache Spark이며, Oracle Cloud Infrastructure Data Flow를 사용하는 것이 좋습니다.

    데이터 플로우는 Spark 애플리케이션 실행을 위한 전담 관리 서비스입니다. 이를 통해 앱에만 집중할 수 있으며 실행을 위한 간편한 런타임 환경을 구현할 수 있습니다. 앱 및 워크플로우와의 통합을 위한 API 지원이 포함되어 쉽고 단순한 사용자 인터페이스를 제공합니다. 기반 인프라, 클러스터 프로비저닝 또는 소프트웨어 설치에 시간을 소비할 필요가 없습니다.

  • OCI 데이터 과학

    Oracle Cloud Infrastructure Data Science는 데이터 과학 팀이 OCI에서 머신 러닝 모델을 개발, 교육, 관리 및 배포하는 데 사용할 수 있는 전담 관리 플랫폼입니다. Data Science에는 노트북 세션, 작업, 모델 카탈로그, 모델 배포, ADS(Accelerated Data Science) Python SDK가 포함됩니다. 데이터는 노트북 세션 또는 다양한 데이터 소스의 작업에서 수집되고 모델 교육의 예측 기능으로 변환될 수 있습니다. 노트북 세션은 데이터 과학자가 엔지니어에게 필요한 변환 파이프라인을 프로토타입화하고 모델을 교육할 수 있는 IDE입니다. 이러한 단계는 작업을 통해 대규모로 운용할 수 있습니다. 모델을 교육하고 나면 모델을 관리형 모델 스토리지 계층(모델 카탈로그)에 저장하고 배포를 위해 스테이징합니다. 모델 배치를 통해 모델을 HTTP 끝점으로 배치할 수 있습니다. 이러한 애플리케이션이 OCI에서 호스팅되는지, 아니면 다른 곳에서도 호스팅되건 관계 없이 타사 애플리케이션에서 모델을 사용할 수 있습니다.

  • Oracle Machine Learning

    Oracle Machine Learning은 데이터베이스 내 데이터에 대한 모델을 구축, 교육 및 배포하는 기능도 제공합니다. Oracle Machine Learning은 데이터 과학자가 OML4Py Python 클라이언트 라이브러리를 사용하여 모델을 교육할 수 있는 Zeppelin 노트북 인터페이스를 제공합니다. OML은 또한 AutoML UI를 통해 모델 교육에 코드 없는 접근 방식을 제공합니다. 모델을 REST API로 배포하는 작업은 Oracle Machine Learning Services를 통해 수행할 수 있습니다. 그러나 오픈 소스 소프트웨어에 대한 지원이 제한적입니다.

  • AI 서비스

    AI 서비스는 언어, 비전, 음성, 의사 결정 및 예측을 포괄하는 사용 사례를 통해 사전 학습되고 맞춤 가능한 모델 API의 모음을 제공합니다. AI 서비스는 REST API 엔드포인트를 통해 접근 가능한 모델 예측을 제공합니다. 이러한 서비스는 사전 학습된 최첨단 모델을 제공하며 서비스 1-6을 사용하여 커스터마이징 머신 러닝 모델을 교육하기 전에 고려 및 평가되어야 합니다. 또는 Oracle Machine Learning 서비스가 언어(주제, 키워드, 요약, 유사성) 및 비전에 대해 사전 학습된 일련의 모델을 제공합니다.

고려 사항

머신 러닝과 인공 지능을 구현할 때는 다음 옵션을 고려하십시오.

  • 모델 개발 수명 주기의 모든 단계에서 수평적 확장성 제공

    OCI 데이터 플로우를 통한 ETL 및 데이터 처리 단계(모델 교육 자체 및 모델 배포)에 대한 수평 확장성을 제공합니다. 모델 교육과 배포 측 모두에 GPU를 사용하는 것도 고려해 보십시오.

  • 모델 재현 가능성 보장

    모델이 감사되므로 재현해야 합니다. 모델을 다시 생성하려면 모델을 저장할 때 소스 코드, 교육 및 검증 데이터 세트 및 환경(타사 라이브러리 및 구조)에 대한 참조가 제공되어야 합니다. Git 저장소 및 커밋 해시에 대한 참조를 사용하여 코드를 추적합니다. 객체 스토리지를 사용하여 교육 및 검증 데이터 세트의 스냅샷을 저장합니다. 게시된 conda 환경에 대한 참조를 모델 메타데이터의 일부로 포함합니다.

  • 버전-제어 코드, 기능 및 모델

    이 고려 사항은 모델 재현 가능성과 관련이 있습니다. 데이터 과학 모델 카탈로그에서 직접 모델의 버전을 지정할 수 있습니다. Git 사용을 데이터 과학 IDE(예: JupyterLab)의 일부로 통합하거나 데이터 과학 작업과 같은 교육 실행 엔진에 통합합니다. 기본적으로 객체 버전 지정을 지원하는 객체 스토리지 또는 Git LFS(Large File Storage)와 같은 툴을 통해 기능을 데이터 세트로 버전을 지정할 수 있습니다.

  • 타사 런타임 종속성 패키지화, 공유 및 재사용

    노트북, 작업 및 모델 배포에 동일한 conda 환경을 재사용합니다. 또한 이렇게 하면 해당 단계 간의 타사 종속성 불일치 위험을 최소화할 수 있습니다.

  • 데이터 전송을 제한하는 동시에 데이터 소스의 영향을 받지 않음

    모델 교육 환경으로 데이터를 전송하는 것은 많은 시간이 소요됩니다. 노트북 환경 간에 공유할 수 있는 블록 볼륨을 사용하거나 가능한 많은 작업을 교육하십시오. 모델 교육 및 검증을 위해 로컬 데이터 세트 스냅샷을 유지합니다.

대체 패턴

이 아키텍처는 기존 투자, 운영 친숙도 또는 기타 제약 조건을 수용할 수 있는 대체 패턴을 제공합니다.
  • 관리되는 데이터 과학 서비스의 대안으로 OCI Marketplace에서 데이터 과학 VM 배포

    데이터 과학 VM 이미지는 CPU 및 NVIDIA GPU 모양 패밀리에 모두 사용할 수 있습니다. 데이터 과학자가 사용할 수 있는 종합적인 일련의 머신 러닝 라이브러리 및 IDE를 제공합니다. 그러나 모델 배포 기능은 제공하지 않습니다. 모델 배포는 OCI 데이터 과학 모델 배포 또는 Oracle Functions를 통해 수행할 수 있습니다.

  • 데이터베이스에서 머신 러닝 모델을 구축, 교육 및 배포하기 위한 데이터베이스의 Oracle Machine Learning(OML Notebooks, AutoML UI, Services, OML4Py)

    이 대체 패턴은 모델 학습에 필요한 데이터가 데이터베이스에 있을 때 강력한 기능을 제공합니다. 이 패턴은 머신 러닝 오픈 소스 소프트웨어 지원에 대한 제약이 있습니다.

    다음은 alt-architecture-ml.png에 대한 설명입니다.
    그림 alt-architecture-ml.png에 대한 설명

  • OCI 레지스트리, Oracle Functions 및 API 게이트웨이를 통해 모델을 REST API로 배포

    이 패턴은 Data Science VM 이미지 환경 또는 OCI 데이터 과학을 통해 모델을 교육하는 고객에게 적용됩니다. 이 패턴은 머신 러닝 모델을 REST API 엔드포인트로 배포하는 대체 경로를 제공합니다. 학습된 모델 아티팩트가 있는 Docker 이미지를 구축하여 OCI 레지스트리에 배포해야 합니다. Oracle 함수는 도커 이미지에서 생성하고 API 게이트웨이의 백엔드 리소스로 배포할 수 있습니다.

  • OKE로 OSS Kubeflow ML 플랫폼 배포

    이 패턴은 독립형 솔루션을 제공하며 Oracle Container Engine for Kubernetes에서 컨테이너 기반 머신 러닝 워크로드를 실행할 수 있는 옵션을 제공합니다. Kubeflow는 머신 러닝 플랫폼의 모든 주요 기능을 제공하는 OSS 오퍼링입니다.

안티패턴

커스터마이징 머신 러닝 OSS 스택으로 구축된 완전한 VM을 권장되지 않습니다. 머신 러닝 프로젝트는 대개 복잡하고 충돌하는 종속성 및 보안 취약성이 발생하여 지속적으로 패키지 업그레이드가 필요한 여러 OSS 라이브러리를 기반으로 구축됩니다. 즉시 사용 가능하고 안전한 환경을 구축하는 데 따르는 관리형 서비스를 권장합니다.

추가 탐색

관련 리소스에 대해 자세히 알아봅니다.