시스템에 LLM을 적용하기 위해서는 LLM을 서버에 직접 설치해서 사용하거나 LLM을 서비스하는 업체/기관의 Open API를 사용하여야 합니다.
후자의 경우는 유료서비스이므로 개발 중에 사용하기는 부담이 큽니다.
사용한만큼 비용이 부과되는데 개발 중에는 테스트를 위해 수없이 많은 호출이 이루어지기 때문에 감당하기가 어렵습니다.
그래서 사용하는 방법이 Ollama, LangChain 등을 사용해서 우리의 서버에 직접 LLM을 설치하는 전자의 방식입니다.
- 내 프로젝트에 LLM을 달아보자(1) - Ollama ( https://aidalab.tistory.com/239 )
- 내 프로젝트에 LLM을 달아보자(2) - Ollama API ( https://aidalab.tistory.com/240 )
- 내 프로젝트에 LLM을 달아보자(4) - LangChain 적용하기 ( https://aidalab.tistory.com/252 )
그런데 최신의 모델이나 국내에서 개발된 모델들은 Ollama에서 정식으로 서비스를 제공하지 않는 경우가 많이 있습니다.
얼마 전에 공개된 네이버의 HyperCLOVAX-SEED 모델이나 며칠 전에 공개된 LG AI연구소의 ExaOne 4.0 등의 모델도 Ollama에서 아직 제공되지 않습니다.
워낙 많은 모델들이 쏟아져 나오고 있기 때문에 분명히 오픈소스 모델임에도 불구하고 제공되지 않는 모델이 훨씬 많습니다.
그럼 이러한 모델은 어떻게 사용할 수 있을까요?
뭐.. 어렵지 않습니다.
제공하지 않으면 직접 받아서 Ollama에 연결시켜 주면 되겠죠.
우리가 가장 쉽게 공개된 LLM 파일을 얻을 수 있는 방법은 Hugging Face 사이트에서 다운로드 하는 것입니다.

Hugging Face 사이트의 Models 메뉴를 선택하고 모델을 검색하여 들어간 후, Files and versions 메뉴로 들어가면 파일을 다운로드 할 수 있습니다.
위의 캡쳐 이미지에서는 HyperCLOVAX-SEED-Text-Instruct-1.5B 모델의 다운로드 페이지를 보여주고 있습니다.
모델의 크기는 3.17GB네요.
그런데 Hugging Face에서 제공되는 모델은 safetensors라는 파일입니다.
safetensors 파일은 Tensorflow나 PyTorch를 이용해서 모델을 학습시키는 코드를 작성하고 학습을 진행시켜서 얻을 수 있는 파일인데... 문제는 Ollama에서 safetensors 파일을 사용하지 못한다는 점입니다.
Ollama에 직접 LLM을 적용하기 위해서는 safetensors 파일이 아니라 GGUF라는 파일을 사용해야 합니다.
Hugging Face 사이트에서 GGUF 파일을 제공하는 모델도 있지만 적어도 HyperCLOVAX-SEED 모델은 GGUF 파일을 제공하지 않습니다.
그래서 safetensors 파일을 GGUF 파일로 바꾸어서 Ollama에 적용하도록 합니다.
safetensors 파일을 GGUF 파일로 바꾸기 위해서는 상당히 복잡한 작업을 거쳐야 하는데...
다행히 이 작업을 수행해 주는 llama.cpp 라는 도구가 github에 공개되어 있습니다.
간단하게 파일 한 두개를 받아와서 수행할 수 없기 때문에 해당 저장소를 통째로 복제해 오도록 합니다.
나중에 파이썬을 이용하여 작업해야 하므로 파이썬 가상환경을 만들어서 작업하는 것이 좋습니다.
폴더를 이동하거나 하는 기본적인 내용들은 따로 설명하지 않겠습니다.
자신의 환경에 맞게 이동해 가면서 작업하시면 됩니다.
git clone https://github.com/ggerganov/llama.cpp.git

복제가 끝나면 필요한 라이브러리들을 설치합니다.
상당히 많은 라이브러리가 사용되므로 requirements.txt를 사용하도록 합니다.
pip install -r requirements.txt


GGUF 파일로 만들고자 하는 LLM 파일은 Hugging Face 사이트(또는 기타 사이트)에서 다운로드해서 사용하도록 합니다.
저는 속도, 크기 등의 이유로 HyperCLOVAX-SEED-Text-Instruct-0.5B를 사용하였습니다.
파일의 크기가 1.1GB 밖에 안되기때문에 변환작업도, 그리고 실제로 작동시킬때도 매우 빠르다는 장점이 있죠.
복제한 llama.cpp를 이용해서 파일을 변환하도록 하겠습니다.
python llama.cpp/convert_hf_to_gguf.py llmfiles/ --outfile HyperCLOVAX-SEED-Text-Instruct-0.5B.gguf


저는 llmfiles 라는 폴더를 만들어서 safetensors 파일을 넣고 변환작업을 수행했습니다.
변환된 파일은 outfile 옵션에서 지정한 이름으로 저장되는데 저는 별도의 폴더를 지정하지 않아서 현재 폴더에 생성되었습니다.
관리하실 계획이라면 변환할때부터 별도의 폴더를 지정하시는 것이 좋습니다.
모델 변화이 완료되면 ollama create 모드를 이용하여 ollama에 모델을 등록합니다.
저는 변환된 파일을 GGUF라는 폴더에 옮겨서 사용했습니다.
그런데 ollama create를 사용할 때, gguf 파일 지정을 위하여 from~ 등의 구문을 사용해야 하는데 띄어쓰기 등이 포함되어 있기 때문에 그냥 지정하면 오류가 발생합니다.
따옴표로 묶어주거나 별도의 문자열을 만들어서 사용하시는 것이 좋습니다.
저는 Modelfile 이라는 파일에 문자열을 저장해서 사용했습니다.
참고로... ollama 작업을 할 때에는 파이썬을 사용하는 것이 아니기때문에 파이썬 가상환경에서 작업하지 않아도 됩니다.
echo "from HyperCLOVAX-SEED-Text-Instruct-0.5B.gguf" > Modelfile

ollama create HyperCLOVAX-SEED-Text-Instruct-0.5B -f Modelfile


등록이 완료되면 제대로 인식되고 있는지 확인해 보도록 합시다.
ollama list

제대로 인식되어 있으면 실제로 사용해 봅시다.
ollama run HyperCLOVAX-SEED-Text-Instruct-0.5B

잘 작동합니다.
특히 모델 파일의 크기가 작아서 그런지 속도도 매우 빠르네요.
이제 이 모델을 사용해서 시스템을 만들기 시작하면 될 것 같습니다.
차근차근 진행하도록 하겠습니다.
'AiDALab Project > AiDAOps' 카테고리의 다른 글
| FastAPI 기반 코드에서 라우팅 방법의 차이에 대하여 (4) | 2025.07.23 |
|---|---|
| FastAPI와 LangChain, Ollama를 이용한 LLM 기반 웹 서비스(1) (2) | 2025.07.23 |
| MLOps 시스템 아키텍처 구성요소 분석: MinIO (1) (10) | 2024.12.10 |
| 프론트엔드 부분을 담당할 프레임워크는 무엇이 좋을까? (26) | 2024.11.12 |
| 회의 002: 시스템 아키텍처 구성하기 (15) | 2024.11.12 |