TF_CONFIG 및 분산 학습

학습 작업을 실행하면 AI Platform Training에서 작업에 속한 가상 머신(VM) 인스턴스마다 TF_CONFIG라는 환경 변수를 설정합니다. 각 VM에서 실행되는 학습 코드는 TF_CONFIG 환경 변수를 사용하여 학습 작업 및 이를 실행 중인 VM의 역할에 대한 세부정보에 액세스합니다.

TensorFlow는 TF_CONFIG 환경 변수를 사용하여 분산 학습을 용이하게 하지만 학습 코드에서 직접 액세스할 필요는 없습니다. 이 문서에서는 TF_CONFIG 환경 변수와 이 환경 변수를 분산 TensorFlow 작업 및 초매개변수 조정 작업에서 사용하는 방법을 설명합니다.

TF_CONFIG 형식

AI Platform Training에서는 TensorFlow의 분산 학습에 필요한 사양을 충족하도록 모든 학습 작업의 모든 VM에 TF_CONFIG 환경 변수를 설정합니다. 이 외에도 AI Platform Training에서는 TF_CONFIG 환경 변수에 TensorFlow에서 요구하는 것 이상의 추가 필드도 설정합니다.

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

TF_CONFIG 필드
cluster

TensorFlow 클러스터 설명입니다. 하나 이상의 태스크 이름(chief , worker , ps 또는 master)을 이 태스크가 실행되는 네트워크 주소 목록에 매핑하는 사전입니다. 이 사전은 한 특정 학습 작업의 모든 VM에서 동일합니다.

tf.train.ClusterSpec 생성자의 유효한 첫 번째 인수입니다. 사용자가 평가자를 작업에 이용하더라도 평가자는 학습 클러스터의 일부로 간주되지 않으므로 이 사전은 evaluator를 키로 포함하지 않습니다.

이 문서의 다른 섹션에서 chiefmaster의 차이점에 대해 알아보세요.

task

이 환경 변수가 설정된 VM의 태스크 설명입니다. 이 사전은 같은 학습 작업에서도 VM마다 서로 다릅니다. 이 정보를 사용하여 분산 학습 작업의 각 VM에서 실행되는 코드를 맞춤설정할 수 있습니다. 또한 초매개변수 조정 작업의 시도마다 학습 코드의 동작을 변경할 수도 있습니다.

이 사전에는 다음 키-값 쌍이 포함됩니다.

task 필드
type

이 VM에서 수행 중인 태스크 유형입니다. 이 값은 작업자의 경우 worker, 매개변수 서버의 경우 ps, 평가자의 경우 evaluator로 설정됩니다. 작업의 마스터 작업자에서 값은 chief 또는 master로 설정됩니다. 이 문서의 chiefmaster 비교 섹션에서 두 값의 차이점에 대해 자세히 알아보세요.

index

0부터 시작하는 태스크 색인입니다. 예를 들어 학습 작업에 두 작업자가 포함된 경우 이 값은 한 작업자에서는 0, 다른 작업자에서는 1로 설정됩니다.

trial

현재 이 VM에서 실행 중인 초매개변수 조정 시도의 ID입니다. 이 필드는 현재 학습 작업이 초매개변수 조정 작업인 경우에만 설정됩니다.

초매개변수 조정 작업의 경우 AI Platform Training은 매번 다른 초매개변수를 사용한 여러 시도에서 반복적으로 학습 코드를 실행합니다. 이 필드는 현재 시도 횟수에 따른 번호이며 첫 시도는 1부터 시작합니다.

cloud

AI Platform Training에서 내부적으로 사용하는 ID입니다. 이 필드는 무시해도 됩니다.

job

사전으로 표시된 현재 학습 작업을 생성하기 위해 제공했던 TrainingInput입니다.

environment

cloud 문자열입니다.

커스텀 컨테이너 학습 작업의 경우 AI Platform Training은 CLUSTER_SPEC이라는 추가 환경 변수를 설정합니다. 이 변수는 TF_CONFIG 형식과 유사하지만 몇 가지 중요한 차이점을 가집니다. CLUSTER_SPEC 환경 변수에 대해 자세히 알아보세요.

다음 코드 예시는 학습 로그에 TF_CONFIG 환경 변수를 출력합니다.

import json
import os

tf_config_str = os.environ.get('TF_CONFIG')
tf_config_dict  = json.loads(tf_config_str)

# Convert back to string just for pretty printing
print(json.dumps(tf_config_dict, indent=2))

런타임 버전 2.1 이상에서 실행되고 매개변수 서버, 마스터 작업자, 작업자 둘을 사용하는 초매개변수 조정 작업에서 이 코드는 첫 번째 초매개변수 조정 시도 중에 작업자 중 한 개에 대해 다음 로그를 생성합니다. 이 출력 예시에서는 간결성을 위해 job 필드를 숨기고 일부 ID를 일반적인 값으로 대체합니다.

{
  "cluster": {
    "chief": [
      "cmle-training-chief-[ID_STRING_1]-0:2222"
    ],
    "ps": [
      "cmle-training-ps-[ID_STRING_1]-0:2222"
    ],
    "worker": [
      "cmle-training-worker-[ID_STRING_1]-0:2222",
      "cmle-training-worker-[ID_STRING_1]-1:2222"
    ]
  },
  "environment": "cloud",
  "job": {
    ...
  },
  "task": {
    "cloud": "[ID_STRING_2]",
    "index": 0,
    "trial": "1",
    "type": "worker"
  }
}

chiefmaster 비교

AI Platform Training의 마스터 작업자 VM은 TensorFlow의 chief 태스크 유형에 해당합니다. TensorFlow는 worker 태스크가 chief 역할을 수행하도록 할 수 있다면, AI Platform Training은 항상 명시적으로 chief를 지정합니다.

master는 TensorFlow에서 지원이 중단된 태스크 유형입니다. masterchief와 비슷한 역할을 수행했던 태스크를 나타냈지만 일부 구성에서는 evaluator 역할을 수행하기도 했습니다. TensorFlow 2는 master 태스크를 포함하는 TF_CONFIG 환경 변수를 지원하지 않습니다.

AI Platform Training은 다음 사항에 해당되는 경우 TF_CONFIG 환경 변수의 clustertask 필드에서 chief를 사용합니다.

위 경우에 해당하지 않는다면 호환성 문제로 AI Platform Training에서 chief 대신 지원 중단된 master 태스크 유형을 사용합니다.

TF_CONFIG 사용 시점

이전 섹션에서 설명했듯 학습 코드에서 직접 TF_CONFIG 환경 변수와 상호 작용할 필요가 없습니다. 다음 섹션에서 설명하는 TensorFlow의 배포 전략과 AI Platform Training의 표준 초매개변수 조정 워크플로가 작업에 적합하지 않은 경우에만 TF_CONFIG 환경 변수에 액세스하세요.

분산형 학습

AI Platform Training은 TF_CONFIG 환경 변수를 설정하여 TensorFlow의 분산 학습에 필요한 사양을 확장합니다.

TensorFlow를 사용하여 분산 학습을 수행하려면 tf.distribute.Strategy API를 사용하세요. 특히 Keras API를 MultiWorkerMirroredStrategy 또는 ParameterServerStrategy(작업에 매개변수 서버를 지정하는 경우)와 함께 사용하는 것이 좋습니다. 그러나 TensorFlow는 현재 이 같은 전략에 대해 실험적 지원만 제공합니다.

이러한 배포 전략에서는 TF_CONFIG 환경 변수를 사용하여 학습 작업의 각 VM에 역할을 할당하고 VM 간의 통신을 용이하게 합니다. TensorFlow가 이 과정을 자동으로 처리하므로 학습 코드에서 TF_CONFIG 환경 변수에 직접 액세스할 필요가 없습니다.

학습 작업을 실행하는 여러 VM의 동작을 맞춤설정하려는 경우에만 TF_CONFIG 환경 변수를 직접 파싱하세요.

초매개변수 조정

초매개변수 조정 작업을 실행하면 AI Platform Training에서 각 시도의 학습 코드에 서로 다른 인수를 제공합니다. 학습 코드가 현재 실행 중인 시도에 대해 인지해야 할 필요는 없습니다. 또한 AI Platform Training은 초매개변수 조정 작업의 진행 상태를 모니터링하는 도구를 제공합니다.

필요한 경우 코드가 TF_CONFIG 환경 변수의 task 필드 내 trial 필드에서 현재 시도 횟수의 번호를 읽을 수 있습니다.

다음 단계