news 2026/4/16 0:22:48

模型微调完全指南:从LLaMa Factory到Ollama,收藏级教程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
模型微调完全指南:从LLaMa Factory到Ollama,收藏级教程

本文详细介绍了模型微调的概念与流程,解释了微调是对预训练模型部分参数的调整,成本远低于训练全新模型。文章重点阐述了微调四大步骤:准备高质量数据、训练模型、评估结果和使用模型。通过LLaMA Factory平台,从数据格式准备到图形化界面操作,再到GGUF格式转换,最终在Ollama中部署微调模型,完整呈现了从数据准备到模型部署的全流程实践,为读者提供了可操作的微调解决方案。


@ 目录

  • 一、什么是模型微调
  • 二、怎样微调模型
  • 三、使用 LLaMa Factory 微调模型
  • 四、在 Ollama 中运行微调模型

一、什么是模型微调

  • 模型微调,顾名思义,就是对模型微微做一些调整。为什么要做微调呢?如果可以的话,每个公司都想拥有一个属于自己的大模型。但是,现实比较残酷,训练一个大模型需要花太多的钱。按照一些大公司的说法,一个千亿参数的大模型,训练一次的成本大约需要几百万美元。这显然就超过一个普通公司承受的范围。虽然我们无法训练一个属于自己的大模型,但一个好消息是,我们可以做模型微调。
  • 大模型是构建于神经网络基础之上的,神经网络可以理解成一个一个的神经元构建的网络训练模型,就是在调整神经元之间的连接方式。一次完整的训练就相当于把所有的神经元连接都调整一遍,这个计算规模相当之大,是我们无法承受的。
  • 所谓微调,就是把一个训练好的模型中的一部分连接重新调整。因为只做了一部分的调整,所以,规模就要小得多,训练成本也就要小得多。
  • 前面说过,RAG 和模型微调可以解决同样的问题,从本质上说,就是把核心业务数据放在提示词里,还是放在模型里。
  • 两种做法各有优劣。放到提示词里,优势就是做法比较简单,但其问题的关键在于能否取到恰当的数据。如果不能取到恰当的数据,就可能会出现“幻觉”问题,也就是大模型会一本正经地胡说八道。放到模型里,优势是数据准确性会提高,但前提条件是在训练的时候,要准备高质量的数据,否则就是“垃圾进,垃圾出”了,而微调好一个模型,并不是一件很容易的事情。
  • 在工程实践中,二者往往是结合使用的。模型微调不是时刻在进行,所以,一些团队的做法是,用 RAG 的方式提取新的业务数据,积累到一定阶段,用这些数据进行模型微调,把这些数据内置到模型中,再把新模型替换到业务系统中。这样一来,既保证数据的新鲜,又保证了基本的服务质量。

二、怎样微调模型

  • 模型微调,需要我们先选定一个模型。如果选定的模型是像 OpenAI 这样的闭源模型,就需要使用其对应的模型微调服务。不过,使用这种服务也就意味着要把数据提供出去。所以,很多团队的实际做法是,基于开源模型的微调。

  • 具体的模型微调通常分成几个步骤:

    准备训练数据

    训练模型

    评估结果

    使用模型

  • 这其中最耗时耗力的,应该是准备数据了。首先,微调大模型需要多准备一些数据,数据量过少,可能看上去完全不起作用。毕竟大模型那么多参数,如果只改动几个,占比太低,就和没改动效果差不多。其次,数据也要精心挑选一下,还是那句话:垃圾进,垃圾出。所以,这个过程不是技术活,而是一个体力活。什么数据是好数据?最好由一个懂业务的人说了算。

  • 顺便说一下,因为准备数据耗时耗力,有人把一些整理好的数据开源了出来,Hugging Face 上有大量这种数据集。如果站在学习的角度,我们可以把这些数据集拿过来直接用。

  • 我们知道了要准备数据,但数据格式是什么样的呢?这取决于模型微调的具体方式,比如,OpenAI 的模型微调需要把数据准备成下面这样:

    {"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What's the capital of France?"}, {"role": "assistant", "content": "Paris, as if everyone doesn't know that already."}]}{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "Who wrote 'Romeo and Juliet'?"}, {"role": "assistant", "content": "Oh, just some guy named William Shakespeare. Ever heard of him?"}]}{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "How far is the Moon from Earth?"}, {"role": "assistant", "content": "Around 384,400 kilometers. Give or take a few, like that really matters."}]}
  • 接下来,我们就以 LLaMA Factory 为例具体看一下模型微调的过程。

三、使用 LLaMa Factory 微调模型

  • LLaMA Factory 是这样自我介绍的:它是一个简单易用且高效的大型语言模型(Large Language Model)训练与微调平台。它当然有很多优点,比如,支持很多不同的模型、支持很多训练方法,而且效率很高。如果你初次接触模型微调,它更真实的优点是,能够在本地运行,还有一个图形化的界面。

  • 使用 LLaMa Factory 需要先把它的代码 clone 下来。

    git clone https://github.com/hiyouga/LLaMA-Factory.git
  • 然后就是安装相应的依赖。为了不把现有的 Python 环境搞乱,我们还可以创建一个虚拟环境。

    cd LLaMA-Factoryconda create -n llama-factory python=3.12conda activate llama-factorypip install -e ".[torch,metrics]"
  • 安装依赖之后,我们就可以运行下面的命令判断安装是否成功。

    llamafactory-cli version
  • 接着,我们需要先准备一下训练数据。LlaMA Factory 支持 alpaca 格式和 sharegpt 格式,它们实际上都是 JSON 的格式。下面是一个 alpaca 格式的示例:

    [ { "instruction": "输入三支篮球队的名称并生成一个适当的口号。", "input": "输入:俄克拉荷马城雷霆队,芝加哥公牛队,布鲁克林网队。", "output": "输出: \"雷霆,公牛和网队:各显神通,角逐群雄!\"" }]
  • 接下来是 sharegpt 格式的示例:

    [ { "conversations": [ { "from": "human", "value": "你能解释一下算法分析中的大O记法概念吗?" }, { "from": "gpt", "value": "是的,大O表示法是一种描述算法性能随输入数据大小增加的方法。它用于估计算法在最坏情况下的时间复杂度或空间复杂度。大O中的“O”代表“数量级”,这意味着随着输入大小的增加,算法所需的操作数以一定的速率增长。\n\n例如,如果我们有一个需要n步才能解决大小为n的问题的算法,那么时间复杂度可以表示为O(n),这意味着操作数随着输入大小线性增长。如果我们有一个需要n^2步才能解决大小为n的问题的算法,那么时间复杂度可以表示为O(n^2),这意味着操作数随着输入大小二次方增长。\n\n还有其他几种大O表示法,如O(log n)、O(n log n)、O(2^n)等,它们代表了随着输入大小增加的不同操作数增长速率。通过分析算法的大O表示法,我们可以比较不同算法的性能,并选择给定问题最有效的算法。\n\n您是否有关于大O表示法或算法分析的特定问题?" } ], "tools": "[]" }]
  • 从这两个示例我们不难看出,它们就是一个对话的结构,相当于一个人问了一个问题,大模型给出了一个回答。从简单直接的角度,sharegpt 格式更符合我们常规理解的会话形式,如果你是初次尝试,不妨使用这个格式。

  • 确定了数据格式,我们需要把数据改写成这个格式,把它们存到一个文件里。然后,把这个文件放到 LLaMa Factory 的 data 目录里。接着,在 dataset_info.json 里加上这个文件的描述。dataset_info.json 相当于是一个元文件,用来描述在 LLaMa Factory 界面上可以看到的数据是什么样的。

  • 下面是一个例子,我们指定了文件的名称和相应的文件格式:

    "dreamhead": { "file_name": "dreamhead.json", "formatting": "sharegpt", "columns": { "messages": "conversations", "system": "system", "tools": "tools" }}
  • 准备好数据,我们就可以开始训练了。前面说了,LLaMa Factory 对新手最友好的地方是它提供了图形化界面,我们可以通过下面的命令,启动图形化界面。

    llamafactory-cli webui
  • LLaMa Factory 的图形界面如下所示。

  • 虽然说是一个图形界面,但这个界面上的参数之多,已经达到了眼花缭乱的地步。不过,我们并不需要一上来就把所有的参数搞清楚,要微调自己的模型,最核心的几个参数是:

    模型名称,也就是我们用于微调的基础模型。

    数据集,在这里可以找到前面准备好的数据。

    除此之外,我们还需要知道输出目录,毕竟,我们还是要结果的。

  • 做好了最基础的配置,我们只要点击“开始”,就可以开始执行训练了,训练的时间会因为配置的差异有所不同。如果一切顺利,我们只需要等待这个过程结束。

  • 这些界面上的各种配置,最终都会以命令行的方式在后台运行。点击“预览命令”,我们就可以看到在后台要执行的命令。我们完全可以自己在命令行里执行这个命令进行训练。

  • 当训练结束,我们可以在输出目录中找到微调之后的模型。有了模型,我们怎么把它用起来呢?最简单的方案就是把它接入到 Ollama 中。

四、在 Ollama 中运行微调模型

  • 怎样在 Ollama 中接入一个新模型呢?我们需要给 Ollama 提供一份模型描述文件,也就是它的 Modelfile。在 Ollama 上运行的每个模型都有自己的 Modelfile,我们可以通过命令查看它们的 Modelfile,比如:

    ollama show qwen2.5:0.5b --modelfile
  • 下面是一个 Modelfile 的示例:

    FROM <base model>ADAPTER /path/to/model/adapter_model.gguf
  • 在这个 Modelfile 里,FROM 指向基础模型,而 ADAPTER 指向了微调过的文件。不过,你可能会发现在生成模型的目录下并没有一个 gguf 文件。GGUF 是一种模型文件的存储格式,它也是 Ollama 支持的文件格式。坏消息是,我们微调的模型并不是以这种格式存储的,好消息是,我们可以把自己的模型转换成 GGUF。

  • 在微调过程中,我们采用了缺省的 LoRA(Low-Rank Adaptation),这是一种微调模型的技术。llama.cpp这个开源项目就提供了一个转换程序,可以将 LoRA 的结果转换成 GGUF 格式。这个转换程序是一个单独的 Python 程序,我们可以在本地执行它,其主要的依赖就是 transformers这个库。安装好依赖之后,我们就执行这个转换程序,得到相应的 GGUF 文件。

    python convert_lora_to_gguf.py /path/to/model
  • 配置好相应的 Modelfile,我们就可以在 Ollama 中创建一个自己的模型了。

    ollama create <your-model-name> -f /path/to/Modelfile
  • 如果一切顺利,你就得到了一个可以在 Ollama 中运行的模型,然后,我们就像运行一个普通的模型一样运行它。

    ollama run <your-model-name>
  • 好,你现在可以测试你的模型了,评估微调之后大模型的效果,如果觉得不理想,就需要回到前面重新来过。正如上一讲所说,一个模型接入了 Ollama,它就能接入到 One-API 上,而接入了大模型代理,我们就可以在项目中访问它了。这样,我们就完成了一个完整的微调流程。

AI时代,未来的就业机会在哪里?

答案就藏在大模型的浪潮里。从ChatGPT、DeepSeek等日常工具,到自然语言处理、计算机视觉、多模态等核心领域,技术普惠化、应用垂直化与生态开源化正催生Prompt工程师、自然语言处理、计算机视觉工程师、大模型算法工程师、AI应用产品经理等AI岗位。

掌握大模型技能,就是把握高薪未来。

那么,普通人如何抓住大模型风口?

AI技术的普及对个人能力提出了新的要求,在AI时代,持续学习和适应新技术变得尤为重要。无论是企业还是个人,都需要不断更新知识体系,提升与AI协作的能力,以适应不断变化的工作环境。

因此,这里给大家整理了一份《2025最新大模型全套学习资源》,包括2025最新大模型学习路线、大模型书籍、视频教程、项目实战、最新行业报告、面试题等,带你从零基础入门到精通,快速掌握大模型技术!

由于篇幅有限,有需要的小伙伴可以扫码获取!

1. 成长路线图&学习规划

要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费。这里,我们为新手和想要进一步提升的专业人士准备了一份详细的学习成长路线图和规划。

2. 大模型经典PDF书籍

书籍和学习文档资料是学习大模型过程中必不可少的,我们精选了一系列深入探讨大模型技术的书籍和学习文档,它们由领域内的顶尖专家撰写,内容全面、深入、详尽,为你学习大模型提供坚实的理论基础(书籍含电子版PDF)

3. 大模型视频教程

对于很多自学或者没有基础的同学来说,书籍这些纯文字类的学习教材会觉得比较晦涩难以理解,因此,我们提供了丰富的大模型视频教程,以动态、形象的方式展示技术概念,帮助你更快、更轻松地掌握核心知识

4. 大模型项目实战

学以致用,当你的理论知识积累到一定程度,就需要通过项目实战,在实际操作中检验和巩固你所学到的知识,同时为你找工作和职业发展打下坚实的基础。

5. 大模型行业报告

行业分析主要包括对不同行业的现状、趋势、问题、机会等进行系统地调研和评估,以了解哪些行业更适合引入大模型的技术和应用,以及在哪些方面可以发挥大模型的优势。

6. 大模型面试题

面试不仅是技术的较量,更需要充分的准备。

在你已经掌握了大模型技术之后,就需要开始准备面试,我们将提供精心整理的大模型面试题库,涵盖当前面试中可能遇到的各种技术问题,让你在面试中游刃有余。

为什么大家都在学AI大模型?

随着AI技术的发展,企业对人才的需求从“单一技术”转向 “AI+行业”双背景。企业对人才的需求从“单一技术”转向 “AI+行业”双背景。金融+AI、制造+AI、医疗+AI等跨界岗位薪资涨幅达30%-50%。

同时很多人面临优化裁员,近期科技巨头英特尔裁员2万人,传统岗位不断缩减,因此转行AI势在必行!

这些资料有用吗?

这份资料由我们和鲁为民博士(北京清华大学学士和美国加州理工学院博士)共同整理,现任上海殷泊信息科技CEO,其创立的MoPaaS云平台获Forrester全球’强劲表现者’认证,服务航天科工、国家电网等1000+企业,以第一作者在IEEE Transactions发表论文50+篇,获NASA JPL火星探测系统强化学习专利等35项中美专利。本套AI大模型课程由清华大学-加州理工双料博士、吴文俊人工智能奖得主鲁为民教授领衔研发。

资料内容涵盖了从入门到进阶的各类视频教程和实战项目,无论你是小白还是有些技术基础的技术人员,这份资料都绝对能帮助你提升薪资待遇,转行大模型岗位。


大模型全套学习资料已整理打包,有需要的小伙伴可以微信扫描下方CSDN官方认证二维码,免费领取【保证100%免费】

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

破解宿舍违规用电、教学楼浪费难题!AcrelEMS-EDU让校园用电可控可管

唐雪阳 安科瑞电气股份有限公司 上海嘉定 201801 学校宿舍用电隐患 安全用电历来都是学校安全工作的一个重点&#xff0c;然而每年因此发生的人身伤害以及火灾事故却在继续着&#xff0c;究其原因&#xff0c;主观上是我们的防患意识淡薄&#xff0c;客观上则是由于学生在宿…

作者头像 李华
网站建设 2026/4/4 13:56:06

29、深入理解松散耦合事件(LCEs)与 COM+ 事件机制

深入理解松散耦合事件(LCEs)与 COM+ 事件机制 1. 松散耦合事件(LCEs)概述 传统的紧密耦合事件(TCE)技术虽然有用,但在某些场景下存在明显缺点: - 生命周期紧密耦合 :发布者和订阅者的生命周期紧密相连,订阅者必须运行并连接到发布者才能接收事件。在企业系统中,…

作者头像 李华
网站建设 2026/4/11 13:01:14

Vue 3 的魔法:用 v-bind() 让 CSS 爱上 TypeScript 常量

最近在写一个视频编辑器的插值控制器面板时&#xff0c;遇到了一个典型的场景&#xff1a;左侧树形列表 360px&#xff0c;中间输入区 180px&#xff0c;右侧轨道区 1132px&#xff0c;总宽度 1680px。用户点击按钮可以隐藏/显示某些区域&#xff0c;宽度要动态调整。最优雅的不…

作者头像 李华
网站建设 2026/4/12 11:23:56

33、COM+ 应用管理编程指南

COM+ 应用管理编程指南 1. 编程考虑事项 在着手自动化一些常见的管理任务之前,有几个编程问题需要研究。 1.1 错误处理 与所有 COM 接口方法一样,COMAdmin 对象以 HRESULT 的形式返回错误代码。对于 C++ 程序员,这些错误代码在 <winerror.h> 中定义为 “COMADMI…

作者头像 李华
网站建设 2026/4/14 16:39:36

3D打印又上Nature!中国青年学者一作

导读&#xff1a;3D纳米制造技术正逐步从实验室走向工业化。尽管双光子光刻&#xff08;TPL&#xff09;在制造超高分辨率微纳结构方面具有独特优势&#xff0c;但由于传统光学系统视场有限&#xff0c;难以实现高速、规模化生产。Songyun Gu展示了一种超透镜阵列近日&#xff…

作者头像 李华