在Ubuntu系统中使用Ollama导入本地微调好的Qwen系列模型,需要将safetensors或.bin文件转换为Ollama支持的GGUF格式。以下是详细步骤(from DeepSeek):

方法1:使用llama.cpp转换(推荐)

1.1 安装必要的工具

# 更新系统
sudo apt update
sudo apt install build-essential cmake git

# 克隆llama.cpp
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
# 创建构建目录并进入
mkdir build
cd build
# 配置项目
cmake ..
# sudo apt install -y libcurl4-openssl-dev # 若 cmake 缺少 CURL 库依赖

1.2 准备模型文件

确保你的微调模型包含以下文件:

  • model.safetensorspytorch_model.bin
  • config.json
  • tokenizer.jsontokenizer_config.json

1.3 转换模型为GGUF格式

# 安装Python依赖
pip install torch transformers safetensors

# 将模型转换为GGUF格式(FP16)
python3 convert_hf_to_gguf.py /path/to/your/finetuned-qwen-model --outtype f16 --outfile /path/to/output/qwen-finetuned.gguf

# 或者转换为Q4_0量化格式以节省空间
python3 convert_hf_to_gguf.py /path/to/your/finetuned-qwen-model --outtype q4_0 --outfile /path/to/output/qwen-finetuned-q4_0.gguf

方法2:使用Ollama直接导入(如果支持格式)

2.1 创建Modelfile

创建一个名为 Modelfile 的文件:

FROM /path/to/your/qwen-finetuned.gguf

# 设置参数
PARAMETER temperature 0.7
PARAMETER num_ctx 4096

# 设置系统提示词(可选)
SYSTEM """你是经过微调的Qwen模型,专门用于特定任务..."""

TEMPLATE """{{ if .System }}<|im_start|>system
{{ .System }}<|im_end|>
{{ end }}{{ if .Prompt }}<|im_start|>user
{{ .Prompt }}<|im_end|>
{{ end }}<|im_start|>assistant
"""

# 设置停止词
PARAMETER stop "<|im_start|>"
PARAMETER stop "<|im_end|>"

2.2 创建Ollama模型

ollama create my-finetuned-qwen -f Modelfile

方法3:使用transformers库转换

如果上述方法不工作,可以使用Python脚本转换:

3.1 创建转换脚本

# convert_to_gguf.py
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch

model_path = "/path/to/your/finetuned-qwen-model"
output_path = "/path/to/output/qwen-finetuned.gguf"

# 加载模型和tokenizer
model = AutoModelForCausalLM.from_pretrained(
    model_path,
    torch_dtype=torch.float16,
    device_map="auto",
    trust_remote_code=True
)

tokenizer = AutoTokenizer.from_pretrained(
    model_path,
    trust_remote_code=True
)

# 保存为可转换的格式
model.save_pretrained("./temp_pytorch_model")
tokenizer.save_pretrained("./temp_pytorch_model")

然后使用llama.cpp转换这个临时目录。

方法4:直接使用GGUF文件(如果已有)

如果你已经有GGUF格式的模型:

# 直接创建Modelfile
echo "FROM /path/to/your/model.gguf" > Modelfile
ollama create my-qwen -f Modelfile

验证安装

# 列出模型
ollama list

# 测试模型
ollama run my-finetuned-qwen "你好,请介绍一下你自己"

常见问题解决

1. 内存不足

如果转换大模型时内存不足:

# 使用量化
python3 convert.py /path/to/model --outtype q4_0 --outfile model.gguf

2. 模型格式不支持

确保模型是完整的Hugging Face格式,包含所有必要文件。

3. Ollama无法加载

检查GGUF文件是否完整,并确保Modelfile中的模板设置正确。

最佳实践

  1. 备份原始模型:转换前备份你的微调模型
  2. 测试小模型:先用小模型测试转换流程
  3. 量化平衡:在模型大小和质量之间找到平衡
  4. 文档记录:记录微调参数和转换设置

完成这些步骤后,你就可以通过Ollama使用本地微调的Qwen模型了。

补充:

图形化界面

使用Ollama的图形化界面(https://github.com/ollama-webui/ollama-webui-lite):

git clone https://github.com/ollama-webui/ollama-webui-lite
cd ollama-webui-lite
npm ci
npm run dev

图形化界面会展示在:http://localhost:3000

Ollama 模型的删除

 ollama rm <your_model>
Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐