LM Studio 는 LLM 챗봇 모델들을 로컬 머신에서 inference 할수 있게 해주는 유용한 프로그램으로, 원하는 모델을 다운 받아 ChatGPT 와 비슷한 형태로 채팅을 할수 있도록 하는 프로그램이다. 이 프로그램은 llama.cpp
기반으로 만들어졌으며, 따라서 inference 할 모델이 GGUF
확장자를 가진 파일이어야 하는 제약조건이 있다. 본 글에서는 huggingface 에 올라온 모델들 중 아직 GGUF
변환이 되지 않은 모델을 llama.cpp
를 사용해 GGUF
형식으로 바꿔서 LM Studio 에서 사용할수 있도록 만든다.
llama.cpp
setup 하기git clone https://github.com/ggerganov/llama.cpp.git
cd llama.cpp # clone 한 디렉토리로 이동하기
git pull -p
아니다. quantize.cpp
또는 convert-pth-to-ggml.py
파일이 수정된 경우가 아니라면 새로 할 필요는 없다고 한다. 자세한 답변은 공식 discussion 에 나와있다.
a 를 진행한 경우 1. 로 건너뛴다.
pip install -r requirements.txt
llama.cpp
를 사용하기 위해서는 필수적으로 build 를 먼저 해주어야 한다. 여기서는 Linux 계열 OS (WSL 포함) 를 사용하고, 머신에 Nvidia GPU (Cuda 지원) 이 장착되있다는 가정 하에 진행한다.
make LLAMA_CUBLAS=1
make
를 사용한다.readme
를 참고하면 된다.import os
from huggingface_hub import snapshot_download
여기서는 한국어를 가장 잘하는 모델중 하나로 알려진
Orion-14B-Chat
모델을 가지고 설명한다.
MODEL_ID = "OrionStarAI/Orion-14B-Chat"
MODEL_NAME = MODEL_ID.split('/')[-1] # Orion-14B-Chat
snapshot_download(repo_id=MODEL_ID, local_dir=MODEL_NAME, local_dir_use_symlinks=False, revision="main")
config.json
, tokenizer.model
등 huggingface 모델 페이지의 Files and versions
에 있는 파일들) 은 현재 디렉토리 .
산하의 Orion-14B-Chat
폴더에 저장된다.# python llama.cpp/convert-hf-to-gguf.py {스냅샷 저장한 폴더 위치} --outfile {내보낼 gguf 모델 위치}.gguf
python llama.cpp/convert-hf-to-gguf.py ./Orion-14B-Chat --outfile ./Orion-14B-Chat.gguf
llama.cpp
폴더 내부의 convert-hf-to-gguf.py
파일을 파이썬으로 실행한다.LlamaForCausalLM
같은 huggingface transformers 에 구현된 모델 구조) 가 아직 llama.cpp
에서는 지원되지 않을 가능성이 높은데, 이때는 지원될때까지 기다리거나 코드 직접 손봐서 공식 깃허브에 직접 contribution 해야한다.변환한 모델의 크기가 너무 커서 본인 하드웨어의 RAM or VRAM 에 올라가지 못할것 같다면, 양자화를 시도해서 크기를 줄여보자.
# ./llama.cpp/quantize {GGUF 파일 위치} {양자화된 GGUF 파일 위치} {양자화 방식}
./llama.cpp/quantize ./Orion-14B-Chat.gguf ./orion-14b-chat.Q5_K_S.gguf q5_k_s
.
내의 Orion-14B-Chat.gguf
모델 파일을 5bit int
로 양자화해서 orion-14b-chat.Q5_K_S.gguf
라는 이름으로 저장하는 명령어Orion-14B-Chat
의 기존 GGUF 파일 크기는 29GB 인데, 5bit 양자화하면 10GB 수준으로 크기가 33% 수준 까지 감소한다.Q2_K
Q3_K_S
Q3_K_M
Q3_K_L
Q4_K_S
Q4_K_M
Q5_K_S
Q5_K_M
Q6_K
Q5_K_M
이 가장 적절하며, 그 이유는 기존 모델의 성능을 가장 잘 지켜냈기 때문이라고 한다.이제 모델크기를 줄였으니 LM Studio 에서 사용해볼수 있게되었다.