本文聊聊 LLama-Factory,它是一个开源框架,这里头可以找到一系列预制的组件和模板,让你不用从零开始,就能训练出自己的语言模型(微调)。不管是聊天机器人,还是文章生成器,甚至是问答系统,都能搞定。而且,LLama-Factory 还支持多种框架和数据集,这意味着你可以根据项目需求灵活选择,把精力集中在真正重要的事情上——创造价值。
使用LLama-Factory,常见的就是训练LoRA模型,增强模型在某方面的生成能力。本教程将以增强 GLM-4-9B-Chat 模型的脑筋急转弯能力为例,演示LoRA模型的微调方法。
环境准备
本地使用
LLama-Factory 的安装比较简单,大家直接看官网页面就够了:
https://github.com/hiyouga/LLaMA-Factory
云镜像
如果你本地没有一张好显卡,也不想费劲的安装,就想马上开始训练。
可以试试我的云镜像,开箱即用:https://www.haoee.com/applicationMarket/applicationDetails?appId=40&IC=XLZLpI7Q
平台注册就送一定额度,可以完成本教程的的演示示例。
镜像已经内置了几个基础模型,大都在6B-9B,单卡24G显存即可完成LoRA微调。
如果要微调更大的模型,则需要更多的显卡和显存,请在购买GPU时选择合适的显卡和数量。
已经内置的模型:Yi-1.5-9B-Chat、Qwen2-7B、meta-llama-3.1-8b-instruct、glm-4-9b-chat、chatglm3-6b
如果缺少你需要的模型,可以给我反馈。
假设你已经解决了程序运行环境问题,下边将开始讲解 LLama-Factory 的使用方法。
LLama-Factory 支持命令行和Web页面训练两种方式,为了方便入门,这篇文章以Web页面训练为例。
选择基础模型
语言:zh,因为我们要微调的是中文模型。
模型选择:GLM-4-9B-Chat
模型路径:/root/LLaMA-Factory/models/glm-4-9b-chat,默认会自动下载模型,不过速度可能比较慢,我们的镜像中已经下载好这个模型,所以直接填写路径更快。
微调方法:lora
准备训练数据集
LLaMA-Factory自带了一些常用的数据集,如果你使用的数据集不在里边,可以修改 data/dataset_info.json,在其中增加自己的数据集。
这里我使用的是一个弱智吧问答数据集,数据集的格式是 alpaca,来源:https://huggingface.co/datasets/LooksJuicy/ruozhiba
大家准备自己的数据的时候,也一定要按照指定的格式来。
训练参数设置
训练参数需要根据实际训练效果进行调整,这里给出一个参考设置。
数据集:请根据你的需要选择,这里选择我上边定义的 ruozhiba_qa。
学习率:1e-4,设置的大点,有利于模型拟合。
计算类型:如果显卡较旧,建议计算类型选择fp16;如果显卡比较新,建议选择bf16。
梯度累计:2,有利于模型拟合。
LoRA+学习率比例:16,相比LoRA,LoRA+续写效果更好。
LoRA作用模块:all**,**表示将LoRA层挂载到模型的所有线性层上,提高拟合效果。
开始训练
点击“开始”按钮,可以在页面上看到训练进度和训练效果。
根据训练方法和训练数据的大小,训练需要的时间不定。
推理测试
在“检查点路径”这里加载刚刚训练的LoRA模型,然后切换到“Chat”页签,点击“加载模型”。
测试完毕后,记得点击“卸载模型”,因为模型占用显存比较大,不释放的话,再进行别的任务可能会出错。
对比训练前后的变化:
训练前:
训练后:
这是一个比较感性的测试,如果需要更为正式的效果评估,请使用“Evaluate & Predict” 选择合适的评测数据集进行评估。
合并导出模型
有时候我们需要把模型导出来放在别的地方使用,输出一个完整的模型文件,而不是基础模型+LoRA模型。
检查点路径:训练出来的LoRA模型
导出目录:设置一个服务器上的路径,新的模型会存放到这里。
最后点击“开始导出”就行了。导出完毕后,请前往服务器相关的路径中下载模型。
LLaMA-Factory 架构
最后送大家一张 LLaMA-Factory 的架构图,方便理解其原理。
图片左侧:显示了 LLaMA-Factory 的架构,分为四个主要部分:LlamaBoard、Trainer、Model Loader 和 Data Worker。
-
LlamaBoard:用于参数配置和训练状态监视。
-
Trainer:负责优化和训练方法的选择,如 LoRA+、GaLoRe、Pre-train、SFT 等。
-
Model Loader:负责模型初始化、补丁、量化和适配器等功能。
-
Data Worker:负责加载、对齐、预处理和合并训练数据。
图片右侧:列出了支持的流行语言模型和大小,以及支持的训练方法。
-
支持的语言模型和大小:LLaMA、LLaMA-2、LLaMA-3、Command-R、Mistral/Mixtral、OLMo、Phi-1.5/2、Qwen、DeepSeek (MoE)、Falcon、Gemma/CodeGemma 和 StarCoder2。
-
支持的训练方法:全量调整、冻结调整、LoRA、QLoRA、奖励建模、PPO 训练、DPO 训练、ORPO 训练。
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。