tangermeme 推出 PackedSequence:2bit 打包让基因序列内存省16倍
基因组学深度学习工具库 tangermeme 合并 PR #120,新增 PackedSequence 结构,把四字符字母表的 DNA 序列按每位置 2 bit 打包存储,相比 int8 one-hot 编码内存占用降低 16 倍。更重要的是整套运算可完全在「打包空间」进行,无需先解码回 one-hot,实测性能与内存同时大幅改善。这一改动源自作者 jmschreiber91 在加速 DeepLIFT/SHAP 归因分析时的实际瓶颈,现已落地为库的正式能力。
已确认
- tangermeme 新增 PackedSequence:每位置 2 bit 存储,相对 int8 one-hot 内存降 16 倍;动机是内存与磁盘占用问题(m6)
- 编码方案:不存 one-hot,改存 locus 位置索引,从磁盘直接读入打包序列,仅在每批次解码回 one-hot,整体内存进一步压缩(m1)
- 工具链支持在打包序列上直接做替换、shuffle 等 ersatz 操作,而非先解码再处理(m4)
- 完全在打包空间运算后,对 1 万个窗口做 20 倍双核苷酸 shuffle 的耗时从 7.86s 降到 0.85s,内存从 8.7GB 降到 0.7GB(m5);另一实测场景内存从 3.8GB 降至 755MB(m4)
- 作者在加速 DeepLIFT/SHAP 时遇到瓶颈:逐条 shuffle 太慢,而把预期 10 万条序列、每条 20 倍 shuffle 一起打乱又导致内存爆炸,由此转向直接在打包序列上运算(m2)
- 作者指出该打包思路同样适用于棋类局面表示:uint8 替代 32 位整数省 4 倍,再把 4 个相邻格子(每格棋子类型 0-3 占 2 bit)打包进同一 uint8,再省 4 倍(m3)
为什么重要
- 归因分析(DeepLIFT/SHAP)中 shuffle 操作通常既是性能瓶颈也是内存瓶颈,打包空间端到端运算让这一量级的操作「不太可能成为任何流程的瓶颈」(m5),对大规模基因组学深度学习工作流是实质性提速
- 2 bit/位点打包是通用技巧,可迁移到任何小字母表、每位置单值的离散数据(如棋盘局面),m1/m3 给出了可直接套用的实现思路
2026-10-20 ~ 2026-10-20 · 6 条相关
一手来源
- tangermeme 新增 PackedSequence:2 bit/位点,内存省 16 倍 — jmschreiber91 ·
- 完全在打包空间运算:1 万窗口 shuffle 从 7.86s/8.7GB 降至 0.85s/0.7GB — jmschreiber91 ·
- 为加速 DeepLIFT/SHAP,作者重写双核苷酸 shuffle 避免内存爆炸 — jmschreiber91 ·
- 用 uint8 打包多个位置,棋类数据内存可再省 4 倍 — jmschreiber91 · 2026-10-20
- uint8 打包 4 个碱基位点的内存压缩技巧:DNA 序列编码再省 4 倍 — jmschreiber91 · 2026-10-20
- Tangermeme 支持在打包序列上直接运算,内存从 3.8GB 降至 755MB — jmschreiber91 · 2026-10-20
- 【源头】为加速 DeepLIFT/SHAP,作者重写双核苷酸 shuffle 避免内存爆炸 — jmschreiber91 · 2026-10-20
- 【源头】完全在打包空间运算:1 万窗口 shuffle 从 7.86s/8.7GB 降至 0.85s/0.7GB — jmschreiber91 · 2026-10-20
- 【源头】tangermeme 新增 PackedSequence:2 bit/位点,内存省 16 倍 — jmschreiber91 · 2026-10-20