Deepspeed란?
Deepspeed는 모델을 training/inference 속도를 빠르고 효율적으로 할 수 있도록 도와주는 Microsoft에서 만든 딥러닝 최적화 라이브러리이다.
밑의 링크는 deepspeed에 대한 github 주소이다.
https://github.com/microsoft/DeepSpeed
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/
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
'Development > Pytorch' 카테고리의 다른 글
[Pytorch] CUDA error: CUBLAS_STATUS_INVALID_VALUE when calling `cublasSgemm (0) | 2022.12.14 |
---|---|
[Pytorch] pytorch모델을 onnx모델로 변환 방법 (0) | 2021.10.25 |
[Pytorch]docker container에서 pytorch memory error (0) | 2021.09.16 |
댓글