三、已有模型导入
本教程将指导您如何导入 GGUF、PyTorch 或 Safetensors 模型。
1. 导入(GGUF)
(1). 步骤 1:编写 Modelfile
首先创建一个 Modelfile
文件。这个文件是您模型的蓝图,指定了权重、参数、提示模板等信息。
FROM ./mistral-7b-v0.1.Q4_0.gguf
(可选)许多聊天模型需要一 个提示模板才能正确回答问题。您可以在 Modelfile
中使用 TEMPLATE
指令指定默认的提示模板:
FROM ./mistral-7b-v0.1.Q4_0.gguf
TEMPLATE "[INST] {{ .Prompt }} [/INST]"
(2). 步骤 2:创建 Ollama 模型
最后,从您的 Modelfile
创建一个模型:
ollama create example -f Modelfile
(3). 步骤 3:运行您的模型
接下来,使用 ollama run
测试模型:
ollama run example "你最喜欢的调味品是什么?"
2. 导入(PyTorch & Safetensors)
从 PyTorch 和 Safetensors 导入比从 GGUF 导入更复杂。正在进行使其更容易的改进工作。
(1). 设置
首先,克隆 ollama/ollama
仓库:
git clone git@github.com:ollama/ollama.git ollama
cd ollama
然后获取其 llama.cpp
子模块:
git submodule init
git submodule update llm/llama.cpp
接下来,安装 Python 依赖项:
python3 -m venv llm/llama.cpp/.venv
source llm/llama.cpp/.venv/bin/activate
pip install -r llm/llama.cpp/requirements.txt
然后构建 quantize
工具:
make -C llm/llama.cpp quantize
(2). 克隆 HuggingFace 仓库(可选)
如果模型当前托管在 HuggingFace 仓库中,首先克隆该仓库以下载原始模型。
安装 Git LFS,验证安装后,然后克隆模型仓库:
git lfs install
git clone https://huggingface.co/mistralai/Mistral-7B-Instruct-v0.1 model
(3). 转换模型
注意:某些模型架构需要使用特定的转换脚本。例如,Qwen 模型需要运行
convert-hf-to-gguf.py
而不是convert.py
python llm/llama.cpp/convert.py ./model --outtype f16 --outfile converted.bin
(4). 量化模型
llm/llama.cpp/quantize converted.bin quantized.bin q4_0
(5). 步骤 3:编写 Modelfile
接下来,为您的模型创建一个 Modelfile
:
FROM quantized.bin
TEMPLATE "[INST] {{ .Prompt }} [/INST]"
(6). 步骤 4:创建 Ollama 模型
最后,从您的 Modelfile
创建一个模型:
ollama create example -f Modelfile
(7). 步骤 5:运行您的模型
接下来,使用 ollama run
测试模型:
ollama run example "你最喜欢的调味品是什么?"
3. 发布您的模型(可选 – 早期阿尔法版)
模型发布处于早期阿尔法版。如果您想发布模型以与他人共享,请按照以下步骤操作:
- 创建 一个账户
- 复制您的 Ollama 公钥:
- macOS:
cat ~/.ollama/id_ed25519.pub
- Windows:
type %USERPROFILE%\.ollama\id_ed25519.pub
- Linux:
cat /usr/share/ollama/.ollama/id_ed25519.pub
- macOS:
- 将您的公钥添加到您的 Ollama 账户
接下来,将您的模型复制到您的用户名空间:
ollama cp example <your username>/example
然后推送模型:
ollama push <your username>/example
发布后,您的模型将在 https://ollama.com/<your username>/example
上可用。
4. 量化参考
量化选项如下(从最高到最低的量化级别)。注意:某些架构如 Falcon 不支持 K quants。
q2_K
q3_K
q3_K_S
q3_K_M
q3_K_L
q4_0
(推荐)q4_1
q4_K
q4_K_S
q4_K_M
q5_0
q5_1
q5_K
q5_K_S
q5_K_M
q6_K
q8_0
f16