본문 바로가기
Development/Pytorch

deepspeed를 이용하여 pytorch 모델 학습 방법

by shuka 2023. 4. 27.
728x90
728x90

Deepspeed란?

Deepspeed는 모델을 training/inference 속도를 빠르고 효율적으로 할 수 있도록 도와주는 Microsoft에서 만든 딥러닝 최적화 라이브러리이다.

 

밑의 링크는 deepspeed에 대한 github 주소이다.

 

https://github.com/microsoft/DeepSpeed

 

GitHub - microsoft/DeepSpeed: DeepSpeed is a deep learning optimization library that makes distributed training and inference ea

DeepSpeed is a deep learning optimization library that makes distributed training and inference easy, efficient, and effective. - GitHub - microsoft/DeepSpeed: DeepSpeed is a deep learning optimiza...

github.com

 

 

Deepspeed 설치 전 요구 사항

 

deepspeed를 설치하기 전 참고 내용으로 밑의 Requirements는 github에 적혀있는 부분이다.

 

- PyTorch must be installed before installing DeepSpeed.
- For full feature support we recommend a version of PyTorch that is >= 1.9 and ideally the latest PyTorch stable release.
- A CUDA or ROCm compiler such as nvcc or hipcc used to compile C++/CUDA/HIP extensions.
- Specific GPUs we develop and test against are listed below, this doesn't mean your GPU will not work if it doesn't fall into this category it's just DeepSpeed is most well tested on the following:
        NVIDIA: Pascal, Volta, Ampere, and Hopper architectures
        AMD: MI100 and MI200

 

 

 

반응형

 

 

Deepspeed 설치 방법 및 사용 방법

설치 방법

pip install deepspeed

 

 

사용 방법

1. deepspeed 사용을 위한 config.json 작성

{
	"train_micro_batch_size_per_gpu": 160,
    "gradient_accumulation_steps": 1,
    "optimizer":
    {
    	"type": "Adam",
        "params":
        {
        	"lr": 0.001
        }
    },
    "zero_optimization":
    {
        "stage": 1,
        "offload_optimizer":
        {
            "device": "cpu",
            "pin_memory":true
        },
        "overlap_comm": false,
        "contiguous_gradients": false
    }
}

 

위에 작성한 json파일에 configration말고 더 추가하고 싶거나 하는 부붙 있으면 밑의 링크를 보면 된다.

 

 

https://www.deepspeed.ai/docs/config-json/

 

DeepSpeed Configuration JSON

DeepSpeed is a deep learning optimization library that makes distributed training easy, efficient, and effective.

www.deepspeed.ai

 

 

2. 라이브러리 import

import deepspeed
from deepspeed.ops.adam import DeepSpeedCPUAdam

 

 

3. Read json

with open('config.json', 'r') as f:
	deepspeed_config = json.load(f)

 

 

4. optimizer 설정

기존 pytorch opmimizer
student_optimizer = optim.Adam(studnet_model.parameters(), lr=lr)

deepspeed optimizer
student_optimizer = DeepSpeedCPUAdam(student_model.parameters(), lr=lr)

 

5. model / optimizer initializion

student_model, optimizer, _, _ = deepspeed.initialize(
                                            model=student_model,
                                            model_parameters=student_model.parameters(),
                                            optimizer=student_optimizer,
                                            config_params=deepspeed_config)

 

이정도 진행하고 기존 학습하던 방법으로 모델을 학습을 진행하면 된다.

 

6. training code 실행

오류 발생

위의 단계를 다 진행을 하고 python {training code}.py로 학습을 하려고 하면 다음과 같이 mpi4py가 없다고 오류가 발생한다.

 

deepspeed를 학습하기 위해서는 다음과 같이 command를 실행해 줘야 한다.

deepspeed --num_gpus={gpu 개수} train_deepspeed.py

 

deepspeed에도 여러 option이 있다.

 

 

 

결론

 

밑의 내용을 보면 gpu node의 개수가 많아질수록 deepspeed의 장점인 학습 속도가 빠르다는 그래프를 보여주는데 해당 부분에 대해서는 가지고 있는 gpu가 적기 때문에 테스트를 진행해 보지는 못했다.

 

https://github.com/microsoft/DeepSpeed/tree/master/blogs/deepspeed-chat 

 

GitHub - microsoft/DeepSpeed: DeepSpeed is a deep learning optimization library that makes distributed training and inference ea

DeepSpeed is a deep learning optimization library that makes distributed training and inference easy, efficient, and effective. - GitHub - microsoft/DeepSpeed: DeepSpeed is a deep learning optimiza...

github.com

 

 

 

 

 

 

 

 

 

 

 

 

728x90
반응형

댓글