Orion-14B
- Orion-14B 모델은 중국어, 영어, 일본어, 한국어 등 2.5T 다국어 코퍼스를 대상으로 학습하였으며, 해당 언어에서 우수한 성능을 발휘함.
- Orion-14B에는 한국어가 2.5조개의 토큰에서 약 2.6% 정도 학습을 하였는데, 이 정도는 기존 2T 토큰에서 0.6%만 한국어로 학습한 LLama2에 비해 많은 양이다.
- 아마, 현재 알려진 오픈소스 LLM 중에서 가장 많은 한국어가 학습이 되어 파인튜닝 없이도 자연스러운 한국어 대화가 가능한 거 같다.
Data Source & Quality
- Orion-14B의 논문을 살펴보면 데이터 출처는 웹 페이지, 뉴스 기사, 백과사전, 책, 소스 코드, 학술 논문 등 다양한 주제를 포괄하고 있다.
- 기존 연구에서는 훈련 예제를 무작위로 섞어 사용하는 반면, Orion에서는 다른 훈련 단계에서 다양한 데이터 소스를 모델에 공급하는 전략을 채택하였다.
- 수집한 데이터의 품질을 위해서, 우선 텍스트 정규화를 통해, HTML, 특수 문자들을 LLM 훈련에는 유용하지 않기 때문에 제거를 수행하였다.
- 다양한 데이터 소스를 사용하다 보니, 유해 콘텐츠가 존재할 수 있어 Orion에서는 이를 제거하기 위해 2가지 프로세스를 사용, 첫 번째로는 키워드 및 정규식을 활용하여 제거하였고, 그 다음 단계에서는 심층 학습 기반 모델을 사용해서 제거하였다.
- 개인 정보에 대해서는 플레이스홀더로 대체하거나 완전히 제거하기 위해 규칙 기반 방식을 사용하였고, 품질 필터링을 통해, 반복이 지나치게 많거나 N-gram 퍼플렉서티가 비정상적으로 높은 모델을 제거하면서 높은 품질의 데이터셋을 구축하였다.
Orion 사용해보기
사용한 패키지 버전
- flash_stn == 2.5.6
- accelerate == 0.27.2
- huggingface-cli == 0.1
- sentencepiece == 0.2.0
- torch == 2.2.1
- torchaudio == 2.2.1
- torchvision == 0.17.1
- transformers == 4.38.2(Orion에서는 해당 버전을 사용하기를 권장)
import torch
from datasets import Dataset, load_dataset
from transformers import AutoTokenizer, AutoModelForCausalLM, BitsAndBytesConfig, pipeline, TrainingArguments, GenerationConfig
tokenizer = AutoTokenizer.from_pretrained(
"OrionStarAI/Orion-14B-Chat-Int4",
use_fast=False,
trust_remote_code=True
)
model = AutoModelForCausalLM.from_pretrained(
"OrionStarAI/Orion-14B-Chat-Int4",
device_map="auto",
torch_dtype=torch.bfloat16,
trust_remote_code=True
)
model.generation_config = GenerationConfig.from_pretrained(
"OrionStarAI/Orion-14B-Chat-Int4"
messages = [
{"role": "user", "content": """
인공지능 분야에 지원하려는 강조해야 할 역량에는 무엇이 있을까?
"""}
]
response = model.chat(tokenizer, messages, streaming=False)
print(response)
)
- 모델이 14B(140억) 매개변수이다 보니, 양자화가 된 Chat-Int4형을 사용하는 게 좋다.
- 수행 결과를 보시다시피, 기존 LLAMA2는 영어로 답변을 해주었는데, Orion은 파인튜닝 없이도 한국어로 자연스러운 답변을 출력해주는 것을 보여준다.
- 아마 양질의 SFT 데이터셋을 추가해준다면 Orion의 성능이 더 좋아질 거 같아, 추후에 파인튜닝도 진행해 볼 예정이다.