发布时间:
目录
这个文档是关于如何将 Ollama 模型从 Safetensors 权重中导入。它包括使用 Dockerfile 将模型导入 Ollama 的步骤,以及如何在 Ollama.com 上共享模型。
从 Safetensors 权重导入微调适配器 #
首先,创建一个Modelfile
,其中FROM
命令指向您用于微调的基础模型,ADAPTER
命令指向带有 Safetensors 适配器的目录:
FROM <base model name>
ADAPTER /path/to/adapter
确保在 FROM
命令中使用与创建适配器时相同的基本模型,否则会得到不稳定的结果。大多数框架使用不同的量化方法,因此最好使用非量化(即非QLoRA)适配器。如果您的适配器与Modelfile
位于同一目录中,请使用adapter
指定适配器路径。
现在从创建Modelfile
的目录运行ollama create
:
ollama create my-model
最后,测试模型:
ollama run my-model
Ollama 支持导入基于多种不同模型架构的适配器,包括:
- Llama (包括 Llama 2, Llama 3, Llama 3.1, 和 Llama 3.2);
- Mistral (包括 Mistral 1, Mistral 2, 和 Mixtral); 和
- Gemma (包括 Gemma 1 和 Gemma 2)
您可以使用微调框架或工具创建适配器,该框架或工具可以以 Safetensors 格式输出适配器,例如:
从 Safetensors 权重导入模型 #
首先,使用FROM
命令创建一个Modelfile
,该命令指向包含 Safetensors 权重的目录:
FROM /path/to/safetensors/directory
如果在权重所在的同一目录中创建模型文件,则可以使用命令 FROM
。
现在从创建 Modelfile
的目录运行 ollama create
命令:
ollama create my-model
最后,测试模型:
ollama run my-model
Ollama 支持导入多种不同架构的模型,包括:
- Llama (包括 Llama 2, Llama 3, Llama 3.1, 和 Llama 3.2);
- Mistral (包括 Mistral 1, Mistral 2, 和 Mixtral);
- Gemma (包括 Gemma 1 和 Gemma 2); and
- Phi3
这包括导入基础模型以及与基础模型一起使用的任何微调模型。
导入基于 GGUF 的模型或适配器 #
如果您有基于 GGUF 的模型或适配器,则可以将其导入 Ollama。您可以通过以下方式获得 GGUF 型号或适配器:
- 使用 Llama.cpp 的
convert_hf_to_gguf.py
转换 Safetensors 模型; - 使用 Llama.cpp 中的
convert_lora_to_gguf.py
转换 Safetensors 适配器;或 - 从 HuggingFace 等地方下载模型或适配器
要导入 GGUF 模型,请创建一个包含以下内容的 Modelfile
:
FROM /path/to/file.gguf
对于 GGUF 适配器,使用以下命令创建 Modelfile
:
FROM <model name>
ADAPTER /path/to/file.gguf
导入 GGUF 适配器时,使用与创建适配器时使用的基本模型相同的基本模型非常重要。您可以使用:
- Ollama 的模型
- GGUF 文件
- 基于 Safetensors 的模型
创建 Modelfile
后,使用 ollama create
命令构建模型。
ollama create my-model
量化模型 #
量化模型可以让您更快地运行模型,减少内存消耗,但精度降低。这允许您在更温和的硬件上运行模型。
Ollama 可以使用带有 Ollama create
命令的 -q/--quantize
标志将基于 FP16 和 FP32 的模型量化为不同的量化级别。
首先,使用要量化的基于 FP16 或 FP32 的模型创建一个模型文件。
FROM /path/to/my/gemma/f16/model
使用 ollama create
创建量化模型。
$ ollama create --quantize q4_K_M mymodel
transferring model data
quantizing F16 model to Q4_K_M
creating new layer sha256:735e246cc1abfd06e9cdcf95504d6789a6cd1ad7577108a70d9902fef503c1bd
creating new layer sha256:0853f0ad24e5865173bbf9ffcc7b0f5d56b66fd690ab1009867e45e7d2c4db0f
writing manifest
success
支持的量化 #
q4_0
q4_1
q5_0
q5_1
q8_0
K-means(聚类) 量化 #
q3_K_S
q3_K_M
q3_K_L
q4_K_S
q4_K_M
q5_K_S
q5_K_M
q6_K
在 ollama.com 上分享您的模型 #
您可以通过将创建的任何模型推送到 ollama.com 来共享它以便其他用户可以尝试。
首先,使用浏览器访问 Ollama 注册页面。如果您已经拥有一个帐户,则可以跳过此步骤。

用户名
字段将用作模型名称的一部分(例如“jmorgaca/mymodel”),因此请确保您对所选的用户名感到满意。
现在您已经创建了一个帐户并登录,请转到Ollama密钥设置页面。
按照页面上的说明确定Ollama公钥的位置。

点击 Add Ollama Public Key
按钮,将 Olama 公钥的内容复制并粘贴到文本字段中。
将模型推送到 ollama.com,首先确保它与您的用户名正确命名。您可能需要使用ollama-cp
命令进行复制
为您的模型命名。一旦您对模型的名称感到满意,请使用 ollama-push
命令将其推送到 ollama.com。
ollama cp mymodel myuser/mymodel
ollama push myuser/mymodel
一旦你的模型被推送,其他用户可以使用以下命令拉取并运行它::
ollama run myuser/mymodel