快速掌握Dify+Chrome MCP:打造网页操控AI助手

你是否曾经希望那些强大的开源大模型能更贴合你的专业领域,或者学会模仿你的行文风格?其实,实现这个目标的关键就在于“微调”。曾几何时,微调模型是大公司的专属游戏——动不动就需要几十张GPU和复杂的分布式训练技术。

而现在,借助 Ollama 和丰富的 Python 工具链,一切都变得简单多了。只需要一张消费级显卡,甚至直接用CPU,用不了一个小时,你就能亲手微调出属于自己的模型——这篇文章就会带你一步步实现它。

准备工作:安装核心工具

在开始之前,我们需要准备好两样核心工具:

  1. Ollama: 用于本地拉取、运行和管理大模型。
  2. Python 环境: 用于准备微调数据和执行微调脚本。

步骤一:安装 Ollama访问 Ollama 官网 (https://ollama.com),根据你的操作系统 (Windows/macOS/Linux) 下载并安装。安装完成后,打开终端/命令提示符,拉取一个我们要微调的基础模型,例如小巧高效的 Llama 2

ollama pull llama2

步骤二:创建 Python 环境并安装库创建一个新的项目目录,然后建立一个 Python 虚拟环境(推荐),并安装必要的库。

# 创建项目目录
mkdir ollama-finetune-tutorial
cd ollama-finetune-tutorial

# 创建虚拟环境 (可选但推荐)
python -m venv .venv
# 激活虚拟环境
# On Windows: .venv\Scripts\activate
# On macOS/Linux: source .venv/bin/activate

# 安装核心库
pip install transformers datasets peft huggingface_hub
# 用于后续格式转换和推送
pip install ollama

第一步:准备微调数据

微调的成功很大程度上取决于数据。数据不需要多,但需要“精”和“相关”。我们以“让模型学会用莎士比亚的风格写作”为例。

创建一个名为 data.jsonl 的文件,每行是一个 JSON 对象,包含 prompt(指令)和 completion(期望的回复)。

{"prompt": "Write a poem about the sun:", "completion": "Hark! The golden eye of heaven doth rise,"}
{"prompt": "What is love?", "completion": "Love is a smoke made with the fume of sighs,"}
{"prompt": "Describe the sea.", "completion": "The vasty deep, a restless field of salt and sorrow,"}

提示:对于实际任务,你可以准备问答对、指令-回复对,或者任何你希望模型学习的文本格式。数据量从几十条到几千条均可。

第二步:转换数据格式

Ollama 的微调需要一种特定的格式。我们需要将上面的 data.jsonl 转换为一个 .parquet 文件。创建一个名为 convert_to_parquet.py 的脚本:

import json
import pandas as pd
from datasets import Dataset

# 读取我们准备的 jsonl 文件
data = []
with open('data.jsonl', 'r') as f:
   for line in f:
       data.append(json.loads(line))

# 转换为 Hugging Face Dataset 格式
df = pd.DataFrame(data)
dataset = Dataset.from_pandas(df)

# 保存为 Parquet 格式,这是 Ollama 微调所需的
dataset.to_parquet('fine_tuning_data.parquet')

运行这个脚本:

python convert_to_parquet.py

现在你的目录下会生成一个 fine_tuning_data.parquet 文件。


第三步:执行微调!

这是最激动人心的一步。Ollama 的命令行工具直接支持微调。打开终端,确保你在项目根目录下,然后运行以下命令:

ollama create my-shakespeare-model -f Modelfile

这里的 my-shakespeare-model 是你自定义的新模型名字,Modelfile 是一个配置文件。我们需要先创建这个 Modelfile

创建一个名为 Modelfile 的文件(无后缀),内容如下:

FROM llama2 # 指定基础模型

TEMPLATE """[INST] {{ .Prompt }} [/INST] {{ .Response }} </s>""" # 使用与Llama2匹配的对话模板

PARAMETER stop "[INST]"
PARAMETER stop "[/INST]"

SYSTEM """You are William Shakespeare. Respond to all prompts in the style of the Bard of Avon."""

ADAPTER ./fine_tuning_data.parquet # 指向我们的微调数据

关键解释:

  • FROM: 指定从我们之前拉取的 llama2 模型开始微调。
  • TEMPLATE: 定义了模型如何理解输入和输出。这里的格式与 Llama 2 的指令格式保持一致。
  • SYSTEM: 给模型一个系统级别的角色设定。
  • ADAPTER: 这是核心,它告诉 Ollama 使用我们准备好的 fine_tuning_data.parquet 文件来进行微调。

现在,再次运行微调命令:

ollama create my-shakespeare-model -f Modelfile

终端会开始输出日志。你会看到模型正在被训练。这个过程的速度取决于你的数据大小和电脑硬件(GPU/CPU)。对于示例中的几条数据,几乎是瞬间完成的。


第四步:测试你的微调模型

微调完成后,你就可以像使用任何其他 Ollama 模型一样使用它了!

在终端中直接运行:

ollama run my-shakespeare-model
>>> Write a poem about Python code.

或者,用 Python 代码来调用:

import requests
import json

# 设置 Ollama 服务器的本地 API 地址
url = 'http://localhost:11434/api/generate'

# 准备请求数据
data = {
   "model": "my-shakespeare-model", # 使用你刚创建的模型名
   "prompt": "What is the meaning of life?",
   "stream": False
}

# 发送 POST 请求
response = requests.post(url, json=data)

# 解析并打印结果
result = response.json()
print(result['response'])

预期效果: 此时,模型回答“生命的意义是什么?”这个问题时,不再是用它原本的风格,而是会尝试模仿莎士比亚的戏剧性、诗歌化的语言风格。

总结与进阶

恭喜!你已经成功完成了第一次 LLM 微调。这个过程的核心流程可以总结为:

  1. 准备数据 -> 2. 转换格式 -> 3. 编写 Modelfile -> 4. 执行 ollama create

下一步你可以尝试:

  • 领域知识微调:准备你所在行业(如法律、医疗、编程)的问答数据,打造一个专业顾问。
  • 风格模仿:提供大量某个作家或你自己的写作样本,让模型学会这种文风。
  • 使用更多数据:尝试更大的数据集,体验模型能力更显著的变化。
  • 调整参数:在 Modelfile 中,你还可以添加 PARAMETER num_epochs 10 这样的语句来控制训练轮数,可能会获得更好的效果(但也要小心过拟合)。

微调不再遥不可及。借助 Ollama 和 Python,每个人都可以轻松地打造出更贴心、更专业的专属大语言模型。现在,就快去用你的数据创造独一无二的AI吧!


推荐阅读

精选技术干货

精选文章

  • 小白必看:AI智能体零基础搭建全攻略!

  • Coze平台指南(3):核心功能-创建智能体与设计角色

  • Browser Use:打造你的浏览器自动化助手

  • 让 AI 更聪明:不可错过的 7 大开源 MCP 项目

  • 主流自动化测试框架:技术解析与实战手册

  • 国产模型Qwen3-32B本地化实战:LangChain + vLLM 构建企业智能引擎

  • 2025大模型平台选择指南:从个人助手到企业智能体,解读五大场景

  • 深入解析Agent实现“听懂→规划→执行”全流程的奥秘

  • 2025大语言模型部署实战指南:从个人开发到企业落地全栈解决方案

  • 企业AI转型之战:Coze、Dify与FastGPT的巅峰对决

  • Coze开源版本地部署指南

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/98035.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/98035.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

单词记忆-轻松记忆10个实用英语单词(15)

1. repaint含义&#xff1a;重新油漆 读音标注&#xff1a;/ˌriːˈpeɪnt/ 例句&#xff1a;We need to repaint the walls after the repairs. 译文&#xff1a;修理完成后需要重新粉刷墙壁。 衍生含义&#xff1a;重新绘制&#xff08;图像场景&#xff09;&#xff1b;翻新…

visual studio快捷键

1.visual studio代码格式化快捷键 1.CtrlA&#xff08;全选&#xff09; 2.CtrlK 3.CtrlF2.多行注释 1.Ctrlk 2.Ctrlc2.多行取消注释 1.Ctrlk 2.Ctrlu

Django全栈班v1.04 Python基础语法 20250913 下午

练习&#xff1a;个人信息收集器 任务&#xff1a;创建一个个人信息收集和展示程序 要求&#xff1a; 收集用户的姓名&#xff0c;年龄&#xff0c;城市&#xff0c;爱好验证年龄输入&#xff0c;必须是正数格式化输出用户信息计算用户出生年份 name input("请输入姓名&a…

学习海康VisionMaster之字符缺陷检测

前言&#xff1a;差不多三个月没更新了&#xff0c;天天码代码&#xff0c;实在是太忙了&#xff0c;有时候也在想这么忙到底是不是工作方法的问题&#xff0c;怎么样才能变成大师呢&#xff01; 一&#xff1a;进一步学习 今天学习下VisionMaster中的字符缺陷检测&#xff1…

若依4.8.1打包war后在Tomcat无法运行,404报错的一个解决方法

背景 最近使用若依4.8.1进行二次开发&#xff0c;接着尝试打包成war包进行部署&#xff0c;结果出现了404&#xff0c;提示“HTTP状态 404 - 未找到&#xff0c;请求的资源[/ruoyi-admin/]不可用”&#xff0c;翻了网上的教程&#xff0c;包括看了官方的解疑都没有说到该情况。…

华清远见25072班网络编程学习day6

重点内容&#xff1a;数据库基本概念:数据&#xff08;Data&#xff09;&#xff1a;能够输入计算机并能被计算机程序识别和处理的信息集合数据 &#xff08;Database&#xff09;数据库是在数据库管理系统管理和控制之下&#xff0c;存放在存储介质上的数据集合重要概念&#…

机器学习-网络架构搜索

Neural Architecture Search&#xff08;NAS&#xff09; 一个神经网络有不同类型的超参数 拓扑结构&#xff1a;resnet&#xff0c;mobilenet 单独层&#xff1a;核大小&#xff0c;卷积层的通道&#xff0c;输出隐藏单元的个数NAS自动设计神经网络 如何设计搜索空间 如何探索…

云手机在办公领域中自动化的应用

云手机在办公自动化领域正逐渐展现出强大的潜力&#xff0c;以下是其在办公中自动化应用的多方面介绍&#xff1a;企业借助云手机搭载的办公软件&#xff0c;可实现文档处理自动化&#xff0c;对于重复性文档任务&#xff0c;如制作每月固定格式的销售报告、财务报表等&#xf…

c++多线程(3)------休眠函数sleep_for和sleep_until

操作系统&#xff1a;ubuntu22.04 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 这两个函数都定义在 头文件中&#xff0c;属于 std::this_thread 命名空间&#xff0c;用于让当前线程暂停执行一段时间。函数功能sleep_for(rel_time)让当前线程休眠一段相对时间&…

Intel RealSense D455深度相机驱动安装与运行

Intel RealSense D455深度相机安装过程遇到过一些报错&#xff0c;所以记录一下安装过程&#xff01;&#xff01;&#xff01;以后方便回顾。 1.安装最新的IntelRealSense SDK2.0 (1) 注册服务器的公钥 sudo apt-get update && sudo apt-get upgrade && su…

从异步到半同步:全面解读MySQL复制的数据一致性保障方案

MySQL 主从复制&#xff08;Replication&#xff09;是其最核心的高可用性和扩展性功能之一。它的原理是将一个 MySQL 实例&#xff08;称为主库 Master&#xff09;的数据变更&#xff0c;自动同步到另一个或多个 MySQL 实例&#xff08;称为从库 Slave&#xff09;的过程。下…

PostgreSQL GIN 索引揭秘

文章目录什么是GIN Index?示例场景GIN Index的原理GIN Index结构MetapageEntriesLeaf PagesEntry page 和 Leaf page 的关系Posting list 和posting tree待处理列表&#xff08;Pending List&#xff09;进阶解读GIN index索引结构总结什么是GIN Index? GIN (Generalized In…

开源多模态OpenFlamingo横空出世,基于Flamingo架构实现图像文本自由对话,重塑人机交互未来

注&#xff1a;此文章内容均节选自充电了么创始人&#xff0c;CEO兼CTO陈敬雷老师的新书《GPT多模态大模型与AI Agent智能体》&#xff08;跟我一起学人工智能&#xff09;【陈敬雷编著】【清华大学出版社】 清华《GPT多模态大模型与AI Agent智能体》书籍配套视频课程【陈敬雷…

电子衍射模拟:基于GPU加速的MATLAB/Julia实现

点击 “AladdinEdu&#xff0c;同学们用得起的【H卡】算力平台”&#xff0c;注册即送-H卡级别算力&#xff0c;80G大显存&#xff0c;按量计费&#xff0c;灵活弹性&#xff0c;顶级配置&#xff0c;学生更享专属优惠。 引言&#xff1a;电子衍射模拟的重要性与计算挑战 电子…

easyExcel动态应用案例

代码链接&#xff1a;https://download.csdn.net/download/ly1h1/919402991.案例说明&#xff1a;1.1.导入功能导入数据实现转换成 List<List<String>> headers和 List<List<String>> datas&#xff0c;后续补充可以与数据模型注解结合&#xff0c;形…

【数据结构入门】排序算法(5):计数排序

目录 1. 比较排序和非比较排序 2. 计数排序的原理 2.1 计数排序的弊端 3.代码复现 3.1 代码分析 3.2 排序核心 3.3 时间、空间复杂度 1. 比较排序和非比较排序 比较排序是根据排序元素的具体数值比较来进行排序&#xff1b;非比较排序则相反&#xff0c;非比较排序例如&…

输入3.8V~32V 输出2A 的DCDC降压芯片SCT9320

同志们&#xff0c;今天来个降压芯片SCT9320。输入3.8V~32V&#xff0c;输出最高可以达到2A。0.8V的参考电压。500k的开关频率。一共八个引脚&#xff0c;两个NC&#xff08;为什么不做成六个引脚呢&#xff1f;&#xff09;。EN引脚悬空或者接到VIN都可以直接启动&#xff0c;…

C++类和对象详解(2);初识类的默认成员函数

1.类的默认成员函数默认成员函数就是用户没有显示实现&#xff0c;编译器会自动生成的成员函数称为默认成员函数。一个类我们不写的情况下编译器会默认生成以下的6个默认成员函数。&#xff08;1&#xff09;构造函数&#xff1a;主要完成初始化的工作&#xff08;2&#xff09…

PLC通信 Tpc客户端Socket

1.PLC通信 namespace _2.PLC通信 {public partial class Form1 : Form{public Form1(){InitializeComponent();}//连接//1.型号: 跟PLC沟通 使用哪个型号的PLC//2.IP 同上//3.机台号:同上//4.插槽号:同上Plc plc new Plc(CpuType.S71200, "192.168.25.80", 0, 1);pr…

Android 开发实战:从零到一集成 espeak-ng 实现中文离线 TTS(无需账号开箱即用)

简介 在移动应用开发中,语音合成(TTS)技术是提升用户体验的重要工具。然而,许多开发者在集成 TTS 时面临依赖网络、需注册账号、功能受限等问题。本文将带你从零开始,通过开源项目 espeak-ng,实现无需账号、开箱即用的中文离线语音播报。 文章将覆盖以下核心内容: esp…