AWS의 Kubeflow와 Amazon SageMaker PlatoBlockchain Data Intelligence를 사용하여 유연하고 확장 가능한 분산 교육 아키텍처를 구축하세요. 수직 검색. 일체 포함.

AWS 및 Amazon SageMaker에서 Kubeflow를 사용하여 유연하고 확장 가능한 분산 교육 아키텍처 구축

이 포스트에서 우리는 어떻게 AWS의 Kubeflow (Kubeflow의 AWS 관련 배포)와 함께 사용 AWS 딥 러닝 컨테이너아마존 탄성 파일 시스템 (Amazon EFS)는 협업을 단순화하고 두 가지 모두에서 딥 러닝 모델을 대규모로 훈련할 수 있는 유연성을 제공합니다. Amazon Elastic Kubernetes 서비스 (아마존 EKS) 및 아마존 세이지 메이커 하이브리드 아키텍처 접근 방식을 사용합니다.

머신 러닝(ML) 개발은 복잡하고 지속적으로 발전하는 오픈 소스 프레임워크 및 툴킷과 복잡하고 지속적으로 발전하는 하드웨어 에코시스템에 의존합니다. 이는 ML 개발을 클러스터로 확장할 때 문제가 됩니다. 컨테이너는 교육 코드뿐만 아니라 전체 종속성 스택을 하드웨어 라이브러리까지 완전히 캡슐화할 수 있기 때문에 솔루션을 제공합니다. 이는 일관되고 이식 가능한 ML 환경을 보장하고 훈련 클러스터의 각 개별 노드에서 훈련 환경의 재현성을 용이하게 합니다.

Kubernetes는 이러한 컨테이너화된 애플리케이션의 인프라 배포, 리소스 확장 및 관리를 자동화하기 위해 널리 채택된 시스템입니다. 그러나 Kubernetes는 ML을 염두에 두고 구축되지 않았으므로 YAML 사양 파일에 대한 의존도가 높기 때문에 데이터 과학자에게 반직관적으로 느껴질 수 있습니다. Jupyter 경험이 없고 워크플로 관리 및 파이프라인과 같은 ML 관련 기능과 하이퍼파라미터 조정, 모델 호스팅 등과 같은 ML 전문가가 기대하는 기타 기능이 많지 않습니다. 이러한 기능을 구축할 수 있지만 Kubernetes는 이를 주요 목표로 하도록 설계되지 않았습니다.

오픈 소스 커뮤니티는 이를 인지하고 Kubeflow라는 Kubernetes 위에 레이어를 개발했습니다. Kubeflow는 Kubernetes에 종단 간 ML 워크플로를 간단하고 이식 가능하며 확장 가능하게 배포하는 것을 목표로 합니다. Kubeflow를 사용하여 ML을 위한 동급 최고의 오픈 소스 시스템을 다양한 인프라에 배포할 수 있습니다.

Kubeflow 및 Kubernetes는 데이터 과학자 팀에 유연성과 제어 기능을 제공합니다. 그러나 운영 오버헤드를 줄이면서 대규모로 실행되는 교육 클러스터의 높은 활용도를 보장하는 것은 여전히 ​​어려운 일입니다.

이 게시물은 온프레미스 제한 사항 또는 기존 Kubernetes 투자가 있는 고객이 AWS에서 Amazon EKS 및 Kubeflow를 사용하여 자체 관리형 접근 방식을 기반으로 하는 분산 교육을 위한 ML 파이프라인을 구현하고 완전 관리형 SageMaker를 사용하여 이 문제를 해결하는 방법을 보여줍니다. 비용 최적화된 완전 관리형 프로덕션 규모 교육 인프라. 여기에는 런타임 시 두 가지 접근 방식 중에서 선택할 수 있는 하이브리드 분산 교육 아키텍처의 단계별 구현이 포함되어 배포에 대한 엄격한 요구 사항과 함께 최대 제어 및 유연성을 부여합니다. 딥 러닝 교육 스크립트에서 오픈 소스 라이브러리를 계속 사용하고 플랫폼에 구애받지 않는 방식으로 Kubernetes와 SageMaker 모두에서 실행되도록 계속 호환되도록 만드는 방법을 볼 수 있습니다.

Kubeflow on AWS 및 SageMaker는 어떻게 도움이 됩니까?

TensorFlow, PyTorch, MXNet 등과 같은 딥 러닝 프레임워크로 구축된 신경망 모델은 특히 컴퓨터 비전 및 자연어 처리 사용 사례에서 훨씬 더 큰 훈련 데이터 세트를 사용하여 훨씬 더 높은 정확도를 제공합니다. 그러나 대규모 훈련 데이터 세트의 경우 딥 러닝 모델을 훈련하는 데 시간이 더 오래 걸리므로 궁극적으로 출시 시간이 느려집니다. 클러스터를 확장하고 모델 교육 시간을 몇 주에서 며칠 또는 몇 시간으로 단축할 수 있다면 생산성과 비즈니스 속도에 막대한 영향을 미칠 수 있습니다.

Amazon EKS는 관리형 Kubernetes 제어 평면을 프로비저닝하는 데 도움이 됩니다. Amazon EKS를 사용하여 CPU 및 GPU 인스턴스가 있는 대규모 교육 클러스터를 생성하고 Kubeflow 도구 키트를 사용하여 ML 친화적인 오픈 소스 도구를 제공하고 Kubeflow Pipelines를 사용하여 이식 가능하고 확장 가능한 ML 워크플로를 운영하여 팀의 생산성과 시장 출시 시간을 단축합니다.

그러나 이 접근 방식에는 몇 가지 문제가 있을 수 있습니다.

  • 데이터 과학 팀 전체에서 클러스터의 최대 활용도를 보장합니다. 예를 들어 GPU 인스턴스를 온디맨드로 프로비저닝하고 딥 러닝 교육과 같은 까다로운 프로덕션 규모 작업에 대해 높은 활용도를 보장하고 데이터 사전 처리와 같은 덜 까다로운 작업에는 CPU 인스턴스를 사용해야 합니다.
  • Kubernetes 클러스터 작업자 노드에 배포되는 데이터베이스, 스토리지 및 인증을 포함한 중량 Kubeflow 인프라 구성 요소의 고가용성을 보장합니다. 예를 들어 Kubeflow 컨트롤 플레인은 시간이 지남에 따라 증가하고 지속적인 모니터링 기능으로 크기 조정 가능한 스토리지 볼륨이 필요한 아티팩트(예: MySQL 인스턴스, 포드 로그 또는 MinIO 스토리지)를 생성합니다.
  • 개발자, 교육 클러스터 및 프로젝트 간에 교육 데이터 세트, 코드 및 컴퓨팅 환경을 공유하는 것은 어려운 일입니다. 예를 들어, 자체 라이브러리 세트에서 작업 중이고 해당 라이브러리에 강력한 상호 의존성이 있는 경우 동일한 팀의 데이터 과학자 간에 동일한 코드를 공유하고 실행하기가 정말 어렵습니다. 또한 각 훈련을 실행할 때마다 훈련 데이터 세트를 다운로드하고 새로운 코드 변경 사항으로 훈련 이미지를 빌드해야 합니다.

Kubeflow on AWS는 이러한 문제를 해결하고 엔터프라이즈급 반관리형 Kubeflow 제품을 제공합니다. Kubeflow on AWS를 사용하면 데이터베이스, 스토리지, 모니터링 및 사용자 관리와 같은 일부 Kubeflow 컨트롤 플레인 서비스를 다음과 같은 AWS 관리형 서비스로 대체할 수 있습니다. Amazon 관계형 데이터베이스 서비스 (아마존 RDS), 아마존 단순 스토리지 서비스 (아마존 S3), 아마존 탄성 파일 시스템 (아마존 EFS), 아마존 FSx, 아마존 클라우드 워치아마존 코 그니 토.

이러한 Kubeflow 구성 요소를 교체하면 Kubeflow 제어 평면의 중요한 부분이 Kubernetes에서 분리되어 안전하고 확장 가능하며 탄력적이며 비용 최적화된 설계를 제공합니다. 이 접근 방식은 또한 EKS 데이터 플레인에서 스토리지 및 컴퓨팅 리소스를 확보합니다. 이는 분산 모델 교육 또는 사용자 노트북 서버와 같은 애플리케이션에 필요할 수 있습니다. Kubeflow on AWS는 또한 PyTorch 및 TensorFlow와 같은 AWS에 최적화된 딥 러닝 프레임워크로 사전 패키징 및 사전 구성된 딥 러닝 컨테이너(DLC) 이미지와 Jupyter 노트북의 기본 통합을 제공하여 별도의 처리 없이 바로 교육 코드 작성을 시작할 수 있습니다. 종속성 해결 및 프레임워크 최적화와 함께. 또한 Amazon EFS와 교육 클러스터 및 개발 환경을 통합하면 코드 및 처리된 교육 데이터 세트를 공유할 수 있으므로 모든 코드 변경 후 컨테이너 이미지를 빌드하고 거대한 데이터 세트를 로드하지 않아도 됩니다. AWS의 Kubeflow와의 이러한 통합을 통해 모델 구축 및 교육 시간을 단축하고 더 쉬운 데이터 및 코드 공유를 통해 더 나은 협업을 수행할 수 있습니다.

AWS의 Kubeflow는 가용성이 높고 강력한 ML 플랫폼을 구축하는 데 도움이 됩니다. 이 플랫폼은 딥 러닝 모델을 구축하고 훈련할 수 있는 유연성을 제공하고 많은 오픈 소스 툴킷에 대한 액세스, 로그에 대한 통찰력, 실험을 위한 대화형 디버깅을 제공합니다. 그러나 수백 개의 GPU에서 딥 러닝 모델을 훈련하면서 인프라 리소스를 최대한 활용하려면 여전히 많은 운영 오버헤드가 필요합니다. 이는 요청 시에만 프로비저닝되고, 필요에 따라 확장되며, 작업이 완료되면 자동으로 종료되는 성능 및 비용 최적화 교육 클러스터를 처리하도록 설계 및 최적화된 완전 관리형 서비스인 SageMaker를 사용하여 해결할 수 있습니다. % 자원 활용. 관리형 SageMaker 구성 요소를 사용하여 SageMaker를 Kubeflow Pipelines와 통합할 수 있습니다. 이를 통해 ML 워크플로를 Kubeflow 파이프라인의 일부로 운영할 수 있습니다. 여기에서 로컬 교육에는 Kubernetes를 사용하고 하이브리드 아키텍처의 제품 규모 교육에는 SageMaker를 사용할 수 있습니다.

솔루션 개요

다음 아키텍처는 Kubeflow Pipelines를 사용하여 런타임 매개변수를 기반으로 Kubeflow 교육 또는 SageMaker를 사용하여 Kubernetes에서 조건부로 분산 교육을 실행하기 위해 이식 가능하고 확장 가능한 종단 간 ML 워크플로를 구축 및 배포하는 방법을 설명합니다.

Kubeflow 교육은 TensorFlow, PyTorch 등과 같은 다양한 프레임워크를 사용하여 ML 모델의 분산 교육에 대한 지원을 Kubeflow에 추가하는 Kubernetes 운영자 그룹입니다. pytorch-operator Kubernetes의 Kubeflow 구현입니다. 사용자 지정 리소스 (PyTorchJob)을 사용하여 Kubernetes에서 분산 PyTorch 교육 작업을 실행합니다.

PyTorchJob Launcher 구성 요소를 Kubeflow 파이프라인의 일부로 사용하여 대화형 디버깅 및 분석을 위한 유연성과 모든 기본 리소스에 대한 액세스가 필요한 실험 단계에서 PyTorch 분산 교육을 실행합니다.

또한 Kubeflow Pipelines용 SageMaker 구성 요소를 사용하여 프로덕션 규모에서 모델 교육을 실행합니다. 이를 통해 완전 관리형 서비스, GPU 활용도가 최대인 분산 교육 작업, 비용 효율적인 교육과 같은 강력한 SageMaker 기능을 활용할 수 있습니다. 아마존 엘라스틱 컴퓨트 클라우드 (Amazon EC2) 스팟 인스턴스.

워크플로 생성 프로세스의 일부로 다음 단계(이전 다이어그램 참조)를 완료하여 이 파이프라인을 생성합니다.

  1. Kubeflow 매니페스트 파일을 사용하여 Kubeflow 대시보드를 만들고 Kubeflow 중앙 대시보드에서 Jupyter 노트북에 액세스합니다.
  2. Kubeflow 파이프라인 SDK를 사용하여 Python 코드를 사용하여 Kubeflow 파이프라인을 만들고 컴파일합니다. 파이프라인 컴파일은 Python 함수를 Argo 호환 YAML 형식인 워크플로 리소스로 변환합니다.
  3. Kubeflow Pipelines SDK 클라이언트를 사용하여 파이프라인 서비스 엔드포인트를 호출하여 파이프라인을 실행합니다.
  4. 파이프라인은 조건부 런타임 변수를 평가하고 대상 실행 환경으로 SageMaker 또는 Kubernetes를 결정합니다.
  5. Kubeflow PyTorch Launcher 구성 요소를 사용하여 기본 Kubernetes 환경에서 분산 교육을 실행하거나 SageMaker 구성 요소를 사용하여 SageMaker 관리 플랫폼에서 교육을 제출하십시오.

다음 그림은 Kubernetes 또는 SageMaker 분산 환경 중에서 선택할 수 있는 유연성을 제공하는 아키텍처와 관련된 Kubeflow Pipelines 구성 요소를 보여줍니다.

Kubeflow Pipelines 구성 요소

사용 사례 워크플로

AWS에서 Kubeflow를 사용하여 Amazon EKS 및 SageMaker를 사용하여 분산 교육을 위한 사용 사례를 설치하고 실행하기 위해 다음과 같은 단계별 접근 방식을 사용합니다.

AWS의 Kubeflow와 Amazon SageMaker PlatoBlockchain Data Intelligence를 사용하여 유연하고 확장 가능한 분산 교육 아키텍처를 구축하세요. 수직 검색. 일체 포함.

사전 조건

이 연습에서는 다음과 같은 전제 조건이 있어야합니다.

  • An AWS 계정.
  • Docker가 있는 머신과 AWS 명령 줄 인터페이스 (AWS CLI)가 설치되었습니다.
  • 선택적으로 다음을 사용할 수 있습니다. AWS 클라우드9, 웹 브라우저에서 모든 작업을 완료할 수 있는 클라우드 기반 통합 개발 환경(IDE)입니다. 설정 지침은 다음을 참조하십시오. Cloud9 IDE 설정. Cloud9 환경에서 더하기 기호를 선택하고 새 터미널을 엽니다.
  • 역할 만들기 이름이 적힌 sagemakerrole. 관리형 정책 추가 AmazonSageMakerFullAccessAmazonS3FullAccess SageMaker에게 S3 버킷에 대한 액세스 권한을 부여합니다. 이 역할은 Kubeflow Pipelines 단계의 일부로 제출된 SageMaker 작업에서 사용됩니다.
  • 계정에 SageMaker 교육 리소스 유형 제한이 있는지 확인하십시오. ml.p3.2xlarge 사용하여 2로 증가 서비스 할당량 콘솔

1. AWS에 Amazon EKS 및 Kubeflow 설치

여러 가지 접근 방식을 사용하여 Kubernetes 클러스터를 구축하고 Kubeflow를 배포할 수 있습니다. 이 게시물에서는 프로세스를 단순하게 만드는 접근 방식에 중점을 둡니다. 먼저 EKS 클러스터를 생성한 다음 여기에 Kubeflow on AWS v1.5를 배포합니다. 이러한 각 작업에 대해 다음 원칙을 따르는 해당 오픈 소스 프로젝트를 사용합니다. 프레임워크 수행. 각 작업에 대한 전제 조건 집합을 설치하는 대신 필요한 모든 도구가 포함된 Docker 컨테이너를 구축하고 컨테이너 내에서 작업을 수행합니다.

이 게시물에서는 Amazon EFS를 추가 기능으로 사용하여 Kubeflow 배포를 자동화하는 Do 프레임워크를 사용합니다. 프로덕션 배포를 위한 공식 Kubeflow on AWS 배포 옵션은 다음을 참조하십시오. 전개.

현재 작업 디렉터리 및 AWS CLI 구성

다음 단계의 시작점으로 참조할 수 있도록 작업 디렉터리를 구성합니다.

export working_dir=$PWD

AWS CLI 프로필도 구성합니다. 이렇게 하려면 액세스 키 ID와 보안 액세스 키가 필요합니다. AWS 자격 증명 및 액세스 관리 (나는) 사용자 관리 권한(기존 관리형 정책 연결) 및 프로그래밍 방식 액세스 권한이 있는 계정. 다음 코드를 참조하십시오.

aws configure --profile=kubeflow
AWS Access Key ID [None]: 
AWS Secret Access Key [None]: 
Default region name [None]: us-west-2
Default output format [None]: json

# (In Cloud9, select “Cancel” and “Permanently disable” when the AWS managed temporary credentials dialog pops up)

export AWS_PROFILE=kubeflow

1.1 EKS 클러스터 생성

사용 가능한 EKS 클러스터가 이미 있는 경우 다음 섹션으로 건너뛸 수 있습니다. 이 게시물에서는 다음을 사용합니다. aws-do-eks 프로젝트 클러스터를 생성합니다.

  1. 먼저 작업 디렉토리에서 프로젝트를 복제하십시오.
    cd ${working_dir}
    git clone https://github.com/aws-samples/aws-do-eks
    cd aws-do-eks/

  2. 그런 다음 빌드 및 실행 aws-do-eks 컨테이너:
    ./build.sh
    ./run.sh

    XNUMXD덴탈의 build.sh 스크립트는 EKS 클러스터의 프로비저닝 및 운영에 필요한 모든 도구와 스크립트가 포함된 Docker 컨테이너 이미지를 생성합니다. 그만큼 run.sh 스크립트는 생성된 Docker 이미지를 사용하여 컨테이너를 시작하고 유지하므로 EKS 관리 환경으로 사용할 수 있습니다. 상태를 보려면 aws-do-eks 컨테이너, 당신은 실행할 수 있습니다 ./status.sh. 컨테이너가 종료됨 상태인 경우 다음을 사용할 수 있습니다. ./start.sh 컨테이너를 불러오거나 컨테이너를 다시 시작하기 위해 스크립트를 실행할 수 있습니다. ./stop.sh 다음 ./run.sh.

  3. 실행 중인 쉘을 엽니다. aws-do-eks 컨테이너:
  4. KubeFlow 배포에 대한 EKS 클러스터 구성을 검토하려면 다음 명령을 실행하십시오.
    vi ./eks-kubeflow.yaml

    기본적으로 이 구성은 eks-kubeflow FBI 증오 범죄 보고서 us-west-2 5개의 mXNUMX.xlarge 노드가 있는 지역. 또한 EBS 볼륨 암호화는 기본적으로 활성화되어 있지 않습니다. 추가하여 활성화할 수 있습니다. "volumeEncrypted: true" 기본 키를 사용하여 암호화합니다. 필요한 경우 다른 구성 설정을 수정합니다.

  5. 클러스터를 생성하려면 다음 명령어를 실행하세요.
    export AWS_PROFILE=kubeflow
    eksctl create cluster -f ./eks-kubeflow.yaml

    클러스터 프로비저닝 프로세스는 최대 30분이 소요될 수 있습니다.

  6. 클러스터가 성공적으로 생성되었는지 확인하려면 다음 명령을 실행합니다.
    kubectl get nodes

    성공적으로 생성된 클러스터에 대한 이전 명령의 출력은 다음 코드와 같습니다.

    root@cdf4ecbebf62:/eks# kubectl get nodes
    NAME                                           STATUS   ROLES    AGE   VERSION
    ip-192-168-0-166.us-west-2.compute.internal    Ready       23m   v1.21.14-eks-ba74326
    ip-192-168-13-28.us-west-2.compute.internal    Ready       23m   v1.21.14-eks-ba74326
    ip-192-168-45-240.us-west-2.compute.internal   Ready       23m   v1.21.14-eks-ba74326
    ip-192-168-63-84.us-west-2.compute.internal    Ready       23m   v1.21.14-eks-ba74326
    ip-192-168-75-56.us-west-2.compute.internal    Ready       23m   v1.21.14-eks-ba74326
    ip-192-168-85-226.us-west-2.compute.internal   Ready       23m   v1.21.14-eks-ba74326

SageMaker 교육 작업을 위한 EFS 볼륨 생성

이 사용 사례에서는 Amazon EFS에 이미 저장된 데이터에서 딥 러닝 모델을 훈련하여 SageMaker 훈련 작업의 속도를 높입니다. 이 선택은 데이터 이동 없이 Amazon EFS의 데이터에서 직접 교육 작업을 시작하여 교육 시작 시간을 단축할 수 있는 이점이 있습니다.

EFS 볼륨을 생성하고 EFS CSI(Container Storage Interface) 드라이버를 배포합니다. 이것은 다음 위치에 있는 배포 스크립트에 의해 수행됩니다. /eks/deployment/csi/efs 이내 aws-do-eks 컨테이너.

이 스크립트는 계정에 하나의 EKS 클러스터가 있다고 가정합니다. 세트 CLUSTER_NAME= 둘 이상의 EKS 클러스터가 있는 경우.

cd /eks/deployment/csi/efs
./deploy.sh

이 스크립트는 EFS 볼륨을 프로비저닝하고 클러스터 VPC의 서브넷에 대한 탑재 대상을 생성합니다. 그런 다음 EFS CSI 드라이버를 배포하고 efs-sc 스토리지 클래스 및 efs-pv EKS 클러스터의 영구 볼륨.

스크립트가 성공적으로 완료되면 다음과 같은 출력이 표시되어야 합니다.

Generating efs-sc.yaml ...

Applying efs-sc.yaml ...
storageclass.storage.k8s.io/efs-sc created
NAME            PROVISIONER             RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
efs-sc          efs.csi.aws.com         Delete          Immediate              false                  1s
gp2 (default)   kubernetes.io/aws-ebs   Delete          WaitForFirstConsumer   false                  36m

Generating efs-pv.yaml ...
Applying efs-pv.yaml ...
persistentvolume/efs-pv created
NAME     CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM   STORAGECLASS   REASON   AGE
efs-pv   5Gi        RWX            Retain           Available           efs-sc                  10s

Done ...

Amazon S3 VPC 엔드포인트 생성

SageMaker 교육 작업 및 EFS 파일 시스템이 액세스할 수 있는 프라이빗 VPC를 사용합니다. SageMaker 교육 클러스터에 프라이빗 VPC의 S3 버킷에 대한 액세스 권한을 부여하려면 VPC 엔드포인트를 생성합니다.

cd /eks/vpc 
export CLUSTER_NAME= 
export REGION= 
./vpc-endpoint-create.sh

이제 종료할 수 있습니다. aws-do-eks 컨테이너 셸을 열고 다음 섹션으로 진행합니다.

exit

root@cdf4ecbebf62:/eks/deployment/csi/efs# exit
exit
TeamRole:~/environment/aws-do-eks (main) $

1.2 Amazon EKS의 AWS에 Kubeflow 배포

Amazon EKS에 Kubeflow를 배포하려면 다음을 사용합니다. aws-do-kubeflow 프로젝트.

  1. 다음 명령을 사용하여 리포지토리를 복제합니다.
    cd ${working_dir}
    git clone https://github.com/aws-samples/aws-do-kubeflow
    cd aws-do-kubeflow

  2. 그런 다음 프로젝트를 구성합니다.
    ./config.sh

    이 스크립트는 텍스트 편집기에서 프로젝트 구성 파일을 엽니다. 중요하다 AWS_지역 클러스터가 있는 리전으로 설정하고 AWS_CLUSTER_NAME 이전에 생성한 클러스터의 이름과 일치하도록 합니다. 기본적으로 구성은 이미 적절하게 설정되어 있으므로 변경할 필요가 없으면 편집기를 닫으면 됩니다.

    ./build.sh
    ./run.sh
    ./exec.sh

    XNUMXD덴탈의 build.sh 스크립트는 기존 Kubernetes 클러스터에서 Kubeflow를 배포하고 관리하는 데 필요한 모든 도구가 포함된 Docker 컨테이너 이미지를 생성합니다. 그만큼 run.sh 스크립트는 Docker 이미지를 사용하여 컨테이너를 시작하고 exec.sh 스크립트는 Kubeflow 관리 환경으로 사용할 수 있는 컨테이너로 명령 셸을 엽니다. 당신은 사용할 수 있습니다 ./status.sh 여부를 확인하는 스크립트 aws-do-kubeflow 컨테이너가 실행 중이고 ./stop.sh./run.sh 스크립트를 사용하여 필요에 따라 다시 시작합니다.

  3. 쉘을 개봉한 후 aws-do-eks 컨테이너에서 구성된 클러스터 컨텍스트가 예상대로인지 확인할 수 있습니다.
    root@ip-172-31-43-155:/kubeflow# kubectx
    kubeflow@eks-kubeflow.us-west-2.eksctl.io

  4. EKS 클러스터에 Kubeflow를 배포하려면 다음을 실행하십시오. deploy.sh 스크립트:
    ./kubeflow-deploy.sh

    kubeflow 네임스페이스의 모든 파드가 실행 중 상태가 되면 배포가 성공한 것입니다. 일반적인 출력은 다음 코드와 같습니다.

    Waiting for all Kubeflow pods to start Running ...
    
    Waiting for all Kubeflow pods to start Running ...
    
    Restarting central dashboard ...
    pod "centraldashboard-79f489b55-vr6lp" deleted
    /kubeflow/deploy/distro/aws/kubeflow-manifests /kubeflow/deploy/distro/aws
    /kubeflow/deploy/distro/aws
    
    Kubeflow deployment succeeded
    Granting cluster access to kubeflow profile user ...
    Argument not provided, assuming default user namespace kubeflow-user-example-com ...
    clusterrolebinding.rbac.authorization.k8s.io/kubeflow-user-example-com-cluster-admin-binding created
    Setting up access to Kubeflow Pipelines ...
    Argument not provided, assuming default user namespace kubeflow-user-example-com ...
    
    Creating pod-default for namespace kubeflow-user-example-com ...
    poddefault.kubeflow.org/access-ml-pipeline created

  5. KubeFlow 포드의 상태를 모니터링하려면 별도의 창에서 다음 명령을 사용할 수 있습니다.
    watch kubectl -n kubeflow get pods

  6. PR 기사 Ctrl + C 모든 포드가 실행 중이면 다음 명령을 실행하여 클러스터 외부에 Kubeflow 대시보드를 노출합니다.
    ./kubeflow-expose.sh

다음 코드와 같은 출력이 표시되어야 합니다.

root@ip-172-31-43-155:/kubeflow# ./kubeflow-expose.sh
root@ip-172-31-43-155:/kubeflow# Forwarding from 127.0.0.1:8080 -> 8080
Forwarding from [::1]:8080 -> 8080

이 명령은 클러스터에서 로컬 포트 ​​8080으로 Istio 인그레스 게이트웨이 서비스를 포트 전달합니다. Kubeflow 대시보드에 액세스하려면 다음을 방문하세요. http://localhost:8080 기본 사용자 자격 증명을 사용하여 로그인합니다(사용자@example.com/12341234). 실행 중인 경우 aws-do-kubeflow AWS Cloud9의 컨테이너, 다음을 선택할 수 있습니다. 시사다음을 선택 실행중인 애플리케이션 미리보기. Docker Desktop에서 실행 중인 경우 다음을 실행해야 할 수 있습니다. ./kubeflow-expose.sh 스크립트 외부 aws-do-kubeflow 컨테이너.

AWS의 Kubeflow와 Amazon SageMaker PlatoBlockchain Data Intelligence를 사용하여 유연하고 확장 가능한 분산 교육 아키텍처를 구축하세요. 수직 검색. 일체 포함.

2. AWS 환경에서 Kubeflow 설정

Kubeflow on AWS 환경을 설정하기 위해 EFS 볼륨과 Jupyter 노트북을 생성합니다.

2.1 EFS 볼륨 생성

EFS 볼륨을 생성하려면 다음 단계를 완료하십시오.

  • Kubeflow 대시보드에서 다음을 선택합니다. 볼륨 탐색 창에서
  • 선택한 새 볼륨.
  • 럭셔리 성함, 입력 efs-sc-claim.
  • 럭셔리 볼륨 크기, 입력 10.
  • 럭셔리 스토리지 클래스선택한다. efs-sc.
  • 럭셔리 액세스 모드선택한다. 한 번 읽기.
  • 왼쪽 메뉴에서 만들기.

AWS의 Kubeflow와 Amazon SageMaker PlatoBlockchain Data Intelligence를 사용하여 유연하고 확장 가능한 분산 교육 아키텍처를 구축하세요. 수직 검색. 일체 포함.

2.2 Jupyter 노트북 만들기

새 노트북을 만들려면 다음 단계를 완료하십시오.

  • Kubeflow 대시보드에서 다음을 선택합니다. 노트북 탐색 창에서
  • 왼쪽 메뉴에서 새 노트북.
  • 럭셔리 성함, 입력 aws-hybrid-nb.
  • 럭셔리 Jupyter Docket 이미지, 이미지를 선택 c9e4w0g3/notebook-servers/jupyter-pytorch:1.11.0-cpu-py38-ubuntu20.04-e3-v1.1 (사용 가능한 최신 jupyter-pytorch DLC 이미지).
  • 럭셔리 CPU, 입력 1.
  • 럭셔리 메모리, 입력 5.
  • 럭셔리 GPU, 그대로 두다 없음.
  • 변경하지 마십시오. 작업 공간 볼륨 안내
  • . 데이터 볼륨 섹션 선택 기존 볼륨 연결 기존 볼륨 섹션을 확장합니다.
  • 럭셔리 성함선택한다. efs-sc-claim.
  • 럭셔리 마운트 경로, 입력 /home/jovyan/efs-sc-claim.
    이렇게 하면 EFS 볼륨이 Jupyter 노트북 포드에 마운트되고 폴더가 표시됩니다. efs-sc-claim Jupyter 랩 인터페이스에서. 훈련 클러스터가 테스트를 위해 컨테이너 이미지를 다시 빌드할 필요 없이 액세스할 수 있도록 훈련 데이터 세트와 훈련 코드를 이 폴더에 저장합니다.AWS의 Kubeflow와 Amazon SageMaker PlatoBlockchain Data Intelligence를 사용하여 유연하고 확장 가능한 분산 교육 아키텍처를 구축하세요. 수직 검색. 일체 포함.
  • 선택 Kubeflow Pipelines에 대한 액세스 허용 구성 섹션에서.
  • 왼쪽 메뉴에서 실행.
    노트북이 성공적으로 생성되었는지 확인합니다(몇 분 정도 소요될 수 있음).AWS의 Kubeflow와 Amazon SageMaker PlatoBlockchain Data Intelligence를 사용하여 유연하고 확장 가능한 분산 교육 아키텍처를 구축하세요. 수직 검색. 일체 포함.
  • 노트북 페이지에서 선택 연결하기 JupyterLab 환경에 로그인합니다.
  • 힘내 메뉴, 선택 리포지토리 복제.
  • 럭셔리 리포지토리 복제, 입력 https://github.com/aws-samples/aws-do-kubeflow.
    AWS의 Kubeflow와 Amazon SageMaker PlatoBlockchain Data Intelligence를 사용하여 유연하고 확장 가능한 분산 교육 아키텍처를 구축하세요. 수직 검색. 일체 포함.

3. 분산 교육 실행

Jupyter 노트북을 설정한 후 폴더에서 다음 상위 수준 단계를 사용하여 전체 데모를 실행할 수 있습니다. aws-do-kubeflow/workshop 복제된 저장소에서:

  • PyTorch 분산 데이터 병렬(DDP) 교육 스크립트: 다중 노드 CPU 및 GPU 클러스터에 훈련을 배포하기 위한 샘플 컨볼루션 신경망 및 로직이 포함된 PyTorch DDP 훈련 스크립트 cifar10-distributed-gpu-final.py를 참조하십시오. (자세한 내용은 3.1 참조)
  • 라이브러리 설치: 노트북 실행 0_initialize_dependencies.ipynb 모든 종속성을 초기화합니다. (자세한 내용은 3.2 참조)
  • Kubernetes에서 분산 PyTorch 작업 교육을 실행합니다. 노트북 실행 1_submit_pytorchdist_k8s.ipynb Python 코드를 사용하여 Kubernetes 사용자 지정 리소스 PyTorchJob YAML 파일을 사용하여 기본 컨테이너 XNUMX개와 작업자 컨테이너 XNUMX개에 대한 분산 교육을 만들고 제출합니다. (자세한 내용은 3.3 참조)
  • 하이브리드 Kubeflow 파이프라인을 만듭니다. 노트북 실행 2_create_pipeline_k8s_sagemaker.ipynb 런타임 변수를 사용하여 SageMaker 또는 Amazon EKS에서 분산 교육을 실행하는 하이브리드 Kubeflow 파이프라인 생성 training_runtime. (자세한 내용은 3.4 참조)

노트북을 실행했는지 확인 1_submit_pytorchdist_k8s.ipynb 노트북을 시작하기 전에 2_create_pipeline_k8s_sagemaker.ipynb.

다음 섹션에서는 이러한 각 단계에 대해 자세히 설명합니다.

3.1 PyTorch 분산 데이터 병렬(DDP) 교육 스크립트

분산 훈련의 일부로 CIFAR10 데이터 세트에서 작동하는 간단한 컨볼루션 신경망으로 생성된 분류 모델을 훈련합니다. 훈련 스크립트 cifar10-distributed-gpu-final.py 오픈 소스 라이브러리만 포함하고 GPU 장치 또는 CPU 인스턴스의 Kubernetes 및 SageMaker 교육 클러스터 모두에서 실행하도록 호환됩니다. 노트북 예제를 실행하기 전에 교육 스크립트의 몇 가지 중요한 측면을 살펴보겠습니다.

우리는을 사용하여 torch.distributed 클러스터의 노드 간 다중 프로세스 병렬 처리를 위한 PyTorch 지원 및 통신 기본 요소가 포함된 모듈:

...
import torch
import torch.distributed as dist
import torch.nn as nn
import torch.nn.functional as F
import torch.optim as optim
import torch.utils.data
import torch.utils.data.distributed
import torchvision
from torchvision import datasets, transforms
...

convolutional, max pooling 및 linear layer의 조합을 사용하여 relu 활성화 함수가 모델 훈련의 forward pass에서 적용되는 간단한 이미지 분류 모델을 만듭니다.

# Define models
class Net(nn.Module):
def __init__(self):
super(Net, self).__init__()
self.conv1 = nn.Conv2d(3, 6, 5)
self.pool = nn.MaxPool2d(2, 2)
self.conv2 = nn.Conv2d(6, 16, 5)
self.fc1 = nn.Linear(16 * 5 * 5, 120)
self.fc2 = nn.Linear(120, 84)
self.fc3 = nn.Linear(84, 10)

def forward(self, x):
x = self.pool(F.relu(self.conv1(x)))
x = self.pool(F.relu(self.conv2(x)))
x = x.view(-1, 16 * 5 * 5)
x = F.relu(self.fc1(x))
x = F.relu(self.fc2(x))
x = self.fc3(x)
return x

우리는 데이터 세트와 DistributedSampler (분산 방식으로 데이터의 하위 집합을 로드합니다. torch.nn.parallel.DistributedDataParallel) 데이터에 대해 단일 프로세스 또는 다중 프로세스 반복기를 제공합니다.

# Define data loader for training dataset
def _get_train_data_loader(batch_size, training_dir, is_distributed):
logger.info("Get train data loader")

train_set = torchvision.datasets.CIFAR10(root=training_dir,
train=True,
download=False,
transform=_get_transforms())

train_sampler = (
torch.utils.data.distributed.DistributedSampler(train_set) if is_distributed else None
)

return torch.utils.data.DataLoader(
train_set,
batch_size=batch_size,
shuffle=train_sampler is None,
sampler=train_sampler)
...

훈련 클러스터에 GPU가 있는 경우 스크립트는 CUDA 장치에서 훈련을 실행하고 장치 변수는 기본 CUDA 장치를 유지합니다.

device = "cuda" if torch.cuda.is_available() else "cpu"
...

PyTorch를 사용하여 분산 교육을 실행하기 전에 DistributedDataParallel 여러 노드에서 분산 처리를 실행하려면 다음을 호출하여 분산 환경을 초기화해야 합니다. init_process_group. 이것은 훈련 클러스터의 각 머신에서 초기화됩니다.

dist.init_process_group(backend=args.backend, rank=host_rank, world_size=world_size)
...

분류기 모델을 인스턴스화하고 모델을 대상 장치에 복사합니다. 분산 교육이 여러 노드에서 실행되도록 활성화된 경우 DistributedDataParallel 클래스는 모델 개체 주위의 래퍼 개체로 사용되어 여러 컴퓨터에 동기식 분산 교육을 허용합니다. 입력 데이터는 배치 차원에서 분할되고 모델의 복제본은 각 머신 및 각 장치에 배치됩니다.

model = Net().to(device)

if is_distributed:
model = torch.nn.parallel.DistributedDataParallel(model)

...

3.2 라이브러리 설치

PyTorch 분산 교육 예제를 실행하는 데 필요한 모든 라이브러리를 설치합니다. 여기에는 Kubeflow Pipelines SDK, Training Operator Python SDK, Kubernetes용 Python 클라이언트 및 Amazon SageMaker Python SDK가 포함됩니다.

#Please run the below commands to install necessary libraries

!pip install kfp==1.8.4

!pip install kubeflow-training

!pip install kubernetes

!pip install sagemaker

3.3 Kubernetes에서 분산 PyTorch 작업 교육 실행

노트북 1_submit_pytorchdist_k8s.ipynb Kubeflow 교육 및 Kubernetes 클라이언트 Python SDK를 사용하여 Kubernetes 사용자 지정 리소스 PyTorchJob YAML 파일을 생성합니다. 다음은 이 노트북의 몇 가지 중요한 스니펫입니다.

다음 코드와 같이 기본 및 작업자 컨테이너를 사용하여 PyTorchJob YAML을 생성합니다.

# Define PyTorchJob custom resource manifest
pytorchjob = V1PyTorchJob(
api_version="kubeflow.org/v1",
kind="PyTorchJob",
metadata=V1ObjectMeta(name=pytorch_distributed_jobname,namespace=user_namespace),
spec=V1PyTorchJobSpec(
run_policy=V1RunPolicy(clean_pod_policy="None"),
pytorch_replica_specs={"Master": master,
"Worker": worker}
)
)

이것은 다음을 사용하여 Kubernetes 제어 평면에 제출됩니다. PyTorchJobClient:

# Creates and Submits PyTorchJob custom resource file to Kubernetes
pytorchjob_client = PyTorchJobClient()

pytorch_job_manifest=pytorchjob_client.create(pytorchjob):

Kubernetes 교육 로그 보기

Python 코드를 사용하는 동일한 Jupyter 노트북 또는 Kubernetes 클라이언트 셸에서 교육 로그를 볼 수 있습니다.

3.4 하이브리드 Kubeflow 파이프라인 생성

노트북 2_create_pipeline_k8s_sagemaker.ipynb 조건부 런타임 변수를 기반으로 하이브리드 Kubeflow 파이프라인 생성 training_runtime, 다음 코드와 같이. 노트북은 다음을 사용합니다. Kubeflow 파이프 라인 SDK ML 워크플로 파이프라인을 지정하고 실행하기 위한 Python 패키지 세트가 제공됩니다. 이 SDK의 일부로 다음 패키지를 사용합니다.

  • DSL(도메인 특정 언어) 패키지 데코레이터 dsl.pipeline, Python 함수를 장식하여 파이프라인을 반환합니다.
  • XNUMXD덴탈의 dsl.Condition 확인과 같이 특정 조건이 충족될 때만 실행되는 작업 그룹을 나타내는 패키지 training_runtime 가치 sagemaker or kubernetes

다음 코드를 참조하십시오.

# Define your training runtime value with either 'sagemaker' or 'kubernetes'
training_runtime='sagemaker'

# Create Hybrid Pipeline using Kubeflow PyTorch Training Operators and Amazon SageMaker Service
@dsl.pipeline(name="PyTorch Training pipeline", description="Sample training job test")
def pytorch_cnn_pipeline():

# Pipeline Step 1: to evaluate the condition. You can enter any logic here. For demonstration we are checking if GPU is needed for training
condition_result = check_condition_op(training_runtime)

# Pipeline Step 2: to run training on Kuberentes using PyTorch Training Operators. This will be executed if gpus are not needed
with dsl.Condition(condition_result.output == 'kubernetes', name="PyTorch_Comp"):
train_task = pytorch_job_op(
name=training_job_name,
namespace=user_namespace,
master_spec=json.dumps(master_spec_loaded), # Please refer file at pipeline_yaml_specifications/pipeline_master_spec.yml
worker_spec=json.dumps(worker_spec_loaded), # Please refer file at pipeline_yaml_specifications/pipeline_worker_spec.yml
delete_after_done=False
).after(condition_result)

# Pipeline Step 3: to run training on SageMaker using SageMaker Components for Pipeline. This will be executed if gpus are needed
with dsl.Condition(condition_result.output == 'sagemaker', name="SageMaker_Comp"):
training = sagemaker_train_op(
region=region,
image=train_image,
job_name=training_job_name,
training_input_mode=training_input_mode,
hyperparameters='{ 
"backend": "'+str(pytorch_backend)+'", 
"batch-size": "64", 
"epochs": "3", 
"lr": "'+str(learning_rate)+'", 
"model-type": "custom", 
"sagemaker_container_log_level": "20", 
"sagemaker_program": "cifar10-distributed-gpu-final.py", 
"sagemaker_region": "us-west-2", 
"sagemaker_submit_directory": "'+source_s3+'" 
}',
channels=channels,
instance_type=instance_type,
instance_count=instance_count,
volume_size=volume_size,
max_run_time=max_run_time,
model_artifact_path=f's3://{bucket_name}/jobs',
network_isolation=network_isolation,
traffic_encryption=traffic_encryption,
role=role,
vpc_subnets=subnet_id,
vpc_security_group_ids=security_group_id
).after(condition_result)

3.2개의 ml.pXNUMXxlarge 인스턴스를 사용하여 SageMaker 분산 교육을 구성합니다.

파이프라인이 정의되면 Kubeflow Pipelines SDK를 사용하여 파이프라인을 Argo YAML 사양으로 컴파일할 수 있습니다. kfp.compiler 패키지. 파이프라인 서비스 엔드포인트를 호출하고 노트북에서 바로 적절한 인증 헤더를 전달하는 Kubeflow Pipeline SDK 클라이언트를 사용하여 이 파이프라인을 실행할 수 있습니다. 다음 코드를 참조하십시오.

# DSL Compiler that compiles pipeline functions into workflow yaml.
kfp.compiler.Compiler().compile(pytorch_cnn_pipeline, "pytorch_cnn_pipeline.yaml")

# Connect to Kubeflow Pipelines using the Kubeflow Pipelines SDK client
client = kfp.Client()

experiment = client.create_experiment(name="kubeflow")

# Run a specified pipeline
my_run = client.run_pipeline(experiment.id, "pytorch_cnn_pipeline", "pytorch_cnn_pipeline.yaml")

# Please click “Run details” link generated below this cell to view your pipeline. You can click every pipeline step to see logs.

당신이 sagemaker import 오류가 발생하면 !pip install sagemaker를 실행하고 커널을 다시 시작합니다( 핵심 메뉴, 선택 커널 다시 시작).

선택 실행 세부 정보 Kubeflow 파이프라인을 보려면 마지막 셀 아래의 링크를 클릭하십시오.

다음을 사용하여 파이프라인 생성 단계를 반복합니다. training_runtime='kubernetes' Kubernetes 환경에서 실행되는 파이프라인을 테스트합니다. 그만큼 training_runtime 변수는 프로덕션 시나리오의 CI/CD 파이프라인에 전달할 수도 있습니다.

SageMaker 구성 요소에 대한 Kubeflow 파이프라인 실행 로그 보기

다음 스크린샷은 SageMaker 구성 요소에 대한 파이프라인 세부 정보를 보여줍니다.

AWS의 Kubeflow와 Amazon SageMaker PlatoBlockchain Data Intelligence를 사용하여 유연하고 확장 가능한 분산 교육 아키텍처를 구축하세요. 수직 검색. 일체 포함.

교육 작업 단계를 선택하고 로그 탭에서 CloudWatch 로그 링크를 선택하여 SageMaker 로그에 액세스합니다.

AWS의 Kubeflow와 Amazon SageMaker PlatoBlockchain Data Intelligence를 사용하여 유연하고 확장 가능한 분산 교육 아키텍처를 구축하세요. 수직 검색. 일체 포함.

다음 스크린샷은 3.2개의 ml.pXNUMXxlarge 인스턴스 각각에 대한 CloudWatch 로그를 보여줍니다.

AWS의 Kubeflow와 Amazon SageMaker PlatoBlockchain Data Intelligence를 사용하여 유연하고 확장 가능한 분산 교육 아키텍처를 구축하세요. 수직 검색. 일체 포함.

로그를 보려면 그룹을 선택하십시오.

AWS의 Kubeflow와 Amazon SageMaker PlatoBlockchain Data Intelligence를 사용하여 유연하고 확장 가능한 분산 교육 아키텍처를 구축하세요. 수직 검색. 일체 포함.

Kubeflow PyTorchJob Launcher 구성 요소에 대한 Kubeflow 파이프라인 실행 로그 보기

다음 스크린샷은 Kubeflow 구성 요소에 대한 파이프라인 세부 정보를 보여줍니다.

AWS의 Kubeflow와 Amazon SageMaker PlatoBlockchain Data Intelligence를 사용하여 유연하고 확장 가능한 분산 교육 아키텍처를 구축하세요. 수직 검색. 일체 포함.

사용하여 다음 명령을 실행하십시오. Kubectl Kubernetes 클러스터에 연결된 Kubernetes 클라이언트 셸에서 로그를 확인합니다(네임스페이스 및 포드 이름 대체).

kubectl get pods -n kubeflow-user-example-com
kubectl logs  -n kubeflow-user-example-com -f

4.1 정리

계정에서 생성한 모든 리소스를 정리하려면 역순으로 제거해야 합니다.

  1. 다음을 실행하여 Kubeflow 설치를 삭제하십시오. ./kubeflow-remove.sh FBI 증오 범죄 보고서 aws-do-kubeflow 컨테이너. 첫 번째 명령 세트는 선택 사항이며 아직 명령 셸이 없는 경우 사용할 수 있습니다. aws-do-kubeflow 컨테이너 오픈.
    cd aws-do-kubeflow
    ./status.sh
    ./start.sh
    ./exec.sh
    
    ./kubeflow-remove.sh

  2. 에서 aws-do-eks 컨테이너 폴더에서 EFS 볼륨을 제거합니다. 첫 번째 명령 세트는 선택 사항이며 아직 명령 셸이 없는 경우 사용할 수 있습니다. aws-do-eks 컨테이너 오픈.
    cd aws-do-eks
    ./status.sh
    ./start.sh
    ./exec.sh
    
    cd /eks/deployment/csi/efs
    ./delete.sh
    ./efs-delete.sh

    클러스터용으로 생성한 VPC와 연결된 네트워크 인터페이스를 해제하려면 Amazon EFS를 삭제해야 합니다. EFS 볼륨을 삭제하면 해당 볼륨에 저장된 모든 데이터가 삭제됩니다.

  3. 에서 aws-do-eks 컨테이너, 실행 eks-delete.sh VPC를 포함하여 클러스터 및 클러스터와 연결된 기타 리소스를 삭제하는 스크립트:
    cd /eks
    ./eks-delete.sh

요약

이 게시물에서는 분산 모델 교육 및 ML 워크플로의 몇 가지 일반적인 문제에 대해 논의했습니다. Kubeflow on AWS 배포에 대한 개요를 제공하고 두 개의 오픈 소스 프로젝트(AWS-DO-EKSAWS-도-kubeflow) 인프라 프로비저닝 및 여기에 Kubeflow 배포를 단순화합니다. 마지막으로 자체 관리형 Kubernetes와 완전 관리형 SageMaker 인프라 간에 원활하게 워크로드를 전환할 수 있는 하이브리드 아키텍처를 설명하고 시연했습니다. 고유한 사용 사례에 이 하이브리드 아키텍처를 사용하는 것이 좋습니다.

당신은 AWS 랩 리포지토리 Kubeflow에 대한 모든 AWS 기여를 추적합니다. 당신은 또한 우리를 찾을 수 있습니다 Kubeflow #AWS Slack 채널; 귀하의 피드백은 Kubeflow 프로젝트에 기여할 다음 기능의 우선 순위를 정하는 데 도움이 됩니다.

이 게시물의 시작을 지원해 준 Sree Arasanagatta(소프트웨어 개발 관리자 AWS ML)와 Suraj Kota(소프트웨어 개발자 엔지니어)에게 특별한 감사를 전합니다.


저자 소개

AWS의 Kubeflow와 Amazon SageMaker PlatoBlockchain Data Intelligence를 사용하여 유연하고 확장 가능한 분산 교육 아키텍처를 구축하세요. 수직 검색. 일체 포함.칸월짓 쿠르미 Amazon Web Services의 AI/ML 전문가 솔루션 아키텍트입니다. 그는 AWS 제품, 엔지니어링 및 고객과 협력하여 AWS를 사용할 때 하이브리드 ML 솔루션의 가치를 향상시키는 데 도움이 되는 지침과 기술 지원을 제공합니다. Kanwaljit은 컨테이너화된 머신 러닝 애플리케이션으로 고객을 돕는 것을 전문으로 합니다.

AWS의 Kubeflow와 Amazon SageMaker PlatoBlockchain Data Intelligence를 사용하여 유연하고 확장 가능한 분산 교육 아키텍처를 구축하세요. 수직 검색. 일체 포함.가우 탐 쿠마르 AWS AI Deep Learning의 소프트웨어 엔지니어입니다. 그는 AWS Deep Learning Containers 및 AWS Deep Learning AMI를 개발했습니다. 그는 AI를 위한 도구와 시스템 구축에 열정적입니다. 여가 시간에는 자전거 타기와 책 읽기를 즐깁니다.

AWS의 Kubeflow와 Amazon SageMaker PlatoBlockchain Data Intelligence를 사용하여 유연하고 확장 가능한 분산 교육 아키텍처를 구축하세요. 수직 검색. 일체 포함.알렉스 이안쿨스키 깊이 있는 실습 작업을 좋아하는 풀스택 소프트웨어 및 인프라 설계자입니다. 그는 현재 AWS에서 자체 관리형 기계 학습을 위한 수석 솔루션 아키텍트입니다. 그의 역할에서 그는 컨테이너 기반 AWS 서비스에서 ML 및 AI 워크로드의 컨테이너화 및 오케스트레이션을 통해 고객을 돕는 데 중점을 두고 있습니다. 그는 또한 오픈 소스의 저자입니다. 프레임워크를 수행 컨테이너 기술을 적용하여 혁신의 속도를 가속화하는 동시에 세계의 가장 큰 문제를 해결하는 것을 좋아하는 Docker 캡틴입니다. 지난 10년 동안 Alex는 기후 변화 퇴치, AI 및 ML 민주화, 더 안전한 여행, 더 나은 의료 서비스, 더 스마트한 에너지를 만드는 일을 했습니다.

타임 스탬프 :

더보기 AWS 기계 학습