환경
- Infiniband 드라이버 설치 --> 참고
- OS 및 GPU 드라이버에 맞는 CUDA toolkit 설치 --> 참고
- Accelerate로 실행 가능한 pytorch 학습 파일 (train.py) --> 참고
- NCCL 및 HPC-X 설치 (HPC-X 압축해제 후 경로를 HPCX_HOME 환경변수에 등록)
- pdsh 설치 및 아래 라이브러리 설치
--extra-index-url https://download.pytorch.org/whl/cu118
torch==2.0.1
transformers==4.33.1
evaluate==0.4.0
scikit-learn==1.2.2
accelerate==0.20.3
sentencepiece==0.1.99
protobuf==4.24.0
- DeepSpeed 설치 (zero stage 2부터 사용하는 옵티마이저를 CPU 메모리에 적재하기 위해 아래와 같은 환경변수와 같이 설치해야함) --> 참고
DS_BUILD_CPU_ADAM=1 pip install deepspeed==0.10.3
hostfile 생성
접속해야 할 호스트와 GPU 수가 담겨있는 hostfile 생성 (slots는 해당 노드에서 사용 할 GPU 개수)
master slots=2
worker-1 slots=2
ssh config 생성 또는 수정 (경로: /home/$USER/.ssh/config)
마스터 노드가 SSH 접속 시 참고하는 config 생성 (필요시 각 노드의 hosts.allow도 수정)
본인은 컨테이너로 띄웠기에 root 계정과 임의의 포트를 사용함
Host master
HostName 192.168.10.5
Port 1041
User root
IdentityFile /root/.ssh/key.pem
StrictHostKeyChecking no
Host worker-1
HostName 192.168.10.4
Port 1041
User root
IdentityFile /root/.ssh/key.pem
StrictHostKeyChecking no
accelerate config 생성
accelerate config 명령어로 생성 (경로: /home/$USER/.cache/huggingface/accelerate/default_config.yaml)
compute_environment: LOCAL_MACHINE
deepspeed_config:
deepspeed_hostfile: /root/hostfile
deepspeed_multinode_launcher: pdsh
gradient_accumulation_steps: 1
zero3_init_flag: false
zero_stage: 0
distributed_type: DEEPSPEED
downcast_bf16: 'no'
machine_rank: 0
main_process_ip: 192.168.10.5
main_process_port: 1040
main_training_function: main
mixed_precision: 'fp16'
num_machines: 2
num_processes: 4
rdzv_backend: static
same_network: true
tpu_env: []
tpu_use_cluster: false
tpu_use_sudo: false
use_cpu: false
HPC-X 모듈 로드
source $HPCX_HOME/hpcx-init.sh && hpcx_load
학습 시작
default config 사용 (다른 위치의 config를 사용하려면 --config_file CONFIG_FILE)
accelerate launch train_multi.py
'딥러닝' 카테고리의 다른 글
[딥러닝] 멀티 노드 학습 (accelerate, deepspeed-zero0, infiniband-IPoIB) (0) | 2023.08.03 |
---|---|
[딥러닝] pytorch를 사용하여 GPU로 모델 학습 시 런타임 에러 (0) | 2023.06.21 |