제퍼넷 로고

Cisco는 Amazon SageMaker와 Kubeflow를 사용하여 하이브리드 머신 러닝 워크 플로우를 만듭니다.

시간

이 문서는 기술 제품 관리자 인 Elvira Dzhuraeva, Distinguished Engineer Debo Dutta 및 Amit Saha 수석 엔지니어를 포함한 Cisco AI / ML 모범 사례 팀의 게스트 게시물입니다.

Cisco는 여러 사업부에서 머신 러닝 (ML)과 인공 지능 (AI)을 적용하는 대기업입니다. CTO 사무실의 Cisco AI 팀은 AI와 ML을 사용하는 모든 사업부에서 회사의 OSS (Open Source) AI / ML 모범 사례를 담당하고 있으며 쿠베 플로우 오픈 소스 프로젝트 MLPerf / MLCommons. 우리의 헌장은 시스코 사업부와 고객 모두가 사용할 수있는 아티팩트와 모범 사례를 ML에 작성하고 이러한 솔루션을 참조 아키텍처로 공유합니다.

현지화 된 데이터 요구 사항과 같은 비즈니스 요구로 인해 Cisco는 하이브리드 클라우드 환경을 운영합니다. 모델 교육은 자체 Cisco UCS 하드웨어에서 수행되지만 많은 팀은 클라우드를 활용하여 확장 성, 지리적 중복성 및 복원력을 활용합니다. 그러나 하이브리드 통합에는 일관된 AI / ML 워크 플로우를 구축하고 지원하기 위해 깊은 전문 지식과 지식이 필요하기 때문에 이러한 구현은 고객에게 어려울 수 있습니다.

이를 해결하기 위해 우리는 Cisco Kubeflow 스타터 팩 사용하는 하이브리드 클라우드 구현 아마존 세이지 메이커 클라우드에서 모델을 제공합니다. 이 참조 아키텍처를 제공함으로써 고객은 복잡한 인프라 전반에 걸쳐 매끄럽고 일관된 ML 워크로드를 구축하여 고객이 직면 할 수있는 모든 제한 사항을 충족시킬 수 있습니다.

Kubeflow는 Kubernetes에서 ML 오케스트레이션을위한 널리 사용되는 오픈 소스 라이브러리입니다. 하이브리드 클라우드 환경에서 운영하는 경우 Cisco Kubeflow 스타터 팩을 설치하여 온 프레미스에서 ML 모델을 개발, 빌드, 교육 및 배치 할 수 있습니다. 스타터 팩에는 최신 버전의 Kubeflow 및 애플리케이션 예제 번들이 포함되어 있습니다.

Amazon SageMaker는 데이터 준비, 데이터 처리, 모델 교육, 모델 실험 추적, 모델 호스팅 및 엔드 포인트 모니터링을 지원하는 관리 형 ML 서비스입니다. 와 Kubeflow 파이프 라인 용 SageMaker 구성 요소 하이브리드 ML 프로젝트에서 수행 한 Kubeflow Pipelines에서 작업을 조정할 수 있습니다. 이 접근 방식을 통해 온 프레미스 Kubeflow 클러스터의 교육 및 추론에 Amazon SageMaker 관리 서비스를 원활하게 사용할 수 있습니다. Amazon SageMaker를 사용하면 호스팅 모델에 자동 스케일링, 다중 모델 엔드 포인트, 모델 모니터링, 고 가용성 및 보안 준수와 같은 엔터프라이즈 기능이 제공됩니다.

유스 케이스의 작동 방식을 설명하기 위해 공개적으로 사용 가능한 시나리오를 다시 작성합니다. 실내 현지화 및 탐색을위한 BLE RSSI 데이터 세트 BLE (Bluetooth Low Energy) 수신 신호 강도 표시 (RSSI) 측정이 포함 된 데이터 세트. 파이프 라인은 모델을 교육하고 배포하여 Bluetooth 장치의 위치를 ​​예측합니다. 다음 단계는 Kubernetes 클러스터가 Amazon SageMaker와 상호 작용하여 하이브리드 솔루션을 수행하는 방법을 간략하게 설명합니다. 작성된 ML 모델 아파치 MXNet에서 실행되는 Kubeflow를 사용하여 훈련 Cisco UCS 서버 현지화 된 데이터 요구 사항을 충족 한 다음 Amazon SageMaker를 사용하여 AWS에 배포합니다.

생성되고 훈련 된 모델이 아마존 단순 스토리지 서비스 (Amazon S3) 및 Amazon SageMaker 엔드 포인트를 사용하여 제공합니다. 다음 다이어그램은 엔드 투 엔드 워크 플로우를 보여줍니다.

개발 환경

시작하려면 현재 Cisco 하드웨어가없는 경우 설정할 수 있습니다 Amazon Elastic Kubernetes 서비스 Kubeflow로 실행되는 (Amazon EKS) 지침은 Amazon EKS 클러스터 생성Kubeflow 파이프 라인 배포.

기존 UCS 시스템이있는 경우 Cisco Kubeflow 스타터 팩은 Kubernetes 클러스터 (v15.x 이상)에서 빠른 Kubeflow 설정을 제공합니다. Kubeflow를 설치하려면 INGRESS_IP 기계의 IP 주소로 변수를 변경하고 kubeflowup.bash 설치 스크립트. 다음 코드를 참조하십시오.

export INGRESS_IP=<UCS Machine's IP>
bash kubeflowup.bash

설치에 대한 자세한 정보는 다음을 참조하십시오. 설치 지침 GitHub 리포지토리에서.

하이브리드 파이프 라인 준비

Cisco UCS와 AWS 간의 원활한 ML 워크 플로우를 위해 Kubeflow Pipelines 구성 요소와 Amazon SageMaker Kubeflow 구성 요소를 사용하여 하이브리드 파이프 라인을 생성했습니다.

컴포넌트 사용을 시작하려면 AWS 패키지를 포함하여 Kubeflow Pipeline 패키지를 가져와야합니다.

import kfp
import kfp.dsl as dsl
from kfp import components
from kfp.aws import use_aws_secret

파이프 라인을 구성하고 실행하기위한 전체 코드는 GitHub 레포.

XNUMXD덴탈의 파이프 라인 설명 워크 플로 및 구성 요소가 그래프 형태로 서로 관련되는 방식. 파이프 라인 구성에는 파이프 라인을 실행하는 데 필요한 입력 (매개 변수)과 각 구성 요소의 입력 및 출력에 대한 정의가 포함됩니다. 다음 스크린 샷은 Kubeflow UI에서 완성 된 파이프 라인을 시각적으로 보여줍니다.

파이프 라인은 다음 세 단계를 실행합니다.

  1. 모델 훈련
  2. 모델 리소스 생성
  3. 모델 배포

모델 훈련

BLE 데이터를 사용하여 모델을 로컬로 학습하고 이미지를 생성 한 후 S3 버킷에 업로드하고 Amazon SageMaker에 모델을 등록합니다. MXNet 모델 구성 .yaml 파일.

훈련 된 모델 아티팩트가 Amazon S3에 업로드되면 Amazon SageMaker는 Amazon S3에 저장된 모델을 사용하여 모델을 호스팅 엔드 포인트에 배포합니다. Amazon SageMaker 엔드 포인트를 통해 다운 스트림 애플리케이션이 모델을 더 쉽게 소비하고 팀이이를 모니터링 할 수 있도록 지원 아마존 클라우드 워치. 다음 코드를 참조하십시오.

def blerssi_mxnet_train_upload_op(step_name='mxnet-train'): return dsl.ContainerOp( name='mxnet-train-upload-s3', image='ciscoai/mxnet-blerssi-train-upload:v0.2', command=['python', '/opt/mx-dnn.py', 'train'], arguments=['--bucket-name', bucket_name] ).apply(use_aws_secret(secret_name=aws_secret_name, aws_access_key_id_name='AWS_ACCESS_KEY_ID', aws_secret_access_key_name='AWS_SECRET_ACCESS_KEY'))

모델 리소스 생성

MXNet 모델 및 아티팩트가 Amazon S3에 업로드되면 KF 파이프 라인 CreateModel 컴포넌트 ~을 만들려면 Amazon SageMaker 모델 리소스.

Amazon SageMaker 엔드 포인트 API는 융통성이 있으며 훈련 된 모델을 엔드 포인트에 배포 할 수있는 몇 가지 옵션을 제공합니다. 예를 들어 기본 Amazon SageMaker 런타임이 모델 배포, 상태 확인 및 모델 호출을 관리하도록 할 수 있습니다. Amazon SageMaker는 또한 사용자 정의 컨테이너 및 알고리즘을 사용하여 런타임에 대한 사용자 정의를 허용합니다. 지침은 Amazon SageMaker 컨테이너의 개요.

사용 사례에서는 모델 상태 확인 API 및 모델 호출 API를 어느 정도 제어하려고했습니다. 훈련 된 모델을 배포하기 위해 Amazon SageMaker 런타임에 대한 사용자 지정 재정의를 선택했습니다. 사용자 지정 예측 변수를 사용하면 들어오는 요청을 처리하고 예측을 위해 모델로 전달하는 방법에 유연성이 있습니다. 다음 코드를 참조하십시오.

sagemaker_model_op = components.load_component_from_url(model)

모델 배포

다음을 사용하여 모델을 Amazon SageMaker 엔드 포인트에 배포합니다. KF 파이프 라인 CreateEndpoint 구성 요소.

추론에 사용되는 사용자 지정 컨테이너는 팀에게 사용자 지정 상태 확인 및 모델 호출을 정의 할 수있는 최대의 유연성을 제공합니다. 그러나 사용자 지정 컨테이너는 Amazon SageMaker 런타임에서 규정 한 API의 골든 경로를 따라야합니다. 다음 코드를 참조하십시오.

sagemaker_deploy_op = components.load_component_from_url(deploy)

파이프 라인 실행

파이프 라인을 실행하려면 다음 단계를 완료하십시오.

  1. Amazon SageMaker 구성 요소로 하이브리드 파이프 라인을 정의하는 Python 코드를 구성하십시오.
    @dsl.pipeline( name='MXNet Sagemaker Hybrid Pipeline', description='Pipeline to train BLERSSI model using mxnet and save in aws s3 bucket'
    )
    def mxnet_pipeline( region="", image="", model_name="", endpoint_config_name="", endpoint_name="", model_artifact_url="", instance_type_1="", role=""
    ): train_upload_model = blerssi_mxnet_train_upload_op() create_model = sagemaker_model_op( region=region, model_name=model_name, image=image, model_artifact_url=model_artifact_url, role=role ).apply(use_aws_secret(secret_name=aws_secret_name, aws_access_key_id_name='AWS_ACCESS_KEY_ID', aws_secret_access_key_name='AWS_SECRET_ACCESS_KEY')) create_model.after(train_upload_model) sagemaker_deploy=sagemaker_deploy_op( region=region, endpoint_config_name=endpoint_config_name, endpoint_name=endpoint_name, model_name_1=create_model.output, instance_type_1=instance_type_1 ).apply(use_aws_secret(secret_name=aws_secret_name, aws_access_key_id_name='AWS_ACCESS_KEY_ID', aws_secret_access_key_name='AWS_SECRET_ACCESS_KEY')) sagemaker_deploy.after(create_model)
    

    구성에 대한 자세한 내용은 다음을 참조하십시오. 파이프 라인 빠른 시작. 전체 파이프 라인 코드는 GitHub 레포.

  2. 파이프 라인을 실행하려면 다음 매개 변수를 제공하여 파이프 라인을 실행하십시오.
    run = client.run_pipeline(blerssi_hybrid_experiment.id, 'blerssi-sagemaker-pipeline-'+timestamp, pipeline_package_path='mxnet_pipeline.tar.gz', params={ 'region': aws_region, 'image': inference_image, 'model_name': model_name, 'endpoint_config_name': endpoint_config_name, 'endpoint_name': endpoint_name, 'model_artifact_url': model_path, 'instance_type_1': instance_type, 'role': role_arn
    })

이 시점에서 BLERSSI Amazon SageMaker 파이프 라인이 실행되기 시작합니다. 모든 구성 요소가 성공적으로 실행 된 후 sagemaker-deploy 구성 요소의 로그를 확인하여 엔드 포인트가 작성되었는지 확인하십시오. 다음 스크린 샷은 배포 된 모델의 URL이있는 마지막 단계의 로그를 보여줍니다.

모델 검증

모델이 AWS에 배포 된 후 AWS에 배포 된 모델의 엔드 포인트 이름을 사용하여 HTTP 요청을 통해 샘플 데이터를 모델에 제출하여 모델의 유효성을 검사합니다. 다음 스크린 샷은 Python 클라이언트가있는 샘플 Jupyter 노트북의 스 니펫과 위치 예측이있는 해당 출력을 보여줍니다.

결론

Amazon SageMaker와 Kubeflow Pipelines는 하나의 단일 하이브리드 파이프 라인에 쉽게 통합 할 수 있습니다. Amazon SageMaker에 대한 전체 블로그 및 자습서 세트를 사용하면 Kubeflow Pipelines 용 Amazon SageMaker 구성 요소를 통해 하이브리드 파이프 라인을 쉽게 만들 수 있습니다. API는 철저하고, 우리가 사용해야하는 모든 주요 구성 요소를 다루었으며, 맞춤형 알고리즘을 개발하고 Cisco Kubeflow Starter Pack과 통합 할 수있었습니다. Amazon SageMaker를 사용하여 AWS에 서비스를 제공하기 위해 훈련 된 ML 모델을 Amazon S3에 업로드함으로써 복잡한 ML 수명주기 관리의 복잡성과 TCO를 약 50 % 줄였습니다. 우리는 데이터 프라이버시의 최고 수준의 엔터프라이즈 정책을 준수하고 미국 및 전 세계의 AWS에서 중복성을 통해 확장 가능한 방식으로 모델을 제공합니다.


저자에 관하여

엘비라 주라 에바 Cisco의 클라우드 및 온 프레미스 머신 러닝 및 인공 지능 전략을 담당하는 기술 제품 관리자입니다. 또한 Kubeflow의 커뮤니티 제품 관리자이자 MLPerf 커뮤니티의 멤버입니다.

데보 두타 Cisco의 Distinguished Engineer로 알고리즘, 시스템 및 기계 학습의 교차점에서 기술 그룹을 이끌고 있습니다. Cisco에있는 동안 Debo는 현재 스탠포드의 방문 학자입니다. 그는 University of Southern California에서 컴퓨터 공학 박사 학위를, 인도 IIT Kharagpur에서 컴퓨터 공학 학사 학위를 취득했습니다.

아 미트 사하 시스코의 수석 엔지니어로 시스템 및 머신 러닝 분야에서 노력하고 있습니다. 그는 IIT Kharagpur의 방문 교수입니다. 휴스턴 라이스 대학교에서 컴퓨터 공학 박사 학위를 받았으며 IIT Kharagpur에서 학사 학위를 받았습니다. 그는 최고의 컴퓨터 과학 컨퍼런스를위한 여러 프로그램위원회에서 활동했습니다.

출처 : https://aws.amazon.com/blogs/machine-learning/cisco-uses-amazon-sagemaker-and-kubeflow-to-create-a-hybrid-machine-learning-workflow/

spot_img

최신 인텔리전스

spot_img