基于 Protenix 的 RNA-蛋白复合物结构预测微调框架,目标运行环境为 CNB.cool GPU 云环境。SAISfold/ 保留在项目中,但当前修复完成的主训练路径是 Protenix 微调。
RNA-competition/
├── Protenix/ # Protenix / AF3-style 结构预测模型
├── SAISfold/ # SAISfold / DyneTrion 探索代码
├── scripts/
│ ├── setup.sh # 环境初始化
│ ├── verify_nucleic_data.sh # 验证内置 nucleic 数据镜像内容
│ ├── prepare_data.sh # 旧路径:官方数据解压和 Protenix 预处理
│ ├── finetune_protenix.sh # Protenix 微调入口
│ ├── run_competition_inference.sh # 赛题推理并生成 output.zip
│ └── train_saisfold.sh # SAISfold 探索入口
├── competition/inputs/ # 赛题 1.json、2.json、3.json
├── .cnb.yml # CNB GPU 环境配置
├── Dockerfile # 训练环境镜像
└── README.md
先在 CNB.cool 创建 RNA-competition 仓库。Git 初始化和推送可以最后做;CNB 云原生开发环境中,脚本会自动以项目根目录为工作目录。
训练数据已经预处理进 Docker 镜像:
docker.cnb.cool/terry-berg/nucleic:latest
RNA-competition/Dockerfile 会从这个镜像复制 /data 到运行镜像的 /opt/nucleic-data。不要再上传 Nucleic_protein_res4.0,也不要再上传 chunk_* 或手动合并原始包。
运行时数据目录:
/opt/nucleic-data/
├── all_cif/
├── all_pkl/
├── components.cif
├── components.cif.rdkit_mol.pkl
├── custom-clusters-by-entity-40.txt
└── indices/
├── rna_before202509_all.csv
├── rna_before202509_train.csv
└── rna_before202509_test.csv
/workspace/persist/ 只用于输出、checkpoint 和模型缓存,不存放大训练数据。
bash scripts/setup.sh
bash scripts/verify_nucleic_data.sh
小规模冒烟测试:
MAX_STEPS=2 EVAL_INTERVAL=10 CHECKPOINT_INTERVAL=10 bash scripts/finetune_protenix.sh
bash scripts/finetune_protenix.sh
常用覆盖参数:
MAX_STEPS=1000 DIFFUSION_BATCH_SIZE=8 CROP_SIZE=384 bash scripts/finetune_protenix.sh
训练输出保存到 /workspace/persist/output/,预训练权重和训练 checkpoint 保存到 /workspace/persist/checkpoints/。默认预训练模型已切换为 protenix_base_20250630_v1.0.0。关闭或销毁 CNB 云原生开发环境前,请把重要 checkpoint 下载或上传到外部存储。
赛题 JSON 已放在 competition/inputs/。推理和打包:
bash scripts/run_competition_inference.sh
默认会使用 protenix_base_20250630_v1.0.0,对每个题目生成多个 seed/sample 候选,然后按复合置信度和结构质量扣分选择最终 CIF。提交包输出到:
/workspace/persist/competition_outputs/output.zip
压缩包根目录文件名为官方要求的:
1_pred.cif
2_pred.cif
3_pred.cif
常用参数:
SEEDS=101,202,303,404,505 SAMPLE_NUM=5 bash scripts/run_competition_inference.sh
RUN_PROFILES=msa,nomsa EXTRA_PROFILES=msa bash scripts/run_competition_inference.sh
MODEL_NAME=protenix_base_20250630_v1.0.0 bash scripts/run_competition_inference.sh
CHECKPOINT_PATH=/workspace/persist/output/<run>/checkpoints/<step>_ema_0.999.pt bash scripts/run_competition_inference.sh
选择报告保存在 /workspace/persist/competition_outputs/selected_predictions.tsv,候选明细保存在 /workspace/persist/competition_outputs/all_candidates.tsv。
| 项目 | 配置 |
|---|---|
| GPU | H20 96GB(共享) |
| 工作区 | /workspace |
| 数据目录 | /opt/nucleic-data,来自 docker.cnb.cool/terry-berg/nucleic:latest |
| 输出目录 | 默认 /workspace/persist/,也可用 PERSIST_DIR=/path 覆盖 |
| 环境回收 | CNB Workspaces 的自动备份不适合大文件;/workspace/persist/ 只作为当前环境内的工作目录使用 |
Nucleic_protein_res4.0、chunk_*、all_cif/、all_pkl/ 提交到 Git 或上传到 CNB 工作区。scripts/prepare_data.sh 保留为备用路径;正常 CNB 流程不需要执行。data/、模型权重、压缩包和输出目录不上传 Git。competition/inputs/。output.zip 由 scripts/run_competition_inference.sh 生成,提交文件名是 1_pred.cif、2_pred.cif、3_pred.cif。SAISfold/ 保留在项目中,但 scripts/train_saisfold.sh 仍是探索性入口,不作为当前 CNB 微调成功标准。