一文带你入门大模型微调

news2024/11/25 4:42:17

大模型相关目录

大模型,包括部署微调prompt/Agent应用开发、知识库增强、数据库增强、知识图谱增强、自然语言处理、多模态等大模型应用开发内容
从0起步,扬帆起航。

  1. swift与Internvl下的多模态大模型分布式微调指南(附代码和数据)
  2. 多模态大模型Internvl-1.5-26B微调后部署及测试实录(附代码)
  3. 多模态大模型Internvl-2-26B的OCR赋能方案(附代码)
  4. miniconda+xinference的大模型推理部署指南
  5. Mem0:大模型最强赋能“有记忆的LLM”
  6. 再谈Agent:Dify智能体实现Txet2SQL
  7. Moe模式:或将是最好的大模型应用开发路径
  8. 一文带你了解大模型RAG
  9. 详细记录swfit微调interVL2-8B多模态大模型进行目标检测(附代码)
  10. DIfy中集成magic-pdf实现文档解析agent与多模态大模型图文问答
  11. 大模型Prompt trick:利用大模型同情心提升模型性能
  12. 一文带你入门大模型微调

文章目录

  • 大模型相关目录
  • 定义
  • 发展
  • 细节


本文架构
在这里插入图片描述

定义

什么是大模型微调?
通用大模型是基于互联网公开的海量知识进行预训练的,具备很强的通识能力,但大模型在垂直或特定领域的表现往往并不尽如人意。
大模型微调是在通用大模型的基础上对超出范围或特定领域的知识,使用专门数据集或方法进行相应的调整优化,以提升其在特定领域或任务中的适用性和完成度。

为什么需要大模型微调?
大模型在处理特定行业或私域的专业知识文档、专业术语、业务流程时,可能存在理解不足或胜任力有限的情况,在大模型有限的参数规模下,其学习到的知识是有限的,机制上决定了大模型无法也不可能全知全能。
用更专业更垂直更行业的精确数据进行大模型微调,针对性的提升大模型与行业的和领域契合度,可以解决其私域能力不足的问题。
在这里插入图片描述
在这里插入图片描述

  • 全量微调,利用特定任务数据调整预训练模型的所有参数,以充分适应新任务。
  • 参数高效微调(Parameter-Efficient Fine-Tuning, PEFT),即低参微调。旨在通过最小化微调参数数量和计算复杂度,实现高效的迁移学习。它仅更新模型中的部分参数,显著降低训练时间和成本,适用于计算资源有限的情况。
    全量微调从原理上能有效利用预训练模型的通用特征,但需要调用大量的训练资源、构建巨量的训练数据,相对与低参微调需要耗费更多的计算资源和时间成本。
    从实际表现看,参数高效微调通过有效的微调算法设计,可在有限的计算资源、训练数据、时间成本基础上,获得符合实际需求的微调表现。

PEFT技术包括Prefix Tuning、Prompt Tuning、Adapter Tuning等多种方法,可根据任务和模型需求灵活选择。

在这里插入图片描述
由上述篇幅介绍可知,微调原理主要基于迁移学习。预训练模型已经在大量数据上进行了训练,学会了提取通用特征。通过微调,我们可以将这些通用特征应用到特定任务上,从而提高模型的性能。由此可以解决垂直领域数据稀缺、训练资源耗费巨大、时间成本高等问题。

总的来说,大模型的微调步骤可以解析如下:

数据准备:选择与特定任务相关的数据集,并将其格式化为模型可以理解的格式。
模型调整:根据任务需求,可能需要调整模型的某些部分,如添加特定任务的输出层。
参数更新:使用任务特定的数据对模型进行训练,通常会使用较小的学习率来微调模型参数,以避免破坏模型在预训练阶段学到的知识。
评估与优化:在验证集上评估微调后的模型性能,并根据需要调整超参数或模型结构。

在这里插入图片描述

发展

在这里插入图片描述
人工智能发展的三个阶段
• 人工智能的一个让机器能听会说,能理解会思考
• 目前人工智能技术正处在从感知智能到认知智能跨越的时间节点

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

细节

基于LoRA的高效训练方法
• LoRA (Low-rank Adaptation) 是一种参数高效的训练方法,常用于大模型的高效训练与精调
• 主要思想:通过低秩分解的方式近似拟合大矩阵(d为隐层大小,r为秩)
在这里插入图片描述
矩阵的秩:矩阵的秩是指矩阵中线性无关的行(或列)的最大数目。低秩矩阵意味着其秩远小于矩阵的行数或列数。
低秩分解:目的是找到一组低秩矩阵,它们的乘积可以近似原始矩阵,同时保持原始数据的主要特征。
在这里插入图片描述
从16.8m到0.5m,可见lora通过低秩分解,在保证特征信息不丢失的情况下,大幅度降低了微调训练的计算量

感性地理解LoRA微调,可以理解如图所示,是在固有模型的Original Vocab、transformers主体、以及LM head三个组成成份上添加额外的参数全重进行训练。

也因为这种设计模式,LoRA微调后,要想对微调后模型进行使用,推理加载方式往往分为LoRA权重加载、合并权重后模型加载两类。

在这里插入图片描述
如果说LoRA是为了提升微调训练的效率,那么指令微调就是为了提升模型的指令遵循能力。

一般来说,模型输入通常由指令模板、系统提示词、输入、输出组成
在这里插入图片描述
在这里插入图片描述
指令微调(Instruction Tuning)
指令微调是一种微调策略,其核心在于让模型更好地理解和执行特定的指令。这种微调方法通常关注于:
指令微调通常涉及对模型的全面训练,可能会更新模型的全部或大部分参数,以优化模型对指令的理解和响应能力。

Alpaca是由斯坦福大学提出的一个指令精调项目,旨在让大型语言模型(如LLaMA)能够更好地理解和执行人类的指令。Alpaca微调就是使用该模板、该范式构建微调数据集进行指令微调。
在这里插入图片描述
在这里插入图片描述

大模型微调从底层原理上复杂、分支工作众多,从零开始对大模型进行微调训练,显然存在任务重、易出错、效率低的问题。先行模式下,研发人员往往采用微调框架来实现大模型的微调落地。本文以swift框架为例进行说明。

Swift是一种用于大型模型微调的框架,它由斯坦福大学的研究人员开发,旨在简化大型语言模型的微调过程。Swift框架主要针对的是指令微调(Instruction Tuning),即训练模型以更好地理解和执行人类的指令。
以下是Swift框架的一些关键特点和组成部分:
关键特点
模块化:Swift框架将微调过程分解为多个模块,使得用户可以轻松地定制和扩展微调流程。
灵活性:Swift支持多种预训练模型和微调策略,用户可以根据需要选择合适的模型和微调方法。
高效性:Swift框架设计用于高效地处理大型模型,减少微调所需的计算资源和时间。
可复现性:Swift提供了清晰的接口和配置选项,使得微调实验具有高度的可复现性。

本次以swift实现LoRA指令微调为例,具体流程可概括如下:

在这里插入图片描述

 [
  {
    "instruction": "你好",
    "input": "",
    "output": "您好,我是XX大模型,一个由XXX开发的 AI 助手,很高兴认识您。请问我能为您做些什么?"
  },
  {
    "instruction": "你好",
    "input": "",
    "output": "您好,我是XX大模型,一个由XXX打造的人工智能助手,请问有什么可以帮助您的吗?"
  }
  ]

在这里插入图片描述
如左上格式构建指令微调数据集后,将数据集右图文件进行注册。
即可于swift框架下进行使用,包括微调、验证等步骤。

CUDA_VISIBLE_DEVICES=0,1,2,3  swift sft \
--model_id_or_path /data/hfd/InternVL2-8B \
--template_type internvl2 \
--dataset /home/super/lyq/train_dataset.jsonl \
--lora_target_modules ALL \
--lora_lr_ratio 16.0 \
--lora_rank 16 \
--learning_rate 1e-4 \
--num_train_epochs 5 \
--use_flash_attn True \
--gradient_accumulation_steps 4 \
--batch_size 2 \
--eval_steps 50 \
--save_steps 500 \
--neftune_noise_alpha 5 \
--model_type internvl2-8b \
--device_max_memory 15GB 15GB 15GB 15GB \
--output_dir /home/super/sgq/swift/llm-yolo/detection2/v1 \
--logging_dir /home/super/sgq/swift/llm-yolo/detection2/v1/runs
使用左侧指令即可开启微调,其中指令解释如下:

–model_id_or_path /data/hfd/InternVL2-8B
该参数为模型路径

–dataset /home/super/lyq/train_dataset.jsonl
该参数为微调数据集

–num_train_epochs 5
该参数为训练轮次,视情况调整

–use_flash_attn True
加速项,服务器未配置可不选

–output_dir /home/super/sgq/swift/llm-yolo/detection2/v1
为训练结果保存路径,结果包含微调训练参数和精度损失记录等

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2045735.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MTK 相机功耗拆解方法

和你一起终身学习,这里是程序员Android 经典好文推荐,通过阅读本文,您将收获以下知识点: 一、硬件功耗二、相机软件功耗三、参考文档 一、硬件功耗 1.1 硬件信息 以下硬件信息最好提前获取到 模块备注平台MTK or Qcom or sprdCPU频率大中小核…

【Qt开发】事件与信号/事件过滤器

事件与信号/事件过滤器 事件一、事件的产生二、事件的派发三、事件类和事件类型四、事件的处理 事件与信号事件过滤器 事件 Qt系统的图形化窗口是由事件驱动的。,点击鼠标、按键,改变窗口大小、最小化窗口、关闭窗口等都会产生相应的事件。 QWidget类的所…

shuashuashua

CVE-2023-2130 靶标介绍: 在SourceCodester采购订单管理系统1.0中发现了一项被分类为关键的漏洞。受影响的是组件GET参数处理器的文件/admin/suppliers/view_details.php中的一个未知函数。对参数id的操纵导致了SQL注入。可以远程发起攻击。 通过标靶介绍可以知道…

通过域名和HTTPS上线MSF

使用受信任证书的Meterpreter载荷 现在大多数安全解决方案还会通过分析进出目标机器的流量来进行网络入侵检测。在这种情况下,很可能即使使用编码器绕过了防病毒软件,但有效载荷也会在尝试连接到我们的侦听器时被捕获和拦截。 # 准备工作 首先需要准备…

FPGA开发——UART回环实现之接收模块的设计

一、简介 因为我们本次进行串口回环的实验的对象是FPGA开发板和PC端,所以在接收和发送模块中先编写接收模块,这样可以在后面更好的进行发送模块的验证。(其实这里先编写哪个模块)都不影响,这里看自己心情,反…

大语言模型微调框架Unsloth:简化模型微调流程,提升模型性能

Unsloth 将 Llama-3、Mistral、Phi-3 和 Gemma 等大型语言模型的微调速度提高了 2 倍,内存使用量减少了 70%,而且准确性不会降低! 特点 通过手动派生所有计算繁重的数学步骤和手写 GPU 内核,unsloth 可以在不更改任何硬件的情况…

IMU助力跑步参数评估

近期,中国研究团队开发了一种创新的跑步参数评估方法,巧妙结合了IMU和多模态神经网络技术,旨在深入研究并有效评估跑步时的步态参数。 科研团队采用IMU传感器,将其固定在跑者的脚踝处,以实时监测并记录跑步时脚踝的加速…

如何利用RPA自动化流程机器人优化企业财务流程

随着企业规模的扩大和业务的复杂性增加,财务流程管理成了一个关键而复杂的任务。传统的财务流程往往涉及大量的重复性、繁琐的工作,不仅效率低下,而且容易出错。为了解决这些问题,越来越多的企业开始引入RPA机器人流程自动化来优化…

JAVA集中学习第五周学习记录(二)

系列文章目录 第一章 JAVA集中学习第一周学习记录(一) 第二章 JAVA集中学习第一周项目实践 第三章 JAVA集中学习第一周学习记录(二) 第四章 JAVA集中学习第一周课后习题 第五章 JAVA集中学习第二周学习记录(一) 第六章 JAVA集中学习第二周项目实践 第七章 JAVA集中学习第二周学…

打开Office(word、excel、ppt)显示操作系统当前的配置不能运行此应用程序最全解决方案!

我以前用过分区助手把office从c盘挪到d盘了,从那以后office就用不了了,然后我就删了(貌似没删干净)。 最近由于有使用word的需求,所以我从学校官网找到正版软件的安装包,按照步骤重新卸载电脑中office残留…

基于Java的民宿管理系统

TOC springboot306基于Java的民宿管理系统 第1章 绪论 1.1选题动因 当前的网络技术,软件技术等都具备成熟的理论基础,市场上也出现各种技术开发的软件,这些软件都被用于各个领域,包括生活和工作的领域。随着电脑和笔记本的广泛…

【Mac】Downie 打开提示试用的解决办法?

前情 我们在使用 Downie 的时候,可能遇到提示试用的问题,如下图所示。 原因 旧版本的 Downie 没有卸载干净导致的。 解决办法 先使用 AppCleaner 卸载掉电脑上的 Downie 旧版本软件,必须使用 AppCleaner 卸载。重新安装 Downie 即可。

DNN代码实战

DNN的原理 神经网络通过学习大量样本的输入与输出特征之间的关系,以拟合出输入与输出之间的方程,学习完成后,只给它输入特征,它便会可以给出输出特征。神经网络可以分为这么几步:划分数据集、训练网络、测试网络、使用…

C++_2_nullptr关键字(3/3)

本节内容有C的NULL在前面打头阵&#xff0c;学起来犹如探囊取物。 先来分析一段代码&#xff0c;本段代码恰好也结合了上节的宏。 #include<iostream> using namespace std; void f(int x) { cout << "f(int x)" << endl; } void f(int* ptr) { …

Android Settings 跳转流程

我们知道在Settings中&#xff0c;各模块之间的Fragment基本都继承了DashboardFragment&#xff0c;当有点击事件时&#xff0c;就会回调DashboardFragment中的onPerferenceTreeClick()方法。 在onPreferenceTreeClick()方法中可以根据preference的key做事件拦截&#xff0c;如…

Linux线程实用场景

文章目录 前言生产者消费者模型1.基于阻塞队列特点实现使用 2.基于环形队列和信号量实现使用 读者写者模型实现思想 线程池实现 前言 生产者消费者模型和读者写者模型这些模型是用于在线程间协调和管理资源访问的模式, 我们在之前已经理解了线程的概念以及同步与互斥, 现在我们…

无人机之消费级和工业级,两者区别分析

消费级无人机和工业级无人机在多个方面存在显著差异&#xff0c;这些差异主要体现在搭载设备、应用领域、针对用户、使用条件、性能要求、营销模式以及价格等方面。以下是对两者区别的详细分析&#xff1a; 1. 搭载设备 消费级无人机&#xff1a;主要搭载相机&#xff0c;并配…

C++ | Leetcode C++题解之第337题打家劫舍III

题目&#xff1a; 题解&#xff1a; struct SubtreeStatus {int selected;int notSelected; };class Solution { public:SubtreeStatus dfs(TreeNode* node) {if (!node) {return {0, 0};}auto l dfs(node->left);auto r dfs(node->right);int selected node->val…

Windows禁止应用联网

转自两种方法阻止电脑上的软件彻底联网&#xff01; - 知乎 (zhihu.com) 但为了稳妥&#xff0c;自己还是稍微记录一下 1、创建bat脚本文件 创建文本-将下面的代码填入-保存为.bat文件 Echo Off SetLocal:beginecho: echo ****** 禁止文件夹联网 ****** echo:set /p folder…

Qt报“libpng warning: iCCP: known incorrect sRGB profile”问题解决方法

Qt开发应用程序&#xff0c;界面加载图片或按钮加载图标时&#xff0c;会遇到编译器报“libpng warning: iCCP: known incorrect sRGB profile”问题&#xff0c;原因为色彩配置问题&#xff0c;需要修正图像的ICC配置文件&#xff0c;将其转换成sRGB类型。不同操作系统解决方法…