일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 에러노트
- torch.distributed
- learning_rate
- Torch
- 파이썬
- 대학원준비
- 포항공대인공지능
- 포스텍 ai
- torch_size
- trainer
- 포항공대인공지능대학원
- postech
- 러닝레이트
- 대학원합격
- 파인튜닝
- timeout
- 에러
- llm
- 포스텍 인공지능 대학원
- Axotl
- postech 인공지능대학원
- llm파인튜닝
- fine_tuning
- github
- 포스텍인공지능
- loss
- 사전학습
- postech인공지능
- DeepSpeed
- RuntimeError
- Today
- Total
목록llm (5)
DopeorNope 개발일지

이놈의 Multi-GPU 훈련은 진짜 사람을 돌게 만든다. 도대체 어디서 문제가 나는지 감도 안오는 경우가 많기 때문이다. 하지만 결국 사람은 그렇게 찾아낸다. 이 에러가 나는 근본적인 이유를 알아보자. 깃허브 이슈에 나와있던 글이다. 내용인 즉슨, 보통 llm full-finetuning시 레이어 얼리는데 있어서, 옵티마이저 최적화 할만한 레이어가 없다는 것이라는것과 같다는 것이다. 근데 솔직히 이것보다 더 근본적인 문제가 있는게, 지금 내가 fine_tuning하려는 하이퍼 파라미터들(트레이닝 옵션 혹은 모델 dtype)과 deepspeed의 config가 호환이 되지 않아서 그런거다. 그러면 어떻게 해결할 것인가? 방법은 은근히 간단하다. 우선 불러오는 모델 type이 bfloat16이라면, dee..
torch는 분산학습 가지고 훈련하는데 매우 최적화가 잘되어 있다. 특히 보통 이제 torch.distributed를 활용하여 분산학습을 시작하게 되는데, 가끔 훈련시 이러한 문제점을 발생하는 경우가 있다. Watchdog caught collective operation timeout: WorkNCCL(OpType=BROADCAST, Timeout(ms)=1800000) ran for 1808499 milliseconds before timing out. 이 에러는 정말 단순하지만 보면 볼 수록 이해가 안가는 에러메세지이다. 왜 에러메세지가 생기는가? 그것은 바로, 기본적으로 분산학습을 활용하는 프레임워크로 accelerate를 활용하는데 여기에서 기본적으로 세팅되어 있는 시간이 30분이다. 즉 한작업..

자 오늘 오전에는 이 미친 라이브러리 deepspeed가 axotl에 미치는 영향을 알아보고, 이를 해결하는 방법을 공유하였다. 그런데, 이제 더 미친 문제가 하나 남겨져있었다. 훈련시키는 도중 나는 다음과같은 모습을 볼 수 있었다. 내 wandb프로젝트에 다음과 같은 모습을 발견했는데, 여기서 주의할점이 step이 올라갈수록 loss값이 폭등하는 것이다. 이 문제를 해결하기 위해서 정말 별의별 document를 확인하였다. 그러자 다음과 같이 문서를 찾을 수 있었다. 우선 나는 lr_scheduler로 learning rate를 조금씩 낮춰가는 형상으로 훈련을 하고 있었는데, 음 비슷한 문제를 가진 내용이, lr와 loss와의 관계가 있다는 것이다. 값자기 exploding을 한다는 글이었고, 물론 나..
진짜 그냥 이걸 해결했긴 했는데, 진짜 머리가 찡하다. 그냥 화가 무척 난다. 왜 화가나느냐? 마이크로 소프트 이놈들은 deepspeed를 윈도우처럼 만들어놨다. 업데이트도 느리고 github 레포에서 세달전에 올라온 버그 리포트도 아직까지 반영이 안되어있다. 자 그럼 이번에 어떤주제냐면, LLM full-finetuning할때, 내가 몇개의 레이어는 얼리고 몇개는 풀고싶고 이렇게 튜닝하고 싶은 경우가 정말 많다. 그럴때 자주 쓰이는 것은 아래와 같다. param.requires_grad = False 혹은 param.requires_grad = True 위의 두개가 무엇이냐 하면은, 그 가중치에 gradient update를 할지 안할지 결정해주는 것이다. 그런데 이제 Axotl라이브러리 활용하셔 LL..
Axolotl에서 Pre-train 과정에서 다음과 같은 에러가 발생함 RuntimeError: expected scalar type Half but found Float FP16으로 내가 불러와서 지금 Half(원래는 32비트 이기때문에, FP16은 Half임)로 불러왔지만, 데이터가 지금 float이기 때문에 문제가 발생함 이럴경우 이와 같이 문제를 해결하면 됨. train.py에서 아래와 같이 trainer.train 하는 곳에서 'cuda'알아서 오토캐스트 해주면 데이터에 맞게 알아서 해결됨. if cfg.flash_optimum: with torch.backends.cuda.sdp_kernel( enable_flash=True, enable_math=True, enable_mem_efficien..