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

이번에 포항공대, 인공지능 대학원 서류 및 필기 합격 수기를 작성하려고 한다. 우선 필자의 학력은, 입결기준 건동홍 라인으로 입학했으며, 전공은 산업공학계열 1전공, 경영 2전공으로 하여서 대학교를 다녔다. 2전공이 경영이라 너무 쫄렸다. 다만, 나는 혼자 수학공부를 많이 했고, 선대수, 이산수학, 미분방정식, Calculus, 공학수학, 통계, 확률론, 최적화를 다루는 경제수학, 게임이론, 그래프이론 등 수학관련 수업을 일부러 찾아들으며, 여러 학생들의 두뇌에 저사람 뭐지(?)라는 인상을 많이 남기며 학교를 다녔었다. 전공 GPA는 4.37, 전체 GPA는 4.24정도 된다. 학부 연구원 및 여러 연구 경험이 3년정도 있었고, 인공지능 경진대회 관련 상장은 한 3개정도 보유하고 있으며, 논문은 3개정도..

120b짜리 모델을 굽고 있는 와중, 아 도저히 내 서버로는 감당이 안되는 크기라 양자화를 시도해야 하겠다는 생각이들었다. (현재 사용하고 있는 서버는 A100 40GB * 8) 그래서 어떻게 llama.cpp로 양자화를 하는지 에러 수정 및 구현 방법을 기술하도록 하겠다. 우선 llama.cpp에서 제공하는 양자화 지원 범위는 다음과 같다. 우선 나는 4bit 양자화에 대해선 약간의 불안감이 있다. 그 이유는, 우선 8bit까지는 어느정도 성능이 괜찮은데, 4bit로 가니 외계어를 밷는 경험을 좀 했기 때문에.. 성능 위주면 8bit를 추천..합네다. 그럼 llama.cpp를 빌드하는 법을 알려줄 수 있도록 하겠다. 필자는 리눅스 기반의 공용서버를 활용하고 있기 때문에, 리눅스 기반으로 설명하겠다. 1..
우선 영어로 훈련된 모델들에 대해서, 새로운 언어에 대해 new adaption을 시키는건 많이 시도되었지만, 명확한 방법이 나오지 않아, 이렇게 시도 해보며 남겨본다. 우선 기존의 Upstage의 solar나, 다른 technical report를 보면, mistral base의 모델의 파라미터를 증가 시켜서 훈련시키는 것은 성능향상을 보여주었다. 물론 SOLAR같은 경우는, 너무 리더보드용으로 최적화 되어 있다. 그래서 나는 그렇게 달갑지는 않은데, 나는 좀더 실제적으로 활용도가 높은 모델을 개발하고 싶은 마음이 정말 크다. 그래서 Makr AI의 새로운 한국어 모델을 처음부터 끝까지 빌딩하는 개발일지를 남겨본다. 우선 나는 Mistral AI의 모델인 Mistral instruct v1 7B (32..

이놈의 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..