首页 > 其他分享 >微软利用BitNet最终把1000亿参数人工智能模型塞进了智能手表

微软利用BitNet最终把1000亿参数人工智能模型塞进了智能手表

时间:2024-11-15 20:43:16浏览次数:3  
标签:四舍五入 权重 缩放 人工智能 BitNet 矩阵 RoundClip 1000

序言:斯坦福大学利用LoLCats技术将1000亿参数模型的训练成本降低到20美元;微软则通过BitNet技术进一步将模型量化,使其能在消费类电子产品中运行,例如个人电脑、手机、智能手表等嵌入式设备。人工智能就这样顺理成章的进入了大家的日常生活。

关联的文章:《斯坦福大学推出线性前沿LLM技术,训练模型成本仅为20美元》

大型语言模型(LLMs)已经彻底改变了人工智能的格局,但它们庞大的体积也带来了同样巨大的计算成本。如果我们能够在不牺牲性能的前提下,极大提升这些模型的效率,会怎么样呢?这正是研究人员通过BitNet b1.58所实现的,它开启了1位LLM的时代。

在Apple M2上运行BitNet b1.58 3B模型的bitnet.cpp演示

1位LLM的承诺

传统的LLM使用16位浮动小数(FP16)来存储其参数,这需要大量的内存和计算资源。而BitNet b1.58采取了一个激进的做法:它将每个参数减少到仅有三种可能的值:-1、0或1。这个简单的变化带来了显著的效率提升,且在保持模型准确性的同时,实现了高效的运算。

• 70B参数模型推理速度提升4.1倍

• 内存消耗减少至最多7.16倍

• 矩阵乘法的能耗降低至71.4倍

• 更大的批处理大小使得吞吐量提升8.9倍

最棒的是?这些效率提升几乎没有影响性能。从3B参数开始,BitNet b1.58在多个基准测试中能够与传统LLM相媲美,甚至超越。

BitNet b1.58量化过程解析

BitNet b1.58中的量化过程旨在将模型权重减少到三元值-1、0、1,从而在不大幅牺牲准确度的情况下,显著提高计算和内存效率。下面是该过程的简化解释:

1. 量化函数 量化函数是将权重从全精度转换为三元值的关键。它分为两个主要步骤:

A. 权重缩放:权重矩阵W通过其平均绝对值(记作γ)进行缩放。这确保所有权重相对于矩阵的大小进行归一化。缩放因子γ通过以下公式计算:

其中,n和m是权重矩阵的维度,所有权重的绝对值之和给出了一个表示权重平均大小的缩放因子。这个缩放使得权重值更加均匀,便于量化。

B. 四舍五入与裁剪:缩放后,每个权重被四舍五入到{-1, 0, 1}中的最接近整数值。这个操作通过一个叫做RoundClip的函数来执行,确保结果值被限制在这个三元集合内:

其中,ϵ是为数值稳定性添加的小值。RoundClip函数会将缩放后的权重四舍五入到最接近的整数,然后确保结果在-1和1之间:

量化过程示例:

假设我们有一个权重矩阵:

首先,我们计算缩放因子(γ):

缩放因子公式

注:绝对值(写作|x|)表示一个数值在数轴上距离零的距离,无论该数是正是负。可以将其理解为“某个数离零有多远”。

例如,|-0.7|:

-0.7在数轴上距离零为0.7单位

绝对值给出了0.7单位的距离,所以:

|-0.7| = 0.7(负数变为正数)

|0.5| = 0.5(正数保持不变)

|0.1| = 0.1(正数保持不变)

因此:

γ = ¼(0.3 + 0.7 + 0.5 + 0.1)

= 0.4

接下来:我们用γ来缩放权重矩阵:

现在,我们通过将每个权重矩阵W中的元素除以γ来缩放它。这将权重归一化。

四舍五入与裁剪公式

我们将γ替换为0.4

将每个矩阵权重除以0.4 所以,

缩放后的权重矩阵是:

然后:我们应用RoundClip函数: 现在我们对每个缩放后的矩阵元素应用RoundClip函数。RoundClip函数的工作方式如下:

RoundClip(x,a,b)=max(a,min(b,round(x)))

首先,将值四舍五入到最接近的整数。

然后将结果限制在-1和1之间。

我们逐个元素来看:

对于0.75,四舍五入得到1。由于1在范围[-1,1]内,我们保持不变。所以,RoundClip(0.75,-1,1)=1。

对于-1.75,四舍五入得到-2。由于-2超出了[-1,1]的范围,我们将其裁剪为-1。所以,RoundClip(-1.75,-1,1)=-1。

对于1.25,四舍五入得到1。由于1在范围[-1,1]内,我们保持不变。所以,RoundClip(1.25,-1,1)=1。

对于0.25,四舍五入得到0。由于0在范围[-1,1]内,我们保持不变。所以,RoundClip(0.25,-1,1)=0。

最终量化矩阵:

在对每个元素应用RoundClip函数后,量化后的权重矩阵为:

因此,矩阵:

被量化为:

总结:

我们通过权重矩阵的平均绝对值(γ)对原始矩阵进行了缩放。

每个元素被四舍五入到最接近的整数,并裁剪到[-1,1]的范围内,最终得到了一个三元量化矩阵。

本地运行bitnet.cpp推理框架,适用于1位LLM(例如BitNet b1.58): 要求:

python>=3.9

cmake>=3.22

clang>=18

克隆仓库:

git clone --recursive https://github.com/microsoft/BitNet.git

cd BitNet

安装依赖项:

# (Recommended) Create a new conda environment

conda create -n bitnet-cpp python=3.9

conda activate bitnet-cpp

pip install -r requirements.txt

构建项目:

# Download the model from Hugging Face, convert it to quantized gguf format, and build the project

python setup_env.py --hf-repo HF1BitLLM/Llama3-8B-1.58-100B-tokens -q i2_s

# Or you can manually download the model and run with local path

huggingface-cli download HF1BitLLM/Llama3-8B-1.58-100B-tokens --local-dir models/Llama3-8B-1.58-100B-tokens

python setup_env.py -md models/Llama3-8B-1.58-100B-tokens -q i2_s

基本使用:

# Run inference with the quantized model

python run_inference.py -m models/Llama3-8B-1.58-100B-tokens/ggml-model-i2_s.gguf -p "Daniel went back to the the the garden. Mary travelled to the kitchen. Sandra journeyed to the kitchen. Sandra went to the hallway. John went to the bedroom. Mary went back to the garden. Where is Mary?\nAnswer:" -n 6 -temp 0

# Output:

# Daniel went back to the the the garden. Mary travelled to the kitchen. Sandra journeyed to the kitchen. Sandra went to the hallway. John went to the bedroom. Mary went back to the garden. Where is Mary?

# Answer: Mary is in the garden.

结论: BitNet b1.58处于高效AI的前沿,将1位精度模型带入了主流应用。凭借其优化的内核、减少的内存占用和显著的能源节省,BitNet代表了可持续AI部署的未来。BitNet b1.58奠定的技术基础,从高效的量化到动态代码生成,使其能够在各种硬件架构中有效扩展。通过降低计算成本,它为在边缘设备或能源受限的环境中运行大型LLM打开了大门。

标签:四舍五入,权重,缩放,人工智能,BitNet,矩阵,RoundClip,1000
From: https://blog.csdn.net/JellyAI/article/details/143788129

相关文章

  • 2024 年 Java 面试最全攻略:程序员求职跳槽必刷题目 1000+,横扫一切技术盲点!
    写在前面马上又要到收割Offer的季节,你准备好了吗?曾经的我,横扫各个大厂的Offer。还是那句话:进大厂临时抱佛脚是肯定不行的,一定要注重平时的总结和积累,多思考,多积累,多总结,多复盘,将工作经历真正转化为自己的工作经验。面经分享今天给大家分享一个面试大厂的完整面经,小伙......
  • 【热门主题】000049 人工智能学习框架:开启智能未来的钥匙
    前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦......
  • TBM810-ASEMI贴片桥堆8A 1000V
    编辑:llTBM810-ASEMI贴片桥堆8A1000V型号:TBM810品牌:ASEMI封装:TBM-4特性:贴片桥堆正向电流:8A反向耐压:1000V恢复时间:>2000ns引脚数量:4芯片个数:4芯片尺寸:50MIL浪涌电流:50A漏电流:>10uA工作温度:-55℃~150℃包装方式:3k/盘;30k/箱备受欢迎的TBM810整流桥ASEMI品牌TBM810整......
  • 人工智能在金融行业的七大主要应用场景
    人工智能在金融领域的应用前景广泛,主要有以下七个方面的应用场景:一、智能客服与投资顾问:1、智能客服:基于自然语言处理和语音识别技术,智能客服可以与客户进行实时的沟通和交流,解答客户的问题,提供账户查询、业务办理等服务。智能客服能够理解客户的意图和需求,快速准确地给出......
  • Anthropic公司CEO达里奥·阿莫代伊(Dario Amodei)深入探讨了通用人工智能(AGI)、AI安全性
      每周跟踪AI热点新闻动向和震撼发展想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领域的领跑者。点击订阅,与未来同行!订阅:https://......
  • C++builder中的人工智能(29):如何在Windows项目中导入FANN库
    这篇文章旨在使用由SteffenNissen开发的FANN库实现人工神经网络。FANN库支持20多种编程语言,包括Delphi和C++Builder。您可以在FANN的官方网站上找到完整信息和文档,并下载FANN的源文件。步骤:下载FANN库:从Nissen的官方网站下载FANN库包(http://leenissen.dk),包含二进制文......
  • C++builder中的人工智能(27):如何将 GPT-3 API 集成到 C++ 中
    人工智能软件和硬件技术正在迅速发展。我们每天都能看到新的进步。其中一个巨大的飞跃是我们拥有更多基于自然语言处理(NLP)和深度学习(DL)机制的逻辑性更强的AI聊天应用。有许多AI工具可以用来开发由C、C++、Delphi、Python等编程语言驱动的AI。本文将解释如何在C++Builder中使用......
  • C++builder中的人工智能(28):FANN: Fast Artificial Neural Networks快速人工神经网络(ANN
    这篇文章全面介绍了快速人工神经网络(ANNs)的世界,探讨了它们在现代计算智能中的重要地位、核心特点、应用领域以及未来发展。快速人工神经网络库(FastArtificialNeuralNetworkLibrary,简称FANN)是一个免费的开源神经网络库,它使用C语言实现了多层人工神经网络,并支持全连接和稀疏......
  • 人工智能AI→计算机视觉→机器视觉→深度学习→在ImageNet有限小样本数据集中学习深度
    前言:通过前篇《人工智能AI→计算机视觉→机器视觉→深度学习→在ImageNet有限小样本数据集中学习深度模型的识别任务实践》我们可以学到如何对实际生活、工作场景中的字符识别、人脸识别、图像类别进行识别的基于深度学习方法的技术路径实现具体包括:准备数据集制作、创建深......
  • 通过人工智能技术,滚球预测或将不再是天方夜谭
    一、引言在竞技体育领域,充斥着不少令体育爱好者位置着迷的项目,而在这其中,滚球可谓是最具备戏剧性的一种,它难以预测,而随着人工智能(AI)技术的飞速发展,利用AI进行滚球预测却逐渐成为了可能。本文将深入探讨AI在滚球预测中的应用,以及其背后的算法原理,务求为大家解密人工智能技术在......