【惊叹】AI进步的速度太快,我们赶不上了?

news2024/11/29 16:32:32

文章目录

  • 前言
  • 一、LoRA
  • 二、QLoRA
    • 1、环境准备
    • 2、推理就是直接 跑shscripts/generate.sh。
    • 3、前面的环境和数据都没问题了,运行scripts/generate.sh。
  • 总结


前言

AI 领域的技术,真是隔一段时间就有一个新突破!

全民都能训练大模型的时代,指日可待了!

一、LoRA

在讲解新突破之前,先简单科普下 LoRA。

LoRA,英文全称 Low-Rank Adaptation of Large Language Models,直译为大语言模型的低阶适应,这是微软的研究人员为了解决大语言模型微调而开发的一项技术。

后来,LoRA 不仅被应用于大语言模型,还适配应用到了 Stable Diffusion。

LoRA 的使用,大幅节省了微调的成本。比如 GPT-3 有 1750 亿参数,为了让它能干特定领域的活儿,需要做微调,但是如果直接对 GPT-3 做微调,成本太高太麻烦了。

LoRA 的做法是,冻结预训练好的模型权重参数,然后在每个 Transformer 块里注入可训练的层,由于不需要对模型的权重参数重新计算梯度,这样就大大减少了需要训练的计算量。

LoRA 就好比是一个插件,可以帮助我们低成本的定制各种效果。

今天的主角,则是在 LoRA 基础上再进一步,加上了深度的量化过程,名为 QLoRA。

二、QLoRA

QLoRA 其实是核心就是在 LoRA 的技术加上深度的量化过程。核心优化思想包括以下三点:

4bit NoramlFloat Quantization :一种新的数据类型,只用 4 字节表征参数并且保证整个模型的精度损失极小。(和我们之前的 int8, int4 量化方式不同, 原理这篇先不展开了)
Double Quantization :对第一次量化后的那些常量再进行一次量化,减少存储空间。
Paged optimizers : 使用 NVIDIA 统一内存功能,该功能在 CPU 和 GPU 之间进行自动 page 对 page 传输,以便在 GPU 偶尔 OOM 的情况下进行. 可以从现象上理解成出现训练过程中偶发 OOM 时能够自动处理,保证训练正常训练下去。
只能说,太厉害了,这 GPU 的的成本大大大大缩减。EleutherAI/pythia-12b 推理只需 12G, finetune 也只需 23G. 单个 3090 就能搞定了。

QLoRA 技术让 650B 参数训练从 780G 降到 48G,再结合一些新的优化器,比如 Sophia,可以让模型训练 adma 提速 2 倍。

两者一结合,咱们也能训练大模型的日子,指日可待了!

项目地址:

https://github.com/artidoro/qlora

有位某乎网友,对 QLoRA 进行了实测。

我们知道 120 亿参数量的 pythia-12b,想要运行起来,需要至少 48G 显存,但是使用 QLoRA 之后,只需要 12.8G 显存。

以下是实测记录:

1、环境准备

代码如下(示例):


git clone https://github.com/artidoro/qlora.git

conda create -n qenv python-3.8
conda activate qenv
cd qlora
pip install -r requirements.txt

#项目涉及到的新代码,都需要从源码进行安装才能保证。这里有同学网络不好的或者安装失败的可参见遇到的问题手动安装
pip install -q -U bitsandbytes
pip install -q -U git+https://github.com/huggingface/transformers.git
pip install -q -U git+https://github.com/huggingface/peft.git
pip install -q -U git+https://github.com/huggingface/accelerate.git

2、推理就是直接 跑shscripts/generate.sh。

这里建议先下载好模型和数据。避免老断带来的心情烦躁。网络好的下载顺畅的可跳过此部分。

EleutherAI/pythia-12b(需要24G存储)模型介绍:

EleutherAI 是一个非营利性的人工智能研究实验室,专注于大型模型的可解释性和对齐性。pythia 是 EleutherAI 为了促进 LLM 的研究开源的一系列 LLM(70M, 160M, 410M, 1B, 1.4B, 2.8B, 6.9B, and 12B)。

#单独起一个脚本就下载模型和数据。
# test.py 
#模型下载也可网上找那种不下到默认目录的。缓存目录: ll ~/.cache/huggingface/hub/models--EleutherAI--pythia-12b/
from transformers import (
    AutoModelForCausalLM, 
)
model = AutoModelForCausalLM.from_pretrained("EleutherAI/pythia-12b")

# download dataset. 
#这里联网下载不下来的,手动下载地址 https://huggingface.co/datasets/tatsu-lab/alpaca/tree/main/data
# 就把24M数据下载下来, mkdir -p tatsu-lab/alpaca , 然后下载好数据丢里面就行
from datasets import load_dataset
dataset = load_dataset("tatsu-lab/alpaca")

3、前面的环境和数据都没问题了,运行scripts/generate.sh。

显存大小:EleutherAI/pythia-12b 推理只需要显存12.8G. 好强,我跑的第一个10B以上模型.
在这里插入图片描述

以上内容整理自:

52AI:https://zhuanlan.zhihu.com/p/632398047

奉孝翼德:https://zhuanlan.zhihu.com/p/610031713

总结

QLoRA 的出现进一步节省了训练成本,再结合能够指导网络更快收敛的优化器,训练成本大幅降低。

全民都能训大模型的时代,指日可待,就像现在训练分类、检测、分割网络一样。

好了,今天就聊这么多吧,我是 徐浪,我们下期见!

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

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

相关文章

TypeScript算法题实战——剑指 Offer篇(3)

随着TypeScript的流行,越来越多的开发者开始使用TypeScript来解决算法问题。 在本文中,我们将使用TypeScript来解决剑指offer的算法题。这些问题涵盖了各种各样的主题,包括数组、字符串、链表、树、排序和搜索等。我们将使用TypeScript的强类…

【MySQL高级篇笔记 (中-索引的数据结构) 】

此笔记为尚硅谷MySQL高级篇部分内容 目录 一、索引及其优缺点 1、索引概述 2、优点 3、缺点 二、InnoDB中索引的推演 1、设计索引 1.一个简单的索引设计方案 2.InnoDB中的索引方案 2、常见索引概念 1. 聚簇索引 2. 二级索引(辅助索引、非聚簇索引&#…

Node.js详解(一):基础知识

文章目录 一、Node.js介绍二、Node.js的优势三、Node.js的特点1、V8虚拟机2、事件驱动3、异步、非堵塞I/O 四、NodeJS带来的对系统瓶颈的解决方案1. 并发连接2. I/O阻塞 五、NodeJS的优缺点1、优点:2、缺点: 六、适合NodeJS的场景1、RESTful API2、统一W…

VMware、Ubuntu安装以及虚拟机复制粘贴问题

安装VMware 下载阿里云链接(16 pro):VMware https://www.aliyundrive.com/s/ot9dhPNdSwC 安装:选一下安装地址,一直下一步即可。(可能会要求重启电脑,重启即可) 然后点击“许可证”…

Java 高级应用-多线程-(四)FutureTask的介绍及使用

Java多线程之FutureTask的介绍及使用 FutureTask属于java.util.concurrent 包;FutureTask表示可取消的异步计算。FutureTask类提供了一个Future的基本实现 ,具有启动和取消计算的方法,查询计算是否完整,并检索计算结果。结果只能…

Camtasia2023试用版新功能介绍

Camtasia 2023在易用性更进一步,再一次降低了制作精美视频的门槛,下面看一看,Camtasia 2023有哪些的新功能!包括影像、音效、鼠标移动轨迹、解说声音等等内容的录制,并且软件还可以提供即时播放和编辑压缩的功能&#…

如何监控电动车充电桩能耗?

一 背景 随着新能源汽车的快速发展,像特斯拉、BYD、蔚来、小鹏和理想等品牌的电动汽车在我们的日常生活中越来越多了,可见电动汽车如今已逐渐被我们所认可了。同汽油车需要加油一样,电动汽车需要充电,如此一来,电动汽…

第14届蓝桥杯省赛真题剖析-2023年5月7日Scratch编程中级组

[导读]:超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成,后续会不定期解读蓝桥杯真题,这是Scratch蓝桥杯真题解析第142讲。 第14届蓝桥杯Scratch省赛真题,这是2023年5月7日举办的省赛中级组试题,比赛仍然采取线…

洗地机充电底座语音芯片选型?NV040DS语音芯片

一、洗地机语音提示功能的价值 洗地机充电底座加入语音提示功能,主要是为了提高洗地机的智能化程度和使用便利性! 1. 提高使用效率:底座语音提示充电状态可以使用户更方便地掌握底座电量和洗地机的使用情况,从而更快捷地对底座进…

ProtoBuf 语法(二)

系列文章 ProtoBuf 语法(一) ProtoBuf 语法(三) 文章目录 八、更新消息8.1 更新规则8.2 reserved 保留字段8.3 验证错误删除字段造成的数据损坏8.4 未知字段及其获取方法8.5 验证未知字段 八、更新消息 8.1 更新规则 如果现有的…

mysql中的count(1)、count(*)、count(id)哪个更快?

今天和大家聊一下mysql中的count()方法 我们日常开发中,经常会用到count()命令,有的人用count(*),有的人用count(1),还有的人用count(id),那么这几种写法都有什么区别呢?哪种方法效率更高呢?今…

LangChain 查询使用指「北」

一只鹦鹉加上一根链条,组成了时下最流行的 AI 话题热门榜选手——LangChain。 LangChain 是一种 AI 代理工具,可以为以 ChatGPT 为代表的额大语言模型(LLM)增添更多功能。此外,LangChain 还具备 token 和上下文管理功能…

提高水泵可靠度与生产效率:故障诊断系统实践解析

水泵作为工厂生产线中不可或缺的设备之一,其正常运行对于生产效率和设备可靠性至关重要。然而,水泵故障可能会导致设备停机和生产中断,给企业带来巨大损失。 图.水泵(iStock) 为了解决这一问题,水泵健康管理…

机器人中的数值优化(四)—— 线搜索求步长(附程序实现)

本系列文章主要是我在学习《数值优化》过程中的一些笔记和相关思考,主要的学习资料是深蓝学院的课程《机器人中的数值优化》和高立编著的《数值最优化方法》等,本系列文章篇数较多,不定期更新,上半部分介绍无约束优化,…

CentOS7下更改、移动mysql数据存储的位置 附os 错误码13问题

1、看一下目前mysql数据存储的位 select datadir;从这个结果我们可以看出,当前mysql的datadir是在/var/lib/mysql 目录里的 2、关掉连接mysql的各种程序服务 systemctl stop mysqld 或 service mysql stop 3、在期望的位置创建目录(datadir的新位置&a…

【走进Java框架】什么是Java框架,为什么要学习Java框架.

前言: 大家好,我是良辰丫,今天我们就要开始Java框架之旅了,我们在学习的征途中不断充实自己,提升自己的能力,加油哈,自我勉励一下,跟随我的步伐,一起前行哈.💌💌💌 🧑个人主页:良辰针不戳 📖所属专栏&#…

【前端面试知识点】- 大厂面试(四)

目录 1.什么是尾调用,使用尾调用有什么好处?2.ES6 模块与 CommonJS 模块有什么异同?3.for…in 和 for…of 的区别4.ajax、axios、fetch(前台请求后台数据的方式)5. parseInt()的用法6.浏览器运行机制7.border-radius:50%和100%究竟有什么区别…

Ansible从入门到精通【四】

大家好,我是早九晚十二,目前是做运维相关的工作。写博客是为了积累,希望大家一起进步! 我的主页:早九晚十二 专栏名称:Ansible从入门到精通 立志成为ansible大佬 ★ansible-playbook应用 play-book的介绍pl…

lmsys.org最新的LLM排行榜

lmsys.org Large Model Systems Organization (LMSYS Org) 是一个开放的研究组织,由加州大学伯克利分校的学生和教师与加州大学圣地亚哥分校和卡内基梅隆大学合作创立。 他们的目标是通过共同开发开放数据集、模型、系统和评估工具,让每个人都能访问大…

App 应用测试方法以及测试思路

分析三种主流的移动 App 类型,并给出和普通web测试不同的地方,给出测试的思路,并给出部分场景组合。 移动端测试还是 PC 端测试,业务测试其实都属于 GUI 测试的范畴,所以基本的测试思路,比如基于页面对象封…