양자화 추론기로 많이 사용하는 llama.cpp를 사용하는 방법을 알아보도록 하겠습니다. 저는 여기서 Upstage에서 발표한 SOLAR-10.7B를 야놀자에서 파인튜닝한 yanolja/EEVE-Korean-10.8B-v1.0 모델을 사용해보겠습니다.
llama.cpp 설치
처음에는 llama.cpp를 clone한 다음 파일을 실행을 시킵니다.
$ git clone https://github.com/ggerganov/llama.cpp.git
$ cd llama.cpp
$ make LLAMA_OPENBLAS=1
make LLAMA_OPENBLAS=1 명령어는 llama.cpp 프로젝트를 빌드할 때 OpenBLAS 라이브러리를 사용하도록 설정합니다.
이렇게 설정함으로써, llama.cpp 내부에서 수행되는 수학적 연산이 OpenBLAS를 통해 최적화되어 더 빠른 성능을 기대할 수 있습니다. 특히 대규모 데이터셋을 다룰 때 더 높은 처리 속도와 효율성을 얻을 수 있습니다.
추가) make LLAMA_OPENBLAS=1 과정에서 아래와 같은 오류가 생성이 될 가능성이 있습니다.
이때 libopenblas-dev를 설치하면 해결이 가능합니다.
sudo apt-get install libopenblas-dev
Huggingface 모델 다운로드
다음으로, 모델을 다운로드해야 합니다. 이 예제에서 사용된 yanolja/EEVE-Korean-10.8B-v1.0모델은 108억 개의 매개변수를 가진 언어 모델 입니다. 아래 huggingface-cli 명령어를 실행하여 모델을 다운로드하세요.
$ huggingface-cli download yanolja/EEVE-Korean-10.8B-v1.0 --local-dir=./EEVE-Korean-10.8B-v1.0
Huggingface 모델 변환
모델을 다운로드한 후에는 모델 변환 과정이 필요합니다. 아래 명령어들을 통해 모델을 변환할 수 있습니다.
$ python3 convert.py models/EEVE-Korean-10.8B-v1.0/
모델크기가 크기 때문에 quantization 의 옵션은 q4_1 로 지정하고 양자화를 수행합니다.
$ ./quantize ./models/EEVE-Korean-10.8B-v1.0/ggml-model-f16.gguf ./models/EEVE-Korean-10.8B-v1.0/ggml-model-q4_1.gguf q4_1
축소된 모델의 용량을 확인하는 코드는 아래와 같습니다.
$ ls -alh ggml-model-*
모델 실행 및 테스트
$ ./main -m ./models/EEVE-Korean-10.8B-v1.0/ggml-model-q4_1.gguf -n 128 --prompt "토끼와 거북이에서 교훈은 무엇이야?"
'머신러닝 & 딥러닝 > LLM' 카테고리의 다른 글
[LLM] Finetuning시 세부 파라미터 정리 (0) | 2024.04.08 |
---|---|
[LLM] 기업용 특화 LLM 생성 방법 (0) | 2024.04.05 |
[LLM]LLM 파일 형식 GGML & GGUF이란? (1) | 2024.03.07 |
[LLM]LangChain이란 무엇인가? (0) | 2023.12.02 |
Andrew Ng(앤드류 응) 프롬프트 엔지니어링 강의 요약(4) (0) | 2023.09.20 |