관심 있는 NLP 논문을 읽어보고 간단히 정리했습니다.
혹시 부족하거나 잘못된 내용이 있다면 댓글 부탁드립니다 🙇♂️
[LG AI Research]
- LG AI Research가 개발하여 공개한 7.8B 사이즈의 instruction-tuned model
- 한글과 영어, 두 언어에 대한 proficiency가 높은 것을 강점으로 내세우고 있음
- 허깅페이스 링크: https://huggingface.co/LGAI-EXAONE/EXAONE-3.0-7.8B-Instruct
출처 : https://www.lgresearch.ai/data/upload/tech_report/en/EXAONE_3.0_Technical_Report.pdf
1. Introduction
제가 알기로 국내 대기업 중에서 AI 연구에 거의 가장 진심인 LG AI Research에서 개발한 LLM, EXAONE을 공개했습니다.
이번이 버전 3.0 모델이고, 이미 업계에서는 LG 그룹 내에서 내부적으로 사용하는 자체 LLM임이 잘 알려져 있던 것 같습니다.
이미 1.0, 2.0 버전이 존재했으나 3.0 버전이 되어서야 공개하는 것엔 (주관적인 예상으로) 크게 두 가지 이유가 있는 것으로 보입니다.
우선 성능에 자신이 있어 보입니다.
요즘에는 워낙 많은 모델들이 우수한 성능을 지닌 채로 공개되고 있습니다.
물론 우수한 성능은 꽤나 무의미한 것으로 여겨지는 벤치마크를 기준으로 삼고 있지만..
그럼에도 성능 평가를 대체할 방법이 딱히 없는 것도 사실이죠.
이런 상황에서 널리 사용되는 벤치마크에서 동사이즈 모델들 대비 뛰어난 성능을 달성했음이 확인되었기 때문에 자신있게 공개한 것 같습니다.
둘째로는 AI 연구 기업으로서의 입지를 다지기 위해서로 보입니다.
현재는 AI에 대한 투자가 거품이다 아니다 말도 많고, 그럼에도 불구하고 글로벌 빅테크 기업들과 파트너십을 맺고 사업을 확장하는 경우도 많습니다.
이런 상황에서 LLM을 직접 pre-trianing 하는 것은 정말로 뛰어난 LLM을 만들어서 자체적으로 사용하겠다는 것보다도 해당 기업의 기술력과 잠재력을 입증하는 것 같기도 합니다.
그룹 내부에서는 EXAONE만을 이용해서 각 계열사가 과제를 수행하는 입장이라고 알고 있는데,
뛰어난 모델들(llama-3, llama-3.1 등)이 공개되었음에도 불구하고 억지로 EXAONE 2.0을 사용해야 했던 LG 직원분들이 가장 기뻐할 소식이 아니었을까 싶네요.
2. Model Training
2.1. Model Architecture
뭐 연구에 도움이 되고 어쩌고.. 라는 명목을 내세워 모델을 공개했지만 실속은 그다지 없어 보입니다.
특히 위 모델 아키텍쳐는 요즘 어떤 LLM을 보더라도 누구나 알 수 있는 정보들로만 이뤄져 있습니다..! ㅋㅋㅋㅋ
허깅페이스에 공개된 모델 정보를 보면 죄다 EXAONE 이름을 붙여서 클래스를 만들었던데, 그런 것치곤 너무 평범한 내용들입니다.
그럼에도 간단히 각 요소들(빨간색 박스)을 조금 자세하게 알아보면 이렇습니다.
- Pre-normalization = True
트랜스포머 아키텍쳐는 self-attention과 feedforward를 통과한 이후 normalization을 적용하여 다음 연산 과정이나 레이어로 전달됩니다.
(참고로 Add는 Residual connection을 의미합니다)
이는 레이어를 통과하면서 기존 정보가 소실되지는 않으면서도 (add) 지나치게 값이 커지거나 작아지는 것을 방지하기 위함(norm)이죠.
그런데 이 normalization을 '연산 이후'가 아닌 '연산 이전'에 적용하는 것이 더 좋다는 연구 결과가 많습니다.
(Llama도 RMSNorm을 pre- 로 적용함: https://arxiv.org/pdf/2307.09288)
- Non-linearity = SwiGLU
EXAONE 역시 현존하는 LLM 대부분이 사용 중인 활성화함수 SwiGLU를 사용합니다.
이는 Swish와 GLU를 합친 방식입니다.
(참고 가능한 블로그 링크: https://thecho7.tistory.com/entry/SwiGLU-Activation-Function-%EC%84%A4%EB%AA%85)
- Head Type = GQA
GQA는 Grouped Query Attention의 약자로 이것 역시 거의 모든 LLM에서 사용하는 방법론입니다.
트랜스포머 내부의 attention 연산을 수행할 때 cost가 너무 많이 발생하는 것을 방지하기 위해 제안된 방법입니다.
(논문 링크: https://arxiv.org/abs/2305.13245)
개념은 아주 간단한데, 원래 각 query에 대해 모든 key, value와의 attention 연산을 수행하던 것과 달리, key와 value를 일정 단위의 group으로 묶어서 연산을 수행합니다.
이렇게 하면 연산 횟수도 줄이고 저장해야 하는 key, value 값의 개수도 줄어들기 때문에 메모리도 많이 아낄 수 있게 됩니다.
Multi-query를 사용하는 경우 효율성은 올라가지만, 한 개의 key, value 쌍에 너무 많은 정보가 담기게 되어 정확한 표현이 어려워진다는 문제점이 있습니다.
그래서 일반적인 Multi-head 대신 Grouped-query를 사용하는 것이 현재로서는 가장 대중적입니다.
- RoPE theta = 500,000
RoPE는 Rotary Position Embedding의 약자입니다.
(논문 링크: https://arxiv.org/abs/2104.09864)
정확한 개념은 이해해야할 내용이 굉장히 많고..
theta값이 클수록 회전의 정도가 커져서, 각 위치에 따른 위치 정보가 더욱 민감하게 변화한다는 것 정도만 이해해도 충분합니다.
즉, 긴 sequence를 처리하기 위해서는 더 큰 theta값을 설정해야 좋지만, 그러한 경우 짧은 context 내의 위치 변화에도 민감하게 반응하게 된다는 것이죠.
- Vocab size = 102,400
언어 모델에서 사용하는 vocab의 크기는 날이 갈수록 커지고 있습니다.
encoder 중심의 언어 모델이 주를 이루던 시기의 BERT 모델만 보더라도 30,522의 vocab size를 가집니다.
decoder 모델인 GPT-2,3의 경우에도 50,257 크기의 vocab을 갖는 것으로 알려져 있습니다.
이와 달리 최근 LLM들은 100,000개 이상의 토큰을 커버하는 경우가 많은데, 이는 다국어를 지원하기 위함이라고 볼 수 있을 것 같습니다.
아무래도 특정 언어에 대한 세밀한 표현이 가능하려면 토큰화부터 잘 되어야 하다 보니..
multi-lingual 모델의 경우엔 12~13만 개 이상의 vocab size를 갖는 경우도 있습니다.
번외로.. 정확히 계산하는 방법은 모르겠지만, LLM에서 embedding layer가 차지하는 비중은 상당히 크다고 합니다.
많게는 전체 아키텍처에서 30~40%를 차지한다고 하는데, 그만큼 전체 성능에 영향을 크게 주는 요소라는 걸 알 수가 있습니다.
그렇기 때문에 한국어를 잘하는 자체 모델을 만들기 위해서는 토크나이저부터 잘 설계하는 것이 매우매우 중요하겠습니다.
추가로 EXAONE 3.0에서 사용한 토크나이저를 구성하는 한글, 영어 토큰의 압축 비율은 아래와 같습니다. (BBPE로 학습)
한 단어가 몇 개의 토큰으로 치환되는지를 구한 통계값입니다.
숫자가 작을수록 세밀한 표현이 가능하도록 토크나이저 학습이 되었다고 해석 가능합니다.
2.2. Pre-training
모델의 사이즈와 학습에 사용되는 데이터의 양이 일정한 규칙을 따른다는 data-optimal scaling law도 잘 알려져 있습니다.
(chinchilla에서 기존 모델들의 sub-optimal 문제를 깠었던 걸로 기억하고 있습니다. 더 많은 토큰으로 학습해야 한다..!)
그러나 여기서 중요한 것은 무작정 모델의 사이즈를 키우거나 학습 데이터의 양을 늘리는 것이 아니라, 학습 데이터의 퀄리티를 보장하는 것입니다.
아마 언어 모델을 학습해 보신 분들은 잘 아시겠지만..
학습 데이터의 퀄리티가 사실상 모든 것을 결정한다고 봐도 무방하죠.
여기서는 많은 정보를 공개하지는 않고 또 뻔한 소리를 하고 있습니다..
당연하게도 rule-base filtering & ML based filtering을 적용한 데이터를 pre-training에 활용합니다.
8T 토큰을 학습할 땐 두 단계로 나눴다고 합니다.
첫 단계에서는 6T 토큰을 학습하여 general knowledge를 획득하는 것을 목표로 삼습니다.
이어지는 두 번째 단계에서는 2T 토큰을 학습하여 고급 언어 스킬과 도메인 지식을 획득하도록 했다고 합니다.
2.3. Post-training
EXAONE의 instruction-following 능력은 두 단계를 거쳐 획득되었다고 합니다.
첫째로 supervised fine-tuning (SFT) 단계입니다.
instruction tuning에서 가장 중요한 것도 데이터입니다.
고품질의 데이터가 필요한데, 여기서 고품질이란 최대한 다양한 종류의 task를 포함해야 함을 의미합니다.
또한 유저와의 multi-turn 데이터셋을 만들기 위해서도 노력을 들였다고 언급하고 있습니다.
두 번째 단계는 Direct Preference Optimization (DPO) 입니다.
원래 인간의 선호를 반영하는 RLHF(Reinforcement Learning from Human Feedback)에서는 PPO(Proximal Policy Optimization)이 유명한데, 최근에는 DPO가 정석으로 자리 잡았습니다.
(메모리/속도 효율성은 높고, 학습 결과도 좋아서.. 논문 링크: https://arxiv.org/abs/2305.18290)
간단히만 언급하면 두 개의 response pair 중에서 chosen response가 등장할 확률은 극대화하고 rejected response가 등장할 확률은 낮추도록 하는 방식입니다.
이에 관해서도 offline 방식과 online 방식이 있는데 둘을 순서대로 적용했다고 합니다.
offline은 사전에 구축된 preference dataset을 이용하는 방식이고, online은 여기에 reward 모델을 사용하는 방식입니다.
참고로 H100 클러스터를 이용하여 학습을 했다고 밝혔는데 정확히 얼마나 썼는지는 공개하지 않았습니다.
3. Evaluation
영어와 한국어를 둘 다 잘하는 모델임을 강조하는 실험 결과입니다.
카테고리는 임의로 분류한 것 같고.. 자세한 내용들은 이 아래에서 제시하고 있습니다.
3.1. English Capability
3.1.1. Real-world Use Cases
현실 세계에서의 모델 성능이 유의미한지를 판단하기 위해서는 LMSYS Chatbot Arena와 같은 평가방식이 가장 좋습니다.
그래서 이와 관련성이 가장 높은 네 개의 벤치마크, 'MT-Bench, Arena-Hard-v0.1, WildBench, AlpacaEval 2.0 LC' 로 테스트한 결과를 제시하고 있습니다.
MT-Bench의 경우 LMSYS Chatbot Arena의 벤치마크 중 하나이기도 하고..
실제 스코어가 그렇다고 한다면 굉장히 의미 있는 수치인 것으로 보입니다.
그런데 왜 챗봇 아레나에서 경쟁을 직접 하지 않았는지는 모르겠네요.
아직 잘 모르는 것일 수도 있어서 추가적인 조사가 필요해 보입니다.
제가 부족한 것인지는 모르겠으나 네 개의 벤치마크가 왜 저 챗봇 아레나와 high-correlation이 있는지 설명이 없어도 되나 의문이 드네요.
3.1.2. Coding & Math
언어 모델의 instruction following 능력을 확인할 때 가장 많이 사용되는 벤치마크 중 코딩과 수학 관련된 것들이 있습니다.
그중에서도 아주 대표적인 벤치마크들로 테스트한 결과를 제시하고 있습니다.
근데 너무 적은 벤치마크로 테스트한 결과를 제시했을 뿐만 아니라, 다른 모델 대비 갖는 장점이 명확해 보이지도 않아서 왜 이걸 보여주고 있는지는 솔직히 잘 모르겠습니다.
스코어의 평균치가 크게 차이나는 두 벤치 결과의 평균을 제시하는 이유도 잘 모르겠고요..
3.1.3 General & Reasoning
이 결과들은 더욱 모르겠네요...
동사이즈 대비 최강 성능이라고 했는데 뭐지 싶은 결과입니다.
3.2. Korean Capability
3.2.1. Real-world Use Cases
한국어에서 real-world 케이스에 대한 능력을 파악하기 위해서는 두 개의 벤치마크, KoMT-Bench와 LogicKor를 사용했습니다.
KoMT-Bench의 경우 MT-Bench 데이터를 한글의 뉘앙스를 최대한 살리며 번역한 벤치마크입니다.
LogicKor는 6개 카테고리에 대한 42개 멀티턴 프롬프트로 구성된, MT-Bench와 유사한 형태의 벤치마크입니다.
EXAONE 3.0이 다른 글로벌 모델 대비 뛰어나다는 것을 보여주는 실험 결과입니다.
3.2.2. General
대중적으로 사용되는 한국어 벤치마크들에 대한 결과를 한꺼번에 제시하고 있습니다.
한국에서 독자적으로 만들어진 벤치마크들은 아니고..
대부분 해외에서 주로 사용되는 벤치마크들을 한국 특성에 맞게 변형한 것들로 이해할 수 있습니다.
정말 놀라운 것은 그냥 외국어 대표 LLM 몇 개와 비교한 결과를 제시한 게 전부입니다.
그리고 강점이라고 한다면 한국어를 잘한다..일텐데 한국어 실험은 더 없습니다.
오히려 영어보다도 적은 벤치마크 결과를 제시했습니다.
개인적으로는 (억지) 글로벌 플레이어로 자리매김하고자 한 욕심이 아닐까.. 싶기도 합니다.
4. Responsible AI
사실 위에서 데이터 관련해서도 언급을 했어야 했는데, 요즘은 인공지능하면 윤리적인 문제도 빠뜨릴 수가 없습니다.
데이터 필터링 작업에도 개인 정보, 저작권과 관련된 이슈들이 가장 중요한 기준으로 반영이 되고 있고요.
요즘 LLM을 만드는 기업들은 이 문제로 골머리를 앓고 있는 것 같습니다.
4.1. Risks and Mitigations
OpenAI와 같은 proprietary 모델을 만드는 기업들은 이러한 점을 우려하여 모델을 공개하지 않는다고 주장합니다.
악의적인 목적을 가진 사람이 모델을 자유롭게 활용하게 되면 그 영향력이 너무 클 수 있다는 것이죠.
EXAONE은 이에 대해 윤리와 안전에 대한 가이드라인을 따르도록 하는 라이센스를 만들었습니다.
남용 사례 등이 있으면 보고하는 것이 라이센스 조항에 포함된다는 것인데..
이런 걸로 risk를 줄일 수 있는 게 맞나 싶습니다.
사실상 글을 몇 자 적은 것 제외하고는 본인들이 언급한 위험성을 줄일 수 있는 액션을 전혀 취하지 않은 것처럼 보이네요.
4.2. Red Teaming
언어 모델이 일부러 해로운(성적인, 차별적인, 편향적인) response를 하도록 유도하는 작업을 Red Teaming이라고 합니다.
예를 들어 '야한 농담 해줘' 등의 프롬프트를 주면 모델이 유저의 요청을 따르게 되는데, 이것은 바람직한 결과가 아닙니다.
그래서 이런 일종의 적대적 공격(adversarial attack)에 대해 모델이 얼마만큼 강인한지를 테스트하는 것이 아주 중요합니다.
Pass는 모델이 공격을 잘 방어한 경우, Fail은 유저의 악의적인 지시를 그대로 따르게 된 경우, Skipped는 주제를 벗어나 다른 이야기를 하게 된 경우를 뜻합니다.
Hate 항목에서 가장 높은 Fail 비율을 보이는데, 모델로부터 혐오 표현을 이끌어내는 것이 (상대적으로) 가장 쉽다는 뜻입니다.
아래는 혐오 표현과 성적 표현을 유도하는 내용을 담은 query 예시입니다.
또한 지역 차별적인 내용을 담은 프롬프트 예시도 함께 보고하고 있습니다.
5. Limitations & Conclusion
여기에서 역시 굉장히 뻔한 내용을 언급하고 있습니다.
뭐.. 부정확한/잘못된 내용으로 답변할 수 있다, 개인적인 혹은 부정적인 정보 등을 포함하여 답변을 생성할 수 있다 등..
그러나 한국어와 영어를 모두 잘하는 EXAONE 3.0 7.8B 모델은 real-world 시나리오에 대응을 잘할 수 있으며 동일 사이즈 모델들 대비 뛰어난 성능을 보여준다... 는 내용으로 마무리가 됩니다.
정말 마지막으로 비상업적 & 연구 목적으로 모델을 이용할 수 있다고 언급하고 있습니다.
개인적으로는 역대급으로 맛없는 테크니컬 리포트였다는 생각이 듭니다 ⚡️⚡️
자랑을 할 거면 시원하게 자랑을 하든가..
일부에 대해서는 뛰어난 성능을 보이는 것 같기는 한데, 과연 Llama-3.1 과 같은 모델에 추가 학습을 한 것과 비교해도 잘할 수 있을까요?
영어와 한국어를 둘 다 빼어나게 잘한다고 보기에는 결과가 그렇게 뛰어난 것 같지도 않고,
한국어에서는 뛰어나긴 하지만 애초에 다국어 모델들과의 비교다 보니 유의미한 수준인지도 모르겠습니다.
사실상 허깅페이스에 올라온 모델 카드 수준의 정보를 담고 있는 레포트라는 느낌을 받았습니다.
특히 모델 아키텍쳐나 방법론적인 것들은 과장 조금 보태서 그냥 ChatGPT한테 물어봐도 알 수 있는 수준의 정보였다는 생각이 듭니다.
실제 유저들의 평가가 어떻게 될지 모르겠는데 첫인상이 달라질지 모르겠습니다.
웬만해서는 이런 글을 잘 적지 않는데..
혹시라도 많은 공수를 들여 EXAONE 3.0을 만드신 분이 이 글을 보시게 된다면 악의는 없었다고 미리 사과 말씀 드립니다..
투입된 인력들이 엄청나게 빡세게 구르고 갈려나갔다고 들었는데요..
아마 이런 식으로 레포트가 작성되고 모델이 공개된 배경은 따로 있지 않을까..
그럼에도 국내에서 가장 뛰어난 AI 인력들이 모인 기업의 결과물이라 다들 기대가 많은 것 같은데 좋은 평들이 나올 수 있길 기대해 봅니다.