惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

H
Hackread – Cybersecurity News, Data Breaches, AI and More
W
WeLiveSecurity
C
Check Point Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
V
Vulnerabilities – Threatpost
GbyAI
GbyAI
A
Arctic Wolf
NISL@THU
NISL@THU
N
Netflix TechBlog - Medium
The Register - Security
The Register - Security
M
MIT News - Artificial intelligence
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Microsoft Security Blog
Microsoft Security Blog
Cyberwarzone
Cyberwarzone
C
CERT Recently Published Vulnerability Notes
T
Tenable Blog
G
GRAHAM CLULEY
O
OpenAI News
S
Schneier on Security
Google Online Security Blog
Google Online Security Blog
Vercel News
Vercel News
宝玉的分享
宝玉的分享
Attack and Defense Labs
Attack and Defense Labs
T
The Blog of Author Tim Ferriss
量子位
aimingoo的专栏
aimingoo的专栏
The Cloudflare Blog
P
Privacy & Cybersecurity Law Blog
S
SegmentFault 最新的问题
MongoDB | Blog
MongoDB | Blog
Apple Machine Learning Research
Apple Machine Learning Research
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
L
LINUX DO - 热门话题
博客园_首页
F
Full Disclosure
Recent Commits to openclaw:main
Recent Commits to openclaw:main
D
Docker
U
Unit 42
A
About on SuperTechFans
博客园 - 司徒正美
Hacker News - Newest:
Hacker News - Newest: "LLM"
人人都是产品经理
人人都是产品经理
Application and Cybersecurity Blog
Application and Cybersecurity Blog
G
Google Developers Blog
Security Archives - TechRepublic
Security Archives - TechRepublic
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
J
Java Code Geeks
云风的 BLOG
云风的 BLOG
Scott Helme
Scott Helme
TaoSecurity Blog
TaoSecurity Blog

博客园 - marsggbo

LLM agent 为什么不稳?问题可能不在模型,在 harness Meta-Harness:让 LLM 自己搜索最优 harness,模型不动,性能白涨 从零理解 ASR:音频基础、Qwen3-ASR 架构,以及离线 vs 流式推理原理 arXiv'26 | LLM Agents 让群体信念变得可编程:当 AI 开始系统性操控舆论 巴西「主权大模型」翻车:当模型可以随便融合,怎么证明它偷了你的权重? 进阶篇 | 不靠人工设计,让遗传算法自己进化出 SOTA 的 LLM 剪枝指标 说人话:一文搞懂现在火热的 LLM agent 自进化原理 ICML'26 | Transformer 真的需要三个投影矩阵吗?Q-K=V 让 KV Cache 直接砍半 UPenn & Meta | NF-CoT:当 LLM 的思维链不再是文字,而是连续概率流 arXiv'26 | 为什么你的多智能体系统越加 agent 越慢?DeLM 用去中心化解了这个矛盾 arXiv'26 | Self-Harness:让 Agent 自己改自己的 harness,pass rate 最高翻倍 Anthropic | 当 AI 开始造自己:递归自我改进离我们有多远? arXiv'26 | Mirage:把世界模型的 3D 记忆搬进 Latent Space,快 10 倍还省 55 倍显存 arXiv'26 | FlashMemory-DeepSeek-V4:用 13.5% 的显存干 100% 的活,超长上下文推理的 less is more MoE 压缩新思路:别删专家、别合并专家,把它们"重映射"就够了 MoE 变 Dense:剪枝+蒸馏能救内存瓶颈吗? ReMoE:只动 Router 就让 MoE 推理快 2 倍?这才是端侧 MoE 部署该有的姿势 LLM 时代,还有人搞 AutoML 吗?有,而且变得更难了 arXiv'26 | Frontier:LLM 推理仿真器,端到端误差从 51.7% 降到 2.6% arXiv'26 | ELF:Flow Matching 生成文字,用 10 倍少的数据全面超越主流 Diffusion LM LLMRouterBench:当所有 routing 方法被拉到同一起跑线,结果有些尴尬 LLM Agent Memory 全景拆解:从 RAG 到 KV Cache 到参数写入,100+ 篇工作的方法演进与真实取舍 EuroSys'26 | TokenFlow:让 LLM 流式输出真正「流」起来 AAAI'23 | NAS-LID:用「局部内在维度」给超网做体检,省 86% 显存 ICLR'26 Workshop Spotlight | Lang-PINN:让 LLM 多智能体帮你从自然语言一键搭建物理信息神经网络 KDD'25 | BurstGPT:我们收集了 1031 万条 Azure OpenAI 真实 trace,LLM 推理系统没你想的那么稳 KBS'21 | 我写的 AutoML 综述被引 2700+ 次,今天来聊聊这篇文章的来龙去脉 EuroSys'26 | PARD 提前丢掉注定超时的请求,goodput 最高提升 176% EuroSys'26 | MFS 把整个 model family 融进一套嵌套模型,KVCache 跨 tier 直接共享 EuroSys'26 | LLMFolder 用常量折叠把 FFN 参数砍 80%,精度反超剪枝方法 65% EuroSys'26 | KUNSERVE 把冗余参数副本临时让给 KVCache,P99 TTFT 最快降 72× FAST'26 | SolidAttention 把 SSD 搬进 LLM 推理,笔记本也能跑 128k 上下文 LLM 推理启动慢?华为用一个「可编程 Page Cache」把模型加载砍了 79% 延迟降47%!FineMoE如何用「细粒度」打破MoE推理的显存-延迟死局 训练一个「会管技能库」的 AI——SkillOS 让 agent 真正越用越强 MoE 训练通信瓶颈有救了?DySHARP 直接在交换机里做计算,干掉 50% 冗余流量 2026-05-12-2508_06526 把 Dense LLM 变成 MoE 还能推理提速?NeurIPS 2024 Read-ME 做到了 说人话理解 EPIC:KV Cache 复用的「编译-链接」范式(附可运行代码复现) KV Cache 也能「语义共享」?SemShareKV 用 LSH 做到了 写完 Markdown 还要手动排版?我写了个 VS Code 插件一键搞定微信公众号、知乎、小红书 多 Agent 协作不需要说「人话」?LatentMAS 让 LLM 在隐空间里直接协作 让不同 LLM 之间共享 KV Cache?DroidSpeak 是怎么做到的 RouteMark: 基于路由行为指纹的模型合并知识产权归属 | A Fingerprint for IP Attribution in Routing-based Model Merging Lang-PINN: 从自然语言到物理信息神经网络的多智能体框架 | From Language to PINNs via a Multi-Agent Framework Ghost in the Cloud: 地理分布式大模型训练的安全隐患 | Your Geo-distributed LLM Training is Easily Manipulated GM-Skip: 基于度量引导的 Transformer 块跳过策略加速视觉语言模型 | Metric-Guided Transformer Block Skipping for Efficient VLMs ExpertFlow: 基于预测性专家缓存与令牌调度的高效MoE推理 | Efficient MoE Inference via Predictive Expert Caching and Token Scheduling AutoHete: 面向大语言模型的自动化高效异构训练系统 | An Automatic and Efficient Heterogeneous Training System for LLMs DAC'26 | ExpertFlow:让 MoE 大模型在单卡上跑起来,内存省 93%、速度快 10 倍 Eurosys26 | FineMoE如何用「细粒度」打破MoE推理的显存-延迟死局 LoRA fine-tune吞吐量提升1.96倍!LoRAFusion如何把内存带宽浪费和pipeline bubble一起干掉 Fast26 | LLM 推理启动慢?华为用一个「可编程 Page Cache」把模型加载砍了 79% KV Cache 的两层存储到底卡在哪?FAST'26 这篇论文给出了答案 NeurIPS24 | 把Dense LLM变身MoE还提速 ICML25 | EPIC:KV Cache 复用的「编译-链接」范式(附可运行代码复现) KV Cache 复用的第三条路:FAST 2026 CacheSlide 是怎么解决 Agent 推理的位置漂移问题的 MoE 推理的内存墙,被一块多芯粒芯片打穿了? KVCOMM:让多 Agent 系统的 KV Cache 真正“通起来”,TTFT 直接砍掉 7.8 倍 NSDI26 | DroidSpeak让不同 LLM 之间共享 KV Cache TokenDance 解决多 Agent LLM 推理的 KV Cache 冗余问题 当 AI 开始学会"记住":LLM Agent 记忆系统的统一视角 【转载】ACM MM 投稿论文模板修改成投稿模式 尝试从源头理解 SVD 原理和计算 LLM 场景下的强化学习技术扫盲 解决 Overleaf 中插入 PDF 图片失败的问题:排查与修复 Tmux ctrl+B快捷键失效处理办法 对抗训练综述学习笔记 【转知乎回答】一文看懂 LLaMA 中的旋转式位置编码(Rotary Position Embedding) 二进制中为什么负数是正数取反再加一 leetcode 常见题型代码总结 Prompt-Tuning、P-Tuning和Prefix-Tuning区别和代码实现【转】 Deepspeed ZeRO系列算法原理+通信开销详解 NSCC集群使用笔记 Huggingface Transformers实现张量并行的小坑 set/get_output_embeddings Pytorch 如何使用 storage 实现参数 offload? TACC 集群使用笔记 图解 vLLM 的推理调度策略 大模型推理框架 vLLM 源码解析(二):Block 模块分配和管理 OpenAI 的视频生成大模型Sora的核心技术详解(一):Diffusion模型原理和代码详解 大模型推理框架 vLLM 源码解析(一)
EuroSys'26 | IBP 用无损 bit 压缩缓解 PCIe 瓶颈,GNN/DLRM/LLM 推理都能用
marsggbo · 2026-07-23 · via 博客园 - marsggbo

插播:之前写的《动手学 AutoML》终于出版了,从 NAS 到超参优化都有覆盖,适合想系统入门 AutoML 的同学。好了广告结束,现在进入正题。

动手学AutoML书籍封面

EuroSys'26 | IBP 用无损 bit 压缩缓解 PCIe 瓶颈,GNN/DLRM/LLM 推理都能用

原文:Reducing the GPU Memory Bottleneck with Lossless Compression for ML


1. 前言

你有没有想过,很多 ML workload 慢,并不是 GPU 算不动,而是数据到不了 GPU?

GNN training 的 node features、DLRM 的 embedding tables、LLM long-context inference 的 KVCache,经常大到 GPU HBM 放不下。于是系统只能把数据放在 CPU memory、disk 或 network storage,需要时再通过 PCIe 搬到 GPU。

这就很尴尬了:A100/H100 算力很猛,但 PCIe 带宽就那么点。GPU 在那边等数据,牛马在这边看 profiler,大家都不开心(笑)。

这篇 EuroSys 2026 的 IBP 工作关注的就是这个问题:能不能用 compression 减少 CPU-to-GPU transfer?

以往大家一提压缩,首先想到 quantization、pruning、lossy compression。但工业系统里 lossy compression 很烦,因为它可能影响 accuracy,而且影响程度和 workload/model 强相关。IBP 选择了一条更保守的路:

做 lossless compression,不牺牲任何数据 fidelity,只压掉 ML tensor 里跨样本不变的 bits。

2. 背景:为什么 PCIe 是瓶颈?

论文讨论了三类典型 workload。

第一是 GNN training。GNN 的 graph topology 和 feature vectors 通常很大,训练时每个 mini-batch 都要 sample 一批节点/边,再把对应 feature 搬到 GPU。很多系统会做 GPU cache,但 cache 放不下全部数据,miss 后仍要走 PCIe。

第二是 DLRM inference。推荐模型里的 embedding tables 可以有上亿行,GPU memory 放不下时,lookup 需要从 CPU memory 搬 embedding entries 到 GPU。

第三是 LLM KV-cache offloading。长上下文 LLM 中 KVCache 可能远超 HBM,系统会把部分 KVCache offload 到 CPU,再在 decode 时按需搬回 GPU。对于 long-context inference,KV transfer 本身就会变成 critical path。

传统思路是用 lossy compression,比如 quantization。但问题是:lossy 方法需要针对模型和数据调参,出了 accuracy regression 很难 debug。lossless compression 看起来安全,但很多通用算法如 Huffman、LZ4、zStd、GDeflate 在 GPU critical path 上 decompression overhead 太高,反而变慢。

论文前面有一个很有意思的表:很多算法压缩率不错,但 transfer + decompression 后速度不一定快。比如 zStd 在 sparse GNN 上 space saving 很高,但 transfer speedup 并不好。如下是论文 Table 1 的 transfer speedup 对比,IBP 在几乎所有场景都排第一,但这并不是靠最高压缩率换来的——IBP 的核心是压缩后搬得更快,解得更快

Table 1:各算法 CPU-to-GPU transfer speedup 对比

3. 核心观察:ML tensor 的 bit pattern 有结构

普通 bit packing 会看一个 tensor 内部的数值范围,删除高位不需要的 bits。但 ML tensor 里的浮点值范围常常比较大,所以传统 bit packing 空间有限。

IBP 的观察是:很多 ML 数据虽然数值看起来分散,但在 bit level 上有低熵结构。比如 floating-point 的 sign bit、exponent bits,在很多 tensors 之间可能高度一致。也就是说,同一个 bit position 在大量 tensor 中都是同一个值。

论文把这种 bits 叫 invariant bits。IBP 会把这些跨 tensor 不变的 bits 记录在很小的 metadata 里,然后在每个 tensor 的 compressed data 中删掉它们。

如下图,左边是 conventional bit packing,右边是 invariant bit packing。红色 bits 被移除,蓝色部分是真正传输的数据。

IBP bit packing

这个设计很适合 ML pipeline:metadata 很小,可以常驻 GPU;tensor data 仍在 CPU memory,GPU 需要时发起读取并解压。

4. 方法:IBP 怎么压、怎么解?

IBP 的 metadata 主要有两个:

  • Mask:哪些 bit positions 是 invariant。
  • Bitval:这些 invariant bits 的具体值。

压缩时,IBP 会扫描一批 tensors,找出满足 threshold 的 invariant bit positions。之后每个 tensor 只保存非 invariant bits,加上一点 participation bits,用来处理某些 tensor 不适合压缩的情况。如果压缩后不省空间,IBP 直接保留原始 tensor,避免 compressed dataset 反而变大。

解压更关键,因为它在 critical path 上。IBP 用一个 warp 解压一个 tensor,每个 thread 负责一个 chunk,整个过程尽量只在 warp 内通信,避免跨 warp synchronization。

解压大概分几步:

  1. warp 协作从 CPU memory 读一段 compressed data 到 workspace;
  2. 每个 thread 读自己的 Mask chunk,统计需要恢复多少 bits;
  3. warp 内做 exclusive scan,确定每个 thread 的 offset;
  4. 异步预取下一段 data;
  5. 根据 Mask/Bitval 把 invariant bits 填回去。

这套流程的重点是:PCIe transfer 和 decompression overlap,且 CPU 不在 critical path 上。

论文还专门优化了 GPU-initiated PCIe transfer。相比 CPU 发 DMA,GPU zero-copy 对小块随机 tensor transfer 更合适,但要做 aligned access。IBP 保证 warp 尽量发起 128B-aligned transactions,减少 PCIe transaction overhead。

如下图是 IBP 集成到 ML 应用中的两种方式:(a) 把 GPU cache 里的数据压缩存储,(b) 把 CPU memory 中等待搬运的数据压缩,两种方式都让 PCIe 每次传输更少的 bits。

IBP 集成方式

5. 实验设置

IBP 的实验平台是一张 A100 GPU,CPU memory 300GB,CPU-GPU interconnect 是 16-lane PCIe Gen 4,理论单向 32GB/s,实测约 25GB/s。软件栈是 CUDA 11.7、Python 3.8、PyTorch 1.13.1。

baseline 包括 NVIDIA nvCOMP v3.0.1 和 ndzip-gpu。系统集成上,作者把 IBP 接到三个方向:

  • GNN:DGL v2.1 和 Legion;
  • DLRM:Colossal-AI 的 CachedEmbeddingBag;
  • LLM:InfiniGen,一个 KV-cache offload 系统。

数据集也覆盖了几类:

  • GNN:Pubmed、Citeseer、Cora、Reddit、Products、MAG240M;
  • DLRM:Criteo 1TB 上训练的 NVIDIA DLRM embedding weights;
  • LLM:Meta OPT 系列,输入 1920 tokens,输出 128 tokens,batch size 20。

6. 结果一:压缩率不是最高,但 transfer 最快

IBP 在 sparse GNN 上空间节省很高,在 dense GNN、DLRM、LLM KVCache 上空间节省相对 modest,但很稳定。论文报告 IBP 在 dense GNN 上大约 10% 到 12% space saving,在 DLRM 上约 8%,LLM KVCache 上最高约 10%。

这听起来不夸张,但关键是 transfer + decompression throughput。如下图是不同传输方法的 CPU-to-GPU copy throughput(Figure 5),GPU aligned transfer 最接近理论带宽上限(LIMIT 黑线),而 CPU fine-grained 方法在小 tensor 上几乎没有吞吐可言。IBP 的 speedup 正是建立在 GPU aligned transfer 这个基础上的。

Figure 5:CPU-to-GPU copy throughput 对比

IBP 在各类数据上都有比较好的 transfer speedup:Table 1 中 IBP 在 Sparse GNN 上 9.7×,Dense GNN 1.2×,DLRM 1.1×,LLM KVCache 1.0 到 1.1×。很多通用算法虽然压得更小,但解压开销会抵消收益。

论文还做了 sampling 实验:只采样 1%、5%、10% 数据来生成 Mask/Bitval,compression ratio 基本和全量接近。这对 streaming 或大规模 dataset 很重要,因为 preprocessing 不能太重。

7. 结果二:GNN、DLRM、LLM 都有收益

GNN 上,IBP 接入 DGL 后平均加速 56%;接入 Legion 后平均加速 74%。在 Legion 中,IBP 同时做 compressed cache 和 PCIe traffic compression,最大 throughput 提升到 2.7×。

如下图(Figure 8),IBP 对不同 GNN dataset 的训练 epoch speedup 有明显提升,CoraSU 上 Legion+IBP(C/M) 最高接近 3.5×,跨 6 个 dataset 的几何平均大约 1.7×。

Figure 8:GNN training epoch speedup

更细粒度的 latency breakdown 也揭示了 IBP 的作用机制。如下图(Figure 9),IBP 主要把 Legion 的 Wait 时间(等 PCIe 传输)压缩,Train 时间基本不变,说明加速完全来自 PCIe transfer,没有额外的 compute overhead。

Figure 9:GNN training epoch latency breakdown

DLRM 上,IBP 的收益主要来自 GPU-based lookup/transfer。baseline 需要 CPU 做 table lookup,然后把结果搬到 GPU;IBP 用 GPU zero-copy 直接并行读 CPU memory。随着 batch size 和 embedding entry size 增大,IBP 的优势更明显。如下图(Figure 10),在 entry size 为 1KB 和 2KB 时,batch size=8192 的 speedup 最高超过 6×。论文摘要里给出的平均提升是 DLRM embedding lookup 快 180%。

Figure 10:DLRM embedding lookup throughput

LLM 上,作者把 IBP 接入 InfiniGen 的 KV-cache fetching 路径。实验使用 OPT-2.7B、6.7B、13B、30B,1920 input tokens,128 output tokens,batch size 20。IBP 让 KV-cache movement latency 最高降低 37%,整体 inference latency 最高降低 27%,平均约 25%。如下图(Figure 11),蓝/绿色是 Infinigen+IBP,橙/红色是 baseline,IBP 明显压缩了 Cache 传输时间。

Figure 11:LLM inference latency breakdown(OPT 系列)

有个细节值得注意:LLM 场景下 IBP 不提前 preprocess 全部数据,而是在每次 prefill 阶段采样 prompt tokens 的 K/V 生成 Mask/Bitval,用于 decode 阶段压缩 output token K/V entries。这样 prefill 会增加约 10% 开销,但因为 prefill 占总时间不到 20%,decode transfer 省下来的时间覆盖了这部分成本。

8. 结果三:为什么 GPU-initiated transfer 很关键?

论文专门比较了 CPU fine-grained copy、CPU bulk copy、GPU zero-copy、GPU aligned copy。对于小块随机 tensor,CPU fine-grained DMA overhead 很高;CPU bulk copy 要先在 CPU 侧 gather 成连续 buffer;GPU zero-copy 可以让 GPU warp 直接发起读取。

更进一步,aligned transfer 比普通 GPU copy 高 25% throughput。这个点很工程,但很关键。很多时候系统 paper 的优化不是一个惊天动地的新算法,而是把数据路径上的每个 transaction overhead 都算清楚。

IBP 的 decompression throughput 在 space saving 小于 50% 时能达到 ideal 的 95% 以上。如下图(Figure 7),三种 chunk size(256B/1KB/4KB)在压缩率不太高时,throughput 都非常接近上限,说明 decompression overhead 基本被 GPU parallelism 和 PCIe transfer overlap 掩盖掉了。也就是说,对于 dense ML tensors 这种压缩率不算极高的场景,decompression 开销几乎是"免费"的。

Figure 7:decompression throughput vs space savings

9. 我的 take

IBP 这篇 paper 的味道很系统:它没有承诺“压缩率最高”,而是明确盯着 ML pipeline 里的真实瓶颈:PCIe transfer latency。

很多 compression 方法只看 compression ratio,其实对 serving/training 不够。因为数据压小了以后还要解,解压如果在 critical path 上太慢,就会把省下来的 PCIe 时间吃回去。IBP 的核心取舍是:牺牲一点理论压缩率,换取极低 metadata、warp-level decompression、GPU-initiated aligned transfer。

我觉得这个思路对 LLM inference 特别有意思。现在 KVCache 优化有很多 lossy 方向,比如 eviction、quantization、sparsification。但 production 里有时候你就是不想动模型语义,不想解释为什么某个 prompt 下质量掉了。lossless 方法虽然收益可能不如 aggressive quantization,但落地阻力小很多。

当然,IBP 也不是银弹。LLM KVCache 上的 compression ratio 只有几个百分点到 10% 左右,OPT 这种每个 head 的 K/V entry 又小,压缩收益有限。论文也提到,新模型如果 K/V entry 更大,收益可能更明显。另一个边界是 preprocessing 和 metadata 对 workload distribution 的依赖,如果数据分布变化大,Mask/Bitval 可能需要重新估计。

但总体看,这篇工作提醒我们一个很朴素的事实:GPU 系统优化不只是算得快,还要搬得聪明。 在 GNN、DLRM、LLM 这些越来越依赖大规模 memory hierarchy 的 workload 里,lossless tensor compression 可能会成为一个很实用的系统组件。