Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- fine_tuning
- postech
- 대학원합격
- learning_rate
- 포항공대인공지능대학원
- Axotl
- 포항공대인공지능
- postech 인공지능대학원
- Torch
- trainer
- 파이썬
- 포스텍 인공지능 대학원
- llm
- loss
- 에러노트
- torch_size
- 대학원준비
- llm파인튜닝
- 러닝레이트
- torch.distributed
- postech인공지능
- 사전학습
- 에러
- timeout
- RuntimeError
- DeepSpeed
- github
- 파인튜닝
- 포스텍인공지능
- 포스텍 ai
Archives
- Today
- Total
DopeorNope 개발일지
[Deepspeed]assert len(set(t.dtype for t in tensors)) == 1에러 해결 본문
이놈의 Multi-GPU 훈련은 진짜 사람을 돌게 만든다.
도대체 어디서 문제가 나는지 감도 안오는 경우가 많기 때문이다.
하지만 결국 사람은 그렇게 찾아낸다.
이 에러가 나는 근본적인 이유를 알아보자.

깃허브 이슈에 나와있던 글이다.
내용인 즉슨, 보통 llm full-finetuning시 레이어 얼리는데 있어서, 옵티마이저 최적화 할만한 레이어가 없다는 것이라는것과 같다는 것이다.
근데 솔직히 이것보다 더 근본적인 문제가 있는게, 지금 내가 fine_tuning하려는 하이퍼 파라미터들(트레이닝 옵션 혹은 모델 dtype)과 deepspeed의 config가 호환이 되지 않아서 그런거다.
그러면 어떻게 해결할 것인가?
방법은 은근히 간단하다.
우선 불러오는 모델 type이 bfloat16이라면, deepspeed config를 다음과 같이 설정해주면 된다.
우선 나는 zero3를 사용하기에
{
"zero_optimization": {
"stage": 3,
"overlap_comm": true,
"contiguous_gradients": true,
"sub_group_size": 0,
"reduce_bucket_size": "auto",
"stage3_prefetch_bucket_size": "auto",
"stage3_param_persistence_threshold": "auto",
"stage3_max_live_parameters": 0,
"stage3_max_reuse_distance": 0,
"stage3_gather_16bit_weights_on_model_save": true
},
"bf16": {
"enabled": true
},
"fp16": {
"enabled": false,
"auto_cast": false,
"loss_scale": 0,
"initial_scale_power": 32,
"loss_scale_window": 1000,
"hysteresis": 2,
"min_loss_scale": 1
},
"optimizer": {
"type": "AdamW",
"params": {
"lr": "auto",
"betas": [
0.9,
0.999
],
"eps": 1e-08,
"weight_decay": "auto"
}
},
"gradient_accumulation_steps": "auto",
"train_batch_size": "auto",
"train_micro_batch_size_per_gpu": "auto",
"wall_clock_breakdown": false
}
위와 같이 config를 수정해주었다.
여기서 핵심은, fp16옵션을 꺼주는것이다.
안꺼주면 계속 질질 끌린다.
만약에 float32이면 bf16은 꺼주고, fp16 enable을 auto로 세팅해주면 된다.
하 deepspeed는 정말 간편하고 좋으면서도 재앙과도 같다...
'에러 노트' 카테고리의 다른 글
llama.cpp로 양자화 하기 GGUF (1) | 2024.04.03 |
---|---|
Multi-GPU 훈련시 Timeout 문제 해결법 (0) | 2024.01.15 |
[LLM,deepspeed, axotl]LLM 파인튜닝시, loss값이 올라가는 현상 (1) | 2024.01.13 |
Axotl & deepspeed zero3: 모델 레이어 불러올때 torch.Size([0]) 해결법 (1) | 2024.01.13 |
RuntimeError: expected scalar type Half but found Float 에러 해결방법 (0) | 2024.01.02 |