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

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

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

학습 클러스터 구조

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

  • 마스터 작업자: 정확히 복제본 하나가 마스터 작업자(최고 작업자라고도 함)로 지정됩니다. 이 태스크는 다른 작업을 관리하고 작업 상태를 전체적으로 보고합니다.

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

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

  • 평가자: 복제본 한 개 이상을 평가자로 지정할 수 있습니다. 이러한 복제본을 사용하여 모델을 평가할 수 있습니다. TensorFlow를 사용하는 경우 일반적으로 TensorFlow는 평가자를 두 개 이상 사용하지 않을 것으로 예상합니다.

API 매핑

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

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

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

  • 마스터 작업자 구성의 경우 --master-image-uri를 사용합니다.
  • 작업자 구성의 경우 --worker-image-uri를 사용합니다.
  • 매개변수 서버 구성의 경우 --parameter-server-image-uri를 사용합니다.
  • 현재 평가자의 컨테이너 이미지 URI를 지정하기 위한 플래그가 없습니다. config.yaml 구성 파일에서 evaluatorConfig.imageUri를 지정할 수 있습니다.

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

CLUSTER_SPEC 이해하기

AI Platform Training에서는 모든 복제본에 환경 변수, 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, evaluator입니다.
"index" 0부터 시작하는 태스크 색인입니다. 대부분의 분산 학습 작업에는 한 개의 마스터 작업, 한 개 이상의 매개변수 서버, 한 개 이상의 작업자가 포함됩니다.
"trial" 현재 실행 중인 초매개변수 조정 시도의 식별자입니다. 작업에 초매개변수 조정을 구성하는 경우 학습 시도 횟수를 설정해야 합니다. 이 값을 통해 실행 중인 시도 간에 코드를 구분할 수 있습니다. 식별자는 시도 횟수를 포함하는 문자열 값으로, 1부터 시작합니다.
"job" 작업을 시작할 때 사용한 작업 매개변수입니다. 대부분의 경우 명령줄 인수를 통해 애플리케이션에 전달된 데이터를 복제하므로 이 항목은 무시해도 됩니다.

TF_CONFIG와 비교

AI Platform Training은 또한 모든 학습 작업의 각 복제본에 TF_CONFIG 환경 변수를 설정합니다. AI Platform Training은 오직 커스텀 컨테이너 학습 작업의 복제본에 CLUSTER_SPEC 환경 변수를 설정합니다. 두 환경 변수는 일부 값을 공유하지만, 형식이 다릅니다.

커스텀 컨테이너로 학습할 때 마스터 복제본에는 기본적으로 master 태스크 이름이 포함된 TF_CONFIG 환경 변수에 라벨이 지정됩니다. 학습 작업을 만들 때 trainingInput.useChiefInTfConfig 필드를 true로 설정하거나 작업에 평가자 복제본 1개 이상을 사용하여 대신 chief 태스크 이름으로 라벨이 지정되도록 구성할 수 있습니다. 이 방식은 커스텀 컨테이너에 TensorFlow 2가 사용될 때 특히 유용합니다.

이 구성 옵션 외에도 TensorFlow를 사용한 분산형 학습은 AI Platform Training 런타임 버전을 사용할 때와 같이 커스텀 컨테이너를 사용할 때 동일한 방식으로 작동합니다. AI Platform Training에서 분산형 학습에 TF_CONFIG를 사용하는 방법에 대한 자세한 내용과 예시를 참조하세요.

다음 단계