Dask 다중 노드 학습(알파)

Driverless AI는 각각의 워커가 Dask CPU 워커 및(워커에 GPU가 있는 경우) Dask GPU 워커가 있는 다중 노드 워커 모드에서 실행되도록 구성이 가능합니다. 이 설정의 기본 노드는 Dask 스케줄러를 포함하고 있습니다. 이 문서에서는 Dask 교육 과정 및 이것의 구성 방법을 설명합니다.

Dask 다중 노드 학습 설정 전에 Redis Multinode training on Driverless AI 을 설정해야 합니다.

Dask 다중 노드 학습의 이해

Driverless AI의 Dask 다중 노드 학습을 사용하여 다중 노드 클러스터에서 학습하는 단일 실험을 실행할 수 있습니다. a single experiment with large amounts of data 또는 a large hyper-parameter space search 를 실행하고 완료해야 하는 것에 effective in situations 입니다. Dask는 이에 따라 리소스를 사용하는 Dask 실험과 함께 machines can be CPU only or CPU + GPU 를 배포했습니다.

Dask 다중 노드 설계 개념에 대한 자세한 내용은 https://dask.org/ 를 참조하십시오.

Notes:

  • Driverless AI의 Dask 다중 노드 교육은 현재 미리보기 단계에 있습니다. Dask 다중 노드 구성의 사용에 관심이 있으면 support@h2o.ai 에 문의하십시오.

  • Dask 다중 노드 학습에는 여러 워커 사이의 데이터 전송이 필수입니다. 예를 들어, 실험에서 Dask 클러스터 사용 시, XGBoost 또는 Optuna 하이퍼파라미터 검색을 통해 학습할 수 있도록 클러스터 워커 간에 데이터를 배포해야 합니다.

  • Dask 작업은 선입 선출(FIFO)을 기초로 일정이 계획됩니다.

  • 사용자는 상세 설정에서 실험별로 Dask 다중 노드 학습을 활성화할 수 있습니다.

  • 실험에서 Dask 클러스터를 사용하도록 선택할 경우(해당하는 경우 기본값은 true) a single experiment runs on the entire multinode cluster 입니다. 이러한 이유로 Dask 다중 노드의 맥락에서 다수의 상용 하드웨어를 사용하는 것은 유용하지 않습니다.

  • Dask 모델은 기본적으로 non-Dask 모델보다 작은 데이터에는 효율성이 떨어질 수 있기 때문에 선택되지 않습니다. 사용자가 Dask 모델을 선택하지 않았는데 시스템이 이를 사용하려고 할 때마다 경고를 표시하려면 config.toml에서 show_warnings_preview = true 를 설정하십시오.

  • Driverless AI의 대기화에 대한 자세한 내용은 Driverless AI의 실험 큐잉 을 참조하십시오.

Dask 다중 노드 설정 예제

본 섹션에서는 다중 노드 클러스터에서 Dask의 활성화하는 것에 관한 보충 지침을 제공합니다. 현재 Dask 다중 노드를 활성화하기 위해서는 Redis 다중 노드를 설정해야 합니다. Driverless AI에서의 Redis 다중 노드 설정 및 시작에 관한 자세한 내용은 see 를 참조하십시오.

VPC 설정

VPC 설정에서 인바운드 규칙을 활성화시켜 포트 dask_server_portdask_cuda_server_port 에서 TCP 연결을 수신합니다(GPU를 사용하는 경우). 만약 Dask 대시보드 액세스를 통해 Dask 작업을 모니터링하려면, dask_dashboard_portdask_cuda_dashboard_port 를 포함시킵니다(GPU 사용 시). Dask와 함께 LightGBM을 사용하기 위해서는 lightgbm_listen_port 도 활성화하십시오.

Driverless AI config.toml 편집

Driverless AI가 설치된 후 config.toml 파일에서 다음 구성 옵션을 편집하십시오.

# Dask settings -- set the IP address of the Dask server. Same as the IP of the main Driverless AI node, and usually same as the Redis/MinIO IP
dask_server_ip = "<host_ip>"

Dask_server_ip 매개변수의 경우, Driverless AI는 자동으로 redis, Minio 및 Local IP 주소를 시도하여 Dask 스케줄러를 찾을 수 있는지 확인합니다. 이 경우 dask_server_ip 매개변수를 설정할 필요가 없습니다.

EC2 시스템에서 주 서버가 http://ec2-52-71-252-183.compute-1.amazonaws.com:12345/ 인 경우 Dask 및 XGBOOST(rabit 포함) 작동 방식 때문에 EC2 IP 대신 nslookup-resolved IP를 사용하는 것을 권장합니다. 예를 들어, nslookup ec2-52-71-252-183.compute-1.amazonaws.com10.10.4.103 을 제공합니다. redis, Minio 및 Dask는 config.toml 파일에서 이를 IP로 사용합니다. Dask_server_ip 가 지정되지 않은 경우 해당 값은 redis 또는 Minio로부터 자동으로 유추됩니다.

워커 노드가 시작되면 Driverless AI 서버 IP 및 Dask 대시보드 포트를 이용하여 Dask 클러스터의 상태를 확인하십시오.

Dask (CUDA) Dashboard

구성 속성에 관한 설명

일반적인 Dask 설정

  • enable_dask_cluster: 각각의 다중 노드 워커에서 Dask 워커의 활성화 여부를 지정하십시오.

  • dask_server_ip: Dask 및 Dask CUDA 통신을 위해 서버에서 사용하는 IP 주소입니다.

CPU 클러스터 Dask 설정

  • dask_server_port: Dask 통신을 위해 서버에서 사용하는 포트.

  • dask_dashboard_port: Dask 진단용 Dask 대시보드 포트.

  • dask_cluster_kwargs: 단일 노드 워커에 대한 Dask CUDA RAPIDS 클러스터 설정을 지정하십시오.

  • dask_scheduler_env: Dask 스케줄러 환경을 설정하십시오.

  • dask_scheduler_options: Dask 스케줄러 명령줄 옵션을 설정하십시오.

  • dask_worker_env: Dask 워커 환경 변수를 설정하십시오.

  • dask_worker_options: Dask 워커 명령줄 옵션을 설정하십시오.

  • dask_protocol: Dask 통신에 사용되는 프로토콜.

  • dask_worker_nprocs: Dask 워커당 프로세스 수.

  • dask_worker_nthreads: Dask 프로세스당 스레드 수.

GPU CUDA 클러스터 Dask 설정

  • dask_cuda_server_port: Dask cuda 통신을 위해 서버에서 사용하는 포트.

  • dask_cuda_dashboard_port: dask_cuda 진단을 위한 Dask 대시보드 포트.

  • dask_cuda_cluster_kwargs: 단일 노드 워커에 대한 Dask CUDA / RAPIDS 클러스터 설정을 지정하십시오.

  • dask_cuda_scheduler_env: Dask CUDA 스케줄러 환경을 설정하십시오.

  • dask_cuda_scheduler_options: Dask CUDA 스케줄러 명령줄 옵션을 설정하십시오.

  • dask_cuda_worker_options: Dask CUDA 워커 옵션을 설정하십시오.

  • dask_cuda_worker_env: Dask CUDA 워커 환경 변수를 설정하십시오.

  • dask_cuda_protocol: dask cuda 통신에 사용하는 프로토콜.

  • dask_cuda_worker_nthreads: dask_cuda의 프로세스당 스레드 수.

기타 클러스터 Dask 설정

  • lightgbm_listen_port: LightGBM 및 Dask 사용 시, LightGBM 로컬 수신 포트.

예제: 사용자 실험 Dask 설정

Dask GPU 클러스터에서 XGBoost GBM의 활성화 방법:

  1. num_gpus_for_prediction 을 각 워커 노드의 GPU 수로 설정하십시오.

  2. 상세 설정으로 이동하고 레시피 탭에서 Include specific models 를 누르고 선택된 모델만 XGBoostGBMDaskModel 인지 확인하십시오.

더 많은 구성 옵션은 사용자 실험 Dask 설정 를 참조하십시오.

Notes:

  • 다수의 GPU를 가진 단일 노드의 로컬 Dask 클러스터에 동일한 단계를 사용할 수 있습니다.

  • Dask 클러스터를 가지고 있지만, 워커 노드의 GPU만 사용하려면 use_dask_cluster 를 False로 설정하십시오.

  • 단일 사용자로 Dask 클러스터 또는 싱글 dask 노드를 사용할 수 있는 경우, 상세 설정에서 exclusive_mode 를 《max》로 설정하여 클러스터의 워커 사용을 극대화할 수 있습니다.

사용자 실험 Dask 설정

Notes:

    1. num_gpus_for_prediction > 0으로 설정된 경우 자동으로 활성화 됨

    1. 레시피 탭 및 《Include specific models》를 참조하십시오.

    1. 또한 num_inner_hyperopt_trials_prefinal num_inner_hyperopt_trials_final을 참조하십시오. 현재 XGBoost에 의해서만 완전히 지원됩니다.