大模型(如GPT系列和Meta-Llama系列)在自然语言处理方面表现出色,但要实现最佳效果,仍需通过精细化处理。提示词工程、微调和RAG增强检索是三种关键技术,帮助提升大模型的应用性能。
提示词工程,通过设计精准的输入提示,引导模型生成符合预期的输出。就像教孩子识别苹果一样,单一描述往往不够,需要通过多样化的例子提供上下文,让孩子更好理解。同样,提示词工程通过上下文示例让模型理解并生成更准确的回应。
RAG增强检索,则用于弥补大模型知识局限的问题,将模型与外部知识库连接,使其在生成回答时可以检索到相关信息,确保在未知领域也能提供准确答案。微调则是对模型的定制训练,使其在特定领域的任务中表现更优,类似于演员为特定角色做排练训练。
微调,将大模型比作一位多才多艺的演员,他可以扮演各种角色。但是,要想让演员完美诠释一个特定角色,需要进行针对性的训练和排练。微调的过程类似于演员的排练过程。它利用特定领域的数据对大模型进行进一步训练,使其更擅长处理该领域的任務。例如,将大模型用于医学诊断,就需要使用医疗文本数据进行微调,使其能够理解医学术语并做出准确的诊断。
今天我们重点来介绍一下微调框架的选择:
-
微调的重要性:解锁模型潜能
-
如何选择大模型微调框架
微调的重要性:解锁模型潜能
微调是将预训练模型适应特定下游任务的过程。它类似于一个已经接受过良好教育的学生学习新技能,比如演奏乐器或学习一门外语。
预训练模型就像那个已经接受过良好教育的学生,他们已经掌握了大量的知识和能力,例如理解语言、识别图像等。但是,要想在特定的任务上表现出色,还需要针对性的训练。
举个例子,假设有一个预训练的语言模型,它能够理解文本并生成文字。如果我们想用这个模型来进行情感分析,就需要对它进行微调。具体来说,我们需要提供大量的带标签数据,例如评论文本和它们的情绪标签(正面、负面或中性)。通过在这些数据上训练,模型就能学习到识别不同情绪的特征,从而提高情感分析的准确率。
微调的好处在于:
-
节省时间和资源:与从头开始训练模型相比,微调只需要较少的训练数据和计算资源,能够显著缩短模型开发周期。
-
提升性能: 微调可以帮助模型更好地适应特定任务,从而提高模型的性能和准确率。
因此,微调是将预训练模型应用于实际场景的重要手段,它能够有效地提高模型的性能,并降低模型开发成本。
如何选择大模型微调框架
LLaMA-Factory
支持多种先进的微调算法和模型,包括但不限于:多种模型:LLaMA、LLaVA、Mistral、Mixtral-MoE、Qwen、Yi、Gemma、Baichuan、ChatGLM、Phi 等等。
在应用领域有广泛的社区支持,从任何搜索引擎都可以找到大把的入门和学习资料。
可以基于图形的WEBUI界面或通过命令行两种方式来进行大模型的微调,非常方便,我们所要关注的就是对参数进行不断探索和调整。如下图所示,是一个典型的操作界面:
Unsloth:
UNSLOTH 这个易用微调框架让任何即使没有算法经验的人,在简单了解大模型基础之后,也能轻松微调主流大模型,开启你的 AI 应用之旅。
官方网站提供丰富示例: 你可以参考各种模型的使用案例,只需稍微调整参数即可完成微调过程。https://github.com/unslothai/unsloth,如下图所示:
同样支持绝大多数主流大模型:在 HUGGING FACE 上搜索 UNSLOTH,即可找到对 Llama、mistral、国内大模型等主流大模型的全面支持,如下图所示:
也有大量的主流社区提供支持。
LLAMA-FACTORY vs. UNSLOTH: 微调速度的对比
最近,我分别使用了LLAMA-FACTORY和UNSLOTH对一个大型语言模型进行了微调。在微调过程中,UNSLOTH的微调速度给我留下了深刻的印象。本文将简要介绍这两个框架,并重点对比它们在微调速度上的差异,以帮助大家更好地理解和选择合适的工具。
微调业务背景及数据说明:
为了提升模型将现代汉语翻译为古文的能力,我使用了一份包含中国古代所有古文与现代文对照的数据集。经过数据预处理,最终的数据集包含约1140万条对照记录,示例如下:
[` `{` `"instruction": "请把现代汉语翻译成古文",` `"input": "世界及其所产生的一切现象,都是来源于物质。",` `"output": "天地与其所产焉,物也。"` `},` `{` `"instruction": "请把现代汉语翻译成古文",` `"input": "以概念来称谓事物而不超过事物的实际范围,只是概念的外延。",` `"output": "物以物其所物而不过焉,实也。"` `}` `]
实测结果对比:
由于4090计算资源有限,针对两种不同的微调工具进行了实际测试。具体情况如下:
-
微调设置
-
Llama - factory:
-
数据量:约2万条
-
微调步长:2940
-
unsloth:
-
数据量:约45万条(考虑其对GPU加速的支持)
-
微调步长:3000
-
耗时对比
-
llama-factory:
-
预测时间:3.5小时
-
实际时间:5小时
-
unsloth:
-
预测时间:约37分钟
-
实际时间:约37分钟
从对比的结果来看,Unsloth 在数据量大幅增加的情况下,实际耗时与预测几乎一致,耗时仅为37分钟,且相较于Llama - factory的速度快了约10倍。这意味着,Unsloth 对GPU的加速效果显著,能大幅提升微调速度。
总结
测试表明,UNSLOTH和LLAMA-FACTORY在社区支持、模型种类和易用性上相近,但UNSLOTH在微调速度上表现突出。尽管处理的数据量是LLAMA-FACTORY的20倍,UNSLOTH的速度仍快约10倍,极大优化了时间成本,尤其在大规模数据处理中的效率优势显著。
如何学习大模型 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 的正确特征了。