컨테이너를 사용한 분산 학습

이 페이지에서는 커스텀 컨테이너가 AI Platform의 분산형 학습 구조를 지원하는 방법을 설명합니다.

커스텀 컨테이너를 사용하면 분산을 지원하는 ML 프레임워크를 사용하여 분산형 학습을 수행할 수 있습니다. 여기서 사용되는 용어는 TensorFlow의 분산 모델을 기반으로 하지만, 유사한 배포 구조를 가진 다른 ML 프레임워크를 사용할 수 있습니다. 예를 들어 MXNet에서의 분산형 학습은 스케줄러, 작업자, 서버를 사용합니다. 이는 마스터, 작업자, 매개변수 서버를 사용하는 AI Platform 커스텀 컨테이너의 분산형 학습 구조에 해당합니다.

학습 클러스터 구조

AI Platform에서 분산형 학습 작업을 실행하는 경우 학습 클러스터에 여러 머신(노드)을 지정합니다. 학습 서비스는 개발자가 지정한 머신 유형에 리소스를 할당합니다. 제공된 노드에서 실행 중인 작업을 복제본이라 합니다. 분산형 TensorFlow 모델에 따라 학습 클러스터의 각 복제본은 분산 학습에서 단일 역할 또는 작업을 받습니다.

  • 마스터: 정확히 복제본 하나가 마스터로 지정됩니다. 이 작업은 다른 작업을 관리하고 작업 상태를 전체적으로 보고합니다.

  • 작업자: 복제본 한 개 이상을 작업자로 지정할 수 있습니다. 이러한 복제본은 작업 구성에서 지정한 대로 작업의 일부분을 수행합니다.

  • 매개변수 서버: 복제본 한 개 이상을 매개변수 서버로 지정할 수 있습니다. 이 복제본은 모델 매개변수를 저장하고 각 작업자 간에 공유 모델 상태를 조정합니다.

API 매핑

학습 클러스터의 머신에 할당할 수 있는 3가지 역할은 개발자가 학습 작업의 입력 매개변수를 나타내는 TrainingInput에 지정할 수 있는 3가지 필드에 해당합니다.

  • masterConfig.imageUri는 마스터에서 실행할 컨테이너 이미지 URI를 나타냅니다.
  • workerConfig.imageUriparameterServerConfig.imageUri는 각각 작업자와 매개변수 서버에서 실행될 컨테이너 이미지 URI를 나타냅니다. 이 필드에 설정된 값이 없으면 AI Platform에서 masterConfig.imageUri 값을 사용합니다.

이러한 각 필드의 값을 gcloud beta ai-platform jobs submit training의 해당 플래그로 설정할 수도 있습니다.

  • 마스터 구성의 경우 --master-image-uri를 사용합니다.
  • 작업자 구성의 경우, --worker-image-uri를 사용합니다.
  • 매개변수 서버 구성의 경우 --parameter-server-image-uri를 사용합니다.

커스텀 컨테이너를 사용한 분산형 학습 작업 제출 방법의 예를 참조하세요.

CLUSTER_SPEC 이해하기

AI Platform에서는 모든 복제본에 환경 변수, CLUSTER_SPEC을 채워 전체 클러스터가 설정된 방법을 설명합니다. TensorFlow TF_CONFIG과 마찬가지로 CLUSTER_SPEC은 색인과 역할(마스터, 작업자 또는 매개변수 서버)을 포함하여 클러스터의 모든 복제본을 설명합니다.

TensorFlow를 사용하여 분산형 학습을 실행하면 TF_CONFIG가 파싱되어 tf.train.ClusterSpec이 빌드됩니다. 마찬가지로 다른 머신러닝 프레임워크에서 분산형 학습을 실행하는 경우, CLUSTER_SPEC을 파싱하여 프레임워크에서 요구하는 환경 변수 또는 설정을 채워야 합니다.

CLUSTER_SPEC 형식

CLUSTER_SPEC 환경 변수는 다음과 같은 형식의 JSON 문자열입니다.

설명
"cluster" 커스텀 컨테이너에 대한 클러스터 설명입니다. `TF_CONFIG`와 마찬가지로, 이 객체의 형식은 TensorFlow 클러스터 사양으로 지정되며 tf.train.ClusterSpec 생성자로 전달될 수 있습니다.
"task" 코드를 실행 중인 특정 노드의 작업을 설명합니다. 이 정보를 사용하여 분산 작업의 특정 작업자에 대한 코드를 작성할 수 있습니다. 이 항목은 다음과 같은 키가 포함된 사전입니다.
"type" 이 노드에서 수행되는 작업의 유형입니다. 가능한 값은 master, worker, ps입니다.
"index" 0부터 시작하는 작업 색인입니다. 대부분의 분산 학습 작업에는 한 개의 마스터 작업, 한 개 이상의 매개변수 서버, 한 개 이상의 작업자가 포함됩니다.
"trial" 현재 실행 중인 초매개변수 조정 시도의 식별자입니다. 작업에 초매개변수 조정을 구성하는 경우 학습 시도 횟수를 설정해야 합니다. 이 값을 통해 실행 중인 시도 간에 코드를 구분할 수 있습니다. 식별자는 시도 횟수를 포함하는 문자열 값으로, 1부터 시작합니다.
"job" 작업을 시작할 때 사용한 작업 매개변수입니다. 대부분의 경우 명령줄 인수를 통해 애플리케이션에 전달된 데이터를 복제하므로 이 항목은 무시해도 됩니다.

TensorFlow와의 호환성

TensorFlow를 사용한 분산형 학습은 AI Platform 런타임 버전에서 실행되는 학습 코드와 마찬가지로 AI Platform의 커스텀 컨테이너와 동일한 방식으로 작동합니다. 두 경우 모두 AI Platform에서 자동으로 TF_CONFIG를 채웁니다. 커스텀 컨테이너에서 TensorFlow를 사용한 분산형 학습을 실행하면 AI Platform에서 자동으로 TF_CONFIGCLUSTER_SPEC을 채웁니다.

TensorFlow Estimator API를 사용하는 경우, TensorFlow가 TF_CONFIG를 파싱하여 클러스터 사양을 자동으로 빌드합니다. Core API를 사용하는 경우에는 학습 애플리케이션의 TF_CONFIG에서 클러스터 사양을 빌드해야 합니다.

AI Platform에서 분산형 학습에 TF_CONFIG를 사용하는 방법에 대한 자세한 내용과 예를 참조하세요.

다음 단계

이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

다음에 대한 의견 보내기...