한국어를 잘 지원하는 로컬 LLM을 구현하기 위해,
Hugging Face에서 다음 Bllossom 모델을 받아서 Ollama에 적용하려고 한다.
선택한 아래 모델의 경우 gguf 포맷으로 되어있기에
먼저 gguf 및 양자화에 대한 이해를 간단하게 해보자.
https://huggingface.co/Bllossom/llama-3.2-Korean-Bllossom-3B-gguf-Q4_K_M
Bllossom/llama-3.2-Korean-Bllossom-3B-gguf-Q4_K_M · Hugging Face
huggingface.co
GGUF에 대한 이해
GGUF란 모델 파일 포맷 중 하나로, 쉽게 말해 LLM 모델계의 docker로 이해할 수 있다.
기존 방식의 경우 특정 프레임워크나 라이브러리에 종속되어 호환성이 떨어지는 문제가 있기에
이러한 dependency 관련 문제를 해결하고자 제공되는 것이다.
일반적으로 Hugging Face에서 다운로드한 모델은 .pt(PyTorch) 혹은 .bin으로 제공되는데
이런 모델은 Ollama에서 바로 사용할 수 없으므로 GGUF 포맷으로 변환하는 것이 필요하다.
(변환 방법은 다음 참고 : https://drfirst.tistory.com/entry/llm-모델에서-GGUF가-무엇인지-알아보자-feat-bllossom-모델을-gguf로-바꿔보기 )
GGUF 포맷으로 변환되어 제공이 된다면 감사합니다 하고 사용하면 되는 것!
+ Ollama의 Readme 파일에서도 모델을 커스터마이즈 하는 방식으로 다음을 제안한다.
1) Import from GGUF
2) Import from Safetensors
3) Customize a prompt
양자화에 대한 이해
양자화는 모델의 가중치와 연산을 더 작은 데이터 타입으로 변환하여 메모리 사용량과 연산 부하를 줄이는 기술이고,
로컬에서 LLM을 실행할 때, 하드웨어 자원의 제약(특히 GPU 또는 RAM 부족)을 극복하기 위해 필수적인 과정이다.
이걸 왜 굳이 '양자화'라고 해서 LLM 초심자에게 극심한 벽을 느끼게 할까? (내가 물포자여서 그럴 수도 있다)
모델의 연산 및 가중치 표현을 더 작은 비트 단위로 변환하여 효율성을 높이는 과정이 물리의 '양자화' 개념과 유사하기 때문이라고 한다.
- 물리학에서의 양자화 : 연속적인 값 -> 이산적인 값
- 모델 양자화 : ex. 32비트 부동소수점 -> 8비트 정수
Ollama에 Bllossom 모델 Import 하기
1) 다음 링크에서 Bllossom 모델을 다운로드한다. 2기가 정도 됨.
https://huggingface.co/Bllossom/llama-3.2-Korean-Bllossom-3B-gguf-Q4_K_M/tree/main
2) Modelfile을 생성한다.
Modelfile에는 Ollama가 모델을 올바르게 불러오고 사용할 수 있도록 하는 값인
모델 가중치 파일의 경로, 모델의 구조, 하이퍼파라미터 등의 정보가 포함되어야 한다.
3) 1과 2를 한 디렉토리에 모아놓고 다음 명령어를 실행한다. 모델명은 내가 쓰고 싶은대로 설정 가능함.
> ollama create [모델명] -f Modelfile
다음과 같은 에러가 발생한다면 Modelfile에 작성한 FROM llama.. 구문의 오타를 의심해보자.
나의 경우에는 확장자를 붙이지 않아서 발생했다.
Error: pull model manifest: file does not exist
4) 명령어를 통해 모델이 잘 다운됐는지 확인한다.
> ollama list
그 외 참고할만한 명령어 :
> ollama serve // 터미널에서 올라마 서버 실행
> ollama pull llama3.2 // 모델 설치
> ollama rm llama3.2 // 모델 삭제
Ollama에서 Bllossom 모델 실행하기
> ollama run [모델명]
생각했던 것보다 아주 빠른 속도로 한국어 답변을 내놓는다.
'개발 > LLM' 카테고리의 다른 글
Colab으로 LLM 돌리기 (1) | 2025.03.06 |
---|---|
Instruction Tuning (2) (0) | 2025.02.12 |
Instruction Tuning (1) (2) | 2025.02.06 |
Tuning (0) | 2025.01.20 |
LLM (1) | 2025.01.13 |