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_port
및 dask_cuda_server_port
에서 TCP 연결을 수신합니다(GPU를 사용하는 경우). 만약 Dask 대시보드 액세스를 통해 Dask 작업을 모니터링하려면, dask_dashboard_port
및 dask_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.com
은 10.10.4.103
을 제공합니다. redis, Minio 및 Dask는 config.toml 파일에서 이를 IP로 사용합니다. Dask_server_ip
가 지정되지 않은 경우 해당 값은 redis 또는 Minio로부터 자동으로 유추됩니다.
워커 노드가 시작되면 Driverless AI 서버 IP 및 Dask 대시보드 포트를 이용하여 Dask 클러스터의 상태를 확인하십시오.
구성 속성에 관한 설명¶
일반적인 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의 활성화 방법:
num_gpus_for_prediction 을 각 워커 노드의 GPU 수로 설정하십시오.
상세 설정으로 이동하고 레시피 탭에서 Include specific models 를 누르고 선택된 모델만 XGBoostGBMDaskModel 인지 확인하십시오.
더 많은 구성 옵션은 사용자 실험 Dask 설정 를 참조하십시오.
Notes:
다수의 GPU를 가진 단일 노드의 로컬 Dask 클러스터에 동일한 단계를 사용할 수 있습니다.
Dask 클러스터를 가지고 있지만, 워커 노드의 GPU만 사용하려면 use_dask_cluster 를 False로 설정하십시오.
단일 사용자로 Dask 클러스터 또는 싱글 dask 노드를 사용할 수 있는 경우, 상세 설정에서 exclusive_mode 를 《max》로 설정하여 클러스터의 워커 사용을 극대화할 수 있습니다.
사용자 실험 Dask 설정¶
use_dask_cluster
: Dask 클러스터(True)를 사용할지 아니면 다중 GPU 케이스에 로컬 클러스터만 사용할지(False)를 지정합니다.enable_xgboost_rapids
: Enable RAPIDS-cudf extensions to XGBoost GBM/Dart. (1)enable_xgboost_gbm_dask
: Enable dask_cudf (multi-GPU) XGBoost GBM. (2)enable_lightgbm_dask
: Enable Dask (multi-node) LightGBM. (Experimental) (2)enable_xgboost_dart_dask
: Enable dask_cudf (multi-GPU) XGBoost Dart. (2)enable_hyperopt_dask
: Enable dask (multi-node/multi-GPU) hyperparameter search. (3)
Notes:
num_gpus_for_prediction > 0으로 설정된 경우 자동으로 활성화 됨
레시피 탭 및 《Include specific models》를 참조하십시오.
또한 num_inner_hyperopt_trials_prefinal num_inner_hyperopt_trials_final을 참조하십시오. 현재 XGBoost에 의해서만 완전히 지원됩니다.