XTuner 微调 LLM:1.8B、多模态、Agent

news2024/12/29 5:06:49

两种微调范式:增量预训练和指令微调

在这里插入图片描述
在大语言模型下游应用中,主要有两种微调范式:增量预训练和指令微调。增量预训练旨在让模型学习特定领域的常识,而不需要有监督标注的数据;指令微调则是通过高质量的对话数据训练模型,使其能够根据人类指令进行对话并输出符合人类喜好偏好的内容。增量预训练的使用场景是在已有基础模型上,增加新的领域知识训练数据,如文章、书籍或代码等,无需问答对标注。指令微调则需要高质量的问答对或对话数据,以便模型能根据实际问题回答内容。

如何理解增量预训练和指令微调的区别?

增量预训练时,模型只接收简单的问题数据(如“珠穆朗玛峰是世界第一高峰”),无法识别提问意图;而指令微调阶段,模型通过问答对数据能理解问题,并能回答相关问题(如“什么是肺癌”)。
在这里插入图片描述
微调方案:

在这里插入图片描述
LORA微调利用一种名为“lora”的方法,在优化模型时仅对部分关键参数进行改动,避免对整个模型的所有部位进行大规模改动,从而大大减少了显存占用和计算成本。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

步骤:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
XTuner还支持工具类模型的对话,更多详见HuggingFace Hub(xtuner/Llama-2-7b-qlora-moss-003-sft)
在这里插入图片描述
在这里插入图片描述

InternLM2-1.8B 提供了三个版本的开源模型,大家可以按需选择。

·

  1. InternLM2-1.8B:具有高质量和高适应灵活性的基础模型,为下游深度适应提供了 良好的起点。
  2. InternLM2-Chat-1.8B-SFT:在 InternLM2-1.8B 上进行监督微调(SFT)后得到的 对话模型。
  3. InternLM2-Chat-1.8B:通过在线 RLHF 在 InternLM2-Chat-1.8B-SFT 之上进
    一步对齐。InternLM2-Chat-1.8B表现出更好的指令跟随、聊天体验和函数调用,推荐下游应用程序使用。(模型大小仅为3.78GB)

FP16 精度模式下,InternLM2-1.8B仅需4GB显存的笔记本显卡即可顺畅运行。
拥有8GB显存的消费级显卡,即可轻松进行1.8B模型的微调工作
。如此低的硬件门槛,非常适合初学者使用,以深入了解和掌握大模型的全链路。
在这里插入图片描述

多模态大语言模型是如何将文本模型扩展至图像领域的?

多模态大语言模型通过将单模态文本大语言模型(如LLM)与图像处理模块结合,实现了对图像的处理和理解。训练阶段,利用文本问答数据和图像向量作为输入,输出文本回答,从而训练出一个能够处理图像的模型(image projector)。在测试阶段,将已训练好的image projector与单模态文本模型组合,实现了多模态的视觉功能。在这里插入图片描述
在这里插入图片描述

单模态单元模型如何加载到显卡并进行图像问题预测?图像项目(image project)训练是如何赋予大语言模型视觉能力的?

在单模态单元模型加载到显卡后,输入图像及用户问题,模型会输出预测文本。这类似于之前提到的lora微调方案,两者都是在已有的大语言模型基础上,用新数据训练出一个新的小型模型。图像项目训练分为两个阶段:pretrain阶段和Finetune阶段。pretrain阶段大量使用图像及其标题数据(不一定都是问题,可能是描述或标签)让单模态文本模型快速了解图像普遍特征。而Finetune阶段则是在显卡中使用高质量图像加复杂对话文本的数据对模型进行进一步训练,类似于指令微调,最终得到具有视觉识别能力的模型。
在这里插入图片描述
在这里插入图片描述

作业:

训练自己的小助手认知

数据格式,角色+问答
在这里插入图片描述
微调开始过程
在这里插入图片描述
后面逐渐成功了:
在这里插入图片描述
web页面:
在这里插入图片描述
导出

conda list -e > requirements.txt

部署:

参考:https://github.com/InternLM/Tutorial/tree/camp2/tools/openxlab-deploy
需要先进入仓库,才能标记大文件
在这里插入图片描述
用户名应该写密钥管理的
在这里插入图片描述
否则无法上传
在这里插入图片描述
已经上传
在这里插入图片描述
部署成功
在这里插入图片描述
总体大致步骤:

  1. 我们首先是在 GitHub 上克隆了 XTuner 的源码,并把相关的配套库也通过 pip 的方式进行了安装。
  2. 然后我们根据自己想要做的事情,利用脚本准备好了一份关于调教模型认识自己身份弟位的数据集。
  3. 再然后我们根据自己的显存及任务情况确定了使用 InternLM2-chat-1.8B 这个模型,并且将其复制到我们的文件夹里。
  4. 我们在 XTuner 已有的配置文件中,根据微调方法、数据集和模型挑选出最合适的配置文件并复制到我们新建的文件夹中。
  5. 使用xTuner微调后,将微调结果合并至原模型

多模态agent

Finetune前
即:加载 1.8B 和 Pretrain阶段产物(iter_2181) 到显存。
在这里插入图片描述
Finetune后
即:加载 1.8B 和 Fintune阶段产物 到显存。
在这里插入图片描述

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

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

相关文章

C语言中, 文件包含处理,#include< > 与 #include ““的区别

文件包含处理 指一个源文件可以将另外一个文件的全部内容包含进来 &#xff23;语言提供了#include命令用来实现文件包含的操作 #include< > 与 #include ""的区别 <> 表示系统直接按系统指定的目录检索 "" 表示系统先在 "" 指定…

vulfocus靶场couchdb 权限绕过 (CVE-2017-12635)

Apache CouchDB是一个开源数据库&#xff0c;专注于易用性和成为"完全拥抱web的数据库"。它是一个使用JSON作为存储格式&#xff0c;JavaScript作为查询语言&#xff0c;MapReduce和HTTP作为API的NoSQL数据库。应用广泛&#xff0c;如BBC用在其动态内容展示平台&…

动态内存管理 柔性数组

文章目录 动态内存函数 malloc freecallocrealloc 重新开辟空间realloc 也可以第一个参数为NULL&#xff0c;则是直接开辟内存&#xff0c;类似于malloc用法 常见的动态内存错误对空指针进行解引用操作对开辟的内存越界访问对非动态开辟的内存使用free释放使用free释放动态开辟…

《Linux运维总结:Kylin V10+ARM架构CPU基于docker-compose一键离线部署redis6.2.8之容器版哨兵集群》

总结&#xff1a;整理不易&#xff0c;如果对你有帮助&#xff0c;可否点赞关注一下&#xff1f; 更多详细内容请参考&#xff1a;《Linux运维篇&#xff1a;Linux系统运维指南》 一、部署背景 由于业务系统的特殊性&#xff0c;我们需要面向不通的客户安装我们的业务系统&…

停更这大半年-我去考了个研

解释一下2023年我几乎没有更新文章 还有私信也没有回&#xff0c;因为我几乎没有登陆过csdn了 我从2023年3月份开学就开始准备考研了 其实3月28号就出结果了&#xff0c;后面有事情就给忘了&#xff0c;给我的粉丝解释一下&#xff08;虽然粉丝也不多&#xff09;。后面应该会…

【GPTs分享】GPTs分享之 AskYourPDF Research Assistant​

一、简介 AskYourPDF Research Assistant 是一款高级人工智能研究助手&#xff0c;专门设计用于帮助用户高效从PDF文件和文章中提取信息。它结合了深度学习技术和自然语言处理能力&#xff0c;以便用户能够快速地查询、总结及处理文档内容&#xff0c;并能够生成与文章内容相关…

JAVA的jBPM工作流框架

一. jBPM是什么&#xff1f; 现实生活中有很多需要走一些流程的过程&#xff0c;比如请假流程&#xff0c;报销流程等&#xff0c;使用工作流框架&#xff0c;即可写一个流程即可&#xff0c;添加流程时不在繁琐的建立新的各种配置。jBPM&#xff08;Java Business Process M…

力扣:104. 二叉树的最大深度(Java,DFS,BFS)

目录 题目描述&#xff1a;输入&#xff1a;输出&#xff1a;代码实现&#xff1a;1.深度优先搜索&#xff08;递归&#xff09;2.广度优先搜索&#xff08;队列&#xff09; 题目描述&#xff1a; 给定一个二叉树 root &#xff0c;返回其最大深度。 二叉树的 最大深度 是指从…

【CVPR2023】《A2J-Transformer:用于从单个RGB图像估计3D交互手部姿态的锚点到关节变换网络

这篇论文的标题是《A2J-Transformer: Anchor-to-Joint Transformer Network for 3D Interacting Hand Pose Estimation from a Single RGB Image》&#xff0c;作者是Changlong Jiang, Yang Xiao, Cunlin Wu, Mingyang Zhang, Jinghong Zheng, Zhiguo Cao, 和 Joey Tianyi Zhou…

MyBatisPlus详解(一)项目搭建、@TableName、@TableId、@TableField注解与常见配置

文章目录 前言1 快速入门1.1 环境准备1.1.1 新建数据库1.1.2 创建项目 1.2 快速开始1.2.1 引入MyBatisPlus依赖1.2.2 定义Mapper1.2.3 配置实体类和表的关系1.2.4 简单测试1.2.4.1 测试插入操作1.2.4.2 测试查询操作1.2.4.3 测试更新操作1.2.4.4 测试删除操作 1.3 常见注解1.3.…

Jenkins服务器IP更换,Jenkins URL地址更换

服务器的网络地址发生变动&#xff0c;修改jenkins服务器IP地址后&#xff0c;jenkins网页能够打开&#xff0c;但是job中的配置钩子没有自动改变&#xff0c;如图所示&#xff1a; 经过查询资料了解&#xff0c;需要修改jenkins本地化配置地址才可以显示正确&#xff1a; 1、…

独立样本t检验——python完整代码(直接运行就行)

#!/usr/bin/env python # -*- coding: utf-8 -*- # Author : 三十二画生JH # Contact : fjhstudent163.com # Software: PyCharm # Time : 2024/4/21 21:49 # Site : 网址 # File : t_test.py # Version : # ---功能描述 """ 对实验数据做独立样本&am…

【GoWeb框架初探————XORM篇】

1. XORM xorm 是一个简单而强大的Go语言ORM库. 通过它可以使数据库操作非常简便。 1.1 特性 支持 Struct 和数据库表之间的灵活映射&#xff0c;并支持自动同步事务支持同时支持原始SQL语句和ORM操作的混合执行使用连写来简化调用支持使用ID, In, Where, Limit, Join, Havi…

日期相关的题目

日期相关的题目 1. 计算日期到天数转换2. 日期累加3. 打印日期4. 日期差值 1. 计算日期到天数转换 输出示例: 思路&#xff1a;计算前n-1个月的天数在加上这个月的天数。 #include <iostream> using namespace std;int main() {int year, month, day;cin >> yea…

【JavaEE初阶】网络原理|认识协议|协议分层|TCP/IP模型|封装和分用

一、认识协议 1.概念 简单来说&#xff1a;就是一种通信双方&#xff0c;对于通信规则的约定&#xff08;标准&#xff09;&#xff0c;一定是通信双方都认可的 但是这个协议不一定是认可面非常广的&#xff0c;即使是两个人之间的也可叫做协议 就好⽐⻅⽹友&#xff0c;彼此…

Vuex 的原理

Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。每一个 Vuex 应用的核心就是 store&#xff08;仓库&#xff09;。“store” 基本上就是一个容器&#xff0c;它包含着你的应用中大部分的状态 ( state )。 Vuex 的状态存储是响应式的。当 Vue 组件从 store 中读取状态的…

ansible执行mysql脚本

目录 概述实践环境要求ansible yml脚本命令离线包 概述 ansible执行mysql脚本 实践 官网文档 环境要求 环境需要安装以下内容: 1.mysql客户端(安装了mysql即会有)2.安装MySQL-python (Python 2.X) 详细插件安装链接 ansible yml脚本 关键代码如下&#xff1a; # 剧本…

Pytorch学习路程 2:神经网络分类与实战

目录 神经网络分类 下载数据集 加载数据集 定义损失函数 创建模型 使用DataSet和DataLoader化简我们的数据封装 使用Pytorch神经网络进行气温预测 使用到的包&#xff1a; 构建网络模型 Reference 神经网络分类 我们以最为经典的MNIST数据集为例子&#xff0c;识别手…

GO环境及入门案例

文章目录 简介一、win GO开发环境安装二、Linux go运行环境二、GO代码入门2.1 导包案例2.2 赋值2.3 变量、函数2.4 三方库使用 简介 go不是面向对象语言&#xff0c; 其指针、结构体等比较像C&#xff0c;知名的go 开源项目有docker k8s prometheus node-exporter等 一、win …

FPGA - ZYNQ Cache一致性问题

什么是Cache&#xff1f; Cache是一种用来提高计算机运行速度的一种技术。它是一种小而快的存储设备&#xff0c;位于CPU与内存之间&#xff0c;用于平衡高速设备与低速设备之间的速度差异。Cache可以存储常用的数据或指令&#xff0c;以便CPU更快地获取&#xff0c;从而减少对…