올라마 사용자 지정 가져오기 모델
개요
이 섹션에서는 모델파일을 사용하여 가져온 모델을 사용자 지정하는 방법을 다음 섹션으로 나누어 설명합니다.
- GGUF에서 가져오기
- 파이토치 또는 세이프센서에서 가져오기
- 모델에서 직접 가져오기
- 사용자 지정 프롬프트
I. GGUF에서 가져오기
GGUF(GPT 생성 통합 형식)는 미세 조정된 언어 모델을 저장하기 위한 파일 형식입니다. 이 형식은 사용자가 서로 다른 플랫폼과 환경 간에 모델을 쉽게 공유하고 가져올 수 있도록 설계되었습니다. 여러 양자화 형식을 지원하므로 모델 파일의 크기를 효과적으로 줄일 수 있습니다.
그 전신은 머신 러닝을 위해 단일 파일 형식과 다양한 아키텍처의 CPU 및 GPU에서 추론하기 쉽도록 특별히 설계된 텐서 라이브러리인 GGML(GPT 생성 모델 언어)이었지만, 이후 개발의 유연성 부족, 호환성, 유지 관리의 어려움으로 인해 문제가 발생했습니다.
Ollama GGUF 파일에서 모델 가져오기는 다음 단계를 통해 지원됩니다:
- 다운로드
.gguf
논문
다운로드 링크: https://huggingface.co/RichardErkhov/Qwen_-_Qwen2-0.5B-gguf/resolve/main/Qwen2-0.5B.Q3_K_M.gguf?download=true
데모 목적으로 Qwen2-0.5B 모델을 선택했습니다. 다운로드하여 첫 번째 파트의 루트 디렉토리에 복사합니다. 다음 디렉토리 구조를 참조할 수 있습니다:
├── 1.从gguf直接导入/
│ ├── main.ipynb
│ ├── Modelfile
│ └── Qwen-0.5B.Q3_K_M.gguf
├── 2.safetensors导入/
│ ├── llama-3-8b-bnb-4bit/
│ ├── main.ipynb
│ ├── Modelfile
├── 3.模型直接导入/
│ ├── llama.cpp/
│ ├── Qwen-0.5b/
│ ├── main.ipynb
│ ├── Modelfile
│ └── Qwen_instruct_0.5b.gguf
└── 4.自定义Prompt实践/
├── main.ipynb
└── Modelfile
팁
3장의 코드와 관련 문서는 노트북에 있습니다. 모델 파일이 어디에 설치되어 있는지 잘 모르겠다면 다음을 참조하세요. 노트북/C3
- 새 모델파일 파일 만들기
FROM ./Qwen2-0.5B.Q3_K_M.gguf
- 올라마에서 모델 만들기
참고
항상 모델파일 파일이 있는 디렉토리에서 다음 터미널 명령을 실행하세요!
ollama create mymodel -f Modelfile
- 터미널에서 모델 실행 (노트북에서는 실행되지 않는 것으로 테스트되었으므로 터미널에서 실행하는 것이 좋습니다)
ollama run mymodel

II. 파이토치 또는 세이프센서에서 가져오기
Safetensors는 보안, 효율성, 사용 편의성 문제를 해결하기 위해 설계된 딥러닝 모델 가중치를 저장하기 위한 파일 형식입니다. 이 기능은 아직 커뮤니티 회원들이 개발 중이며 현재 문서 리소스가 제한되어 있습니다.
가져오려는 모델이 다음 아키텍처 중 하나인 경우 모델파일을 통해 Ollama로 직접 가져올 수 있습니다. 물론 세이프텐서 파일을 gguf 파일로 변환한 후 처리할 수도 있으며, 변환 과정은 파트 III에서 확인할 수 있습니다.
세이프티센서 및 GGUF에 대한 자세한 정보는 다음 링크(https://www.linkedin.com/pulse/llama-3-safetensors-vs-gguf-talles-carvalho-jjcqf)에서 확인할 수 있습니다.
- LlamaForCausalLM
- 미스트랄포코사럴LM
- GemmaForCausalLM
이 섹션은 아직 커뮤니티에서 최적화 중이므로 여기에 제공된 샘플 코드와 프로세스는 참고용으로만 제공되며 성공적으로 작동한다고 보장할 수 없습니다. 자세한 내용은 공식 문서를 참조하세요.
- 라마-3 모델 다운로드
!pip install huggingface_hub
# 下载模型
from huggingface_hub import snapshot_download
model_id = "unsloth/llama-3-8b-bnb-4bit"
snapshot_download(
repo_id=model_id,
local_dir="llama-3-8b-bnb-4bit",
local_dir_use_symlinks=False,
revision="main",
# 怎么获取<YOUR_ACCESS_TOKEN>,请参照部分3
use_auth_token="<YOUR_ACCESS_TOKEN>")
- 루트 디렉터리에 다음 내용으로 모델파일 파일을 만듭니다:
FROM ./llama-3-8b-bnb-4bit
- 올라마에서 모델 만들기
ollama create mymodel2 -f Modelfile
- 운영 모델
ollama run mymodel2
III. 모델에서 직접 가져오기
일반적으로 우리는 허깅페이스에서 많은 모델 파일에 노출되어 있는데, 다행히도 hf는 위의 직접 다운로드가 네트워크 환경에 의해 제한되고 속도가 매우 느린 것처럼 이러한 모델을 다운로드하고 처리하는 매우 편리한 API를 제공하며, 이 작은 섹션에서는 스크립트와 hf를 사용하여 완료할 것입니다.
llama.cpp GGUF는 CLI 및 서버 기능을 제공하는 오픈 소스 프로젝트입니다.
Ollama에서 직접 변환할 수 없는 아키텍처의 경우 llama.cpp를 사용하여 정량화하여 GGUF 형식으로 변환한 다음 첫 번째 방법으로 가져올 수 있습니다. 전체 변환 프로세스는 다음 단계로 나뉩니다:
- 허깅페이스에서 모델을 다운로드하세요;
- llama.cpp를 사용하여 변환을 수행합니다;
- 모델 정량화에는 llama.cpp를 사용합니다;
- 모델을 실행하고 업로드합니다.
3.1 허깅페이스에서 모델 다운로드하기
[](https://github.com/datawhalechina/handy-ollama/blob/main/docs/C3/1.%20%E8%87%AA%E5%AE%9A%E4%B9%89%E5%AF%BC%E5%85%A5%E6%A8%A1%E5%9E%8B.md#31-%E4%BB%8E-huggingface-%E4%B8%8B%E8%BD%BD-model)가장 직관적인 다운로드 방법은 git 클론 또는 링크를 사용하는 것이지만, llm은 각 부분을 GB 단위로 계산하기 때문에 OOM Error(Out of memory)
파이썬으로 간단한 download.py를 작성할 수 있습니다.
먼저 hf로 이동하여 사용자의 개인 정보를 가져와야 합니다. ACCESS_TOKEN
를 클릭하여 허깅페이스 개인 설정 페이지를 엽니다.



이 시점에서 우리는 ACCESS_TOKEN
다음으로 huggingface_hub
(명목식 형태로 사용됨) snapshot_download
모델을 다운로드하려면 여기 또는 Qwen-0.5b를 선택했습니다.
!pip install huggingface_hub
from huggingface_hub import snapshot_download
model_id = "Qwen/Qwen1.5-0.5B" # hugginFace's model name
snapshot_download(
repo_id=model_id,
local_dir="Qwen-0.5b",
local_dir_use_symlinks=False,
revision="main",
use_auth_token="<YOUR_ACCESS_TOKEN>")
실행할 디렉토리의 세 번째 부분에 CD를 복사하고 다운로드하는 데 시간이 오래 걸릴 수 있으니 조금만 기다려주세요.
3.2 llama.cpp를 사용한 변환
llama.cpp는 GGML의 주 작성자가 CPU를 사용하여 다양한 LLM을 추론하기 위해 초기 c/c++ 버전의 llama를 기반으로 개발했으며, 커뮤니티의 지속적인 노력 덕분에 현재 대부분의 주류 모델, 심지어 멀티모달 모델까지 지원하고 있습니다.
먼저 다운로드한 모델과 동일한 디렉토리에 llama.cpp 라이브러리를 로컬에 복제합니다:
git clone https://github.com/ggerganov/llama.cpp.git
llama.cpp를 사용하여 모델을 변환하는 과정은 파이썬 개발을 기반으로 하므로 관련 라이브러리를 설치해야 하며, 새로운 환경을 만들 때는 conda 또는 venv를 사용하는 것이 좋습니다.
cd llama.cpp
pip install -r requirements.txt
python convert_hf_to_gguf.py -h
다음과 같은 내용이 표시되면 변환 프로그램이 준비된 것입니다.

다음으로, 다음 스크립트를 사용하여 방금 다운로드한 모델을 HuggingFace에서 GGUF 형식으로 변환합니다:
python convert_hf_to_gguf.py ../Qwen-0.5b --outfile Qwen_instruct_0.5b.gguf --outtype f16

llama.cpp 디렉토리에 추가 Qwen_instruct_0.5b.gguf 파일을 볼 수 있으며, 이 과정은 몇 초 밖에 걸리지 않습니다.
추론할 때 오버헤드를 줄이기 위해 모델을 정량화하고, 다음으로 실제 연습을 정량화하기 시작합니다.
3.3 llama.cpp를 사용한 모델 정량화
모델 양자화는 고정밀 부동 소수점 모델을 저정밀 모델로 변환하는 기술입니다. 모델 양자화의 주된 목적은 모델의 크기와 계산 비용을 줄이고 모델을 최대한 정확하게 유지하여 CPU나 모바일 장치와 같이 리소스가 제한된 장치에서 모델을 실행할 수 있도록 하는 것입니다.
마찬가지로, 먼저 모델파일 파일을 생성한 다음 ollama create
명령을 실행하여 gguf 파일에서 모델을 생성하지만, 양자화 로직을 추가하는 첫 번째 단계와 약간 다릅니다. ollama create
는 매개변수를 추가하기만 하면 됩니다.
먼저 이전 단계에서 받은 Qwen_instruct_0.5b.gguf를 세 번째 파트의 루트 디렉터리로 이동한 다음 다음 내용으로 모델파일 파일을 생성합니다.
FROM ./Qwen_instruct_0.5b.gguf
터미널은 생성 및 정량화 스크립트를 실행합니다.
# 第三部分根目录下
ollama create -q Q4_K_M mymodel3 -f ./Modelfile

이 시점에서 모델이 정량화되고 생성되면 다음 단계로 모델을 실행할 수 있습니다.
3.4 모델 실행 및 업로드
gguf를 사용하여 모델을 실행하는 단계는 파트 1에 자세히 설명되어 있으므로 여기서는 반복하지 않습니다.
로컬에 저장된 모델 파일이 너무 많은 공간을 차지하는 경우, 1단계에서와 마찬가지로 업로드 로직을 작성하여 gguf 모델을 자체 리포지토리에 업로드할 수 있습니다.
팁
업로드를 완료하려면 HF_ACCESS_TOKEN 권한이 쓰기 권한이어야 하고 모델 아이디를 변경해야 합니다. YOUR_HF_NAME은 허깅페이스 계정 이름을 의미합니다.
from huggingface_hub import HfApi
import os
api = HfApi()
HF_ACCESS_TOKEN = "<YOUR_HF_WRITE_ACCESS_TOKEN>"
#TODO 这里需要设置你的model_id
#例如 model_id = "little1d/QWEN-0.5b"
model_id = "your_hf_name/QWEN-0.5b"
api.create_repo(
model_id,
exist_ok=True,
repo_type="model", # 上傳格式為模型
use_auth_token=HF_ACCESS_TOKEN,
)
# upload the model to the hub
# upload model name includes the Bailong-instruct-7B in same folder
for file in os.listdir():
if file.endswith(".gguf"):
model_name = file.lower()
api.upload_file(
repo_id=model_id,
path_in_repo=model_name,
path_or_fileobj=f"{os.getcwd()}/{file}",
repo_type="model", # 上傳格式為模型
use_auth_token=HF_ACCESS_TOKE)

업로드가 완료되면 hf 리포지토리에서 확인할 수 있습니다!
사용자 지정 프롬프트
올라마는 사용자 지정 프롬프트를 지원하여 모델이 사용자의 요구에 더 잘 맞는 텍스트를 생성할 수 있도록 합니다.
프롬프트를 사용자 지정하는 단계는 다음과 같습니다:
- 루트 디렉터리에 모델파일 파일 만들기
FROM llama3.1
# sets the temperature to 1 [higher is more creative, lower is more coherent]
PARAMETER temperature 1
# sets the context window size to 4096, this controls how many tokens the LLM can use as context to generate the next token
PARAMETER num_ctx 4096
# sets a custom system message to specify the behavior of the chat assistant
SYSTEM You are Mario from super mario bros, acting as an assistant.
- 모델 만들기
ollama create mymodel -f ./Modelfile

모델을 생성하는 데는 모델을 가져오는 것보다 시간이 조금 더 걸릴 수 있으므로 조금만 기다려주세요.

다시 실행합니다. ollama list
기존 모델을 보면 내 모델이 올바르게 생성되었음을 알 수 있습니다.

- 운영 모델
ollama run mymodel

보시다시피, 우리의 작은 알파카 🦙가 마리오로 변신했습니다! 프롬프트 커스터마이징에 성공했습니다! 😘😘😘😘😘😘
참조 링크
- https://www.linkedin.com/pulse/llama-3-safetensors-vs-gguf-talles-carvalho-jjcqf
- https://www.sysgeek.cn/ollama-on-windows
- https://ollama.com/blog/openai-compatibility
© 저작권 정책
기사 저작권 AI 공유 서클 모두 무단 복제하지 마세요.
관련 문서
댓글 없음...