用途
本技能用于搭建、启动、校验与排查 AlphaProtein Novo(去新酶设计)在 ToolUniverse 中的远程工具部署。它属于部署配置类技能,而非模型本身:完成环境准备后,通过 ToolUniverse 的远程工具接口调用 AP Novo 的扩散生成器、motif 校验、重测序与评估能力。
前提条件
- 在 ToolUniverse 仓库根目录、Linux 环境、Python 3.12 下运行。
- 需要 CUDA GPU;模型在请求之间保持驻留,CPU 不是目标平台。
- provider 数据、权重、缓存与凭据须放在 Git 之外。
- 绑定 loopback;非 loopback 绑定需要 TOOLUNIVERSE_API_TOKEN,且不得写入参数或结果。
- 下载大文件前先运行标准库契约检查:
python scripts/remote_validation/setup_skill_preflight.py --implementation apnovo
导出 provider 资源后加 --check-provider-env;服务器启动后加 --live,可在不运行模型的情况下验证 MCP 工具集。
环境创建
MCP 服务器运行在 ToolUniverse 环境中,模型运行在其独立环境中,两者不能互相导入:
python3 -m venv .venvs/apnovo
. .venvs/apnovo/bin/activate
python -m pip install --upgrade pip
python -m pip install -e .
python -m pip install fastmcp
模型环境位于 TOOLUNIVERSE_APNOVO_PYTHON 指向的位置,需先创建空解释器,再由 tu remote setup --only environment 按 requirements.lock 以 --no-deps 填充:
python3 -m venv ~/apnovo-venv # 不要用 uv venv
export TOOLUNIVERSE_APNOVO_PYTHON=~/apnovo-venv/bin/python
export APNOVO_WEIGHTS_ROOT=~/.apnovo
须使用 python3 -m venv:kit 步骤用 {python} -m pip 安装上游可编辑包,而 uv venv 创建的解释器没有 pip,会导致该步骤报 No module named pip。已有此类 venv 可用 python -m ensurepip --upgrade 修复。
依赖锁定说明:jax 层固定 jax==0.10.2 与 tokamax==0.0.12;alphafold3 是带 C++ 扩展的 git 依赖,构建时从 gitlab.com 获取 Eigen,若因 GitLab 报错失败可原样重试;build_data 会编译 alphafold3 的 CCD,找不到 components.cif 时先设置 LIBCIFPP_DATA_DIR。
重测序环境
apnovo_resequence_designs 运行 LigandMPNN(固定 torch==2.2.1、triton==2.2.0、CUDA 12.1),不能与 jax 栈共用解释器,因此单独创建,并按上游方式通过 --python_executable 调用;它在 CPU 上运行:
uv venv --python 3.11 ~/ligandmpnn-venv
git clone https://github.com/dauparas/LigandMPNN.git ~/LigandMPNN
grep -v '^nvidia-\|^triton==' ~/LigandMPNN/requirements.txt > /tmp/lmpnn-reqs.txt
VIRTUAL_ENV=~/ligandmpnn-venv uv pip install -r /tmp/lmpnn-reqs.txt "setuptools<82"
export LIGANDMPNN_DIR=~/LigandMPNN
export TOOLUNIVERSE_LIGANDMPNN_PYTHON=~/ligandmpnn-venv/bin/python
两个环境变量均为可选;未设置时 provider 仍可启动,其余三项操作可用,重测序会按名称拒绝并指出缺失项。
权重条款
tu remote setup apnovo --only weights 在接受条款前会以 [apnovo] NOT ACTIVE reason=weights_terms_not_accepted 拒绝。该门是合同性的,非技术性,需显式设置:
export APNOVO_ACCEPT_WEIGHTS_TERMS=1
仅在所属组织符合条款定义的非商业组织时设置。随后下载 generator.bin.zst(547,140,096 B)到 $APNOVO_WEIGHTS_ROOT/apnovo_generator/ 并校验。权重不得迁移到共享或组可读存储,也不得镜像。
运行与操作
tu remote setup apnovo
tu remote check apnovo
tu remote run apnovo
五个步骤(preflight → environment → kit → weights → smoke)各自幂等,无事可做时报告 present,失败时按名称拒绝并给出修复方式。check 是常规流程的一部分。
操作与依赖:
apnovo_validate_motif:无需 GPU 与权重,解析 motif CIF 与 motif_str,报告固定原子、配体链及条件索引。应在生成前始终先运行,避免畸形 motif_str 浪费 GPU 小时。apnovo_generate_designs:需要 GPU 与 AP Novo 权重,在 campaign manifest 上运行扩散生成器。apnovo_resequence_designs:CPU,使用 LigandMPNN,在第三个解释器中运行。apnovo_ingest_folded:无需 GPU 与权重,将外部预测结果写入 campaign 的 folded 阶段。apnovo_evaluate_designs:无需 GPU 与权重,对已折叠 campaign 运行上游指标。
评估要求 campaign 已折叠,本 provider 不提供折叠能力,需用其他已解决权重的预测器折叠后通过 apnovo_ingest_folded 回填 mmCIF。布局约束:seeds 必须从 0 连续;每个设计的第一个状态必须带 designed_cif。
本地启动与验证
python -m tooluniverse.remote.apnovo.apnovo_tool
Streamable HTTP 端点为 http://127.0.0.1:8059/mcp。可用 fastmcp Client 列出工具,确认包含 apnovo_validate_motif、apnovo_generate_designs、apnovo_evaluate_designs。首个请求需支付 XLA 编译开销,之后不再;编译缓存以步数为键(lru_cache maxsize=8)。
验证与限制
宣称 verified 前需运行 verify_provider.py apnovo 及相关 pytest,并需要标明本硬件的 verified_on 与实测的 vram_budget_gb。
资料记录在 NVIDIA GB10(aarch64、cc 12.1、驱动 580.173.02)上的状态:2026-10-16 验收套件两次各 12/12 请求成功、peak_reserved_gib 2.0;2026-10-06 五个设置步骤全部通过,一次预测 69 秒。驻留加速比在 1000 步时为 5.3 倍,50 步时为 158.5 秒与 1.99 秒(编译主导)。未建立:驻留增益、验收套件与科学质量。折叠与重测序刻意不属于本 provider。部署须保持私有;公开或混合受众部署不满足非商业许可条件。