기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
SageMaker AI 및 Hydra를 사용하여 로컬 개발에서 확장 가능한 실험으로 기계 학습 워크플로 간소화
작성자: David Sauerwein(AWS), Julian Ferdinand Grueber(AWS), Marco Geiger(AWS)
요약
이 패턴은 Amazon SageMaker AI에서 로컬 테스트에서 프로덕션에 이르기까지 기계 학습(ML) 알고리즘을 구성하고 실행하는 통합 접근 방식을 제공합니다. ML 알고리즘은이 패턴의 핵심이지만이 알고리즘의 접근 방식은 특성 엔지니어링, 추론 및 전체 ML 파이프라인으로 확장됩니다. 이 패턴은 샘플 사용 사례를 통해 로컬 스크립트 개발에서 SageMaker AI 훈련 작업으로의 전환을 보여줍니다.
일반적인 ML 워크플로는 로컬 시스템에서 솔루션을 개발 및 테스트하고, 클라우드에서 대규모 실험(예: 다양한 파라미터)을 실행하고, 승인된 솔루션을 클라우드에 배포하는 것입니다. 그런 다음 배포된 솔루션을 모니터링하고 유지 관리해야 합니다. 이 워크플로에 대한 통합 접근 방식이 없으면 개발자는 각 단계에서 코드를 리팩터링해야 하는 경우가 많습니다. 솔루션이이 워크플로의 모든 단계에서 변경될 수 있는 많은 수의 파라미터에 의존하는 경우 체계적이고 일관된 상태를 유지하기가 점점 더 어려워질 수 있습니다.
이 패턴은 이러한 문제를 해결합니다. 먼저 로컬 시스템, 컨테이너 또는 SageMaker AI에서 실행되는지 여부에 관계없이 일관성을 유지하는 통합 워크플로를 제공하여 환경 간에 코드 리팩터링이 필요하지 않습니다. 둘째, 각 실행의 구성에 대한 자동 로깅을 통해 파라미터를 쉽게 수정하고 결합할 수 있는 별도의 구성 파일에 정의하는 Hydra의 구성 시스템을 통해 파라미터 관리를 간소화합니다. 이 패턴이 이러한 문제를 해결하는 방법에 대한 자세한 내용은 추가 정보를 참조하세요.
사전 조건 및 제한 사항
사전 조건
제한 사항
코드는 현재 SageMaker AI 훈련 작업만 대상으로 합니다. 처리 작업 및 전체 SageMaker AI 파이프라인으로 확장하는 것은 간단합니다.
완전히 프로덕션화된 SageMaker AI 설정을 위해서는 추가 세부 정보가 있어야 합니다. 컴퓨팅 및 스토리지를 위한 사용자 지정 AWS Key Management Service (AWS KMS) 키 또는 네트워킹 구성을 예로 들 수 있습니다.
config
폴더의 전용 하위 폴더에서 Hydra를 사용하여 이러한 추가 옵션을 구성할 수도 있습니다.일부 AWS 서비스 는 전혀 사용할 수 없습니다 AWS 리전. 리전 가용성은 AWS 리전별 서비스를
참조하세요. 특정 엔드포인트는 서비스 엔드포인트 및 할당량을 참조하고 서비스 링크를 선택합니다.
아키텍처
다음 다이어그램은 솔루션의 아키텍처를 보여줍니다.

이 다이어그램은 다음 워크플로를 보여줍니다.
데이터 과학자는 Docker 또는 SageMaker AI 없이 로컬 환경에서 소규모로 알고리즘을 반복하고, 파라미터를 조정하고, 훈련 스크립트를 빠르게 테스트할 수 있습니다. (자세한 내용은 에픽에서 "빠른 테스트를 위해 로컬에서 실행" 작업을 참조하세요.)
알고리즘에 만족하면 데이터 과학자는 Docker 이미지를 빌드하여 라는 Amazon Elastic Container Registry(Amazon ECR) 리포지토리에 푸시합니다
hydra-sm-artifact
. (자세한 내용은 Epics의 “SageMaker AI에서 워크플로 실행”을 참조하세요.)데이터 과학자는 Python 스크립트를 사용하여 SageMaker AI 훈련 작업 또는 하이퍼파라미터 최적화(HPO) 작업을 시작합니다. 일반 훈련 작업의 경우 조정된 구성은 라는 Amazon Simple Storage Service(Amazon S3) 버킷에 기록됩니다
hydra-sample-config
. HPO 작업의 경우config
폴더에 있는 기본 구성 세트가 적용됩니다.SageMaker AI 훈련 작업은 Docker 이미지를 가져오고, Amazon S3 버킷에서 입력 데이터를 읽고
hydra-sample-data
, Amazon S3 버킷에서 구성을 가져오hydra-sample-config
거나 기본 구성을 사용합니다. 훈련 후 작업은 출력 데이터를 Amazon S3 버킷에 저장합니다hydra-sample-data
.
자동화 및 규모 조정
자동 훈련, 재훈련 또는 추론의 경우 AWS CLI 코드를 , AWS Lambda AWS CodePipeline또는 Amazon EventBridge와 같은 서비스와 통합할 수 있습니다.
인스턴스 크기에 대한 구성을 변경하거나 분산 훈련에 대한 구성을 추가하여 조정을 수행할 수 있습니다.
도구
AWS 서비스
AWS CloudFormation를 사용하면 AWS 리소스를 설정하고, 빠르고 일관되게 프로비저닝하고, AWS 계정 및의 수명 주기 동안 리소스를 관리할 수 있습니다 AWS 리전.
AWS Command Line Interface (AWS CLI)는 명령줄 셸의 명령을 AWS 서비스 통해와 상호 작용하는 데 도움이 되는 오픈 소스 도구입니다. 이 패턴의 경우 AWS CLI 는 초기 리소스 구성과 테스트 모두에 유용합니다.
Amazon Elastic Container Registry(Amazon ECR)는 안전하고 확장성이 있고 신뢰할 수 있는 관리형 컨테이너 이미지 레지스트리 서비스입니다.
Amazon SageMaker AI는 ML 모델을 구축 및 훈련한 다음 프로덕션 지원 호스팅 환경에 배포하는 데 도움이 되는 관리형 기계 학습(ML) 서비스입니다. SageMaker AI 훈련은 대규모 ML 모델 훈련을 지원하는 SageMaker AI 내의 완전관리형 ML 서비스입니다. 이 도구는 훈련 모델의 컴퓨팅 요구 사항을 효율적으로 처리하여 기본 제공 확장성을 활용하고 다른와 통합할 수 있습니다 AWS 서비스. SageMaker AI 훈련은 사용자 지정 알고리즘과 컨테이너도 지원하므로 다양한 ML 워크플로에 유연하게 적용할 수 있습니다.
Amazon Simple Storage Service(S3)는 원하는 양의 데이터를 저장, 보호 및 검색하는 데 도움이 되는 클라우드 기반 객체 스토리지 서비스입니다.
기타 도구
Docker
는 운영 체제 수준의 가상화를 사용하여 컨테이너에 소프트웨어를 제공하는 서비스형 플랫폼(PaaS) 제품 세트입니다. 이 패턴에서는 개발부터 배포까지 다양한 단계에서 일관된 환경을 보장하고 종속성과 코드를 안정적으로 패키징하는 데 사용되었습니다. Docker의 컨테이너화를 통해 워크플로 전반에서 쉽게 규모를 조정하고 버전을 제어할 수 있습니다. Hydra
는 여러 구성 및 동적 리소스 관리를 유연하게 처리할 수 있는 구성 관리 도구입니다. 환경 구성을 관리하는 데 중요하므로 다양한 환경에 원활하게 배포할 수 있습니다. Hydra에 대한 자세한 내용은 추가 정보를 참조하세요. Python
은 범용 컴퓨터 프로그래밍 언어입니다. Python은 ML 코드와 배포 워크플로를 작성하는 데 사용되었습니다. Poetry
는 Python에서 종속성 관리 및 패키징을 위한 도구입니다.
코드 리포지토리
이 패턴의 코드는 GitHub configuring-sagemaker-training-jobs-with-hydra
모범 사례
에픽
작업 | 설명 | 필요한 기술 |
---|---|---|
가상 환경을 생성하고 활성화합니다. | 가상 환경을 생성하고 활성화하려면 리포지토리의 루트에서 다음 명령을 실행합니다.
| 일반 AWS |
인프라를 배포합니다. | CloudFormation을 사용하여 인프라를 배포하려면 다음 명령을 실행합니다.
| 일반 AWS, DevOps 엔지니어 |
샘플 데이터를 다운로드합니다. | openml
| 일반 AWS |
빠른 테스트를 위해 로컬에서를 실행합니다. | 테스트를 위해 로컬에서 훈련 코드를 실행하려면 다음 명령을 실행합니다.
모든 실행의 로그는 실행 시간별로 라는 폴더에 저장됩니다
| 데이터 사이언티스트 |
작업 | 설명 | 필요한 기술 |
---|---|---|
환경 변수를 설정합니다. | SageMaker AI에서 작업을 실행하려면 및 AWS 계정 ID를 제공하여 다음 환경 변수를 설정합니다 AWS 리전 .
| 일반 AWS |
Docker 이미지를 생성하고 푸시합니다. | Docker 이미지를 생성하여 Amazon ECR 리포지토리로 푸시하려면 다음 명령을 실행합니다.
이 작업은 환경에 유효한 자격 증명이 있다고 가정합니다. Docker 이미지는 이전 작업의 환경 변수에 지정된 Amazon ECR 리포지토리로 푸시되며 훈련 작업이 실행될 SageMaker AI 컨테이너를 활성화하는 데 사용됩니다. | ML 엔지니어, 일반 AWS |
입력 데이터를 Amazon S3에 복사합니다. | SageMaker AI 훈련 작업은 입력 데이터를 선택해야 합니다. 데이터를 위해 입력 데이터를 Amazon S3 버킷에 복사하려면 다음 명령을 실행합니다.
| 데이터 엔지니어, 일반 AWS |
SageMaker AI 훈련 작업을 제출합니다. | 스크립트 실행을 간소화하려면
| 일반 AWS, ML 엔지니어, 데이터 과학자 |
SageMaker AI 하이퍼파라미터 튜닝을 실행합니다. | SageMaker AI 하이퍼파라미터 튜닝 실행은 SageMaker AII 훈련 작업 제출과 유사합니다. 하지만 start_sagemaker_hpo_job.py 하이퍼파라미터 최적화(HPO) 작업을 시작하려면 다음 명령을 실행합니다.
| 데이터 사이언티스트 |
문제 해결
문제 | Solution |
---|---|
만료된 토큰 | 새 AWS 자격 증명을 내보냅니다. |
IAM 권한 부족 | CloudFormation 템플릿을 배포하고 SageMaker AI 훈련 작업을 시작하는 데 필요한 모든 IAM 권한이 있는 IAM 역할의 자격 증명을 내보내야 합니다. |
관련 리소스
추가 정보
이 패턴은 다음과 같은 문제를 해결합니다.
로컬 개발부터 대규모 배포까지의 일관성 -이 패턴을 사용하면 개발자는 로컬 Python 스크립트를 사용하든, 로컬 Docker 컨테이너를 실행하든, SageMaker AI에 대한 대규모 실험을 수행하든, SageMaker AI의 프로덕션 환경에 배포하든 관계없이 동일한 워크플로를 사용할 수 있습니다. 이러한 일관성은 다음과 같은 이유로 중요합니다.
더 빠른 반복 - 확장 시 주요 조정 없이 빠른 로컬 실험이 가능합니다.
리팩터링 없음 - SageMaker AI에서 더 큰 실험으로 전환하는 것은 원활하므로 기존 설정을 점검할 필요가 없습니다.
지속적인 개선 - 코드가 환경 전체에서 동일하게 유지되므로 새로운 기능을 개발하고 알고리즘을 지속적으로 개선하는 것은 간단합니다.
구성 관리 -이 패턴은 구성 관리 도구인 Hydra
파라미터는 코드와 별도로 구성 파일에 정의됩니다.
다양한 파라미터 세트를 쉽게 교체하거나 결합할 수 있습니다.
각 실행의 구성이 자동으로 로깅되므로 실험 추적이 간소화됩니다.
클라우드 실험은 로컬 실행과 동일한 구성 구조를 사용하여 일관성을 보장할 수 있습니다.
Hydra를 사용하면 구성을 효과적으로 관리하여 다음 기능을 활성화할 수 있습니다.
구성 분할 - 프로젝트 구성을 독립적으로 수정할 수 있는 더 작고 관리 가능한 부분으로 나눕니다. 이 접근 방식을 사용하면 복잡한 프로젝트를 더 쉽게 처리할 수 있습니다.
기본값을 쉽게 조정 - 기준 구성을 빠르게 변경하여 새로운 아이디어를 더 간단하게 테스트할 수 있습니다.
CLI 입력 및 구성 파일 정렬 - 명령줄 입력을 구성 파일과 원활하게 결합합니다. 이 접근 방식은 복잡함과 혼란을 줄여 시간이 지남에 따라 프로젝트를 더 쉽게 관리할 수 있습니다.