RNAQwen
状态:计划阶段 —— 尚未开始训练,本仓库当前没有权重。
本仓库是 RNA-GPT 的复现与开源计划(NeurIPS 2024 MLSB Workshop,arXiv 2411.08900)。
原工作未发布代码、权重、数据与评测集;本项目把这条管线复现出来并全部开源,为 RNA + 语言模型方向提供一个公开、可比较的基准。
计划陆续放出:训练与评测代码 · LoRA 权重 · 重建的 RNA-QA 数据集 · 重建的评测集 · 评测脚本。
本文档中每条外部事实均于 2026-10-08 逐个核实(arXiv / Crossref / OpenAlex / HuggingFace / GitHub / RCSB),来源见附录 A。 文档最初作为内部工作稿写成,人称未统一,后续会整理为正式 README。
RNA-GPT 复现与开源 — 阶段计划
建立日期 2026-10-08 · 目的:先复现、再开源,在 Benchmark 上与原版打平。 本文档中的每条外部事实都在 2026-10-08 逐个核实过(arXiv / Crossref / OpenAlex / HuggingFace / GitHub / RCSB),来源见附录。
0. 目标与验收标准
目标:复现 RNA-GPT,在它自己的评测口径上达到与原版同量级。
验收指标(照抄原论文的两套,别自己发明)
- ROUGE-1 / ROUGE-2 / ROUGE-L
- Semantic Precision / Recall / F1 —— 用三种嵌入算余弦相似度:
BERT/PubMedBERT/OpenAI text-embedding-3-large(论文记作S_BERT/S_Pub/S_GPT)
目标分数(原版报数)
| 指标 | D&C 变体 | AIS 变体 |
|---|---|---|
| Rouge-1 | 0.4791 | 0.5031 |
| Rouge-2 | 0.2690 | 0.3667 |
| Rouge-L | 0.4405 | 0.4747 |
| F1 @ S_BERT | 0.8609 | 0.8494 |
| F1 @ S_Pub | 0.7165 | 0.7293 |
| F1 @ S_GPT | 0.7560 | 0.7700 |
两条前提(均出自论文原文)
① 论文报数对应的训练集规模。 论文原文:"We trained RNA-GPT using the flagship Llama-3 8B model architecture using a smaller 5K RNA, 121K QA samples subset for our initial model. We are in the process of training the large RNA-GPT that uses all 407,616 RNAs." → 因此本项目的复现目标对齐 5K RNA / 121K QA 这一档。
② 复现的可比性边界。 原工作未发布代码、权重、数据与评测集,因此只能自建评测集;自建评测集上的绝对分与原论文报数不可直接比较。 → 因此本项目的第一个交付物是 RNA-QA 数据集 + 评测集的公开重建,并在报告中明确标注"评测集为重建,与原报数不完全可比"。
1. 原版配方(复现目标 — 严格照抄)
| 项 | 值 |
|---|---|
| 底座 LLM | Meta Llama-3 8B Instruct |
| 序列编码器 | RNA-FM(冻结) |
| 投影层 | 线性投影(冻结编码器,只训投影) |
| Stage 1 模态对齐 | 只训投影;输入只有投影后的 RNA 表征、没有文本 prompt |
| Stage 2 指令微调 | 10 epochs,warmup 200 |
| Stage 1 超参 | 10 epochs,batch=1,wd=0.05,warmup 2048,AdamW β=(0.9, 0.98),LR 1e-4→8e-5,warmup LR 1e-6,linear warmup + cosine,AMP |
| 数据 | RNA-QA = 407,616 条(RNACentral + GPT-4o + LDA 的 divide-and-conquer;指令数据用 GPT-4o-mini 把 abstract 拆成 QA) |
| 算力 | 2 × A100 40GB,两阶段合计 1 周 |
| 评测 | 见 §0 |
两个数据集变体(论文都报了):AIS(abstract → sentence)与 D&C(divide-and-conquer 摘要)。
Stage 1 那个设计要照抄 —— 它从结构上杜绝了"模型绕过编码器去抄文本"这条捷径(Stage 1 压根没有文本可抄)。这是本计划里最重要的一条防坑设计。
2. 本复现与原版的差异(底座选型)
底座 LLM Meta Llama-3 8B Instruct → Qwen3-8B
其余全部照抄:RNA-FM(冻结) · 线性投影 · 两阶段 · 上述超参
为什么是 Qwen3-8B,不是 Qwen2.5-7B-Instruct —— 因为维度能对上(实测各模型 config.json,2026-10-08):
| hidden | layers | heads | KV heads | vocab | max_pos | |
|---|---|---|---|---|---|---|
| Llama-3-8B-Instruct | 4096 | 32 | 32 | 8 | 128256 | 8192 |
| Qwen3-8B | 4096 ✅ | 36 ⚠️ | 32 ✅ | 8 ✅ | 151936 ⚠️ | 40960 |
| Qwen2.5-7B-Instruct | 3584 ❌ | 28 | 28 | 4 | 152064 | 32768 |
投影层是 Linear(RNA-FM 640 → LLM hidden)。原版 = Linear(640, 4096);
Qwen3-8B 也是 Linear(640, 4096) —— 形状逐字相同,所以投影的参数量、初始化尺度、LR 的意义都能对齐。
用 Qwen2.5-7B 则是 (640, 3584),白白多引入一个变量。
选型理由的三条 —— 其中一条在复现阶段是风险
| 理由 | 复现阶段 | v2 |
|---|---|---|
| 投影层形状逐字相同(640 → 4096) | ✅ 最硬的理由 | 仍成立 |
| 长上下文(40960 vs Llama-3 的 8192) | ⚠️ 用不上 —— 瓶颈在编码器:RNA-FM max_pos=1026,序列连编码器都进不去 |
✅ 真有用(3Di / 序列文本化路线) |
| 中文友好 | ❌ 是负资产,见下 | ✅ 有价值(中文语料 / 中文用户) |
「中文友好」为什么在复现阶段是负资产
- RNA-GPT 的参考答案来自文献 abstract(英文),所以参考答案是英文
- ROUGE 是词汇重叠指标:输出中文 → ROUGE 直接归零
- Qwen 的中文倾向更强 → 更容易在英文 prompt 下漏出中文;Stage 2 微调会把这个倾向放大
→ 硬约束(加到验收里):prompt 强制英文输出 + 评测前断言输出语言(简易判据:中文字符占比超过阈值即判失败)。 → 待你自己确认一次:我尝试直连 RNAcentral API 核对描述字段,被 403 挡了(数据中心 IP 被拦)。所以"参考答案是英文"这条我只有间接证据(论文方法是从文献 abstract 生成注释),需要你在本地网络确认一遍。
两个对不上、必须在报告里声明的变量
num_hidden_layers:32 → 36(模型更深)vocab_size:128256 → 151936 → tokenizer 不同,同一段 QA 文本 tokenize 后 token 数不同,Stage 2 的有效序列长度与步数会变
⚠️ Qwen3 特有的坑:thinking mode。
Qwen3 默认可能输出 thinking...<|end▁of▁thinking|> 推理块。参考答案是短句,一旦混进推理块,ROUGE 会直接崩。
→ Stage 2 起就显式关掉(chat template 传 enable_thinking=False,或消息里加 /no_think),并在评测前**断言输出不含 <|end▁of▁thinking|>**。
⚠️ 这一版不要用 RiNALMo / 结构编码器 / 修饰。 换了编码器就不叫复现,而且你会同时 debug "我改的地方对不对"和"复现得对不对"。全部留到 v2。
3. 阶段计划
P0 · 环境与数据管线(2–3 周)
- 起环境:
transformers+peft+ RNA-FM(HFmultimolecule/rnafm) - 重建 RNA-QA(最大工作量):
- 源:RNAcentral
- 方法照抄:LDA 主题分组 → divide-and-conquer 分组摘要 → 合成 annotation
- 指令数据:把 abstract 拆成 QA 对
- 成本对策:用本地 Qwen 替代 GPT-4o/4o-mini 做生成器 —— 成本≈0、可复现、且本身是开源贡献
- 先做 1,000 条的小样跑通管线,再放大到 121K
- 完成判据:能产出 1,000 条格式正确的 QA,且 QA 里不出现序列原文(出现就白训)
P1 · Stage 1 模态对齐(3–5 天)
- 冻结 RNA-FM + 冻结 Qwen,只训线性投影
- 超参照抄(10 epochs, batch 1, warmup 2048, LR 1e-4→8e-5)
- 完成判据:置零编码器后,对齐指标明显下降
P2 · Stage 2 指令微调(1–2 周)
- 用 LoRA 先跑(8B 全参在单卡不现实)
- 完成判据:在自建评测集上 ROUGE 明显高于"裸文本输入"基线(见 §4 阶梯)
P3 · 评测与打平(1 周)
- 实现两套指标:ROUGE-1/2/L + 三种嵌入的 semantic P/R/F1
- 报告三个数:原版报数 / 我的复现 / 差值,并声明评测集是重建的
- 补一个原版没做的消融:置零编码器 —— 这是你复现能超过原版的第一个点
P4 · 开源(3–5 天)
- 代码 + LoRA 权重 + RNA-QA 数据集 + 评测集 + 评测脚本
- MLSB 明确写:承诺开源代码/权重/数据集的投稿,优先给 spotlight
4. 消融阶梯(原版给的,你的复现必须重现出这条)
D&C 变体:
| 配置 | Rouge-1 | Rouge-2 | Rouge-L | F1 @ S_BERT |
|---|---|---|---|---|
| RNA Sequence(裸文本输入) | 0.2472 | 0.0964 | 0.2182 | 0.7625 |
| Modality Fusion(只训投影) | 0.0922 | 0.0393 | 0.0799 | 0.7466 |
| RNA-GPT(完整) | 0.4791 | 0.2690 | 0.4405 | 0.8609 |
两个要点
- 复现出这条"越接越强"的阶梯 = 复现成功的真正判据,比单看最终分数更重要。
- Modality Fusion 在 D&C 上塌了(0.0922),但在 AIS 上正常(0.2239)。这个异常是个值得解释的现象,别当噪声放过 —— 写清楚了就是一个发现。
5. 风险登记
| 风险 | 症状 | 对策 |
|---|---|---|
| 评测集不可比 | 分数对不上,但不知道是模型差还是评测集不同 | 从头就声明不可严格比较;把评测集开源 |
| 投影塌缩 / 编码器被绕过 | loss 降但置零无影响 | Stage 1 无文本输入(照抄原版设计)+ 置零检测当 CI |
| QA 里复述了序列 | 同上,且指标虚高 | 造数据时就用置零检测验收 |
| 数据生成烧钱 | GPT-4o 造 12 万条 API 费用 | 用本地 Qwen 当生成器 |
| RNA-QA 重建质量差 | 复现分数系统性低于原版 | 先人工抽查 100 条,别直接上量 |
| 8B 全参微调带不动 | OOM | Stage 2 用 LoRA |
| "打平"变成长期漂移目标 | 一直调不出那个数 | P3 就锁定报告口径,接受"同量级"而非"小数点一致" |
| Qwen3 thinking mode 污染输出 | 回复里带 thinking 块,ROUGE 崩 | Stage 2 关 enable_thinking;评测前断言无 <|end▁of▁thinking|> |
| 输出语言漂移成中文 | 参考答案是英文,ROUGE 归零 | prompt 强制英文 + 评测前断言中文字符占比 |
6. 明确不做
- ❌ 这一版不碰 RiNALMo / 结构编码器 / 修饰(v2 再说)
- ❌ 不做全量 407,616(原版自己都没做;5K/121K 就够打平)
- ❌ 不用 35B 模型(原版是 8B)
- ❌ 不宣称"预测免疫原性"(那是 ImmuneRNAQwen 的方向,本阶段只是复现)
- ❌ 不用生成的结构训结构理解(除非过独立物理校验)
7. 立刻能开始的三件事
- 拉
multimolecule/rnafm,喂一条序列 —— 维度已实测(640 / 12 层 / max_pos 1026),真正要验的是 tokenizer 行为与 >1026 时的报错方式(10 分钟) - 写 RNA-QA 重建管线的最小版本,只做 50 条,人工看质量
- 实现评测脚本(ROUGE + 三种嵌入的 semantic P/R/F1),并先拿原版消融表的数字做一次自检(喂人工构造的"完美答案",看指标能否复现出高位)
附录 A · 已核实的资源
| 资源 | 状态 |
|---|---|
| RNA-GPT 论文 | arXiv 2411.08900(2024-10-29)· MLSB Workshop NeurIPS 2024 |
| RNA-GPT 代码 | ❌ 无(GitHub 组织 RNA-GPT 只有 RNA-GPT.github.io,★3) |
| RNA-GPT 权重 | ❌ 无(HuggingFace 无命中) |
| RNA-QA 数据集 | ❌ 无(HF datasets 搜 RNA-QA 无命中) |
| RNA-FM | ✅ HF multimolecule/rnafm(dl≈3,780)· 实测 hidden=640 / 12 层 / 20 头 / vocab=28 / max_pos=1026 |
| ProteinGPT 代码 | ✅ GitHub OviaLabs/ProteinGPT(★36,Python,基于 MiniGPT-4)—— 本阶段用不到,但 v2 可参考其管线 |
| 评测/复现引用 | MLSB Workshop 站 https://www.mlsb.io/(2024 届:https://www.mlsb.io/index_2024.html) |
MLSB 规则(对本文档直接相关):workshop 为 non-archival(不影响以后投正会);承诺开源代码、模型权重、数据集的投稿优先获 spotlight。
附录 B · 本方向的相邻工作(MLSB 2025 accepted,62 篇里相关项)
#31 Improving RNA 3D Structure Prediction via Language Model-Augmented AlphaFold 3 ← 最对口,先读
#55 Curriculum-Augmented GFlowNets For mRNA Sequence Generation
#28 Rewriting protein alphabets with language models
#14 g-DPO: Scalable Preference Optimization for Protein Language Models
#26 ProteomeLM · #56 ProFam · #3 Self-Distillation FT · #59 SAE on Antibody LMs
附录 C · 后续(v2,本计划之外)
- 换 RiNALMo(HF
multimolecule/rinalmo-giga,hidden=1280,33 层,max_position_embeddings=1024) - 长度问题:2,013 nt > 1024 → 先读
RIBOSPAN(arXiv 2026-08,长上下文 RNA FM);备选 3Di 结构 token / 重叠窗口 - 加结构这一路;加 m6A / m5C
- 词表扩展 + 继续预训练(ProstT5 路线:Heinzinger 等,NAR Genomics and Bioinformatics 2024,DOI
10.1093/nargab/lqae150) - 若走免疫方向:标签来自物理流水线(TorusFold),不是实验真值 —— 对外口径必须写清