▪️

Polyglot-ko 리뷰 (논문・세미나 정리)

배경

우리는 ChatGPT, Gemini와 같은 LLM 서비스를 쉽게 쓸 수 있습니다. 하지만 보안 문제가 있는 회사에서는 금지하거나 제약사항이 많습니다. 그래서 오픈소스 기반의 LLM을 활용해서 서비스를 만드는 것이 거의 유일한 해답일 수 있지요. 물론 오픈소스 LLM은 ChatGPT, Gemini와 같은 정말 거대한 파라미터를 가진 모델에 비해서 성능은 부족할 수 있어도, 활용하는 Task에 맞춰서 잘 튜닝하고 외부 지식을 RAG와 같은 기법으로 활용한다면 충분히 쓸만한 성능이 나올 수 있다고 생각합니다.
저는 한국에서 살고있고, 한국 회사을 다니고 있습니다. 취업하고 나서 영어를 거의 못 본것같은데…., 만약 회사에서 LLM을 도입한다면 어떻게 될까요? 영어 LLM이 아니라 당연히 한국어 LLM을 도입해야하지 않을까요? 찾아본 결과 테크기업과 연구소에서 여러 한국어 LLM을 오픈소스로 그리고 연구결과를 페이퍼로 공개해두었습니다. 페이퍼를 리뷰해보고, 오픈소스 LLM을 한번 사용해보는 시간을 갖고자 합니다. 이번에는 한국어 LLM에서 가장 많이 활용되는 Polyglot-ko를 리뷰해보겠습니다.

Polyglot-Ko 리뷰

Polyglot 단어의 의미는 여러 언어를 구사하는 것을 말합니다. 이 모델을 만든 개발자들은 다국어(multilingual) 모델의 필요성에 대해 강조합니다. 영어중심의 LLM에서 벗어나 영어가 아닌 언어에서도 성능이 좋은 언어모델을 만드는 것을 목표로 하며, 그 과정에 첫 단계로 한국어 데이터 기반의 LLM을 만들고 배포했습니다. 해당 모델에 대한 페이퍼, 그리고 개발자의 모델 설명영상도 있으니 함께 참고하시면 이해에 도움이 되시리라 생각합니다.
(개발자 고현웅님 - 모델 설명영상) https://www.youtube.com/live/a0TB-_WFjNk?t=4200s
(언어모델 페이퍼) https://arxiv.org/abs/2306.02254

데이터셋

모델 개발자들은 1.2TB 규모가 되는 대량의 한국어 데이터를 수집했고, 텍스트 전처리 결과 863GB의 텍스트 데이터를 확보했다고 합니다. (전처리 후에 불필요한 텍스트 데이터가 줄었다는 의미입니다.) 개인적으로 이 페이퍼에서 데이터셋에 대한 고민과 아이디어가 제일 인상깊었습니다.
LLM은 좋은 데이터가 필수적이기 때문에, 개발자들은 모델 성능과 프라이버시 준수를 위해 데이터를 4가지 타입으로 분류하고 여러 전처리 이슈들을 고려했습니다.
4가지 데이터 타입
1.
훈련용 데이터(Data available for training) : 주로 뉴스, 위키피디아 텍스트 - 충분한 길이를 가진 텍스트 데이터
2.
맥락정보가 필요한 훈련용 데이터(Data requiring contextual information for training) : 주로 블로그, 뉴스 텍스트 - 짧은 길이의 텍스트가 있어 맥락정보를 추가
3.
혐오표현 데이터(Data containing hate speech) : 특정 커뮤니티 데이터 - 모델 학습시 제거해야함
4.
NLP Task 데이터(NLP task-specific data) : 텍스트 분류(classification) 등 NLP 용 데이터 - 모델 훈련은 사용하나 모델 평가시 별도 처리
전처리 이슈
1.
빈 텍스트(Empty text)
2.
불필요 공백(Unnecessary spaces)
3.
비식별화(De-identification) : 개인을 식별가능한 정보
4.
정리되지 않는 HTML 태그(Uncleaned HTML tags)
5.
중복 제거(Deduplication)
6.
깨진 코드(Broken code) : HTML 또는 Markdown 일부분만 포함 데이터
7.
짧은 텍스트(Short text)
8.
반복 문자(Repeated characters)
개발자들이 전처리에 있어 특히 주목한 요소는 한국어 생성에 초점을 맞추기 위해 HTML같은 코드를 제거하는 것이였으며, 더 풍부한 문맥 정보를 학습하기 위해 데이터 길이도 중요 요소로 보았습니다.

모델

개발자들은 모델 학습을 위해 GPU 기반 LLM 학습 라이브러리인 EleutherAI의 GPT-NeoX를 사용했습니다. 또한, 지원을 받아 256개의 A100 GPU를 활용하였습니다.
각 모델 사이즈에 따른 학습한 텍스트 토큰과 학습 스텝 그리고 소요된 시간(* 개발자 설명 유튜브 영상 참고)은 다음과 같습니다. 토크나이저는 모든 모델에서 동일하며, 형태소 인식을 반영한 ByteLevel BPE (Byte-Pair Encoding)을 학습해 사용하였습니다.
1.3B 모델 : 213B 토큰, 102,000 스텝 학습 (약 1~2주 소요)
3.8B 모델 : 218B 토큰, 105,000 스텝 학습 (약 2~3주 소요)
모델 분산처리(Model Parallelism) 적용 - 1.3B 모델과 동일한 배치 사이즈
1.3B과 3.8B 모델에서는 Loss 값이 1 Epoch 경계에서 급격히 감소하며, 잘못된 생성(ex : 동일한 토큰 생성이 반복)되는 상황이 발생, 해당 경계 이전의 모델 체크포인트를 선택(Early Stoping)
5.8B 모델 : 172B 토큰, 320,000 스텝 학습 (약 3~4주 소요)
모델 분산처리(Model Parallelism) 적용 - 배치사이즈 : 1.3B과 3.8B 모델의 1/4
12.8B 모델 : 167B 토큰, 301,000 스텝 학습 (약 7~8주 소요)
모델 분산처리(Model Parallelism) 및 Gradient Accumulation Steps (GAS) 적용
배치사이즈 5.8B와 동일

실험

Polyglot-Ko 공개시점의 오픈소스 한국어 LLM과 성능을 비교했으며, 다른 LLM에 비해 높은 성능을 보였습니다.

마치며

시행착오를 거쳐가며 더 나은 학습 방안을 고민한 흔적이 많이 느껴졌습니다. 그러나 아쉽게도 Polyglot-ko 버전2 프로젝트는 중단된 상태입니다. 2023년 중반, ChatGPT 출시와 LLaMA 모델을 다국어로 adaptation 한 모델들이 좋은 성능을 보이며 입지가 줄어들었다고 합니다. 개발자분의 그동안의 고초를 담은 페이스북 글을 보며, 본인이 석사과정을 하며 경험한 물음표 가득했던 정부 과제들이 떠올랐습니다. 기술 발전 또는 개선은 보여주기가 아닌, 뚜렷한 목표를 가진 개인이 모인 집단으로부터 가능하지 않을까라는 생각이 들었습니다.
(개발자 고현웅님 - 관련 페이스북 컨텐츠) https://lnkd.in/gX3Kq9jF