학습 작업을 실행하면 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 클러스터 설명입니다. 하나 이상의 태스크 이름(
이 문서의 다른 섹션에서 |
||||||||||
task |
이 환경 변수가 설정된 VM의 태스크 설명입니다. 이 사전은 같은 학습 작업에서도 VM마다 서로 다릅니다. 이 정보를 사용하여 분산 학습 작업의 각 VM에서 실행되는 코드를 맞춤설정할 수 있습니다. 또한 초매개변수 조정 작업의 시도마다 학습 코드의 동작을 변경할 수도 있습니다. 이 사전에는 다음 키-값 쌍이 포함됩니다.
|
||||||||||
job |
사전으로 표시된 현재 학습 작업을 생성하기 위해 제공했던 |
||||||||||
environment |
|
커스텀 컨테이너 학습 작업의 경우 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"
}
}
chief
및 master
비교
AI Platform Training의 마스터 작업자 VM은 TensorFlow의 chief
태스크 유형에 해당합니다. TensorFlow는 worker
태스크가 chief
역할을 수행하도록 할 수 있다면, AI Platform Training은 항상 명시적으로 chief
를 지정합니다.
master
는 TensorFlow에서 지원이 중단된 태스크 유형입니다. master
는 chief
와 비슷한 역할을 수행했던 태스크를 나타냈지만 일부 구성에서는 evaluator
역할을 수행하기도 했습니다. TensorFlow 2는 master
태스크를 포함하는 TF_CONFIG
환경 변수를 지원하지 않습니다.
AI Platform Training은 다음 사항에 해당되는 경우 TF_CONFIG
환경 변수의 cluster
및 task
필드에서 chief
를 사용합니다.
- 런타임 버전 2.1 이상을 사용하는 학습 작업을 실행 중인 경우
- 하나 이상의 평가자를 사용하도록 학습 작업을 구성한 경우 즉, 작업의
trainingInput.evaluatorCount
를1
이상으로 설정한 경우 - 작업에서 커스텀 컨테이너를 사용하며 작업의
trainingInput.useChiefInTfConfig
를true
로 설정한 경우
위 경우에 해당하지 않는다면 호환성 문제로 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
필드에서 현재 시도 횟수의 번호를 읽을 수 있습니다.
다음 단계
- Keras를 사용한 다중 작업자 학습에 대한 TensorFlow 문서의 가이드에 따라 진행하기
- AI Platform Training의 커스텀 컨테이너를 사용한 분산 학습에 대해 알아보기
- 학습 작업에 초매개변수 조정을 구현하는 방법 알아보기