news 2026/4/21 1:29:37

微调后模型怎么用?Ollama运行教程来了

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
微调后模型怎么用?Ollama运行教程来了

微调后模型怎么用?Ollama运行教程来了

1. 引言

1.1 大模型微调的现实挑战

随着大型语言模型(LLM)在自然语言处理领域的广泛应用,如何让通用模型适配特定业务场景成为关键问题。直接训练一个全新模型成本高昂,而微调(Fine-tuning)技术则提供了一条高效路径——基于预训练模型,使用领域数据进行参数调整,既能保留原有能力,又能提升专业任务表现。

然而,传统微调方法面临两大瓶颈:显存占用高训练速度慢。尤其是在消费级硬件上,7B以上参数规模的模型往往难以承载。这限制了开发者和研究者的实践门槛。

1.2 Unsloth:高效微调的新选择

Unsloth 是一个开源的 LLM 微调与强化学习框架,其核心目标是“让人工智能更准确且易于获取”。它通过优化底层计算流程,在保持模型性能的同时实现:

  • 训练速度提升 2 倍
  • 显存消耗降低 70%

这一特性使其非常适合在资源受限环境(如 Colab 免费版 T4 GPU)中完成大模型微调任务。

1.3 本文目标与价值

本文将完整演示从模型微调到本地部署的全流程,重点解决以下问题:

  • 如何使用 Unsloth 高效完成 LLM 微调
  • 如何将微调后的模型导出为通用格式
  • 如何通过 Ollama 在本地运行自定义模型

适合 AI 开发者、NLP 工程师及希望将大模型应用于垂直领域的技术爱好者参考。


2. 环境准备与依赖安装

2.1 运行环境说明

本方案采用“云端训练 + 本地部署”架构:

  • 训练端:Google Colab(免费 T4 GPU,约 15GB 显存)
  • 部署端:本地设备(建议至少 8GB 内存,支持 NVIDIA GPU 更佳)
  • 网络要求:稳定互联网连接,用于下载模型与上传结果

注意:若无法访问外部服务,请确保已配置合规网络代理。

2.2 安装 Ollama(本地)

Ollama 是一款轻量级工具,支持在本地一键运行各类 LLM 模型。访问 Ollama 官网 下载对应操作系统版本并安装。

安装完成后,验证是否成功:

ollama --version

输出类似0.1.36表示安装正常。

2.3 Colab 中安装 Unsloth

在 Google Colab 新建 Notebook,并执行以下命令安装所需库:

%%capture !pip install unsloth !pip uninstall unsloth -y && pip install --upgrade --no-cache-dir --no-deps git+https://github.com/unslothai/unsloth.git !pip install bitsandbytes unsloth_zoo

上述代码含义如下:

  • %%capture:隐藏冗长安装日志,保持界面整洁
  • 第二行:从 GitHub 获取最新版 Unsloth,确保功能完整性
  • bitsandbytes:支持 4-bit 量化,显著降低显存需求
  • unsloth_zoo:提供常用预训练模型接口

2.4 验证安装结果

安装完成后,可通过以下命令检查环境状态:

conda env list conda activate unsloth_env python -m unsloth

若无报错信息,则表明 Unsloth 环境已正确配置。


3. 模型加载与初始测试

3.1 加载基础模型

选择unsloth/DeepSeek-R1-Distill-Llama-8B作为基础模型,该模型经过蒸馏优化,适合医疗等专业领域微调。

from unsloth import FastLanguageModel import torch max_seq_length = 2048 dtype = None load_in_4bit = True model, tokenizer = FastLanguageModel.from_pretrained( model_name="unsloth/DeepSeek-R1-Distill-Llama-8B", max_seq_length=max_seq_length, dtype=dtype, load_in_4bit=load_in_4bit, )

关键参数说明:

  • max_seq_length=2048:支持较长上下文理解
  • load_in_4bit=True:启用 4-bit 量化,显存减少约 75%

3.2 微调前推理测试

在开始训练前,先观察模型原始表现。以医疗咨询为例:

prompt_style = """以下是描述任务的指令,以及提供进一步上下文的输入。 请写出一个适当完成请求的回答。 在回答之前,请仔细思考问题,并创建一个逻辑连贯的思考过程,以确保回答准确无误。 ### 指令: 你是一位精通医学知识的医生,能够回答关于疾病、治疗方案和健康建议的问题。 请回答以下医疗问题。 ### 问题: {} ### 回答: <think>{}""" question = "我最近总是感到疲劳,可能是什么原因?" FastLanguageModel.for_inference(model) inputs = tokenizer([prompt_style.format(question, "")], return_tensors="pt").to("cuda") outputs = model.generate(input_ids=inputs.input_ids, attention_mask=inputs.attention_mask, max_new_tokens=1200, use_cache=True) response = tokenizer.batch_decode(outputs) print(response[0])

此时模型回答通常较为泛化,缺乏深度医学分析能力,需通过微调增强专业性。


4. 数据集准备与格式化

4.1 选用中文医疗数据集

使用 HuggingFace 上公开的shibing624/medical数据集,包含真实医疗问答对,适用于 fine-tune 场景。

from datasets import load_dataset dataset = load_dataset("shibing624/medical", 'finetune', split="train[0:200]", trust_remote_code=True) print(dataset.column_names)

输出字段为:['instruction', 'input', 'output'],分别对应问题、思考过程和标准答案。

4.2 构建统一提示模板

为保证训练一致性,设计结构化 prompt 模板:

train_prompt_style = """以下是描述任务的指令,以及提供进一步上下文的输入。 请写出一个适当完成请求的回答。 在回答之前,请仔细思考问题,并创建一个逻辑连贯的思考过程,以确保回答准确无误。 ### 指令: 你是一位精通医学知识的医生,能够回答关于疾病、治疗方案和健康建议的问题。 请回答以下医疗问题。 ### 问题: {} ### 回答: <思考> {} </思考> {}"""

4.3 格式化训练样本

编写函数将原始数据映射为模型可学习格式:

EOS_TOKEN = tokenizer.eos_token def formatting_prompts_func(examples): inputs = examples["instruction"] cots = examples["input"] outputs = examples["output"] texts = [] for input, cot, output in zip(inputs, cots, outputs): text = train_prompt_style.format(input, cot, output) + EOS_TOKEN texts.append(text) return {"text": texts} dataset = dataset.map(formatting_prompts_func, batched=True)

此步骤确保每条训练样本均符合预设结构,便于模型学习“问题→思考→回答”的推理链。


5. 执行微调训练

5.1 配置 LoRA 参数

Unsloth 基于LoRA(Low-Rank Adaptation)实现高效微调,仅更新部分权重矩阵,大幅降低显存开销。

model = FastLanguageModel.get_peft_model( model, r=16, target_modules=["q_proj", "k_proj", "v_proj", "o_proj", "gate_proj", "up_proj", "down_proj"], lora_alpha=16, lora_dropout=0, bias="none", use_gradient_checkpointing="unsloth", random_state=3407, use_rslora=False, loftq_config=None, )

参数解释:

  • r=16:LoRA 秩,控制新增参数规模
  • target_modules:指定注意力层与前馈网络模块进行适配
  • use_gradient_checkpointing="unsloth":启用显存优化策略

5.2 设置训练超参数

使用 Hugging Face 的SFTTrainer进行监督微调:

from trl import SFTTrainer from transformers import TrainingArguments from unsloth import is_bfloat16_supported trainer = SFTTrainer( model=model, tokenizer=tokenizer, train_dataset=dataset, dataset_text_field="text", max_seq_length=max_seq_length, dataset_num_proc=2, packing=False, args=TrainingArguments( per_device_train_batch_size=2, gradient_accumulation_steps=4, warmup_steps=5, max_steps=75, learning_rate=2e-4, fp16=not is_bfloat16_supported(), bf16=is_bfloat16_supported(), logging_steps=1, optim="adamw_8bit", weight_decay=0.01, lr_scheduler_type="linear", seed=3407, output_dir="outputs", report_to="none", ), ) trainer.train()

训练耗时约 20–30 分钟,结束后模型已具备初步医疗问答能力。


6. 模型导出与上传

6.1 导出为 GGUF 格式

GGUF(GPT-Generated Unified Format)是一种高效的二进制模型存储格式,专为本地推理设计,支持多精度量化。

from google.colab import userdata HUGGINGFACE_TOKEN = userdata.get('HUGGINGFACE_TOKEN') # 保存为 8-bit 量化格式(推荐平衡大小与性能) model.save_pretrained_gguf("model", tokenizer)

其他可选格式:

# 16-bit(高精度,文件较大) model.save_pretrained_gguf("model_f16", tokenizer, quantization_method="f16") # 4-bit(最小体积,适合低配设备) model.save_pretrained_gguf("model_q4", tokenizer, quantization_method="q4_k_m")

6.2 上传至 Hugging Face Hub

便于后续分享与部署:

from huggingface_hub import create_repo create_repo("xiongwenhao/medical_finetuned", token=HUGGINGFACE_TOKEN, exist_ok=True) model.push_to_hub_gguf("xiongwenhao/medical_finetuned", tokenizer, token=HUGGINGFACE_TOKEN)

提示:需提前在 HuggingFace Settings 创建具有写权限的 Token,并在 Colab Secrets 中配置。


7. 使用 Ollama 运行微调模型

7.1 本地拉取并运行模型

上传成功后,即可通过 Ollama 直接调用:

ollama run hf.co/xiongwenhao/medical_finetuned

Ollama 会自动下载 GGUF 文件并在本地启动服务,支持 CLI 和 API 调用。

7.2 自定义模型名称(可选)

为方便管理,可创建别名:

ollama create medical-doctor -f Modelfile

其中Modelfile内容如下:

FROM hf.co/xiongwenhao/medical_finetuned NAME medical-doctor

之后可通过ollama run medical-doctor启动。

7.3 测试本地模型响应

进入交互模式后输入:

我最近总是感到疲劳,可能是什么原因?

对比微调前后,可见回答更加专业化,包含贫血、甲状腺功能减退、慢性疲劳综合征等多种可能性分析,并给出就医建议。


8. 总结

8.1 核心成果回顾

本文实现了完整的 LLM 微调与部署闭环:

  1. 使用Unsloth在 Colab 上完成 8B 级模型微调
  2. 利用LoRA + 4-bit 量化显著降低资源消耗
  3. 将模型导出为GGUF格式并上传至 Hugging Face
  4. 通过Ollama在本地运行自定义模型

整个过程无需高端硬件,普通开发者亦可复现。

8.2 实践建议

  • 小批量试训:首次训练建议使用 ≤200 条样本快速验证 pipeline
  • 合理设置 max_steps:避免过拟合,一般 50–100 步足够
  • 优先选择 q8_0 或 q4_k_m 量化:兼顾精度与部署效率
  • 定期备份模型:防止训练中断导致前功尽弃

8.3 扩展应用场景

该方法不仅适用于医疗领域,还可迁移至:

  • 法律咨询助手
  • 教育辅导机器人
  • 企业知识库问答系统
  • 客服自动化应答

只需更换相应领域数据集即可快速构建专用模型。


获取更多AI镜像

想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/17 21:03:51

通义千问2.5-7B镜像部署推荐:支持16种语言开发实战教程

通义千问2.5-7B镜像部署推荐&#xff1a;支持16种语言开发实战教程 1. 引言 1.1 业务场景描述 在当前快速发展的AI应用生态中&#xff0c;开发者对高性能、易部署、可商用的大模型需求日益增长。尤其是在企业级服务、智能客服、自动化脚本生成和多语言开发等场景下&#xff…

作者头像 李华
网站建设 2026/4/21 1:05:14

5个开源小模型部署推荐:Qwen3-4B-Instruct镜像免配置上手

5个开源小模型部署推荐&#xff1a;Qwen3-4B-Instruct镜像免配置上手 1. 引言&#xff1a;轻量级大模型的落地新选择 随着边缘计算和端侧AI需求的增长&#xff0c;如何在资源受限设备上高效运行高质量语言模型成为开发者关注的核心问题。传统大模型虽性能强大&#xff0c;但对…

作者头像 李华
网站建设 2026/4/18 8:03:38

零代码上手SAM3万物分割|Gradio界面+高性能PyTorch环境

零代码上手SAM3万物分割&#xff5c;Gradio界面高性能PyTorch环境 1. 技术背景与核心价值 近年来&#xff0c;图像分割技术在计算机视觉领域持续演进。传统方法依赖大量标注数据和特定任务训练&#xff0c;限制了其泛化能力。Meta发布的Segment Anything Model (SAM) 系列模型…

作者头像 李华
网站建设 2026/4/9 19:56:51

Windows 11笔记本待机耗电太快?3个简单步骤彻底解决待机续航问题

Windows 11笔记本待机耗电太快&#xff1f;3个简单步骤彻底解决待机续航问题 【免费下载链接】Win11Debloat 一个简单的PowerShell脚本&#xff0c;用于从Windows中移除预装的无用软件&#xff0c;禁用遥测&#xff0c;从Windows搜索中移除Bing&#xff0c;以及执行各种其他更改…

作者头像 李华
网站建设 2026/4/18 13:49:24

如何快速部署Windows流媒体服务器:完整实战指南

如何快速部署Windows流媒体服务器&#xff1a;完整实战指南 【免费下载链接】nginx-rtmp-win32 Nginx-rtmp-module Windows builds. 项目地址: https://gitcode.com/gh_mirrors/ng/nginx-rtmp-win32 想要在Windows系统上搭建专业的直播推流服务&#xff1f;nginx-rtmp-…

作者头像 李华