单卡跑Llama 70B快过双卡,微软硬生生把FP6搞到了A100里 | 开源

fp8和更低的浮点数量化精度,不再是h100的“专利”了!

老黄想让大家用INT8/INT4,微软DeepSpeed团队在没有英伟达官方支持的条件下,硬生生在A100上跑起FP6

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

单卡跑Llama 70B快过双卡,微软硬生生把FP6搞到了A100里 | 开源

测试结果表明,新方法TC-FPx在A100上的FP6量化,速度接近甚至偶尔超过INT4,而且拥有比后者更高的精度

在此基础之上,还有端到端的大模型支持,目前已经开源并集成到了DeepSpeed等深度学习推理框架中。

这一成果对大模型的加速效果也是立竿见影——在这种框架下用单卡跑Llama,吞吐量比双卡还要高2.65倍。

一名机器学习研究人员看了后表示,微软的这项研究简直可以用crazy来形容。

单卡跑Llama 70B快过双卡,微软硬生生把FP6搞到了A100里 | 开源

表情包也第一时间上线,be like:

英伟达:只有H100支持FP8。

微软:Fine,我自己搞定。

单卡跑Llama 70B快过双卡,微软硬生生把FP6搞到了A100里 | 开源

那么,这个框架到底能实现什么样的效果,背后又采用了什么样的技术呢?

用FP6跑Llama,单卡比双卡还快

在A100上使用FP6精度,带来的是内核级的性能提升

研究人员选取了不同大小的Llama模型和OPT模型之中的线性层,在NVIDIA A100-40GB GPU平台上,使用CUDA 11.8进行了测试。

结果相比于英伟达官方的cuBLAS(W16A16)和TensorRT-LLM(W8A16),TC-FPx(W6A16)速度提升的最大值分别是2.6倍和1.9倍。

相比于4bit的BitsandBytes(W4A16)方法,TC-FPx的最大速度提升则是达到了8.9倍。

(W和A分别代表权重量化位宽和激活量化位宽)

单卡跑Llama 70B快过双卡,微软硬生生把FP6搞到了A100里 | 开源

△归一化数据,以cuBLAS结果为1

同时,TC-FPx内核还减少了对DRAM内存的访问,并提高了DRAM带宽利用率和Tensor Cores利用率,以及ALU和FMA单元的利用率。

单卡跑Llama 70B快过双卡,微软硬生生把FP6搞到了A100里 | 开源

在TC-FPx基础之上设计的端到端推理框架FP6-LLM,也给大模型带来了显著的性能提高。

以Llama-70B为例,用FP6-LLM在单卡上的运行吞吐量,比FP16在双卡上还要高出2.65倍,在16以下的批大小中的延迟也低于FP16。

单卡跑Llama 70B快过双卡,微软硬生生把FP6搞到了A100里 | 开源

而对于参数量小一些的模型OPT-30B(FP16也使用单卡),FP6-LLM同样带来了明显的吞吐量提升和延迟降低。

而且单卡FP16在这种条件下最多支持的批大小只有4,FP6-LLM却可以在批大小为16的情况下正常运行。

AI卡通生成器 AI卡通生成器

免费在线AI卡通图片生成器 | 一键将图片或文本转换成精美卡通形象

AI卡通生成器 51 查看详情 AI卡通生成器

单卡跑Llama 70B快过双卡,微软硬生生把FP6搞到了A100里 | 开源

那么,微软团队是怎样实现在A100上运行FP16量化的呢?

重新设计内核方案

为了实现对包括6bit在内精度的支持,TC-FPx团队设计了一个统一的内核方案,可以支持不同位宽的量化权重。

相比于传统的双内核方法,TC-FPx通过将去量化和矩阵乘法融合在单个内核中,减少了内存访问次数,提高了性能。

实现低精度量化的核心奥义则是通过去量化方式,将FP6精度的数据“伪装”成FP16,然后按照FP16的格式交给GPU进行运算。

单卡跑Llama 70B快过双卡,微软硬生生把FP6搞到了A100里 | 开源

同时团队还利用了位级预打包技术,解决GPU内存系统对非2的幂次位宽(如6-bit)不友好的问题。

具体来说,位级预打包是在模型推理之前对权重数据进行重新组织,包括将6-bit量化的权重重新排列,以便它们能够以GPU内存系统友好的方式进行访问。

此外,由于GPU内存系统通常以32位或64位的块进行数据访问,位级预打包技术将还会6-bit权重打包,使得它们能够以这些对齐的块的形式存储和访问。

单卡跑Llama 70B快过双卡,微软硬生生把FP6搞到了A100里 | 开源

预打包完成后,研究团队使用SIMT核心的并行处理能力,对寄存器中的FP6权重执行并行去量化,生成FP16格式的权重。

去量化后的FP16权重在寄存器中被重构,然后送入Tensor Core,使用重构后的FP16权重执行矩阵乘法运算,完成线性层的计算。

在此过程中,团队利用了SMIT核心的位级并行性,提高了整个去量化过程的效率。

单卡跑Llama 70B快过双卡,微软硬生生把FP6搞到了A100里 | 开源

而为了权重重构任务能够并行运行,团队还使用了一种并行权重拼接技术。

具体来说,每个权重被分割成几个部分,每个部分的位宽是2的幂次(如把6分割成2+4或4+2)。

在去量化之前,权重首先从共享内存加载到寄存器中。由于每个权重被分割成多个部分,需要在运行时在寄存器级别重构完整的权重。

为了减少运行时的开销,TC-FPx提出了一种并行提取和拼接权重的方法。这种方法使用两组寄存器来存储32个FP6权重的片段,并行地重构这些权重。

同时,为了并行提取和拼接权重,需要确保初始数据布局满足特定的顺序要求,因此TC-FPx通过在运行前对权重片段进行重排。

单卡跑Llama 70B快过双卡,微软硬生生把FP6搞到了A100里 | 开源

此外,TC-FPx还设计了一个软件流水线,将去量化步骤与Tensor Core的矩阵乘法操作融合在一起,通过指令级并行性提高了整体的执行效率。

单卡跑Llama 70B快过双卡,微软硬生生把FP6搞到了A100里 | 开源

论文地址:https://arxiv.org/abs/2401.14112

以上就是单卡跑Llama 70B快过双卡,微软硬生生把FP6搞到了A100里 | 开源的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/420660.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
如何在Linux中查找指定进程?
上一篇 2025年11月7日 09:14:29
影响APP开发报价的因素有哪些?
下一篇 2025年11月7日 09:14:31

相关推荐

  • 虫虫漫画直接进入官网入口_虫虫漫画网页版清爽版

    虫虫漫画直接进入官网入口_虫虫漫画网页版清爽版虫虫漫画直接进入官网入口_虫虫漫画网页版清爽版虫虫漫画直接进入官网入口_虫虫漫画网页版清爽版虫虫漫画直接进入官网入口_虫虫漫画网页版清爽版

    虫虫漫画官网入口为www.ccmh.com,用户可直接通过浏览器访问,支持多端适配与账号同步功能,界面简洁无广告,提供海量国漫、日漫、韩漫资源,涵盖恋爱、玄幻等热门题材,更新及时,支持多种阅读模式及离线缓存,阅读体验流畅。 虫虫漫画直接进入官网入口在哪里?这是不少网友都关注的,接下来由PHP小编为大…

    2026年5月10日 用户投稿
    100
  • 如何根据当前月份动态排序 1-12 月?

    根据当前月份动态排序 1-12 月 想要实现根据当前月份动态排序 1-12 月,可以通过参考以下方法: 创建月份数组:首先,创建一个包含 1-12 月信息(如名称和值)的月份数组。获取当前月份:获取 javascript 中表示当前月份的数值(从 0 到 11)。重新排序月份数组:使用 javasc…

    2026年5月10日
    000
  • HTML/CSS中链接与按钮的正确嵌套:避免文本超链接化与结构优化指南

    本教程旨在解决HTML中链接()与按钮(button)或类按钮元素嵌套不当导致非预期文本超链接化的问题。我们将通过修正标签的错误闭合,并推荐使用 等语义化元素作为链接内容并应用按钮样式,来创建功能正确、结构清晰且包含文本或图像的交互式按钮,从而提升页面的可维护性和用户体验。 在网页开发中,我们经常需…

    2026年5月10日
    000
  • Angular mat-tab 高度自适应与布局优化指南

    本教程旨在解决Angular Material mat-tab组件在Flexbox布局中无法自动填充父容器高度的问题。文章将深入分析问题根源,并提供使用CSS深度选择器(::ng-deep)精确控制mat-tab-body-wrapper和mat-tab-body高度的解决方案,确保组件在指定布局下…

    2026年5月10日
    000
  • html如何制作水印_HTML水印(文字/图片)添加与设置方法

    使用CSS和HTML可实现网页水印,方法包括:一、通过background-image与data URI嵌入斜向文字水印;二、利用伪元素结合transform旋转生成叠加文字层;三、插入img标签或背景图设置固定位置图片水印;四、用Canvas绘制多行斜纹并转Base64作背景;五、通过禁用右键、屏…

    2026年5月10日
    100
  • 使用CSS Grid实现不规则列布局:告别传统表格的限制

    本教程详细阐述如何利用css grid实现复杂的、不规则的列布局,尤其适用于那些传统html表格难以实现的块状结构。文章将通过具体的css属性和html结构示例,指导读者如何定义网格、控制子项的跨度与位置,以及优化自动布局流程,从而高效构建灵活且响应式的页面布局。 1. 传统表格的局限与CSS Gr…

    2026年5月10日
    000
  • WordPress自定义主题中根据文章数量动态显示/隐藏“查看更多”按钮的教程

    本教程旨在指导开发者如何在wordpress自定义主题中,根据特定文章类型和分类的实际数量,动态控制“查看更多”按钮的显示与隐藏。我们将利用 wp_query 及其 found_posts 属性,精确判断符合条件的文章总数,从而在有更多文章时显示按钮,在无文章时显示提示信息,优化用户体验。 引言 在…

    2026年5月10日
    000
  • CSS Flexbox:在居中对齐时优雅地控制元素间距

    本文深入探讨了在css flexbox布局中,当容器使用`display: flex`和`justify-content: center`进行居中对齐时,如何有效地在子元素之间添加间距。我们将分析传统方法(如子元素的`margin`和容器的`padding`)的局限性,并重点介绍现代且推荐的`gap…

    2026年5月10日
    000
  • C#如何处理异常?C# try-catch-finally最佳实践与常见错误规避

    正确使用 try-catch-finally 应捕获具体异常、用 finally 或 using 释放资源、避免空 catch 和裸抛异常,确保异常日志记录并保留堆栈跟踪,提升代码健壮性与可维护性。 在C#中,异常处理是保障程序稳定运行的重要机制。正确使用 try-catch-finally 结构不…

    2026年5月10日
    000
  • CSS的display属性有哪些值?inline和block有什么区别?

    CSS的display属性有哪些值?inline和block有什么区别?CSS的display属性有哪些值?inline和block有什么区别?CSS的display属性有哪些值?inline和block有什么区别?CSS的display属性有哪些值?inline和block有什么区别?

    css的display属性通过定义元素的显示方式来控制网页布局。1.block元素独占一行,可设置宽高,默认如div、p等;2.inline元素不独占行,宽高由内容决定,如span、a;3.inline-block兼具block和inline特性,可并排显示且能设尺寸;4.none隐藏元素且不占空间…

    2026年5月10日 用户投稿
    000
  • 使用 C++ 构建高性能服务器架构的最佳实践

    遵循 c++++ 中构建高性能服务器架构的最佳实践可以创建可扩展、可靠且可维护的系统:使用线程池以重用线程,提高性能。利用协程减少上下文切换和内存开销,提升性能。通过智能指针和引用计数优化内存管理,避免内存泄漏和性能瓶颈。选择哈希表、数组和链表等高效的数据结构,优化数据访问和存储。充分利用现代 c+…

    2026年5月10日
    000
  • 优化 Laravel Eloquent 查询:高效构建用户排行榜数据

    本教程详细讲解如何优化 Laravel Eloquent 查询以高效生成基于关联记录计数的排行榜。通过识别并消除冗余的 whereHas 子句,并巧妙利用 withCount 的条件闭包,我们能显著提升查询性能,大幅缩短数据获取时间,从而改善用户体验并降低数据库负载。 在 laravel 应用开发中…

    2026年5月10日
    000
  • CSS多级下拉菜单布局优化:解决li元素高度自适应与多列排版问题

    本文深入探讨了css多级下拉菜单中li元素高度自适应与多列排版布局的优化策略。针对传统flex布局可能遇到的高度填充问题,文章介绍了如何利用column-count属性在父容器中创建多列布局,并结合float: left使子li元素在列中自然排列,实现动态高度适应,从而构建出结构清晰、内容丰富的响应…

    2026年5月10日
    000
  • HTML代码怎么实现响应式布局_HTML代码响应式布局原理与媒体查询应用

    响应式布局的核心原理是“一次开发,多端适应”,其本质在于通过弹性网格、流式图片和CSS媒体查询等技术,使网页能根据设备屏幕尺寸、分辨率等特性动态调整布局与内容呈现。与传统固定宽度布局不同,响应式设计采用相对单位(如%、rem、vw)、灵活的图片处理及媒体查询,实现移动端优先、自适应多设备的连续体验。…

    2026年5月10日
    000
  • HTML如何制作网格布局?grid和flexbox的区别?

    要制作真正的网格布局应首选css grid,因为它是专为二维布局设计的工具,能同时控制行和列;而flexbox适用于一维线性布局,适合沿单一轴线排列内容。1. 使用css grid时,先设置容器的display: grid,再通过grid-template-columns和grid-template…

    用户投稿 2026年5月10日
    000
  • HTML如何实现生日倒计时?剩余天数怎么计算?

    是的,通过动态调整目标生日年份可确保跨年倒计时准确,1.首先获取当前年份的生日日期,2.若该日期已过,则将目标设为下一年生日,3.通过时间戳差值计算剩余天、小时、分钟、秒,4.每秒更新显示并补零格式化,5.归零时显示“生日快乐”动画提示,从而实现全年准确的倒计时效果。 HTML实现生日倒计时,主要是…

    2026年5月10日
    100
  • .NET中的仓储模式(Repository Pattern)是什么?如何解耦业务逻辑和数据访问?

    仓储模式是.NET中用于分离业务逻辑与数据访问的抽象层,通过定义如IUserRepository接口并结合依赖注入,实现对数据访问的具体技术解耦;业务逻辑仅依赖接口,可通过SqlUserRepository等具体实现操作数据库,而无需知晓底层细节;该模式提升可维护性、支持单元测试、降低耦合,并可配合…

    2026年5月10日
    000
  • 掌握Python中嵌套列表与字典的数据访问技巧

    本文详细介绍了在Python中如何高效且准确地访问复杂嵌套数据结构(特别是包含列表和字典的多层JSON数据)中的特定值。通过具体示例,文章解释了直接索引列表元素和字典键的正确方法,避免了常见的类型错误,并提供了处理多条记录和潜在数据缺失的健壮性建议,旨在帮助开发者熟练提取深层数据。 理解嵌套数据结构…

    2026年5月10日
    000
  • 在 Ionic 中实现聊天式输入框:多图标定位与布局优化

    本文旨在解决 Ionic 应用中聊天式输入框的布局难题,特别是如何在 ion-footer 内的 ion-input 组件中,正确地定位多个右侧图标按钮,同时避免图标重叠和文本流异常。通过采用 ion-toolbar 和 slot=”end” 等 Ionic 提供的布局机制,…

    2026年5月10日
    200
  • 指针和数组在C++中有什么区别 内存访问方式与使用场景对比

    指针和数组在C++中有什么区别 内存访问方式与使用场景对比指针和数组在C++中有什么区别 内存访问方式与使用场景对比指针和数组在C++中有什么区别 内存访问方式与使用场景对比指针和数组在C++中有什么区别 内存访问方式与使用场景对比

    指针和数组在c++++中本质不同,使用场景和内存访问方式也存在差异。1. 指针是变量,存储地址,可改变指向;数组是连续内存块,大小固定,不可赋值。2. 数组访问基于固定偏移,编译器直接计算地址;指针访问依赖当前地址,通过移动实现数据访问。3. 数组适合静态结构、保证内存连续的场景,如局部数据存储;指…

    2026年5月10日 用户投稿
    000

发表回复

登录后才能评论
关注微信