오늘날 대부분의 사람들은 하나 또는 두 가지 이상의 나쁜 고객 서비스 경험을 용납하지 않습니다. AI 통화…
Apache Hadoop은 분산 된 저장소 및 데이터 처리를위한 오래되고 장기적인 프레임 워크가되었습니다. Google의 Cloud Dataproc 은 쉽고 비용 효율적인 방식으로 Apache Spark 및 Apache Hadoop 클러스터를 실행하기위한 빠르고 사용하기 쉽고 완벽하게 관리되는 클라우드 서비스입니다. Cloud Dataproc을 사용하면 기본 인프라에 대한 걱정없이 분산 스토리지 플랫폼을 설정할 수 있습니다. 그러나 TensorFlow 작업 부하를 분산 데이터 저장소에서 직접 교육하고 싶다면 어떻게해야할까요?
이 포스트는 LinkedIn 오픈 소스 프로젝트 Tony (TensorFlow on YARN)에 Hadoop 클러스터를 설치하는 방법을 설명합니다 . Cloud Dataproc과 TonY를 사용하여 Hadoop 클러스터를 배포하여 분산 된 시스템 학습 작업을 시작할 수 있습니다. 우리는 가장 인기있는 두 가지 기계 학습 프레임 워크 인 TensorFlow 와 PyTorch를 어떻게 사용할 수 있는지 살펴볼 것입니다 .
TensorFlow는 분산 트레이닝을 지원하므로 모델의 그래프 부분을 다른 노드에서 계산할 수 있습니다. 이 분산 특성을 사용하여 병렬로 여러 서버에서 실행되도록 계산을 분할 할 수 있습니다. 분산 형 TensorFlow를 조율하는 것은 쉬운 일이 아니며 모든 데이터 과학자 및 기계 학습 엔지니어가 전문 지식 또는 욕구를 가지고있는 것이 아닙니다. 특히 수동으로 수행해야하기 때문입니다. TonY는 분산 된 TensorFlow의 분석 기능과 Hadoop의 확장 기능 간 격차를 줄이기 위해 유연하고 지속 가능한 방법을 제공합니다. TonY를 사용하면 클러스터 사양을 수동으로 구성 할 필요가 없으므로 특히 대규모 클러스터의 경우 지루할 수 있습니다.
우리 시스템의 구성 요소 :
첫째, Apache Hadoop
Apache Hadoop 은 분산 형 스토리지를위한 오픈 소스 소프트웨어 플랫폼으로, 상용 하드웨어로 구축 된 컴퓨터 클러스터에 매우 큰 데이터 세트를 분산 처리합니다. Hadoop 서비스는 데이터 저장, 데이터 처리, 데이터 액세스, 데이터 거버넌스, 보안 및 운영을 제공합니다.
다음, Cloud Dataproc
Cloud Dataproc 은 일괄 처리, 쿼리, 스트리밍 및 기계 학습을 위해 오픈 소스 데이터 도구를 활용할 수 있도록 관리되는 Spark 및 Hadoop 서비스입니다. Cloud Dataproc의 자동화 기능을 사용하면 클러스터를 신속하게 만들고, 쉽게 관리하며, 필요없는 클러스터를 해제하여 비용을 절감 할 수 있습니다. 관리에 소요되는 시간과 비용을 줄이면 작업과 데이터에 집중할 수 있습니다.
그리고 지금 TonY
TonY 는 Apache Hadoop에서 기본 학습 작업을 기본적으로 실행할 수있게 해주는 프레임 워크입니다. 현재 TensorFlow 및 PyTorch를 지원합니다. TonY는 단일 노드 또는 분산 형 교육을 Hadoop 응용 프로그램으로 실행할 수있게합니다. 이 기본 커넥터는 다른 TonY 기능과 함께 기계 학습 작업을 안정적이고 유연하게 실행합니다.
설치
Google Cloud Platform 프로젝트 설정
여기에 있는 지침에 따라 새 프로젝트를 만들어 Google Cloud Platform (GCP)을 시작 하세요 .
클라우드 저장소 버킷 만들기
그런 다음 Cloud Storage 버킷을 만듭니다. 여기 참조 .
export BUCKET=<your bucket name>
gsutil mb gs://"${BUCKET}"
초기화 작업을 사용하여 Cloud Dataproc을 통해 Hadoop 클러스터 생성
Hadoop 클러스터는 Cloud Console에서 직접 만들거나 적절한 ‘gcloud’명령을 통해 만들 수 있습니다. 다음 명령은 1 명의 마스터와 2 명의 작업자로 구성된 클러스터를 초기화합니다.
export CLUSTER_NAME=<your cluster name>
export DATAPROC_VERSION=1.3-deb9
export ZONE=us-west1-a
gcloud dataproc clusters create "${CLUSTER_NAME}" --bucket "${BUCKET}" \
--subnet default \
--zone "${ZONE}" \
--master-machine-type n1-standard-4 --master-boot-disk-size 100 \
--num-workers 2 --worker-machine-type n1-standard-4 --worker-boot-disk-size 200 --image-version "${DATAPROC_VERSION}" \
--initialization-actions gs://dataproc-initialization-actions/tony/tony.sh
Cloud Dataproc 클러스터를 만들 때 Tonit 초기화 작업 스크립트에서 Cloud Dataproc을 클러스터가 설정된 직후 Cloud Dataproc 클러스터의 모든 노드에서 실행해야한다고 지정할 수 있습니다 .
참고 : 이 배포에서 지원되는 Cloud Dataproc 버전 1.3-deb9를 사용하십시오 . Cloud Dataproc 버전 1.3-deb9는 Hadoop 버전 2.9.0을 제공합니다. 자세한 내용은 이 버전 목록을 확인 하십시오.
클러스터가 생성되면 Cloud Console> Big Data> Cloud Dataproc> 클러스터에서 클러스터 설치가 완료되고 클러스터 상태가 실행 중임을 확인할 수 있습니다 .
클라우드 콘솔> 큰 데이터> Cloud Dataproc> 클러스터로 이동하여 새 클러스터를 선택하십시오.
마스터 노드와 작업자 노드가 표시됩니다.
SSH를 통해 Cloud Dataproc 마스터 서버에 연결하십시오.
SSH를 클릭하고 마스터 서버에 원격으로 연결하십시오.
YARN 노드가 활성 상태인지 확인하십시오.
yarn node -list
예
#yarn node -list
18/11/19 00:48:23 INFO client.RMProxy: Connecting to ResourceManager at tony-staging-m/10.138.0.2:803218/11/19 00:48:24 INFO client.AHSProxy: Connecting to Application History server at tony-staging-m/10.138.0.2:10200Total Nodes:2 Node-Id Node-State Node-Http-Address Number-of-Running-Containers
tony-staging-w-0.c.dpe-cloud-mle.internal:39349 RUNNING tony-staging-w-0.c.dpe-cloud-mle.internal:8042 0
tony-staging-w-1.c.dpe-cloud-mle.internal:44617 RUNNING tony-staging-w-1.c.dpe-cloud-mle.internal:8042 0
/opt/tony/TonY
- TonY 샘플 폴더 (TONY_SAMPLES_FOLDER)는 기본적으로 다음 위치에 있습니다.
/opt/tony/TonY-samples
Tony 샘플 폴더는 다음을 사용하여 분산 시스템 학습 작업을 실행하는 2 가지 예를 제공합니다.
- TensorFlow MNIST 예제
- PyTorch MNIST 예제
TensorFlow 분산 작업 실행
TensorFlow 교육 직업 시작
`gcloud` 명령을 사용하여 Dataproc 작업을 시작합니다.
다음의 폴더 구조는 설치 중에`TONY_SAMPLES_FOLDER`에 생성되었습니다. 여기서 배포 된 TensorFlow 작업을 실행하기위한 샘플 Python 스크립트를 찾을 수 있습니다.
.
├── tony-cli-0.1.5-all.jar
├── jobs
│ └── TFJob
│ ├── tony.xml
│ └── src
│ └── mnist_distributed.py
└── deps
└── tf.zip
이것은 기본적인 MNIST 모델이지만, 분산 형 TensorFlow에서 TonY를 사용하는 좋은 예입니다. 이 MNIST 예제는 “데이터 병렬 처리”를 사용하여 각 장치에서 동일한 모델을 사용하고 각 장치의 모델을 교육하는 데 필요한 다양한 교육 샘플을 사용합니다. TensorFlow에서이 구조체를 지정하는 방법은 여러 가지가 있지만이 경우에는 “그래프 간 복제”를 사용 tf.train.replica_device_setter
합니다.
종속성
- TensorFlow 버전 1.9
참고 : 최신 TensorFlow 및 TensorBoard 버전이 필요한 경우 최신 TensorFlow 버전으로 업그레이드하려면 이 문제 의 진행 상황을 살펴보십시오 .
클라우드 쉘에 연결
콘솔 UI를 통해 Cloud Shell을 엽니 다.
gcloud
새 작업을 만들려면 다음 명령을 사용하십시오 . 일단 시작되면 작업을 모니터 할 수 있습니다. 클라우드 콘솔에서 작업 모니터링 대시 보드를 찾을 수있는 위치는 아래 섹션을 참조하십시오.
export TONY_JARFILE=tony-cli-0.1.5-all.jar
gcloud dataproc jobs submit hadoop --cluster "${CLUSTER_NAME}" \
--class com.linkedin.tony.cli.ClusterSubmitter \
--jars file:///opt/tony/TonY-samples/"${TONY_JARFILE}" -- \
--src_dir=/opt/tony/TonY-samples/jobs/TFJob/src \
--task_params='--data_dir /tmp/ --working_dir /tmp/' \
--conf_file=/opt/tony/TonY-samples/jobs/TFJob/tony.xml \
--executes mnist_distributed.py \
--python_venv=/opt/tony/TonY-samples/deps/tf.zip \
--python_binary_path=tf/bin/python3.5
PyTorch 분산 작업 실행
PyTorch 교육 일을 시작하십시오
PyTorch의 경우에도 gcloud
명령을 사용하여 Cloud Dataproc 작업을 시작할 수 있습니다 .
에 다음 폴더 구조가 생성 TONY_SAMPLES_FOLDER
되어 TensorFlow 분산 작업을 실행하는 데 사용할 수있는 샘플 스크립트가 있습니다.
.
├── tony-cli-0.1.5-all.jar
├── jobs
│ └── PTJob
│ ├── tony.xml
│ └── src
│ └── mnist_distributed.py
└── deps
└── pytorch.zip
종속성
- PyTorch 버전 0.4
- 토치 비전 0.2.1
PyTorch 교육 직업 시작
export TONY_JARFILE=tony-cli-0.1.5-all.jar
gcloud dataproc jobs submit hadoop --cluster "${CLUSTER_NAME}" \
--class com.linkedin.tony.cli.ClusterSubmitter \
--jars file:///opt/tony/TonY-samples/"${TONY_JARFILE}" -- \
--src_dir=/opt/tony/TonY-samples/jobs/PTJob/src \
--task_params='--root /tmp/' \
--conf_file=/opt/tony/TonY-samples/jobs/PTJob/tony.xml \
--executes mnist_distributed.py \
--python_venv=/opt/tony/TonY-samples/deps/pytorch.zip \
--python_binary_path=pytorch/bin/python3.5
작업이 성공적으로 실행되고 있는지 확인하십시오.
Dataproc Jobs 탭에서 작업 상태를 추적 할 수 있습니다. Cloud Console> Big Data> Dataproc> Jobs로 이동하십시오.
Hadoop UI에 액세스
웹을 통해 http : // <Node_IP> : 8088 웹을 통해 Cloud Dataproc의 마스터 노드에 로깅하고 작업 상태를 추적합니다. Cloud Dataproc UI에 액세스하는 방법을 보려면 이 섹션 을 살펴보십시오.
자원 정리
Cloud Dataproc 클러스터 삭제
gcloud dataproc clusters delete ${CLUSTER_NAME}
결론
Yarn에 TensorFlow를 배치하면 HDFS 및 Cloud Storage에있는 데이터 인프라 스트럭처에서 바로 모델을 교육 할 수 있습니다. 이 게시물에 언급 된 관련 주제에 대해 더 자세히 알고 싶다면 다음 문서 링크를 확인하십시오.
감사 인사 : Anthony Hsu, LinkedIn 소프트웨어 엔지니어 및 Zhe Zhang, LinkedIn Core Big Data 인프라 스트럭처 매니저.