从GGUF到Prompt的Ollama自定义导入模型

在使用Ollama运行本地语言模型时,支持自定义导入模型是它的一大亮点。本文将详细介绍如何通过Ollama导入不同格式的模型(如GGUF、Pytorch或Safetensors),完成模型量化,并通过自定义Prompt实现个性化对话。

一、从GGUF导入模型

1.1 什么是GGUF?

GGUF(GPT-Generated Unified Format)是一种文件格式,用于保存经过微调的语言模型。它支持多种量化格式,能够有效减少模型文件大小,同时保持模型的推理性能。

Ollama支持直接从GGUF文件导入模型,以下是具体步骤:

1.2 下载GGUF文件

我们以Qwen2-0.5B模型为例,下载链接如下:

    
https://huggingface.co/RichardErkhov/Qwen_-_Qwen2-0.5B-gguf/resolve/main/Qwen2-0.5B.Q3_K_M.gguf?download=true

将下载的.gguf文件复制到根目录。

1.3 创建Modelfile文件

在根目录下创建一个名为Modelfile的文件,内容如下:

    
FROM ./Qwen2-0.5B.Q3_K_M.gguf

1.4 使用Ollama创建模型

运行以下命令创建模型:

    
ollama create mymodel -f Modelfile

1.5 运行模型

在终端中运行模型:

    
ollama run mymodel

此时,Ollama会加载并运行模型,如果出现对话界面,说明模型导入成功。

ai_tutorial_ollama_basic_customize_import_model_1

二、从Pytorch或Safetensors导入模型

2.1 什么是Safetensors?

Safetensors是一种专为深度学习模型设计的文件格式,具有高效、安全的特点。Ollama支持直接从Safetensors文件导入模型,或者将其转换为GGUF格式后导入。

2.2 下载模型

以Llama-3模型为例,使用以下代码从HuggingFace下载:

    
python
!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",
  use_auth_token="<YOUR_ACCESS_TOKEN>")

2.3 创建Modelfile文件

在根目录下创建一个名为Modelfile的文件,内容如下:

    
FROM ./llama-3-8b-bnb-4bit

2.4 使用Ollama创建模型

运行以下命令创建模型:

    
ollama create mymodel2 -f Modelfile

2.5 运行模型

通过以下命令运行模型:

    
ollama run mymodel2

三、通过llama.cpp量化模型并导入

对于无法直接通过Ollama导入的模型,可以使用llama.cpp工具进行转换和量化。

3.1 下载模型

使用以下代码从HuggingFace下载Qwen-0.5B模型(记得把<YOUR_ACCESS_TOKEN>替换成你的TOKEN):

ai_tutorial_ollama_basic_customize_import_model_2

    
!pip install huggingface_hub
    
python
from huggingface_hub import snapshot_download

model_id = "Qwen/Qwen1.5-0.5B"
snapshot_download(
    repo_id=model_id, 
    local_dir="Qwen-0.5b",
    local_dir_use_symlinks=False,
    revision="main",
    use_auth_token="<YOUR_ACCESS_TOKEN>")

3.2 使用llama.cpp转换为GGUF格式

克隆llama.cpp仓库:

    
git clone https://github.com/ggerganov/llama.cpp.git

进入目录并安装依赖:

    
cd llama.cpp
pip install -r requirements.txt

运行以下脚本将模型转换为GGUF格式:

    
python convert_hf_to_gguf.py ../Qwen-0.5b --outfile Qwen_instruct_0.5b.gguf --outtype f16

3.3 使用llama.cpp进行模型量化

将转换后的Qwen_instruct_0.5b.gguf移动到根目录,并创建Modelfile文件,内容如下:

    
FROM ./Qwen_instruct_0.5b.gguf

运行以下命令进行量化并创建模型:

    
ollama create -q Q4_K_M mymodel3 -f ./Modelfile

3.4 运行模型

通过以下命令运行量化后的模型:

    
ollama run mymodel3

四、自定义Prompt

Ollama支持通过自定义Prompt来调整模型的行为,使其生成更符合需求的文本。

4.1 创建Modelfile文件

在根目录下创建一个名为Modelfile的文件,内容如下:

    
FROM llama3.1
# 设置温度参数,值越高生成内容越随机
PARAMETER temperature 1
# 设置上下文窗口大小,控制LLM生成的上下文长度
PARAMETER num_ctx 4096

# 设置自定义系统消息,指定聊天助手的行为
SYSTEM You are Mario from super mario bros, acting as an assistant.

4.2 创建模型

运行以下命令创建模型:

    
ollama create mymodel -f ./Modelfile

4.3 运行模型

通过以下命令运行模型:

    
ollama run mymodel

此时,模型会根据自定义Prompt生成文本。例如,如果你设置了Mario的身份,模型会以Mario的语气进行对话。

最后

通过Ollama自定义导入模型的过程虽然涉及多个步骤,但每一步都非常清晰。无论是直接导入GGUF文件,还是通过llama.cpp进行转换和量化,甚至是自定义Prompt,都体现了Ollama的灵活性和强大功能。如果你对本地语言模型有个性化需求,不妨试试这些方法,探索更多可能性!

阅读全文
AI工具教程
免费领取AI学习资料 进AI副业交流群
礼物
AI工具教程
免费领取AI学习资料 进AI副业交流群