用途
RFD4-Proteína 奖励引导搜索用于在蛋白质生成过程中引入奖励模型引导。它不再只生成单条轨迹,而是探索多条生成轨迹,并保留奖励模型评分最高的候选结构。搜索通过束搜索(beam search)实现:在指定的积分步检查点对部分轨迹进行分支和剪枝,用奖励模型对存活候选打分。
主要能力
- 束搜索:在检查点处分支并剪枝部分轨迹,用奖励模型对存活候选评分。
- 可配置检查点:每个检查点可指定自己的指标、奖励项和评分来源。
- 奖励项支持权重、裁剪(clip)和归一化(normalize_by)。
- 支持重折叠预言机(AF2、AF3、OpenFold3)作为奖励来源,也支持无需重折叠的奖励(如链间相互作用、界面氢键)。
- 支持 continuation_criteria 提前停止无前景的输入。
- 支持保存完成的评分 rollout,并可用 save_criteria 过滤。
- 支持新颖性指标 FoldseekNoveltyMetric。
使用方式
前置条件:先完成 rfd4-proteina-setup,生成需要 CUDA GPU。使用重折叠预言机的奖励还需要配置相应的重折叠后端。
搜索与生成使用同一入口 generate.py,由 inference_experiment 配置中的 search 块选择。所有参数均为 Hydra key=value 形式(不是 --key value)。所有命令从仓库根目录(包含 .project-root 的目录)运行。
预检:
bash open-models-skills/rfd4-proteina/rfd4-proteina-setup/scripts/preflight.sh
运行自带示例:
# 束搜索,AF3 重折叠 pLDDT 作为奖励
rfd4-generate inference_experiment=inference_beam_example
# 束搜索,无重折叠——界面蛋白<->配体氢键作为奖励
rfd4-generate inference_experiment=sm_binder_hbond_search
构建自定义搜索配置:复制自带配置并编辑其 search 块。示例:
search:
n_branch: 2
beam_width: 3
checkpoints:
"40":
metrics: [interchain_interactions]
use_clean_prediction: true
rewards:
interchain_interactions.hbond_atom_pair_count_coi:
weight: 1.0
clip: {max: 6.0}
normalize_by: 6.0
"60":
metrics: [oracle]
rewards:
oracle.plddt_coi: {weight: 1.0}
generation:
args:
nsteps: 60
SLURM 提交:
./scripts/launch_generate.sh \
inference_experiment=inference_beam_example
适用场景
- 需要在蛋白质生成中引入奖励引导,保留高奖励候选。
- 需要探索多条生成轨迹并剪枝。
- 需要以重折叠置信度(如 pLDDT)或界面相互作用等作为奖励。
- 需要提前停止无前景的输入以节省计算。
限制
- 奖励是计算代理,成本随分支和预言机调用增长。
- 搜索结果必须用共同的最终指标比较,并按任务要求独立验证。
- 搜索比普通生成昂贵得多,成本大致为:搜索预言机调用数 ≈ beam_width × n_branch ×(预言机评分的检查点数)。
- 通过/失败指标不支持作为搜索奖励。
- 检查点键不能超过实际调度长度。
- 需要 CUDA GPU;重折叠奖励需要配置相应后端。