skip to Main Content
1544-6561|070-4842-6588 koandi.com@gmail.com

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> 클러스터로 이동하여 새 클러스터를 선택하십시오.

1. 마스터 및 작업자 노드 .png

마스터 노드와 작업자 노드가 표시됩니다.

2. 마스터 노드와 작업자 노드 .png

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

TonY 설치하기

TonY ‘s Cloud Dataproc 초기화 작업은 다음을 수행합니다.

  • GitHub 저장소 에서 TonY를 설치하고 빌드하십시오 .
  • 다음 프레임 워크에 대해 TonY 예제를 포함하는 샘플 폴더를 만듭니다 .
    • TensorFlow
    • PyTorch

다음 폴더가 생성됩니다.

  • TonY 설치 폴더 (TONY_INSTALL_FOLDER)는 기본적으로 다음 위치에 있습니다.

/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을 엽니 다.

3. Open Cloud Shell.png

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로 이동하십시오.

4. 트랙 job status.png

Hadoop UI에 액세스

웹을 통해 http : // <Node_IP> : 8088 웹을 통해 Cloud Dataproc의 마스터 노드에 로깅하고 작업 상태를 추적합니다. Cloud Dataproc UI에 액세스하는 방법을 보려면 이 섹션 을 살펴보십시오.

5. Hadoop UI.png

자원 정리

Cloud Dataproc 클러스터 삭제

gcloud dataproc clusters delete ${CLUSTER_NAME}

결론

Yarn에 TensorFlow를 배치하면 HDFS 및 Cloud Storage에있는 데이터 인프라 스트럭처에서 바로 모델을 교육 할 수 있습니다. 이 게시물에 언급 된 관련 주제에 대해 더 자세히 알고 싶다면 다음 문서 링크를 확인하십시오.

감사 인사 :  Anthony Hsu, LinkedIn 소프트웨어 엔지니어 및 Zhe Zhang, LinkedIn Core Big Data 인프라 스트럭처 매니저.

Back To Top