RNAQwen

状态:研究进行中 —— 本仓库当前没有训练好的权重。 本页描述的是方法与本仓库放出的数据/代码。


0. 这个项目现在是什么

不是 RNA-GPT 的复现了。 我们一开始是照 RNA-GPT(NeurIPS 2024 MLSB Workshop)做的, 过程中把它那条"冻结 LLM + 一个线性投影层学模态对齐"的路线用测量证伪了,随后转向。

转向的证据、失败记录、方法论约定全部保留在 PLAN_v2.md 与 PROGRESS.md 里 —— 包括我们自己的错。 (其中两个指标设计错误差点导致一次假的成功结论,原文都在。)

1. 构型

                  冻结                      可训练                冻结 + LoRA
┌──────────┐   ┌─────────────┐   ┌────────┐  ┌──────────┐  ┌─────────────────┐
│ RNA 序列 │──▶│ ERNIE-RNA   │──▶│  FSQ   │─▶│ 码embed  │─▶│ Qwen3-8B        │
│ ≤1024 nt │   │ 768维/位点  │   │4096 码 │  │4096×4096 │  │ 文本问答        │
└──────────┘   └─────────────┘   └────────┘  └──────────┘  └─────────────────┘
                    ①                ②            ③                ④

没有投影层把 768 维硬压到 4096 维。 RNA 不再被"翻译"进 LLM 的向量空间,而是被 离散化成 LLM 词表里的一批条目,让 LLM 把它当普通 token 处理。

环节 是什么 参数量
① 编码器 ERNIE-RNA,768 维,全程冻结 0(冻结)
② 压缩码表 线性降到 12 维 → FSQ 2 级量化 → 4096 个离散码,相当于"RNA 自己的 tokenizer" ~16.8M
③ 码 → 向量 4096×4096 可训练 embedding;RNA 位置不过 BPE,直接用 inputs_embeds 16.8M
④ 对齐 底座冻结 + LoRA(attn) + 码表可训练 7.67M (LoRA)

选 FSQ 而不是学习式码本,是因为学习式码本天然塌缩,FSQ 从构造上不会。 选 4096 而不是 65536,是实测出来的(65536 那档只有 4.5 个位点/码、39.7% 的码只出现一次; 4096 是 31.4 个位点/码、中位重用 12 次、90.2% 利用率)。

2. 判据链 —— 每一关都是一个能证伪的数,不是 loss

loss 降下来也可能只是模型学会了忽略 RNA 直接编答案。 所以我们不接受 loss 作为判据。

关 判据 阈值 现有值
② 跨序列 6-mer 迁移倍数 ≥ 2.0x 1500 条上 2.88x
④ vs 随机表 / vs 常数码的负 Δlogp 比例 < 45% 待跑

为什么重建误差和利用率都不算数。 重建是循环的(码表就是照它训的);利用率在词表远小于 样本数时必然好看(哈希也能给出 90%)。唯一非循环的判据是:在没见过的序列上, 同一个码是否指向同一类局部 6-mer —— 靶子来自输入序列本身,不是编码器学出来的。

逐 token 消融(Δlogp = logp_real − logp_ablated)三个对照缺一不可:

vs 零表   低 => RNA 位置上「有东西」在起作用
vs 随机表 低 => 起作用的是**码的内容**
vs 常数码 低 => 起作用的是**码的区分度**
后两个 ≈50% 就是「语言模型眼里的 RNA 是乱码」,只是换了个形式。

对照臂(冻结投影 + 软提示,即原路线)已训完,其 per-token 负 Δlogp 为 **58.4%**。

3. 数据

由 RNAcentral "Lit Scan" 子集重建(原论文描述为约 420,000 条 RNA,≤1024 nt,取 407,616 条; 本仓库为其中 4,481 条 RNA / 92,680 条问答,约为论文报数所用 5K/121K 子集的 90% / 77%)。

文件 内容 大小
data/rnaqa_n6_merged.jsonl 4,481 RNA / 92,680 QA。字段:sequence qa[{question,answer,kind,source,variant}] annotation rna_type organism uid 52 MB
data/evalset_merged/ train 3,552 / val 441 / test 488,K=20 划分 20 MB
data/pretrain_rna.jsonl 149,598 条序列,供继续预训练用 56 MB

问答由 DeepSeek 生成,标注由 RNAcentral 的文献摘要汇总而来;qa[].kind 区分 open_ended(47,779)与 closed(44,901),qa[].source 区分 ais(45,821)与 dc(46,859)。

划分的注意点:evalset_merged/ 的 train/val/test 之间确实存在同源序列 (11,744 个跨划分的 20-mer 重叠,涉及 292 条记录)。这是有意保留的,不要把它当作 无泄漏基准来引用。

4. 本仓库放出了什么

  • ✅ 代码:scripts/(数据构建、编码器校验、FSQ 训练、消融评测)、src/rnaqwen/
  • ✅ 数据:上表三个文件
  • ✅ 研究记录:PLAN_v2.md(当前方案 + 失败记录)、PROGRESS.md(逐日日志)、reports/*.json(各项测量的原始结果)
  • ❌ 权重:尚无。截至本页更新时,路线 C 尚在验证阶段,未产出可发布的模型

5. 复现环境

Windows / AMD gfx1151(APU,无独立显存),PyTorch 2.12.0a0+rocm7.13.0a20260313, ERNIE-RNA 作为 RNA 编码器,Qwen3-8B 作为语言底座。

python scripts/48_stage1_full_tokenizer.py    # 第一阶段:全量压缩码表
python scripts/46_fsq_code_transfer.py        # 判据 ②:跨序列 6-mer 迁移
python scripts/47_routeC_short_sft.py         # 判据 ④:逐 token 消融

6. 引用

本项目未发表。相关工作:

  • RNA-GPT — arXiv 2411.08900(我们起点,非当前方案)
  • MAPO — 跨模态互信息的逐 token 度量(我们的消融仪器来自这里)
  • RiboSphere — RNA + FSQ 的量化方案
  • ProVQ — "Premature Discretization" 的命名与量化课程
  • DPLM-2 — 生物模态离散 token + 语言模型建模的先例

7. 诚实声明

PLAN_v2.md 里保留了我们被自己证伪的假设和设计错误的指标。这个方向尚未验证成功; 判据 ④ 还没有跑出可信结果。请据此评估本仓库的成熟度。

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Paper for RomanCohort/RNAQwen