Show GN: Hanok-LLM - 오픈소스 한국어 LLM 학습 프로그램, 데이터셋부터 Ollama, Hugging Face 배포까지

1 hour ago 3

예전에 올렸던 글(https://news.hada.io/topic?id=32792)을 쓴 지도 꽤 시간이 지났네요. 그동안 한국어 언어 모델을 직접 만들어 보겠다는 생각으로 시작한 프로젝트를 계속 진행하고 있습니다. 처음부터 거창한 계획이 있었던 것은 아닙니다. 기존 모델을 사용하다 보니 직접 만들어 보면 어떨까 싶었고, 그러다 모델 구조와 학습 과정을 하나씩 살펴보기 시작했습니다. 그렇게 50M 모델로 시작해서 541M, 약 1.09B 규모까지 실험하게 됐습니다. 물론 과정이 순탄하지만은 않았습니다. 학습 결과가 이상해서 원인을 찾아보기도 했고, 데이터셋 처리 과정에서 일부 데이터가 제대로 활용되지 않는 문제를 의심해 학습 과정을 다시 확인하기도 했습니다. 모델 크기를 키우는 것만큼 데이터가 의도대로 처리되고 있는지 확인하는 것도 중요하다는 걸 배웠습니다. 이후에는 메모리 사용량과 학습 설정을 조정하면서 실험을 이어 갔습니다. 특히 이전에는 모델 가중치를 BF16으로 강제 변환하는 부분이 있었고, 이를 수정한 뒤 학습을 다시 진행하고 있습니다. 현재는 시퀀스 길이를 1024로 설정해 학습 중이며, GPU 메모리 사용량은 약 20GB 수준입니다. Hanok-LLM은 기존 공개 모델을 가져와 파인튜닝하는 데 그치지 않고, 모델 구조와 학습 파이프라인을 직접 구성해 보는 프로젝트입니다. AI의 도움을 받아 코드를 작성하고 수정하기도 했으며, 모델 설정과 데이터 구성, 실험 과정을 조정하면서 개발을 진행하고 있습니다. 현재 실험 중인 모델은 약 1.09B 파라미터 규모의 디코더 전용 Transformer입니다. PyTorch를 기반으로 한국어 텍스트를 이용한 프리트레이닝을 진행하고 있습니다. 학습이 진행될수록 손실값과 실제 생성 결과가 어떻게 달라지는지 확인하고 있으며, 이후 추론과 배포에 필요한 과정도 함께 정리하고 있습니다. 이번에는 프리트레이닝 도중 생성된 샘플과 학습 지표가 어떻게 달라졌는지 기록해 보려고 합니다. 현재 공유할 수 있는 최신 학습 기록은 Step 30,000입니다. 전체 학습 목표를 완료한 상태는 아니며, 현재까지의 학습 진행 상황과 생성 결과를 살펴보는 단계입니다. Step 25,000과 Step 30,000에서 확인한 로그는 다음과 같습니다. [Step 24999] Train: 2.7159 | LR: 4.28e-05 | Tokens/update: 16368 [Step 25000] Train...

Read Entire Article