AI Platform Training의 컨테이너는 Docker 이미지 내에서 애플리케이션을 실행할 수 있게 해주는 기능입니다. ML 프레임워크와 버전은 물론, AI Platform Training에서는 달리 지원되지 않는 ML 외의 종속 항목, 라이브러리, 바이너리를 사용하여 자체 커스텀 컨테이너를 빌드해 AI Platform Training에서 작업을 실행할 수 있습니다.
컨테이너로 학습하는 방법
선택한 ML 프레임워크로 구현된 학습 애플리케이션은 학습 프로세스의 핵심 요소입니다.
- 선택한 ML 프레임워크를 사용하여 모델을 학습하는 애플리케이션을 만듭니다.
- 커스텀 컨테이너를 사용할 지 여부를 결정합니다. 이미 종속 항목을 지원하는 런타임 버전이 있을 수 있습니다. 그렇지 않으면 학습 작업을 위한 커스텀 컨테이너를 빌드해야 합니다. 커스텀 컨테이너에서 학습 애플리케이션과 모든 종속 항목을 학습 작업을 실행하는 데 사용할 이미지에 사전 설치합니다.
- AI Platform Training이 액세스할 수 있는 소스에 학습 및 확인 데이터를 저장합니다. 일반적으로는 Cloud Storage, Bigtable 또는 AI Platform Training에서 사용하는 동일한 Google Cloud 프로젝트와 연결된 다른 Google Cloud 스토리지 서비스로 가져오는 것을 의미합니다.
- 애플리케이션을 실행할 수 있게 되면 Docker 이미지를 빌드하여 Container Registry로 내보내야 합니다. 이때 AI Platform Training 서비스가 레지스트리에 액세스할 수 있는지 확인합니다.
config.yaml
파일에 인수를 지정하거나 해당gcloud
플래그를 지정하여gcloud ai-platform jobs submit training
을 사용하여 작업을 제출합니다.- AI Platform Training 서비스는 작업에 필요한 리소스를 설정합니다. 작업 구성을 기반으로 가상 머신(학습 인스턴스라고 함)을 하나 이상 할당합니다. 학습 작업을 제출할 때
TrainingInput
객체의 일부로 지정하는 커스텀 컨테이너를 사용하여 학습 인스턴스를 설정합니다. - 학습 서비스는 학습 작업 생성 시 지정한 명령줄 인수를 통해 Docker 이미지를 실행합니다.
- 다음과 같은 방법으로 실행 중인 작업에 대한 정보를 가져올 수 있습니다.
- Cloud Logging에서 Google Cloud 콘솔의 AI Platform Training 작업 세부정보 페이지로 이동하면 작업 로그 링크를 확인할 수 있습니다.
- 작업 세부정보 요청 또는
gcloud
명령줄 도구를 사용해 로그 스트리밍 실행(구체적으로gcloud ai-platform jobs stream-logs
) projects.jobs.get
메서드를 사용하여 학습 서비스에 대해 프로그래매틱 방식으로 상태 요청을 실행합니다. 학습 작업을 모니터링하는 방법을 자세히 알아보세요.
- 학습 작업이 성공하거나 복구할 수 없는 오류가 발생하는 경우 AI Platform Training은 모든 작업 프로세스를 중지하고 리소스를 삭제합니다.
커스텀 컨테이너의 이점
커스텀 컨테이너를 사용하면 애플리케이션에 필요한 모든 종속 항목을 지정하여 사전에 설치할 수 있습니다.
- 더욱 빨라진 구동 시간. 종속 항목이 사전 설치되어 있는 커스텀 컨테이너를 사용하는 경우, 시작 시 종속 항목을 설치하기 위해 학습 애플리케이션이 필요로 하는 시간을 절약할 수 있습니다.
- 원하는 ML 프레임워크 사용. 사용하려는 ML 프레임워크를 지원하는 AI Platform Training 런타임 버전을 찾을 수 없다면 선택한 프레임워크를 설치하는 커스텀 컨테이너를 빌드한 후 이를 사용해 AI Platform Training에서 작업을 실행하면 됩니다. 예를 들어 PyTorch로 학습시킬 수 있습니다.
- 분산 학습에 대한 지원 확대. 커스텀 컨테이너를 사용하면 ML 프레임워크를 사용하여 분산 학습을 수행할 수 있습니다.
- 최신 버전 사용. ML 프레임워크의 최신 빌드 또는 부 버전을 사용할 수도 있습니다. 예를 들어 커스텀 컨테이너를 빌드하여
tf-nightly
로 학습시킬 수 있습니다.
커스텀 컨테이너로 초매개변수 미세 조정
AI Platform Training에서 초매개변수 미세 조정을 수행하려면 목표 측정항목과 이를 최소화 또는 최대화할지 지정합니다. 예를 들어 모델 정확성을 최대화하거나 모델 손실을 최소화하려 할 수 있습니다. 또한 각 초매개변수에 대한 목표 값과 함께 조정하려는 초매개변수를 나열합니다. AI Platform Training에서 학습 애플리케이션에 대한 여러 가지 시행를 진행하며 각 시행이 끝날 때마다 초매개변수를 추적하고 조정합니다. 초매개변수 미세 조정 작업이 완료되면 AI Platform Training은 가장 효과적인 초매개변수 구성 값과 각 시도 결과의 요약을 보고합니다.
커스텀 컨테이너로 초매개변수를 미세 조정하려면 다음과 같은 조정이 필요합니다.
- Dockerfile:
cloudml-hypertune
을 설치합니다. - 학습 코드:
cloudml-hypertune
을 사용하고 도우미 함수report_hyperparameter_tuning_metric
을 호출하여 각 시도 결과를 보고합니다.- 각 초매개변수에 대한 명령줄 인수를 추가하고 인수 파싱을
argparse
와 같은 인수 파서로 처리합니다.
- 작업 요청에서
HyperparameterSpec
을TrainingInput
객체에 추가합니다.
초매개변수 미세 조정을 사용한 커스텀 컨테이너 학습의 예시를 참조하거나 AI Platform Training의 초매개변수 미세 조정 작동 방식에 대해 자세히 알아보세요.
커스텀 컨테이너와 함께 GPU 사용
GPU 학습을 위해서는 커스텀 컨테이너가 몇 가지 특수한 요구사항을 충족해야 합니다. CPU를 사용한 학습에 사용하는 Docker 이미지와 다른 Docker 이미지를 빌드해야 합니다.
- Docker 이미지에 CUDA 도구와 cuDNN을 사전에 설치합니다. 이를 처리하는 권장 방법은
nvidia/cuda
이미지를 기본 이미지로 사용하는 것입니다. 이 이미지는 사전 설치된 CUDA 도구 및 cuDNN과 일치하는 버전을 포함하며, 관련 환경 변수를 올바르게 설정할 수 있도록 도와줍니다. - Docker 이미지에 필요한 ML 프레임워크 및 기타 종속 항목과 함께 학습 애플리케이션을 설치합니다.
GPU를 사용한 학습을 위한 Dockerfile 예를 참조하세요.
다음 단계
- 학습 작업에 커스텀 컨테이너를 사용하는 방법 알아보기
- 커스텀 컨테이너를 사용한 분산형 학습에 대해 알아보기