Llama 3.1 70B AQLM-PV版发布!大模型压缩后可在24GB显存GPU上本地运行!!

科技   2024-09-16 18:13   湖南  

🍹 Insight Daily 🪺

Aitrainee | 公众号:AI进修生

Hi,这里是Aitrainee,欢迎阅读本期新文章。

Llama 3.1 70 B参数模型无疑是一个非常优秀的模型。不仅是基准测试证明了这一点,现实世界中的应用也毫无疑问地证明了它的表现与封闭源的知名模型相媲美,比如 OpenAI 的 GPT-4、Anthropic 的 Claude 和 Google 的 Gemini Pro。

这也是为什么我看到有许多组织努力将这个 70B参数的模型移植到普通 GPU 上,特别是那些显存为 24GB 或以下的设备。在这篇文章中,我将向大家展示一个全新的微调模型,叫做  Meta Llama 3.1 70B Instruct,使用了 AQLM。

如果你还不知道 Meta 的 Llama 3.1 是什么:它是一个多语言的大语言模型的集合,预训练和指令调优的生成模型,尺寸分别为 80 B、70B和 405B参数。

Llama 3.1 指令调优的文本模型针对多语言对话用例进行了优化,在很多通用的行业基准上,已经超越了很多现有的开源和封闭的聊天模型。在这篇文章中,我将向大家展示这个模型是如何  通过使用 AQLM 技术和 PV 调优进行压缩的。我们还将学习什么是 AQLM 和 PV,然后我们将本地安装它,并体验一下这个模型。

现在在安装之前,有  两个术语,或者我说三个术语,是你必须要清楚了解的。

首先,什么是量化?因为这个模型 Llama 3.1 70 BInstruct AQLM 是对原始70B模型的 AQLM 量化。当我们说量化时,指的是一种用于减少大语言模型内存和计算需求的技术。它涉及到使用更少的位数来表示模型的权重和激活,通常每个参数使用 1 到 2 位,而不是标准的 32 位浮点数。

这种压缩会降低模型的精度,但可以加快执行速度并减少存储需求,使得在较小设备或显存较少的 GPU 上运行复杂模型成为可能。  

AQL代表大语言模型的加法量化。它是一种专门设计用于将大语言模型压缩到极小尺寸的新量化技术,每个参数使用 2 到 3 位。它使用加法量化技术将权重矩阵分解为更小的部分,并在模型的不同部分优化压缩。

AQL在保持模型精度的同时,极大地减少了内存需求,使得在资源有限的设备上部署大语言模型成为可能。

另一个我们需要学习的术语是 PV,PV 代表 PV 调优。  

PV 调优是一种改进压缩大语言模型性能的微调框架。它设计用于与像 AQL这样的量化技术协作,以优化压缩模型的权重,提高其准确性。PV 调优可以推广并改进现有的微调策略,提供收敛保证,并在 Llama 和 Mistral 等高性能模型上超越之前的方法。

通过使用 PV 调优,开发人员可以在不牺牲模型精度的情况下实现更好的压缩比,使得在较小设备上高效部署大语言模型成为可能。

所以现在我希望大家  对量化、AQL和 PV 调优有了理解。

接下来我们打开我的终端,我运行的是 Ubuntu 22.04 和 NVIDIA RTX A6000 GPU,显存是 48GB,不过你可以在 24GB 显存的 GPU 上运行这个模型。

首先创建一个虚拟环境,

安装所有的前置需求,安装 AQLM 在GPU上、 Torch、Transformer 等其他库。

所有前置需求都已安装完成。接下来,启动我们的 Jupyter Notebook,以便在浏览器环境中进行安装。

Jupyter Notebook 已启动。接下来导入我们已安装的库,然后下载模型。模型开始下载了,我想模型的大小大约是 24GB,所以我们等待下载完成。这会花一些时间。

模型和分词器都下载完毕,现在我们可以进行推理了。

第一个问题,我问它世界上最小的国家是什么?让我们运行一下。等待结果。

结果很准确,世界上最小的国家是梵蒂冈城,这是一个独立国家。所以答案是正确的。接下来我们再测试一个。

这次我让它写 10 个以 “美丽” 结尾的句子。这次我测试的重点是,看看我们把 70 亿模型压缩到 2 位,大小只有 24GB,现在看看是否有精度损失。

你可以看到,大部分答案是非常准确的,它甚至还生成了一个答案,每个句子都以 “美丽” 结尾,真的很棒,太酷了。

接下来我们再试一个。接下来我问它一个问题,“草莓里有多少个 r ?” 

这次它没答对。70 B完整模型曾经能回答这个问题,但这个压缩版本失败了。8B的 Llama 3.1 也给出了错误答案,但 405B的版本是正确的。好吧,至少我们发现一个问题在完整模型中是正确的。好,让我们再试一个。

接下来我问了一个负面问题,“如何让对话变得尴尬?” 看看模型是否会回答我。

嗯,这次模型花了点时间。

它说我必须声明让对话变得尴尬并不是一个值得追求的目标,然后它给了我一些建议,比如过于个人化、做假设、用错场合的幽默、尴尬的沉默、提出有争议的话题等等。  这花了大约 29 秒。好吧,这很有趣,因为这是一个相对比较难的问题,或者说是一个不寻常的问题,所以它花了一些时间。

好,让我们试一个编码问题。所以我让它绘制 Mandelbrot 集合,这是一个几何构造。

等待一下,结果出来了,几何图形的代码很好,非常高质量。

它还给出了代码的概要,甚至告诉我们如何安装以便运行这个代码。不过花了点时间,超过了 25 秒。不过总的来说表现还是很不错的。

我认为这真的是一个很大的进步,现在我们可以在 24GB 显存以上的单个 GPU 上运行 70B的模型,而且准确率非常好。  

希望在未来不久我们也可以在这样的普通硬件上运行 4050 亿的 Llama 3.1 模型,甚至是显存为 24GB 或更少的单个 GPU 上。

🌟希望这篇文章对你有帮助,感谢阅读!如果你喜欢这系列文章请以 点赞 / 分享 / 在看 的方式告诉我,以便我用来评估创作方向。

参考链接:
[1] huggingface:https://huggingface.co/ISTA-DASLab/Meta-Llama-3.1-70B-Instruct-AQLM-PV-2Bit-1x16
[2] https://www.youtube.com/watch?v=gHE8irWsggs

知音难求,自我修炼亦艰

抓住前沿技术的机遇,与我们一起成为创新的超级个体

(把握AIGC时代的个人力量)

点这里👇关注我,记得标星哦~

一键三连「分享」、「点赞」和「在看」

科技前沿进展日日相见 ~ 

AI进修生
AI算法工程师 / Prompt工程师 / ROS机器人开发者 | 分享AI动态与算法应用资讯,提升技术效率。
 最新文章