SuperAPI AI 工具集

rfd4-proteina-search

智能体与模型

查看项目

更新于 10-21 19:20

技能介绍

用途

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;重折叠奖励需要配置相应后端。