Ollama + Python 极简工作流
你是否曾想过让强大的开源大模型(LLM)更懂你的专业领域,或者更能模仿你的写作风格?微调(Fine-Tuning)就是实现这一目标的钥匙。过去,微调是资源雄厚的大公司的专利,动辄需要数十张 GPU 和复杂的分布式训练知识。
但现在,感谢 Ollama
和 Python
生态的强大工具,这一切变得前所未有的简单。本文将手把手带你,用一个消费级 GPU(甚至 CPU!),在 1 小时内完成属于你自己的模型微调。
测试开发全景图:人工智能测试、智能驱动、自动化、测试开发、左移右移与DevOps的持续交付
准备工作:安装核心工具
在开始之前,我们需要准备好两样核心工具:
Ollama: 用于本地拉取、运行和管理大模型。
Python 环境: 用于准备微调数据和执行微调脚本。
步骤一:安装 Ollama 访问 Ollama 官网 (https://ollama.com),根据你的操作系统 (Windows/macOS/Linux) 下载并安装。安装完成后,打开终端/命令提示符,拉取一个我们要微调的基础模型,例如小巧高效的 Llama 2
:
步骤二:创建 Python 环境并安装库创建一个新的项目目录,然后建立一个 Python 虚拟环境(推荐),并安装必要的库。
第一步:准备微调数据
微调的成功很大程度上取决于数据。数据不需要多,但需要“精”和“相关”。我们以“让模型学会用莎士比亚的风格写作”为例。
创建一个名为 data.jsonl
的文件,每行是一个 JSON 对象,包含 prompt
(指令)和 completion
(期望的回复)。
提示:对于实际任务,你可以准备问答对、指令-回复对,或者任何你希望模型学习的文本格式。数据量从几十条到几千条均可。
第二步:转换数据格式
Ollama 的微调需要一种特定的格式。我们需要将上面的 data.jsonl
转换为一个 .parquet
文件。创建一个名为 convert_to_parquet.py
的脚本:
运行这个脚本:
现在你的目录下会生成一个 fine_tuning_data.parquet
文件。
第三步:执行微调!
这是最激动人心的一步。Ollama 的命令行工具直接支持微调。打开终端,确保你在项目根目录下,然后运行以下命令:
这里的 my-shakespeare-model
是你自定义的新模型名字,Modelfile
是一个配置文件。我们需要先创建这个 Modelfile
。
创建一个名为 Modelfile
的文件(无后缀),内容如下:
关键解释:
FROM
: 指定从我们之前拉取的llama2
模型开始微调。TEMPLATE
: 定义了模型如何理解输入和输出。这里的格式与 Llama 2 的指令格式保持一致。SYSTEM
: 给模型一个系统级别的角色设定。ADAPTER
: 这是核心,它告诉 Ollama 使用我们准备好的fine_tuning_data.parquet
文件来进行微调。
现在,再次运行微调命令:
终端会开始输出日志。你会看到模型正在被训练。这个过程的速度取决于你的数据大小和电脑硬件(GPU/CPU)。对于示例中的几条数据,几乎是瞬间完成的。
第四步:测试你的微调模型
微调完成后,你就可以像使用任何其他 Ollama 模型一样使用它了!
在终端中直接运行:
或者,用 Python 代码来调用:
预期效果: 此时,模型回答“生命的意义是什么?”这个问题时,不再是用它原本的风格,而是会尝试模仿莎士比亚的戏剧性、诗歌化的语言风格。
总结与进阶
恭喜!你已经成功完成了第一次 LLM 微调。这个过程的核心流程可以总结为:
准备数据 -> 2. 转换格式 -> 3. 编写 Modelfile -> 4. 执行
ollama create
下一步你可以尝试:
领域知识微调:准备你所在行业(如法律、医疗、编程)的问答数据,打造一个专业顾问。
风格模仿:提供大量某个作家或你自己的写作样本,让模型学会这种文风。
使用更多数据:尝试更大的数据集,体验模型能力更显著的变化。
调整参数:在
Modelfile
中,你还可以添加PARAMETER num_epochs 10
这样的语句来控制训练轮数,可能会获得更好的效果(但也要小心过拟合)。
微调不再遥不可及。借助 Ollama 和 Python,每个人都可以轻松地打造出更贴心、更专业的专属大语言模型。现在,就快去用你的数据创造独一无二的 AI 吧!
评论