본문 바로가기
데이터&AI/LLM

llm 모델에서 GGUF가 무엇인지 알아보자!! (feat. bllossom 모델을 gguf로 바꿔보기!)

by 일등박사 2024. 6. 29.


GGUF란 ??

> 쉽게 : llm 모델계의 docker !!

> 정식 설명  : GGUF(Georgi Gerganov Unified Format)는 딥러닝 모델을 효율적으로 저장하고 배포하기 위한 새로운 파일 형식 made by  Georgi Gerganov

> 필요한 이유는?  기존의 모델 저장 방식들은 특정 프레임워크나 라이브러리에 종속되어 호환성이 떨어지는 문제가 있음,

                              GGUF는 이러한 문제를 해결하고자 탄생!!!

> 파일구조

출처 : https://github.com/mishig25

 

GGUF의 장점은!?

1. 뛰어난 호환성: GGUF는 특정 프레임워크나 라이브러리에 종속않음!! (도커같죠?ㅎㅎ)

                             이에,. PyTorch, TensorFlow 등 여러 프레임워크에서 학습된 모델을 GGUF로 변환하면 쉽게 사용가능

2. 효율적인 저장 및 로딩: GGUF는 모델 가중치를 효율적으로 저장하고 로딩할 수 있도록 설계됨!!

                                          이를 통해 모델 파일의 크기를 줄이고 로딩 속도를 향상 가능!!
3. 다양한 플랫폼 지원: GGUF는 CPU, GPU, TPU 등 다양한 플랫폼에서 모델을 실행할 수 있도록 지원

4. 커뮤니티 활성화: GGUF는 오픈 소스 프로젝트로, 활발한 커뮤니티를 통해 지속적으로 발전하는중!!!

 

 

GGUF 사례알아보기!

ollama, llamafile 등에서는 자체적으로 제공하는 모델 외에도 gguf 파일을 import하여 사용할수 있도록 제공합니다!!

이에, gguf 파일만 있다면, 다양한 dependencies를 맞출 필요 없이 모델을 가동할 수 있어요!!

 

ollama에서의 gguf


.

llamafile에서의 gguf

 

 

GGUF 만들어보기!!

한국어 잘하는 오픈소스모델!! bllossom을 참 좋아하는데요~~

 

ollama, llamafile 등에서는 자체적으로 제공하는 모델 외에도 gguf 파일을 import하여 사용할수 있도록 제공합니다!!

이에, gguf 파일만 있다면, 다양한 dependencies를 맞출 필요 없이 모델을 가동할 수 있어요!!

 

그래서 아래와 같이 모델 다운 받고, 필요한 llama.cpp 를 다운받고, 환경 설정뒤 만들어주면 끝!!!

# 필요한 pip 패키지 다운
pip install huggingface_hub

###### 필요 디렉토리에서 아래의 .py파일로 모델을 다운받습니다!!#######
from huggingface_hub import snapshot_download
model_id= "MLP-KTLim/llama-3-Korean-Bllossom-8B"
snapshot_download(repo_id=model_id, local_dir="bllossom",
                  local_dir_use_symlinks=False, revision="main")
#####################################################################

## gguf 만들기위한 llama.cpp파일 다운
git clone https://github.com/ggerganov/llama.cpp.git
## llama.cpp의 필요 환경 설치
pip install -r llama.cpp/requirements.txt
cd llama.cpp
make

## gguf 만들기 시작!!!
##### llama.cpp/convert-hf-to-gguf.py 파일을 기반으로,
##### bllossom/ 에 있는 파일들을 
##### --outfile bllossom.gguf 로 만들어줍니다!!
python llama.cpp/convert-hf-to-gguf.py bllossom/ --outfile bllossom.gguf

 

 

이제 gguf 파일이 생성된것을 확인할 수 있습니다!!

 

이제,gguf 기반으로 ollama를 실행해보겠습니다!!

우선 gguf가 있는 디렉토리에 "Modelfile" 라는 이름으로 아래와 같이 파일을 만듭니다!!

FROM bllossom.gguf

TEMPLATE """{{- if .System }}
<s>{{ .System }}</s>
{{- end }}
<s>Human:
{{ .Prompt }}</s>
<s>Assistant:
"""

SYSTEM """A chat between a curious user and an artificial intelligence assistant. The assistant gives helpful, detailed, and polite answers to the user's questions."""

PARAMETER temperature 0
PARAMETER num_predict 3000
PARAMETER num_ctx 4096
PARAMETER stop <s>
PARAMETER stop </s>

 

그다음으로!! ollama가 실행된 상테에서 아래와 같이 create해줍니다!!

ollama create bllossom-8B -f Modelfile

 

드디어완성!! 이제 model run 을해줘볼까요~?

 ollama run bllossom-8B

짠!! 잘작동하네요~~ 최고에요!!

 

댓글