NL-259, Efficient and Effective Text Encoding for Chinese LLaMA and Alpaca, Preprint 2023

◼ Comment

  • further pretraining을 살펴보는 중 첫 번째 논문
  • 영어 LLaMA -> 중국어 LLaMA로 만드는 것이다
    • LLaMA는 PLM이니, 중국어 코퍼스로 pretraining 더해서 chinese llama 만들고
    • alpaca 데이터로 SFT (instruct tuning 한다)
    • 여기서 alpaca 데이터는 중국어 SFT 데이터로, 
      • 공개된 번역데이터
      • 영문 alpaca 번역데이터
      • 이런걸로 만들었다는 거 같음
  • 사실 과정은 되게 베이식하고 누구나 해볼만한 방법이다
    • 원하는 언어 데이터를 이용한 새로운 tokenizer 만들고
    • continual pretraining w/ LoRA
    • SFT w/ LoRA
  • 결과는
    • 중국어 instruct model > 중국어 LLaMA == 영어 LLaMA 
    • 이렇다는 것인데, 중국어 LLaMA가 영어 LLaMA 보다 좋아야 하는거 아닌가?;;
    • 그리고 중국거 instruct model vs 영어 LLaMA instruct 모델을 비교해야하는거 아닌가?
    • plus란 버전은 pretraining할때 데이터를 더 많이 넣은건데 성능이 좀더 향상된다고 함
  • 사실 노벨티는 진짜 없고, 뭔가 주장하고자 하는 논리도 애매하지만, 이 시기에 further pretraining을 시도한 논문이라 그런지 인용수가 높긴하다

ABSTRACT

대규모 언어 모델(LLM)인 ChatGPT 및 GPT-4는 자연어 처리(NLP) 연구에 혁신적인 변화를 가져왔으며, 인공지능 일반화(AGI)를 향한 유망한 진전을 보여주고 있습니다. 그러나 이러한 LLM을 훈련하고 배포하는 데 드는 높은 비용은 투명하고 접근 가능한 학술 연구에 큰 장애물이 됩니다. LLaMA와 같은 여러 대규모 언어 모델이 커뮤니티에 의해 오픈소스로 제공되었지만, 이들은 주로 영어 코퍼스를 기반으로 하여 다른 언어에는 그 유용성이 제한적입니다.

이 논문에서는 LLaMA를 중국어 텍스트 이해 및 생성, 그리고 지시사항 수행 능력을 갖추도록 확장하는 방법을 제안합니다. 우리는 LLaMA의 기존 어휘에 20,000개의 중국어 토큰을 추가함으로써, 중국어 인코딩 효율성과 의미 이해 능력을 향상시켰습니다. 더 나아가 중국어 데이터를 활용한 2차 사전학습과 중국어 지시문 데이터셋을 활용한 파인튜닝을 수행하여, 모델의 지시 수행 능력을 크게 개선했습니다.

실험 결과, 제안된 모델은 원래의 LLaMA보다 중국어 콘텐츠 이해 및 생성 능력에서 현저히 향상된 성능을 보여주었으며, C-Eval 데이터셋에서의 결과는 우리 모델보다 수배 큰 모델들과 비교해도 경쟁력 있는 성능을 보였습니다. 우리는 사전학습된 모델, 훈련 스크립트 및 기타 리소스를 GitHub를 통해 공개하여 커뮤니티의 오픈 리서치를 지원하고자 합니다.

1 INTRODUCTION

대규모 언어 모델(LLM)의 등장으로 자연어 처리(NLP) 분야는 상당한 패러다임의 전환을 경험하고 있습니다. 이러한 모델들은 방대한 규모와 대규모 학습 데이터를 기반으로 하여 인간과 유사한 텍스트를 이해하고 생성하는 데 뛰어난 능력을 보여주고 있습니다. 텍스트 이해에 중점을 둔 사전학습 언어 모델(BERT 등)과 달리, GPT 시리즈는 텍스트 생성을 강조하며 창의적인 작업에 보다 적합한 플랫폼으로 자리잡고 있습니다. 특히, GPT 시리즈의 최신 모델인 ChatGPT와 GPT-4는 큰 주목을 받으며 빠르게 발전하는 NLP 분야를 대표하는 사례로 자리매김했습니다.

ChatGPT(OpenAI, 2022)는 InstructGPT(Ouyang et al., 2022)에서 발전된 모델로, 문맥을 고려한 인간과 유사한 대화를 수행할 수 있는 고급 대화형 AI입니다. 이 성공을 바탕으로 개발된 GPT-4(OpenAI, 2023)는 보다 정교한 LLM으로, 자연어 이해 및 생성, 그리고 다양한 NLP 과제에서 더욱 강력한 성능을 보여주고 있으며, 특히 멀티모달 처리와 추론 능력에서 탁월한 성과를 보였습니다. 이러한 모델들은 AGI(범용 인공지능)에 대한 새로운 연구 방향과 응용 가능성을 촉진하며, 적은 예시만으로도 학습하고 새로운 작업에 적응하는 능력을 보여줌으로써 NLP 연구의 지평을 넓히고 있습니다. 이로 인해 감성 분석, 기계 번역, 질의응답 시스템 등 다양한 분야에서 연구자들과 산업계의 관심을 끌고 있습니다.

하지만, LLM의 높은 영향력에도 불구하고 이들을 활용하는 데는 여러 제약이 존재합니다. 가장 큰 문제는 이들 모델이 대부분 독점적이라는 점으로, 외부 연구자들이 접근하여 이를 확장하거나 연구에 활용하는 데 제한이 따릅니다. 또한, 모델을 학습하고 운영하는 데 필요한 막대한 계산 자원 역시 연구 환경이 제한적인 연구자들에게 큰 장벽으로 작용합니다.

이러한 한계를 극복하기 위해, NLP 연구 커뮤니티는 투명성과 협업을 증진하기 위한 오픈소스 대안 모델 개발에 집중하고 있습니다. LLaMA(Touvron et al., 2023), Llama-2(Touvron et al., 2023), Alpaca(Taori et al., 2023a)는 대표적인 오픈소스 LLM으로, 학술 연구 촉진과 NLP 분야의 발전을 목표로 하고 있습니다. 이러한 모델의 오픈소스화는 향후 모델 개발, 파인튜닝, 평가 등에서의 발전을 유도하며, 다양한 분야에서 강력한 LLM을 구축하기 위한 환경을 조성합니다.

그러나 LLaMA 및 Alpaca는 NLP에서 많은 발전을 이루었음에도 불구하고, 중국어 처리 측면에서는 한계가 존재합니다. 이들의 어휘는 중국어 토큰이 수백 개 수준에 불과해, 중국어 텍스트의 인코딩 및 디코딩 효율성이 떨어집니다. 본 기술 보고서에서는 기존 연구(Chinese BERT 시리즈(Cui et al., 2021), 소수민족 중심의 다국어 사전학습 모델(Yang et al., 2022))를 바탕으로, 중국어 텍스트를 이해하고 생성하는 능력을 향상시킨 Chinese LLaMA 및 Alpaca 모델 개발을 제안합니다.

우리는 LLaMA의 원래 어휘에 20,000개의 중국어 토큰을 추가함으로써 중국어 처리 능력을 크게 개선하였으며, 효율적인 학습과 배포를 위해 저랭크 적응 기법(LoRA, Hu et al., 2021)을 활용했습니다. 

  • 이를 통해 높은 계산 비용 없이도 모델을 훈련하고 파인튜닝할 수 있도록 했습니다. 
  • 이러한 초기 연구는 LLaMA 및 Alpaca 모델을 다른 언어에 적응시키고자 하는 연구자들에게도 중요한 기반이 될 것입니다. 
  • 우리의 접근 방식은 어휘 확장을 통한 성능 향상이 가능하다는 점을 보여주며, 다국어로의 확장에도 적용할 수 있는 통찰과 방법론을 제공합니다. 
  • 제안된 모델 개요는 Figure 1에 나타나 있습니다.

요약하자면, 본 기술 보고서의 주요 기여는 다음과 같습니다:

  • LLaMA의 기존 어휘에 20,000개의 중국어 토큰을 추가함으로써 중국어 인코딩 및 디코딩 효율성과 이해 능력을 향상시켰습니다.

  • LoRA(저랭크 적응) 기법을 적용하여, 고비용 없이도 Chinese LLaMA 및 Alpaca 모델의 효율적인 학습과 배포가 가능하게 했습니다.

  • 제안된 모델의 지시 수행 및 자연어 이해 능력을 평가하였고, 원본 모델보다 중국어 과제에서 큰 개선을 보였습니다.

  • 모델, 학습 스크립트 및 연구 결과를 공개함으로써 NLP 커뮤니티의 추가 연구와 협업을 장려하고, LLaMA 및 Alpaca 모델을 타 언어로 확장할 수 있도록 기여하고자 합니다.

2 CHINESE LLAMA AND CHINESE ALPACA

2.1 배경 (BACKGROUND)

LLaMA(Touvron et al., 2023)는 Transformer 아키텍처(Vaswani et al., 2017)를 기반으로 구축된 디코더 전용(foundation, decoder-only) 대규모 언어 모델입니다. GPT 시리즈 및 기타 Transformer 기반 LLM과 유사하게, LLaMA는 임베딩 레이어, 다수의 Transformer 블록, 언어 모델 헤드로 구성되어 있습니다. LLaMA는 또한 다른 모델들에서 사용된 여러 기술적 개선사항들을 포함하고 있습니다. 예를 들어, 사전 정규화(pre-normalization)(Zhang & Sennrich, 2019), SwiGLU 활성화 함수(Shazeer, 2020), 그리고 회전 임베딩(rotary embeddings)(Su et al., 2021) 등이 있습니다. LLaMA는 7B, 13B, 33B, 65B의 네 가지 크기로 제공됩니다.

LLaMA는 일반적인 언어 모델링 과제(Section 2.4 참조)를 사용하여 웹 페이지, 도서, 위키피디아, 사전출판 논문 등 공개적으로 이용 가능한 다양한 소스로부터 약 1.4조 토큰을 학습하였습니다. 실험 결과, LLaMA는 모델 크기가 더 큰 GPT-3와 비교해도 경쟁력 있는 성능을 보이며, 상대적으로 작고 효율적인 구조 덕분에 연구자들 사이에서 큰 주목을 받았고, 다양한 LLaMA 기반 모델의 등장으로 이어졌습니다.


2.2 중국어 어휘 확장 (CHINESE VOCABULARY EXTENSION)

LLaMA의 학습 데이터는 약 1.4조 토큰으로 구성되어 있으며, 대부분이 영어이며 일부는 라틴 문자 또는 키릴 문자를 사용하는 유럽 언어입니다(Touvron et al., 2023). 따라서 LLaMA는 다국어 및 언어 간 이해 능력을 어느 정도 가지고 있지만, 주로 유럽 언어에 국한되어 있습니다. 흥미롭게도, 이전 예비 연구에서는 LLaMA가 기본적인 중국어 이해 능력을 갖추고 있음을 보여주었으나, 중국어 생성 능력은 매우 제한적인 것으로 나타났습니다.

LLaMA에 보다 향상된 중국어 이해 및 생성 능력을 부여하기 위해, 우리는 LLaMA 모델을 중국어 코퍼스로 계속 사전 학습(continual pre-training)하는 방식을 제안합니다. 하지만 중국어 코퍼스를 직접 활용하여 사전 학습을 진행할 경우 몇 가지 문제가 존재합니다.

  1. 어휘 한계: 원래의 LLaMA 어휘는 1,000개 미만의 중국어 문자만을 포함하고 있어, 일반적인 중국어 텍스트를 인코딩하기에 매우 부족합니다.

  2. 비효율적인 바이트 토큰화: LLaMA 토크나이저는 UTF-8에서 인식하지 못한 문자를 바이트 단위로 분해하여 토크나이즈하는 방식으로 이를 우회하지만, 이 방식은 각 중국어 문자를 3~4개의 바이트 토큰으로 분할하게 되어 시퀀스 길이가 길어지고 인코딩·디코딩 효율이 급격히 떨어집니다.

  3. 비전용 바이트 표현: 바이트 토큰은 중국어 전용이 아니며, 다른 언어의 UTF-8 문자도 함께 포함하므로, Transformer 인코더가 중국어 문자의 의미를 제대로 학습하기 어렵습니다.

이러한 문제를 해결하고 인코딩 효율을 개선하기 위해, 우리는 LLaMA 어휘에 중국어 전용 토큰을 추가하고 모델을 이에 맞게 적응시키는 방법(Yang et al., 2022)을 제안합니다. 그 과정은 다음과 같습니다:

  • 중국어 전용 토크나이저 학습: 먼저 SentencePiece(Kudo & Richardson, 2018)를 사용하여 중국어 코퍼스에 기반한 중국어 전용 토크나이저를 학습하고, 어휘 크기를 20,000개로 설정합니다.

  • 토크나이저 병합: 학습된 중국어 토크나이저와 기존 LLaMA 토크나이저의 어휘를 합쳐서 새로운 병합 토크나이저(Chinese LLaMA tokenizer)를 생성합니다. 이 병합 토크나이저의 어휘 크기는 총 49,953개입니다.

  • 모델 적응: 모델의 임베딩 행렬과 언어 모델 헤드의 크기를 기존 V × H (V = 32,000)에서 V′ × H (V′ = 49,953)으로 조정합니다. 새로운 어휘에 해당하는 임베딩은 원래 임베딩 행렬의 끝에 추가되며, 기존 어휘의 임베딩은 영향을 받지 않습니다.

예비 실험 결과에 따르면, Chinese LLaMA tokenizer가 생성하는 토큰 수는 기존 LLaMA tokenizer의 절반 수준이며, Table 1에서 확인할 수 있듯이, Chinese LLaMA tokenizer는 인코딩 길이를 크게 단축시킵니다. 동일한 문맥 길이 내에서 두 배의 정보를 담을 수 있으며, 생성 속도 또한 두 배로 향상됩니다. 이는 제안된 방법이 LLaMA 모델의 중국어 이해 및 생성 능력을 효과적으로 강화한다는 것을 보여줍니다.

  • 중국어 전용 토크나이저 학습하고 (20000토큰), 기존 Llama 토크나이저랑 병합했다 (최종 49953토큰)
  • 그러면서 생긴 임베딩 행렬과 모델 헤드 크기가 32000xH --> 49953xH로 늘어나는데, 새로운 행렬부분만 추가됨 (기존건 그대로 가져가서 세팅)
    • 학습할때는 전체적으로 학습되는 거겠지?

2.3 LoRA를 활용한 파라미터 효율적 파인튜닝

대규모 언어 모델(LLM)의 전체 파라미터를 업데이트하는 기존의 학습 방식은 비용이 매우 많이 들며, 대부분의 연구실이나 기업에 있어 시간과 자원 측면에서 현실적이지 않습니다. LoRA(Low-Rank Adaptation) (Hu et al., 2021)는 이러한 문제를 해결하기 위한 파라미터 효율적 학습 기법으로, 사전학습된 모델의 가중치를 그대로 유지하면서 학습 가능한 저랭크(rank) 분해 행렬을 삽입하는 방식입니다.
LoRA는 기존의 모델 파라미터는 고정(freeze)하고, 각 층에 저랭크 행렬을 추가함으로써 학습에 필요한 파라미터 수를 크게 줄여줍니다. 이로 인해, 훨씬 적은 계산 자원으로도 LLM을 훈련할 수 있게 됩니다.

구체적으로, 입력 차원이 kk, 출력 차원이 dd인 선형층의 가중치 행렬 W0Rd×kW_0 \in \mathbb{R}^{d \times k}에 대해, LoRA는 BRd×rB \in \mathbb{R}^{d \times r}, ARr×kA \in \mathbb{R}^{r \times k}의 두 개의 저랭크 학습 행렬을 추가합니다. 순전파(forward pass)는 다음과 같이 수행됩니다:

h = W_0x + \Delta W x = W_0x + BAx

이때, W0W_0는 학습 중에도 고정되며, BBAA만이 업데이트됩니다. rmin(d,k)r \ll \min(d, k)로 설정하면 메모리 사용량을 줄일 수 있으며, 옵티마이저가 큰 고정 행렬의 상태를 저장할 필요도 없습니다.

우리는 중국어 LLaMA 및 Alpaca 모델 전체에 대해 사전학습과 파인튜닝 과정 모두 LoRA 학습을 적용하여 효율적인 학습이 가능하도록 하였습니다. 

  • 주로 Attention 모듈과 MLP 층에 LoRA 어댑터를 삽입하였으며, 이러한 방식이 Transformer 전체에 효과적이라는 점은 QLoRA(Dettmers et al., 2023)에서도 검증되었습니다.
  • LoRA로 pretraining, fine-tuning을 했다는 것 (MLP, attention LoRA)


2.4 사전학습 목표 (PRE-TRAINING OBJECTIVE)

중국어 LLaMA 모델은 표준 Causal Language Modeling (CLM) 과제를 통해 사전학습되었습니다. 주어진 입력 토큰 시퀀스 x=(x0,x1,x2,)x = (x_0, x_1, x_2, \ldots)에 대해, 다음 토큰 xix_i를 오토리그레시브 방식으로 예측하는 것이 학습 목표입니다.

수학적으로는 다음의 음의 로그 가능도(Negative Log-Likelihood) 를 최소화합니다:

\mathcal{L}_{CLM}(\Theta) = \mathbb{E}_{x \sim D_{PT}} \left[ -\sum_i \log p(x_i | x_0, x_1, \ldots, x_{i-1}; \Theta) \right]

여기서,

  • Θ\Theta: 모델 파라미터

  • DPTD_{PT}: 사전학습 데이터셋

  • xix_i: 예측 대상 토큰

  • x0xi1x_0 \sim x_{i-1}: 문맥(Context)입니다.


2.5 지도 학습 기반 파인튜닝 및 Chinese Alpaca

사전학습된 언어 모델은 일반적으로 사용자 지시(instruction)를 따르기 어렵고, 종종 의도하지 않은 내용을 생성합니다. 이는 앞서 설명한 언어 모델링 목표(공식 2)가 “지시를 따르고 질문에 답하라”는 것이 아니라 단순히 “다음 토큰을 예측하라”는 것이기 때문입니다(Ouyang et al., 2022).

이 문제를 해결하기 위해, 모델의 동작을 사용자 의도에 맞게 정렬(alignment)시키기 위한 지도 학습 기반 파인튜닝이 필요합니다. Stanford Alpaca(Taori et al., 2023b)는 Self-Instruct(Wang et al., 2022) 기법을 활용해 생성한 52K개의 지시문 데이터로 LLaMA를 파인튜닝한 지시 따르기 모델입니다.

우리는 Stanford Alpaca의 접근법을 따르되, 중국어 LLaMA에 Self-Instruct 기반 파인튜닝을 적용하여 중국어 Alpaca 모델을 훈련했습니다.

  • Chinese Alpaca는 지시문-응답 쌍으로 이루어진 데이터셋으로 학습되며, 각 예제는 지시문과 그에 대한 출력 응답을 포함합니다.

  • 학습 방식은 CLM과 유사하며, 모델은 지시문을 입력으로 받고, 응답을 오토리그레시브 방식으로 생성하도록 훈련됩니다.

  • 지시문은 다음과 같은 프롬프트 템플릿에 따라 구성됩니다:

Below is an instruction that describes a task. Write a response that appropriately completes the request.
### Instruction:
{instruction}
### Response:
{output}
  • 손실 함수는 응답 부분(output)에 대해서만 계산되며, 다음과 같이 표현됩니다:

\mathcal{L}_{SFT}(\Theta) = \mathbb{E}_{x \sim D_{SFT}} \left[ -\sum_{i \in \text{{output}}} \log p(x_i | x_0, x_1, \ldots, x_{i-1}; \Theta) \right]

  • 여기서 Θ\Theta: 모델 파라미터, DSFTD_{SFT}: 파인튜닝 데이터셋, xx: 토크나이즈된 전체 입력 시퀀스입니다.

우리의 접근 방식과 Stanford Alpaca의 차이점은 다음과 같습니다:
Stanford Alpaca는 입력 필드가 있는 예제와 없는 예제를 각각 위한 두 가지 템플릿을 사용하는 반면, 우리는 입력 필드가 없는 예제를 위한 단일 템플릿만 사용합니다. 입력 필드가 있는 경우에는 지시문과 입력을 줄바꿈("\n")으로 연결하여 새로운 지시문으로 만듭니다.

참고로, Chinese Alpaca 모델에는 추가적인 패딩 토큰이 존재하며, 최종 어휘 크기는 49,954개입니다.

  • chines alpaca 데이터를 활용하여 SFT 학습을 했다는 것
  • 이 데이터는 번역한건가? 아니면 self-instruct 기반으로 만들어낸건가?

3 EXPERIMENTAL SETUPS

3.1 사전학습을 위한 실험 설정 (EXPERIMENTAL SETUPS FOR PRE-TRAINING)

우리는 Chinese LLaMA 모델을 기존 LLaMA 가중치로 초기화하고, 7B 및 13B 모델은 **fp16(반정밀도)**로, 33B 모델은 **8비트 양자화(bitsandbytes 라이브러리)**를 이용해 효율성과 메모리 사용량을 개선하여 사전학습을 진행했습니다. 

LoRA는 Attention과 MLP 모듈에 직접 적용하였으며, 임베딩(embedding)과 언어 모델 헤드(LM head)는 학습 가능한 상태로 설정했습니다.

Chinese LLaMA-7B 기본 버전은 2단계 사전학습 방식을 사용했습니다:

  • 1단계: Transformer 인코더의 파라미터는 고정하고, 새롭게 추가된 중국어 임베딩 벡터만 학습하여 원래 모델의 변화는 최소화하면서 중국어 토큰에 적응시킵니다.

  • 2단계: Attention 모듈에 LoRA 어댑터를 삽입하고, 임베딩, LM 헤드, LoRA 파라미터를 함께 학습합니다.

다른 모델들에는 이 2단계 학습을 적용하지 않았는데, 예비 연구 결과 비효율적이었기 때문입니다.

첨부터 싹다 학습하지않고, 위처럼 중국어에 의해 추가된 파라미터만 학습후, 그 후 전체 학습한듯


  • **Chinese LLaMA 모델들(기본 버전)**은 Chinese BERT-wwm(Cui et al., 2021), MacBERT(Cui et al., 2020), LERT(Cui et al., 2022) 등에 사용된 것과 동일한 20GB 중국어 일반 코퍼스로 사전학습되었습니다.

  • Plus 버전은 추가로 CommonCrawl(CC) 및 백과사전 데이터를 포함하여 120GB로 확장된 데이터셋으로 학습되었으며, 기본 개념에 대한 모델의 이해를 강화합니다.

모든 데이터셋을 하나로 결합하여, 블록 크기 512로 쪼개서 사전학습에 사용하였습니다.


  • 학습은 **A40 GPU (VRAM 48GB)**에서 수행되었으며, 모델 크기에 따라 최대 48개의 GPU를 사용해 1 epoch 학습을 진행했습니다.

  • LoRA 기반 파라미터 효율 학습은 PEFT 라이브러리를 통해 수행되었고,

  • **DeepSpeed(Rasley et al., 2020)**로 메모리 효율을 최적화했습니다.

  • 옵티마이저로는 AdamW(Loshchilov & Hutter, 2019)를 사용했고, 최대 학습률은 2e-4, 워밍업 비율은 5%, 코사인 스케줄러를 적용했습니다.

  • **그래디언트 클리핑(gradient clipping)**은 1.0으로 설정하여 그래디언트 폭발을 방지했습니다.

각 모델의 하이퍼파라미터는 **표 2(Table 2)**에 정리되어 있습니다.

따라한다면 위 파라미터를 따라해보면 좋을듯. (PLUS가 더 좋은거라 생각하면 됨)


3.2 지시문 파인튜닝 실험 설정 (EXPERIMENTAL SETUPS FOR INSTRUCTION FINE-TUNING)

사전학습이 완료된 Chinese LLaMA 모델에 대해, 2.5절에서 설명한 방식대로 파인튜닝을 수행했습니다. 효율적인 학습을 위해 모든 선형층에 LoRA 모듈을 추가하여 instruction tuning을 수행했습니다.

  • 기본 버전은 약 200만~300만 개의 instruction 데이터를 사용하였으며, 다음 데이터셋으로 구성됩니다:

    • 번역 데이터 (Xu, 2019)에서 55만 샘플

    • pCLUE 데이터셋에서 25만 샘플 (NLU 관련 데이터는 제외)

    • Stanford Alpaca (영문 및 번역 각각 5만 개씩)

    • 크롤링된 SFT 데이터

  • Plus 버전은 데이터셋을 400만~430만 개로 확장하였고, STEM(과학, 기술, 공학, 수학) 분야 및 물리, 화학, 생물, 의학, 지구과학 등의 전문 지식 데이터를 추가했습니다.

  • Alpaca-33B 모델은 여기에 추가로 OASST1(Köpf et al., 2023) 데이터셋의 1문 1답 쌍만 추출하여 사용했습니다. 이 데이터를 GPT-3.5-Turbo API로 번역한 결과 약 **2만 개의 쌍(원문 + 번역)**이 추가되었습니다.

  • 최대 시퀀스 길이는 512로 설정하고, 배치 내에서 최대 길이에 맞게 동적으로 패딩했습니다.


크롤링 데이터는 Self-Instruct(Wang et al., 2022) 방식에 따라 GPT-3.5-turbo API를 활용해 자동으로 생성하였으며, Taori et al. (2023a)와 동일한 전략을 따릅니다.

  • seed 예시 없이, 원하는 도메인과 instruction 유형만을 지정하여 보다 간결한 템플릿으로 instruction-response 쌍을 생성했습니다. 템플릿과 코드는 GitHub에 공개되어 있습니다.


Plus 버전에서는 LoRA의 rank를 더 크게 설정했으며, 학습률과 배치 크기를 조정했지만, 사전학습 단계와의 하이퍼파라미터 일관성은 유지했습니다.

instruction fine-tuning 관련 하이퍼파라미터는 **표 3(Table 3)**에 정리되어 있습니다.


모든 Alpaca 모델은 해당하는 Chinese LLaMA 모델 기반으로 학습되었으며, 예를 들어 Chinese Alpaca-Plus-13BChinese LLaMA-Plus-13B에서 파인튜닝된 모델입니다. 

즉 모두 중국어 pretraining 후, 중국어 SFT 했다는 것

4 RESULTS ON INSTRUCTION-FOLLOWING TASKS

4.1 작업 설계 및 평가 방법 (TASK DESIGN AND EVALUATION METHOD)

텍스트 생성 과제는 형태의 다양성이 크기 때문에 평가가 어렵습니다. 이는 텍스트 분류나 기계 독해(MRC) 같은 전통적인 자연어 이해 과제와는 상당히 다릅니다. 이전 연구들처럼, **GPT-4(OpenAI, 2023)**를 평가 수단으로 활용한 방법을 따라, 본 연구에서도 GPT-4를 사용하여 각 샘플에 대해 10점 만점으로 점수를 부여하도록 했습니다. 이는 인간 평가보다 훨씬 효율적입니다.

다만, GPT-4가 항상 정확한 점수를 제공하지는 않기 때문에, 우리는 GPT-4의 평가 결과를 수동으로 검토하고 필요시 수정하였습니다. 이러한 검토 과정을 통해 점수가 일관성을 유지하며, 모델의 실제 성능을 충실히 반영할 수 있도록 했습니다.

다음은 두 시스템의 출력을 평가할 때 사용하는 프롬프트 템플릿입니다:

다음은 두 개의 ChatGPT 유사 시스템의 출력입니다. 각 시스템에 대해 10점 만점 기준으로 전체 점수를 부여하고, 그 점수에 대한 설명을 작성해주세요.

Prompt:
{입력 프롬프트}

System1:
{시스템 1 출력}

System2:
{시스템 2 출력}

GPT-4 기반의 평가 방식과 수동 검토를 병행함으로써, 우리는 중국어 Alpaca 모델의 자연어 이해 및 생성 성능을 신뢰성 있게 측정할 수 있는 평가 프레임워크를 구축했습니다.


우리의 평가 세트는 중국어 Alpaca 모델이 다양한 자연어 과제에서 얼마나 잘 작동하는지를 폭넓게 측정할 수 있도록 구성되어 있습니다. 전체 200개의 샘플이 포함되어 있으며, 이는 다음과 같은 10개의 서로 다른 작업(Task) 범주를 포함합니다:

  • 질의응답 (Question Answering)

  • 추론 (Reasoning)

  • 문학 (Literature)

  • 엔터테인먼트

  • 번역

  • 다중 턴 대화 (Multi-turn Dialogue)

  • 코딩

  • 윤리 (Ethics)

  • 기타

각 작업에 대한 최종 점수는 해당 작업에 포함된 모든 샘플의 점수를 합산한 후, 100점 만점으로 정규화하여 계산됩니다. 이러한 방식은 모델의 전반적인 성능을 다양한 과제에 걸쳐 균형 있게 측정할 수 있게 해줍니다.


4.2 디코딩을 위한 실험 설정 (EXPERIMENTAL SETUPS FOR DECODING)

대규모 언어 모델(LLM)의 디코딩 방식은 생성된 텍스트의 품질과 다양성을 결정하는 데 있어 매우 중요합니다. 본 실험에서 사용한 디코딩 하이퍼파라미터는 다음과 같습니다:

  • Context size (문맥 크기):

    • 2048로 설정.

    • 모델이 한 번에 고려할 수 있는 최대 토큰 수로, 긴 입력 프롬프트를 지원함.

  • 최대 시퀀스 길이:

    • 출력 시퀀스 길이를 512 토큰으로 제한하여, 산만하거나 너무 긴 출력 방지.

  • Temperature (온도):

    • 기본값: 0.2

    • 온도는 생성의 무작위성 조절. 낮을수록 집중적이고 일관된 출력, 높을수록 다양하지만 덜 일관됨.

    • 다중 턴 대화 및 생성 과제에서는 다양성을 높이기 위해 0.5로 조정함.

  • Top-k 샘플링:

    • k = 40

    • 매 스텝마다 확률이 높은 상위 40개 후보 중에서 다음 토큰 선택 → 일정 수준의 다양성 제공.

  • Top-p 샘플링 (nucleus sampling):

    • p = 0.9

    • 누적 확률이 90%가 되는 토큰들만 고려해 샘플링 → 보다 자연스러운 다양성 확보.

  • 반복 방지 페널티 (Repetition Penalty):

    • 1.1

    • 이미 선택된 토큰에 패널티를 주어 반복적인 출력 방지.


참고: 위의 하이퍼파라미터 값들은 모든 과제에 최적화된 것은 아니며, 각 태스크별로 별도의 튜닝은 수행하지 않았습니다. 대신, 일관된 비교와 평가를 위해 고정된 값을 사용했습니다.

4.3 결과

우리는 Chinese Alpaca-Plus-7B, Alpaca-Plus-13B, 그리고 Alpaca-33B 모델의 결과를 제시하고 분석한다. Alpaca-33B는 FP16 형식의 원본 모델을 사용했고, Alpaca-Plus-7B 및 13B는 8비트 양자화 버전을 사용했다. 

전체 결과는 표 4에 나타나 있으며, GPT-4 기반 평가를 통해 총 200개의 샘플로 구성된 10개의 NLP 작업 전반에서 수행되었다. 점수는 서로 간의 비교만 가능하며, 다른 모델과 비교하려면 재채점이 필요하다. 또한, 본 모델들은 기존 LLaMA를 기반으로 구축되었으므로, 이는 기존 모델 위에서 성능을 개선하는 데 필요한 요소들을 보여주는 사례로 볼 수 있다. 주요 과제 몇 가지에 대한 분석은 다음과 같다.


4.3.1 다중 턴 대화 (MULTI-TURN DIALOGUE)

ChatGPT의 주요 강점 중 하나는 문맥을 이해하며 유창하게 이어지는 대화 능력이다. 실험 결과, Plus 시리즈 모델들은 기본 모델보다 일관된 성능 향상을 보였다

  • 이는 단순히 파라미터 수를 늘리는 것보다 더 많은 학습 데이터를 사용하는 것이 대화 품질을 높이는 데 더 중요함을 시사한다. 
  • 특히 본 모델들은 원래 LLaMA로부터 구축되었기 때문에, 기존 언어 지식이 직접적으로 전이되지 않는다는 점에서 데이터의 중요성이 강조된다.


4.3.2 텍스트 생성 (TEXT GENERATION)

텍스트 생성은 언어 모델의 가장 기본적인 기능 중 하나이다. Alpaca-Plus-7B 및 13B는 이 작업에서 Alpaca-33B보다 우수한 결과를 보였다. 

표 5에 제시된 예시에서, 7B와 13B 모델은 프롬프트의 요구사항에 맞는 올바른 서신 형식을 제공했으며, 특히 13B는 비자 신청을 위한 자료 준비를 언급하는 등 가장 포괄적인 출력을 보여주었다. 반면, 33B는 형식을 따르지 않았고, 내용도 지나치게 단순화되어 품질이 떨어졌다. 이는 데이터가 풍부한 작은 모델이, 데이터가 부족한 큰 모델보다 나은 성능을 낼 수 있음을 보여준다.


4.3.3 수치 계산 및 추론 (NUMERICAL CALCULATION AND REASONING)

수치 추론은 대규모 언어 모델의 추론 능력을 평가하는 핵심 작업 중 하나로 간주된다. 실험 결과, Alpaca-33B는 Plus-7B와 13B에 비해 이 영역에서 두드러진 성능 향상을 보였다. 

표 6의 첫 번째 프롬프트 “1kg의 솜과 1kg의 철 중 더 무거운 것은?”에 대해, 7B와 13B는 “솜이 더 가볍다”고 틀린 답을 했지만, 33B는 두 무게가 같다고 올바르게 응답했다. 

두 번째 프롬프트인 “고양이와 닭의 다리 수는?”에서도, 7B와 13B는 고양이는 4개, 닭은 2개의 다리를 가진다는 상식 지식을 반영하지 못해 틀린 결과를 냈다. 마지막 배열 추론 문제에서는, 주어진 수열의 다음 숫자가 인덱스의 제곱이라는 패턴을 오직 33B만이 정확히 파악했다. 이 결과는 수치 추론 작업에서는 모델의 크기가 매우 중요함을 나타낸다.

4.3.4 코딩 (CODING)

그림 2는 Dijkstra 알고리즘을 Python으로 구현한 예시를 보여준다. P

lus-7B는 구조적으로는 문제가 없지만, 최단 거리를 정확히 계산하고 갱신하지 못했으며, 정의되지 않은 함수를 포함하고 있어 3/10의 점수를 받았다.
Plus-13B는 Graph 클래스와 distance 메서드를 구현함으로써, 그래프 구조와 관련 연산을 객체지향적으로 표현하려는 시도를 보였다. Dijkstra 알고리즘 자체는 올바르게 구현하지 못했지만, 최단 경로 알고리즘을 구현하려는 시도가 있었기 때문에 Plus-7B보다 높은 점수를 받았다.
반면, 33B 모델은 Dijkstra 알고리즘을 훨씬 더 잘 구현하여 8/10의 점수를 획득했다. 우선순위 큐나 예외 처리는 없지만, 최단 거리 업데이트, 선행 노드 추적, 전체 노드 방문 등 알고리즘의 핵심 요소를 제대로 구현했다.

이러한 결과는 복잡한 작업(예: 코드 생성)에서 더 큰 모델이 더 좋은 성능을 내는 경향이 있음을 시사하며, 이는 더 큰 모델이 학습 데이터에서 더 복잡한 패턴을 포착할 수 있기 때문일 수 있다.


4.3.5 윤리 (ETHICS)

LLM을 인간의 선호에 맞게 정렬(alignment)하는 것은 책임 있는 인공지능을 만드는 데 있어 매우 중요하다. 이 윤리 영역에서는 주로 불법적인 입력 프롬프트에 대해 모델이 어떻게 반응하는지를 평가한다. 결과를 보면, 세 모델 모두 사용자 프롬프트에 대해 적절하게 대응하였다.

Alpaca-33B는 다른 모델보다 약간 더 뛰어난 성능을 보였다. 예를 들어, 표 7에서 사용자 프롬프트가 네트워크 취약점을 이용한 돈벌이 방법을 묻는 내용일 때, Plus-7B와 13B는 단순히 거부 응답만을 내놓았다. 반면, 33B 모델은 해당 요청을 거부하는 동시에, 합법적인 돈벌이 방법에 대한 조언까지 제공, 보다 포괄적이고 유용한 응답을 보여주었다.


종합적으로 볼 때, Alpaca-33B는 수치 추론, 코딩, 윤리 등 여러 측면에서 Plus-7B 및 13B보다 두드러진 향상을 보였다

  • 이는 복잡한 추론이나 코딩처럼 고차원적 사고가 필요한 작업은 더 큰 모델이 더 잘 수행함을 시사한다. 
  • 비록 Alpaca-33B는 학습 데이터가 적지만, 이러한 성능은 원본 LLaMA로부터 계승된 언어 독립적인 능력 때문일 수도 있다.

반면, Alpaca-33B는 텍스트 생성, 다중 턴 대화 등에서는 열세를 보였는데, 이는 Plus 시리즈가 훨씬 많은 데이터를 기반으로 학습되었기 때문이다. 더 다양한 표현과 풍부한 콘텐츠를 생성할 수 있는 능력은 학습 데이터의 양과 품질에 더 민감하다.

이러한 문제들은 Alpaca-Plus-33B가 출시되면 해결 가능할 것으로 기대되며, 텍스트 생성과 같은 능력은 수치 추론이나 코딩보다 극복하기 쉬운 영역으로 보인다.
자세한 비교, 평가 점수, 예시는 GitHub 저장소를 참고하라.

근데 여기서 말하고자 하는게 포인트가 없는게
  • plus버전이 데이터를 더 넣어서 성능이 업그레이드 된다고 말하는 게 1번, 
  • 더 많은 파라미터 모델이 더 좋은 성능이라는게 2번
  • 이 두개를 혼합해서 말한다. 즉 모델작은 plus 버전 vs 큰 모델 이렇게 비교하는데 상황에 따라 우위가 다르다는 것
  • 차라리 plus 버전이 더 낫기 때문에 데이터를 잘 만들어야 한다고 주장하는게..?

5 자연어 이해 과제 결과


5.1 과제 설명 (TASK DESCRIPTION)

지시문 생성(instruction-following) 성능 외에도, 우리는 모델을 C-Eval 데이터셋(Huang et al., 2023)에서 평가했다. C-Eval은 객관식 문제로 구성된 질의응답 데이터셋이며, 총 14,000개에 가까운 샘플과 52개 분야로 구성되어 있다. 주요 범주는 STEM, 사회, 인문, 기타이다.
RACE(Lai et al., 2017)와 유사하게, 주어진 질문을 바탕으로 올바른 선택지를 고르는 방식이다. 본 연구에서는 검증(validation) 세트(1,346개 샘플)와 테스트(test) 세트(12,342개 샘플)를 사용했고, 테스트 점수는 공식 리더보드 제출을 통해 획득했다.


5.2 디코딩 전략 (DECODING STRATEGY)

LLaMA 계열 모델은 질문을 그대로 입력하여 평가했고, Alpaca 모델은 2.5절에서 설명한 프롬프트 템플릿에 따라 래핑하여 입력하였다. 모델은 다음 토큰에 대한 확률 분포 p(yx)p(y|x)를 계산한 뒤, 선택지 {A, B, C, D} 중 하나를 예측하도록 한다.

각 선택지에 해당하는 토큰을 다음과 같이 매핑하는 **verbalizer V(·)**를 사용한다:

해당 라벨을 예측할 확률은 다음과 같다:


p(t \in \{A, B, C, D\} | x) = \sum_{t \in V(i)} p(y = i | x)

가장 높은 확률을 가진 선택지가 최종 예측 결과로 채택된다.


5.3 원본 LLaMA와의 비교 (COMPARISONS TO ORIGINAL LLAMA)

그림 3과 표 8은 원본 LLaMA를 기반으로 한 모델의 발전 과정을 보여준다. 주요 관찰은 다음과 같다:


*chinese alpaca가 llama을 SFT 한것

  • Chinese LLaMA는 원본 LLaMA보다 향상된 성능을 보였으나, 그 효과는 크지 않다. 13B 버전에서는 LLaMA-Plus가 오히려 성능이 떨어지기도 했다.
    이는 순수 언어 모델(LLaMA)이 C-Eval 같은 과제에서는 적합하지 않으며, 단순히 사전학습 데이터를 늘리는 것(20GB → 120GB)이 큰 효과를 내지 못할 수 있음을 시사한다.

  • Alpaca 모델은 LLaMA보다 훨씬 더 나은 성능을 보인다. 특히, 지시문 학습이 된 Alpaca 시리즈는 NLU 과제에 훨씬 잘 대응할 수 있으며, Plus 모델은 기본 모델보다 명확히 개선된 결과를 보여준다. 이는 사전학습 데이터 확장의 효과가 Alpaca에서는 뚜렷함을 의미한다.

chinese alpaca vs llama instruct을 비교해야 하는거 아닌가?
  • LLaMA는 few-shot 설정(5-shot)에서 성능이 더 좋고, Alpaca는 zero-shot에서 우세하다. LLaMA는 instruction-following에 최적화되어 있지 않기 때문에 5-shot 예시를 통해 문제 구조를 학습할 수 있다. 반면, Alpaca는 수백만 개의 instruction 데이터를 학습했기 때문에 추가 샘플에서 얻을 수 있는 이득이 적고, 5-shot 템플릿이 오히려 방해 요소가 될 수 있다.

이 결과들은 C-Eval 데이터셋에 기반한 것이며, 다른 데이터셋에 일반화될 수 있는지는 추가 연구가 필요하다.


5.4 다른 모델들과의 비교 (COMPARISONS TO OTHER MODELS)

Chinese-Alpaca-33BChinese-Alpaca-Plus-13BC-Eval 리더보드에 제출되었으며, 여러 오픈소스 및 비공개 LLM과 비교되었다. 표 9에 테스트 결과가 제시되어 있다.

  • 예상대로, 비공개 모델들이 오픈소스 모델보다 성능이 높다. 하지만, 우리 모델들 역시 Bloomz-mt-176B, GLM-130B 같은 대형 모델과 비교했을 때 규모와 데이터량을 고려하면 경쟁력 있는 성능을 보였다.

  • 또한, Chinese-Alpaca-13B 및 Chinese-LLaMA-13B는 C-Eval에서 이미 평가된 바 있지만, 본 연구에서 직접 예측 파일을 제출했을 때 성능이 더 높게 나왔다.
    예를 들어, Alpaca-13B는 평균 점수 기준 30.9 → 36.7로 +5.8 상승하였다.

  • Alpaca-13B는 LLaMA-13B보다 일관되게 더 나은 성능을 보였으며, 적절한 디코딩 전략과 프롬프트 템플릿이 성능 향상에 중요한 요소가 될 수 있음을 시사한다.
    특히 instruction-following 모델에서 그러하다.

6. 다양한 양자화 기법의 효과

대규모 언어 모델을 개인용 컴퓨터(CPU 등)에 배포하는 것은 높은 계산 요구로 인해 어려웠다. 그러나 llama.cpp(Gerganov, 2023)와 같은 커뮤니티 도구 덕분에 LLM을 효율적으로 양자화하여 메모리 사용량과 계산 요구를 줄이고, 로컬 환경에서 실행이 가능해졌다. 이는 빠른 상호작용, 로컬 데이터 처리, 개인정보 보호, 저사양 장비에서의 접근성, 다양한 응용 가능성을 제공한다.

본 절에서는 다양한 양자화 방식의 영향을 분석한다. Alpaca-Plus-7B, Alpaca-Plus-13B, Alpaca-33B 모델을 llama.cpp를 사용해 2-bit, 3-bit, 4-bit, 5-bit, 6-bit, 8-bit 형식으로 양자화하고, 원본 FP16 모델과 비교하여 중국어 말뭉치에서 퍼플렉서티(perplexity)를 계산했다. 결과는 Figure 4에 제시된다.

양자화 수준은 메모리 사용량 및 추론 속도와 밀접하게 연관되어 있으며, 적절한 수준을 선택하기 위해 성능과 효율 간의 균형이 필요하다. 8비트 양자화는 FP16 모델과 거의 동일하거나 더 낮은 퍼플렉서티를 보여주며, 메모리 사용량은 절반 수준이다. 6비트 모델 역시 8비트와 유사한 성능을 보여 적절한 균형점을 형성한다. 반면, 3비트 및 2비트와 같은 공격적인 양자화는 성능이 크게 저하된다.

모델 크기가 클수록 양자화에 덜 민감하다. 33B 모델은 퍼플렉서티 변화가 작았고, 7B와 13B는 퍼플렉서티가 더 크게 증가했다. 이는 작은 모델에서는 저비트 양자화가 비효율적일 수 있지만, 큰 모델에서는 성능 손실 없이 효과적인 배포가 가능함을 의미한다.

  • 이거는 처음 안 사실!

7. 결론

이 기술 보고서에서는 LLaMA 모델의 중국어 이해 및 생성 능력을 향상시키기 위한 접근 방식을 제시하였다. 원본 LLaMA의 중국어 어휘 한계를 인식하고, 추가로 2만 개의 중국어 토큰을 포함시켜 어휘를 확장함으로써 중국어 인코딩 효율을 크게 향상시켰다. 이를 기반으로, 중국어 LLaMA에 지시문 데이터를 활용한 지도 학습(supervised fine-tuning)을 수행하여, 지시 수행 능력이 향상된 Chinese Alpaca 모델을 구축하였다.

모델의 성능을 평가하기 위해 10개 유형의 작업에 걸쳐 200개의 샘플을 수동으로 주석 처리하고, GPT-4를 활용한 평가 방식을 도입하였다. 실험 결과, 제안된 모델은 중국어 이해 및 생성 작업에서 원본 LLaMA보다 뛰어난 성능을 보였다. 또한, C-Eval 데이터셋에서도 실험을 진행했으며, 몇 배 더 큰 모델들과 비교해도 경쟁력 있는 성능을 달성하였다.

향후 계획으로는, 사람의 피드백을 활용한 강화학습(RLHF) 또는 **AI의 피드백을 활용한 강화학습(RLAIF)**을 도입하여 모델 출력이 인간의 선호에 더 잘 맞도록 정렬(alignment)하는 것을 고려하고 있다. 또한, **GPTQ(Frantar et al., 2022)**와 같은 보다 진보된 양자화 기법을 도입하고, LoRA를 대체할 수 있는 효율적인 사전학습 및 파인튜닝 방법들도 탐색할 예정이다. 이를 통해 다양한 과제에서 모델의 성능과 활용도를 한층 더 끌어올리고, 중국어 NLP 커뮤니티 내에서의 적용 가능성을 확대하는 것을 목표로 한다.

Reference

댓글