书生浦语训练营第2期-第4节笔记

一、为什么要微调?

  1. 适应特定任务或领域:虽然预训练的模型通常具有广泛的知识和理解能力,但它们可能不完全适应特定任务的需求。通过在特定的数据集上微调模型,可以使模型更好地理解和处理与特定任务或领域相关的数据。

  2. 提高性能:微调可以帮助模型在特定任务上表现得更好,如通过调整模型参数以更精确地对任务特有的特征进行建模,从而提高分类准确率、生成的质量或其他性能指标。

  3. 节省资源:微调一个已经训练好的模型通常只需要较少的数据和训练周期。

  4. 减少数据需求:微调通常需要的数据量比全新训练模型少得多。这对于数据较少的应用场景特别有用,因为即使是小规模的数据集也可能足以通过微调达到良好的效果。

  5. 转移学习:微调是一种有效的转移学习策略,允许模型将在一个任务上学到的知识应用到其他类似任务上。这种策略在多任务学习和跨领域应用中尤其重要。

想象一下,你有一个非常棒的自行车,这辆自行车可以在任何地方骑行------山地、城市、海边。这辆自行车就像一个被广泛训练过的模型,能够处理各种各样的环境。但是,现在你需要参加一场特定的山地自行车比赛,这就需要你的自行车在山地环境中表现得更好。

微调就好比是你对自行车进行一些特别的调整,比如换上更适合山地的轮胎,调整齿轮比让它更适合爬坡,这样你的自行车就能在山地比赛中表现得更加出色。你不需要重新制造一辆新自行车,而是在现有的基础上做一些修改,让它更适应山地的特殊条件。

在机器学习中,我们通常有一个已经在很多数据上训练过的模型,它已经非常智能了。但是如果我们想让它在一个特定的任务上表现得更好,我们可以用一些特定任务的数据来"微调"这个模型。这样,模型就会学习这些特定数据的特点,变得更擅长处理与这些数据相关的任务。这就像是给你的自行车根据山地比赛的需要进行调整一样。

二、两种常用微调范式

2.1 增量预训练

使用场景:让基座模型学习到一些新知识,比如垂类领域的常识。

训练数据:文章、书籍、代码等。

2.2 指令跟随

使用场景:让模型学会对话模板吗,根据人类指令进行对话。

训练数据:高质量的对话、问答数据。

2.3 两者区别

有一个新来的学生叫小明,他刚转学到你们学校。小明已经会一些基础的数学和英语,但是他的新老师想让他学得更好,更适应这个学校的教学风格。

  1. 增量预训练:小明的数学老师给他安排了一些额外的数学题目练习,这些题目是根据他已经知道的内容,再稍微难一点的。这样做的目的是让小明在他已有的基础上,逐渐适应更高级的数学思维。这个过程可以看作是在小明原来的学习基础上,增加了一些新的知识点,帮助他更好地融入新环境。

  2. 指令跟随:小明的英语老师给了他一个具体的任务,比如写一篇关于"我最喜欢的动物"的英语作文,并且告诉他要使用五种不同的形容词描述这个动物。这个任务要求小明不仅要运用他已经学过的英语知识,还要按照老师的具体指示来完成作业。这就是一个典型的指令跟随的例子,小明需要明确遵守老师的指令来执行任务。

增量预训练更多的是在已有的知识或技能基础上逐步扩展和深化,而指令跟随则是按照特定的指示来完成任务。这两种方法都是帮助学生(或者AI模型)学习和适应新环境的有效方式,但它们的重点和方法有所不同。

三、一条数据的一生

为了让LLM能够区分出System、User、Assistant,不同的模型会有不同的模板。

为了让LLM知道什么时候开始一段话,什么时候结束一段话,实际训练时需要对数据添加起始符(BOS)和结束符(EOS);大多数模型都是使用<s></s> 。

数据中会有Input和Output,希望模型学会的是Output,而不是Input。训练时只会对Output部分计算Loss。

四、微调方案:LoRA&QLoRA

五、多模态LLM原理简介

文本单模态

文本+图像多模态

想象你在玩一个识别物品的游戏。在没有"电子眼"的情况下,如果你问LLM"这个苹果是什么颜色的?"而没有给出图片,它是无法回答的,因为它看不到苹果。但如果LLM有了"电子眼",它就能看到苹果的图片,然后告诉你"这个苹果是红色的"。

多模态LLM在训练时,不仅学习了大量的文本数据,还学习了图片和视频数据。学会了如何从图片中提取信息,比如识别出图片中的物品、颜色、动作等,并且能把这些视觉信息和文字信息结合起来进行理解和回答。

给LLM装上"电子眼"就是让它通过视觉输入增强理解和交流的能力,使它不仅限于文字,还能理解和分析图片或视频中的内容。这样的技术在很多领域都非常有用,比如帮助自动驾驶车辆理解路况,或者帮助医生分析病人的X光片等。

什么类型的电子眼:LLaVA方案简介

  • 使用GPT-4V对图像数据生成描述,以此构建出大量<question text><image> -- <answer text>的数据对。
  • 利用这些数据对,配合文本单模态LLM,训练出一个Image Projector。
  • 所使用的文本单模型LLM和训练出来的Image Projector,统称为LLaVA模型。

给LLM增加视觉的过程分为:Pretrain、Finetune。

  • **Pretrain阶段:**使用大量的图片+简单文本(caption,即图片标题)数据对,使LLM理解图像中的普遍特征。该阶段完成后,模型已经有视觉能力了,但是只会给输入的图像"写标题"
  • **Finetune阶段:**使用图片+复杂文本数据对,来对Pretrain得到的Image Projector进行进一步训练。

六、Xtuner是什么?

是一个高效、灵活且功能齐全的工具包。xtuner/README_zh-CN.md at main · InternLM/xtuner · GitHubAn efficient, flexible and full-featured toolkit for fine-tuning large models (InternLM, Llama, Baichuan, Qwen, ChatGLM) - xtuner/README_zh-CN.md at main · InternLM/xtunerhttps://github.com/InternLM/xtuner/blob/main/README_zh-CN.md

高效

  • 支持大语言模型 LLM、多模态图文模型 VLM 的预训练及轻量级微调。XTuner 支持在 8GB 显存下微调 7B 模型,同时也支持多节点跨设备微调更大尺度模型(70B+)。
  • 自动分发高性能算子(如 FlashAttention、Triton kernels 等)以加速训练吞吐。
  • 兼容 DeepSpeed ,轻松应用各种 ZeRO 训练优化策略。

灵活

  • 支持多种大语言模型,包括但不限于 InternLMMixtral-8x7BLlama2ChatGLMQwenBaichuan
  • 支持多模态图文模型 LLaVA 的预训练与微调。利用 XTuner 训得模型 LLaVA-InternLM2-20B 表现优异。
  • 精心设计的数据管道,兼容任意数据格式,开源数据或自定义数据皆可快速上手。
  • 支持 QLoRALoRA、全量参数微调等多种微调算法,支撑用户根据具体需求作出最优选择。

全能

  • 支持增量预训练、指令微调与 Agent 微调。
  • 预定义众多开源对话模版,支持与开源或训练所得模型进行对话。
  • 训练所得模型可无缝接入部署工具库 LMDeploy、大规模评测工具库 OpenCompassVLMEvalKit
相关推荐
不会调制解调的猫1 小时前
笔记 | 内网服务器通过wifi穿透,设置流量走向
运维·服务器·笔记
程序员大雄学编程2 小时前
「机器学习笔记7」决策树学习:从理论到实践的全面解析(上)
笔记·决策树·机器学习
聪明的笨猪猪3 小时前
Java Spring “Bean” 面试清单(含超通俗生活案例与深度理解)
java·经验分享·笔记·面试
bnsarocket4 小时前
Verilog和FPGA的自学笔记3——仿真文件Testbench的编写
笔记·fpga开发·verilog·自学
丰锋ff4 小时前
2025 年真题配套词汇单词笔记(考研真相)
笔记·考研
小熊猫程序猿6 小时前
Datawhale 算法笔记 AI硬件与机器人大模型 (五) Isaac Sim 入门
人工智能·笔记·机器人
不太可爱的叶某人10 小时前
【学习笔记】kafka权威指南——第10章 监控kafka (7-10章只做了解)
笔记·学习·kafka
张人玉11 小时前
C# TCP 客户端开发笔记(TcpClient)
笔记·tcp/ip·c#
不太可爱的叶某人14 小时前
【学习笔记】kafka权威指南——第6章 可靠的数据传递
笔记·学习·kafka
研猛男15 小时前
0、FreeRTOS编码和命名规则
笔记·stm32·freertos