일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 포항공대인공지능
- llm
- 에러노트
- github
- torch.distributed
- 대학원준비
- 포스텍 인공지능 대학원
- loss
- learning_rate
- 에러
- 포스텍인공지능
- 포항공대인공지능대학원
- llm파인튜닝
- 대학원합격
- torch_size
- postech인공지능
- Torch
- 러닝레이트
- fine_tuning
- DeepSpeed
- RuntimeError
- 사전학습
- postech 인공지능대학원
- trainer
- postech
- 포스텍 ai
- timeout
- 파이썬
- 파인튜닝
- Axotl
- Today
- Total
DopeorNope 개발일지
[LLM,deepspeed, axotl]LLM 파인튜닝시, loss값이 올라가는 현상 본문
자 오늘 오전에는 이 미친 라이브러리 deepspeed가 axotl에 미치는 영향을 알아보고, 이를 해결하는 방법을 공유하였다.
그런데, 이제 더 미친 문제가 하나 남겨져있었다.
훈련시키는 도중 나는 다음과같은 모습을 볼 수 있었다.
내 wandb프로젝트에 다음과 같은 모습을 발견했는데, 여기서 주의할점이 step이 올라갈수록 loss값이 폭등하는 것이다.
이 문제를 해결하기 위해서 정말 별의별 document를 확인하였다.
그러자 다음과 같이 문서를 찾을 수 있었다.
우선 나는 lr_scheduler로 learning rate를 조금씩 낮춰가는 형상으로 훈련을 하고 있었는데, 음 비슷한 문제를 가진 내용이, lr와 loss와의 관계가 있다는 것이다. 값자기 exploding을 한다는 글이었고, 물론 나는 처음부터 exploding하였지만, 다른 문서들을 찾아보아도, weighted decay와 관련되었다는 것이다.
근데 내가 직접 허깅페이스 라이브러리로 bfloat16으로 훈련을 시키면, 최적화가 좀 잘된적이 많았지만, deepspeed를 활용하여 병렬처리로 훈련을 시키니, bfloat16을 활용하는 경우 loss값이 deepspeed에서는 이상하게 잘못 계산된다는 의견이 조금 있었다.
그래서 나는 d_type을 float32로 변경하였는데, 변경하니 다음과 같은 양상으로 변한걸 알 수 있었다.
이 미친 라이브러리는 누가 만든것인가....하...
무튼 axotl과 deepspeed를 활용하여 훈련시키는데 loss가 폭등하면 다음과 같이 활용하면된다
d_type을 float32로 변경
오늘도 빡친 하루였다.
'에러 노트' 카테고리의 다른 글
llama.cpp로 양자화 하기 GGUF (1) | 2024.04.03 |
---|---|
[Deepspeed]assert len(set(t.dtype for t in tensors)) == 1에러 해결 (1) | 2024.01.15 |
Multi-GPU 훈련시 Timeout 문제 해결법 (0) | 2024.01.15 |
Axotl & deepspeed zero3: 모델 레이어 불러올때 torch.Size([0]) 해결법 (1) | 2024.01.13 |
RuntimeError: expected scalar type Half but found Float 에러 해결방법 (0) | 2024.01.02 |