单卡轻松打造 ChatGPT 竞争者“原驼”,QLoRA 革新大语言模型微调技术

news2024/11/28 12:54:52

出品人:Towhee 技术团队 作者:顾梦佳

由 OpenAI 推出的聊天机器人ChatGPT 爆火,带动 AI 受到了前所未有的关注。随之市面上也涌现出了各类开源的大语言模型(LLM),其中 LLaMA “羊驼系列”最受关注、最具潜力。LLaMA 是由 Meta AI 发布的一个开放且高效的大型基础语言模型,其数据集来源都是公开数据集,无任何定制数据集,保证了其工作与开源兼容和可复现。而 Guanaco ”原驼“模型则是基于 LLaMA 利用QLoRA技术微调出来的最优模型。QLoRA 在降低大模型微调成本的同时,也保证了性能的提升。它只需要一张消费级显卡,就能在两天内获得一个99+%近似 ChatGPT 的大语言模型。其论文一经发布就受到了业内广泛关注,是目前热度最高的AI论文之一。

alt |Comparing finetune methods: Regular vs LoRA vs QLoRA

QLoRA 使用了一种新颖的高精度技术将预训练的Transformer模型量化为4位精度,然后添加一小组可学习的低秩适配器(LoRA)权重,通过反向传播梯度来调整这些量化权重。它通过引入多项创新技术改进了LoRA,用于每一层网络层,从而在节省内存的同时保证性能:

  • NF4(4位 NormalFloat):一种新的数据类型,对于正态分布的权重来说,在信息理论上是最优的。
  • 双重量化:一种量化量化常数的方法,通过量化量化常数来减少平均内存占用。平均每个参数节能够省约0.37位,对于650亿参数的模型来说约为3GB。
  • 分页优化器:它可以用于管理内存峰值,使用了英伟达统一内存,在处理具有长序列长度的小批量时可以避免梯度检查点的内存峰值。

实验结果表明,QLoRA 仅用小型的高质量数据集进行微调,就可以实现最先进的结果。它可以将微调 650亿参数模型的平均内存需求从大于780GB的GPU内存降至少于48GB。同时,与16位精度的微调基准相比,使用4位精度的 QLoRA 也不会降低运行时间或预测性能。这是 LLM 微调的一项重大突破,意味着目前最大的公开可用模型可以在单个GPU上进行微调。实验获得的最优大语言模型——650亿参数版的“原驼”,在 Vicuna 基准测试上达到了 ChatGPT 99.3%的水平,并且只需要用单张消费级显卡微调24小时以上。如果只训练不到12小时,330亿参数的“原驼”也能达到ChatGPT性能水平的97.8%。在部署时,最小的”原驼“模型(7B参数)只需要5GB的内存,而且其性能在Vicuna基准测试上比26GB的 Alpaca 模型高出20个百分点以上。

alt

|Elo rating, judged by human raters or GPT-4

论文中使用的测试数据包括953条不重复的用户查询,筛选自两个数据集:”小羊驼“ Vicuna中80个不同类别的提示,以及OASST1(OpenAssistant Conversations)验证集的多语言多轮对话。利用这些数据集,QLoRA 的团队对“原驼“系列模型同时进行了机器(GPT-4)和人类评估。自动(机器)评估将不同系统与ChatGPT(GPT-3.5 Turbo)在基准测试中的表现进行对比。它利用 GPT-4 对各系统的表现评分,最终模型的整体表现被计算为ChatGPT得分的百分比。根据实验结果,ChatGPT 作为比较基线得分为 100%,GPT-4的平均得分为 114.5%,而开源大语言模型中“原驼”占领了最高分数 99.3%(65b)和97.8%(33b)。综合评估结合了机器和人类评估,锦标赛结果被聚合成Elo分数,采用了锦标赛的方式让模型相互竞争,以确定系统性能的排名。而竞标赛排名表示,“原驼”系列模型甚至比ChatGPT(GPT-3.5)更受欢迎。 总体而言,”原驼“更尊重事实、不容易受到错误信息的误导,并且拥有强大的心智理论(Theory of Mind),即理解自己以及周围人类的心理状态的能力。然而,它同时也具有一些明显的缺点,比如容易被提示攻击而泄漏信息、尤其不擅长数学。

相关资料:

  • 代码地址: https://github.com/artidoro/qlora
  • 论文链接: QLORA: Efficient Finetuning of Quantized LLMs

  • 如果在使用 Milvus 或 Zilliz 产品有任何问题,可添加小助手微信 “zilliz-tech” 加入交流群。 ​
  • 欢迎关注微信公众号“Zilliz”,了解最新资讯。 alt

本文由 mdnice 多平台发布

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

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

相关文章

Vue实现订单确认界面禁止浏览器返回操作导致重复提交订单的问题

哈喽 大家好啊 最近遇到一个问题,就是在提交订单成功后的页面,然后用户去浏览器返回,就导致又提交了一次 然后就想到了如果提交成功页面,就阻止浏览器返回操作 主要实现如下: 1.在mounted的钩子函数: 2.…

每日一练 | 华为认证真题练习Day50

1、SWA和SWB的MAC地址表中,MAC地址、VLAN、端口对应关系正确的有?(多选) 2、PPP帧格式中的Flag字段的取值为? A. 0xFF B. 0x7E C. 0xEF D. 0x8E 3、ICMP报文不包含端口号,所以无法使用NAPT。 A. 对 B…

[ Term ] 你真的了解 UTC 时间吗?它和 GMT 时间的区别是什么?

什么是 GMT 和 UTC,他们之间的区别是什么? GMT(Greenwich Mean Time)和UTC(Coordinated Universal Time)是两个不同的时间标准,但它们非常相似并且通常被混淆使用,那他们之间的区别在…

后端从入门到转岗,如何转型

一、技术介绍 我学习的技术很多: 例如:JAVA JS C# python vue mysql Oracle 等等。 学习也是从入门开始 ,入口是JAVA 二、学习前的准备工作 学习前需要准备什么呢? 我觉得学习前最需要准备的是下定决心吃苦&#xff…

常见数据采集工具介绍

数据采集是指从各种数据源中收集数据并将其存储在一个地方,以便进行分析和处理。数据采集工具是帮助我们自动化数据采集过程的软件或服务。在本文中,我们将介绍一些常见的数据采集工具。 Web Scraper Web Scraper是一种免费的浏览器扩展,可…

低代码平台选型必看!让你少走弯路

目前低代码技术正处在风口,低代码平台产品不断涌现,乱花渐欲迷人眼。作为软件公司或企业IT部门的负责人,在做低代码平台的 选型时需要关注哪些方面,才能顺利“上车”,让低代码为自己的团队赋能? 除了产品功…

我的创作纪念日一周年

今天六一 祝大家节日快乐 ! 文章目录 机缘收获日常成就憧憬 机缘 其实好兄弟早在21年10月就已经注册了csdn账号,但是当初只是用来查找资料,也就是看别人写的博客吧,那时候感觉写博客好难,所以自己迟迟不敢尝试&#x…

如何将Linux命令默认的提示结果不显示或者不输出?以及在脚本中如何替代Ctrl + C等关闭命令的终端窗口?

一、问题描述: 当我们想要获取命令的输出结果时,有时候命令会带出一些默认的提示信息输出到屏幕上,如何过滤掉这个提示信息呢? 例如,telnet命令退出时会默认提示“Connection closed by foreign host.” 例如&#x…

如何使用一站式自动化测试平台TestOne进行App兼容性测试

首先,在讲主题之前,大家先了解移动兼容性测试包括哪些?然后再说,移动兼容性自动化测试方法有哪些?通过一站式自动化测试平台(英文名称:TestOne),具体如何来实现&#xff…

RPG 类型游戏开发基础教程

RPG 游戏开发基础教程 第一步 下载 RPG Maker 开发工具包 1.RPG Maker 是什么? RPG Maker 是由 Enterbrain 公司推出的 RPG 制作工具。 中文译名为 RPG 制作大师。 熟悉的人喜欢简称为 RM。 2、关于 RPG Maker MV? RMMV 是当前 RM 系列最新发行的一款 RPG 制作工…

神奇的开关 — 可控硅

带大家认识下可控硅,以及可控硅的工作原理 ...... by 矜辰所致目录 前言一、什么是可控硅1.1 基本概念1.2 可控硅的结构1.2.1 单向可控硅1.2.2 双向可控硅 二、可控硅的工作原理2.1 可控硅是如何工作的导通条件维持条件关断条件 2.2 工作原理 三、可控硅的参数四、…

Idea+maven+springboot项目搭建系列--2 整合Netty完成客户端服务器端消息收发

前言:Netty 作为主流的nio 通信模型应用相当广泛,本文在spring-boot 项目中集成Netty,并实现客户端以及服务器端消息的接收和发送;本文是 Spring架构篇–2.7 远程通信基础–使用Netty 的扩展; 1 spring-boot jar包引入…

C++进阶 —— (C++11新特性)

三,范围for循环 四,final与override 五,智能指针 六,静态数组array、forward_list、unordered系列(新增容器) 七,默认成员函数的控制 在C中,对于空类编译器会生成一些默认成员函数(如构造函数、拷贝构造函数…

嵌入式Linux驱动开发 03:平台(platform)总线驱动模型

文章目录 目的基础说明开发准备在驱动中获取资源单驱动使用多个资源总结 目的 前面文章 《嵌入式Linux驱动开发 01:基础开发与使用》 和 《嵌入式Linux驱动开发 02:将驱动程序添加到内核中》 介绍了驱动开发最基础的内容,这篇文章将在前面基…

Vue3 小兔鲜4:Layout-静态模版结构搭建

Vue3 小兔鲜4&#xff1a;Layout-静态模版结构搭建 Date: May 31, 2023 目标效果&#xff1a; 分成Nav、Heade、二级路由出口、Footer区域 组件结构快速搭建 Nav <script setup></script><template><nav class"app-topnav"><div clas…

如何用VS2019创建并调用动态库

如何用VS2019创建并调用动态库 创建动态库调用动态库 创建动态库 网上查了相关资料&#xff0c;创建动态库主要有两种方式&#xff0c;一种是通过空项目创建动态库&#xff0c;一种是直接创建动态链接库&#xff0c;本文所总结的就是第二种&#xff0c;直接创建动态链接库。 …

B树(C语言描述)

一.概念 B树是一种多路平衡查找树&#xff0c;不同于二叉平衡树&#xff0c;他不只是有两个分支&#xff0c;而是有多个分支&#xff0c;一棵m阶B树(balanced tree of order m)是一棵平衡的m路搜索树&#xff0c;B树用于磁盘寻址&#xff0c;它是一种高效的查找算法。 二.性质…

【Kubernetes 入门实战课】Day03——容器的本质

系列文章目录 【Kubernetes 入门实战课】Day01——虚拟机创建及安装 【Kubernetes 入门实战课】Day02——初识容器 文章目录 系列文章目录前言一、容器到底是什么&#xff1f;二、为什么要隔离三、与虚拟机的区别是什么四、隔离是怎么实现的 前言 上一节中我们完成了在Linux虚…

Anaconda下载安装及使用方法汇总

软件说明: Anaconda是Red Hat Linux和Fedora的安装管理程式。它以Python及C语言写成&#xff0c;以图形的PyGTK和文字的python-newt介面写成。它可以用来自动安装配置&#xff0c;使用户能够以最小的监督运行。Anaconda安装管理程式应用在RHEL&#xff0c;Fedora和其他一些项目…

IMX6ULL裸机篇之I2C实验-

一. I2C 实验简介 I2C实验&#xff0c;我们就来学习如何使用 I.MX6U 的 I2C 接口来驱动 AP3216C&#xff0c;读取 AP3216C 的传感器数据。 AP3216C是一个三合一的环境光传感器&#xff0c;ALSPSIRLED&#xff0c;ALS是环境光&#xff0c;PS是接近传感器&#xff0c;IR是红外L…