데이터는 없지만 LLM은 학습하고 싶어 - Code, Math 데이터 개발기
- 카카오 언어 모델 트레이닝 팀은 오픈소스 데이터의 양적, 질적 한계, 최신성 부족, 유연성 결여 등의 문제로 인해 LLM 학습을 위한 코드 및 수학 데이터를 직접 개발했습니다. 🚧
- 자체 개발 데이터는 오픈소스 대비 압도적인 양(소스 코드 723.7B 토큰, 수학 90B+ 토큰, 코드 관련 자연어 220B 토큰)을 확보했으며, 2025년 초까지의 최신성과 한국어 데이터를 포함한 다국어 특성을 반영했습니다. 📈
- 이 데이터로 학습한 KANA 2 모델은 기존 오픈소스 기반 KANA 모델 대비 MultiPL-E 벤치마크에서 대부분의 프로그래밍 언어와 수학 및 기타 코드 태스크에서 월등히 높은 성능을 보였습니다. 🏆
- GitHub 소스 코드 데이터 수집은 다운로드, 전처리, 에듀 스코어링, 검증의 파이프라인으로 진행되었으며, PySpark를 활용한 효율적인 다운로드와 라이선스/중복 제거를 통해 한 달 내 약 42억 개의 파일을 확보했습니다. 💻
- 전처리 과정에서는 코드와 무관한 노이즈(카피라이트, 독스트링) 및 개인 식별 정보(이메일, IP)를 제거하고, The Stack V2보다 훨씬 정교한 수십 가지 휴리스틱 필터링 룰을 적용하여 알고리즘적 코드 데이터를 선별했습니다. 💎
- 고품질 데이터 선별을 위한 에듀 스코어링은 언어 모델을 통해 0-5점 점수를 부여하는 방식으로 진행되었으며, CPU-GPU 파이프라이닝 전략으로 수백 빌리언 토큰 규모의 추론을 효율적으로 수행했습니다. ⚙️
- 검증 결과, 자체 수집 데이터는 StackEdu 대비 80% 더 많은 고품질 코드 데이터를 포함했으며, PCA 분석 및 에듀 스코어 분포에서 노이즈가 적고 알고리즘 위주의 고품질 데이터가 더 많음을 확인했습니다. ✅
- 학습 기반 검증에서 자체 고품질 코드 데이터는 HumanEval 및 MBPP 벤치마크에서 StackEdu 대비 뚜렷한 성능 우위를 보였고, MultiPL-E 2 벤치마크에서도 대부분의 언어에서 더 우수한 코딩 능력을 입증했습니다. 🚀
- 웹 기반 수학 및 코드 관련 자연어 데이터 수집 시, 기존 추출기의 수식 누락 및 코드 들여쓰기 손실 문제를 해결하기 위해 자체 익스트랙터를 개발했습니다. 🔍
- 수학 및 코드 관련 자연어 데이터는 고품질 시드 데이터를 기반으로 FastText 분류기를 학습하고 웹 데이터를 반복적으로 필터링하는 딥시크 매스 방식에서 착안한 파이프라인으로 수집되었습니다. ➕
- 이 데이터는 오픈소스 수학/코드 자연어 데이터 대비 양과 성능 모두에서 우수함을 보였으며, 특히 한국어 수학/코드 데이터의 필요성을 확인하고 영어-한국어 혼합 학습을 통해 다국어 성능 보존을 입증했습니다. 🌐
- 결론적으로, 좋은 LLM 학습을 위해서는 오픈소스 의존도를 낮추고 데이터를 직접 수집, 정제하는 과정이 필수적이며, 향후 더 정교한 필터링, 다양한 소스 수집, 합성 데이터 활용을 통해 데이터 스케일업과 에이전틱 LLM 학습을 목표로 합니다. 🤖