Pytorch Distributed Training을 위한 도구: Accelerate

반응형

https://huggingface.co/docs/accelerate/index

 

Accelerate

Concepts and fundamentals

huggingface.co

 

최근 LLM 모델을 파인튜닝할 기회가 생겨 여러 가지 시도해보고 있습니다. 그중 HuggingFace의 Accelerate라는 라이브러리가 간단한 사용방법으로 Pytorch Distributed Training을 할 수 있어, 사용해 보았습니다.

 

먼저 Accelerate를 설치합니다.

pip install accelerate

 

Accelerate는 Config 파일을 사용해서 동작하는데, Config 파일을 설정하려면 다음과 같이 커맨드라인을 입력합니다.

accelerate config

 

Huggingface Language Modeling 코드를 사용하여 GPT-2를 Fully Sharded Data Parallel로 훈련해보겠습니다.

 

Config 파일은 아래와 같이 설정해야 하는데, 홈 폴더 아래의 .cache/huggingface/accelerate/default_config.yaml를 직접 수정해 주셔도 됩니다. distributed_type에 FSDP, fsdp_config가 잘 작성되어 있는 걸 볼 수 있습니다.

compute_environment: LOCAL_MACHINE
deepspeed_config: {}
distributed_type: FSDP
fsdp_config:
  min_num_params: 2000
  offload_params: false
  sharding_strategy: 1
machine_rank: 0
main_process_ip: null
main_process_port: null
main_training_function: main
mixed_precision: 'no'
num_machines: 1
num_processes: 2
use_cpu: false

 

아래와 같이 accelerate 라이브러리를 사용한 커맨드라인을 실행해서 GPT-2 Large 모델을 훈련해 봅니다.

export BS=#`try with different batch sizes till you don't get OOM error,
#i.e., start with larger batch size and go on decreasing till it fits on GPU`

time accelerate launch run_clm_no_trainer.py \
--model_name_or_path gpt2-large \
--dataset_name wikitext \
--dataset_config_name wikitext-2-raw-v1 \
--per_device_train_batch_size $BS 
--per_device_eval_batch_size $BS 
--num_train_epochs 1 
--block_size 12

 

다음에는 직접 쓴 코드로 Accelerate를 사용해서 파인튜닝을 해보도록 하겠습니다.

 

 

참고:

https://huggingface.co/docs/accelerate/basic_tutorials/launch
https://huggingface.co/blog/pytorch-fsdp

반응형