AF3-torch 是 ToolUniverse 生态中的远程工具提供方,实现 AlphaFold3 的 xfold PyTorch 重实现(Apache-2.0 许可),运行在公开的 OpenFold3-preview2 检查点上,并非 DeepMind 受许可限制的参数。本技能覆盖该远程工具的搭建、启动、验证与排查,并可选择经 ToolUniverse Connect 中继。
一、用途与验证状态 资料记录(2026-10-01)该部署在 NVIDIA GB10(aarch64,cc 12.1)上以优化套件的 fast 模式运行;原本预期 aarch64 上不可行。其第二环境所需的 C++ 扩展在无移植补丁情况下干净构建,转换后的权重文件与套件在 x86-64 上测得的 sha256 位精确一致。验证包含四次连续相同请求、一个混合形状序列和一条递增阶梯:前向冷启动 3.51 秒、热启动 1.46 秒,100 残基峰值预留 1.75 GiB,800 残基升至 9.21 GiB,阶梯斜率 5.3 倍。公开化、跨用户隔离、并发、恢复与结构精度均未测试,应保持私有部署。
二、前置条件 需在 Linux、Python 3.12.3 下从 ToolUniverse 仓库根目录运行;必须有 CUDA GPU(模型常驻,不支持 CPU);提供方数据、权重、缓存与凭据须置于 Git 之外;默认绑定回环地址,非回环绑定需 TOOLUNIVERSE_API_TOKEN,且不得出现在参数或结果中。下载大型依赖前先运行标准库契约检查:python scripts/remote_validation/setup_skill_preflight.py --implementation af3_torch。导出提供方资源后可加 --check-provider-env;服务器启动后可加 --live 校验精确 MCP 工具集而不运行模型;分享前可加 --check-connect-prereqs,仅报告密钥是否设置,不打印其值。
三、双环境与双解释器 该提供方采用远程工具标准,有两个环境:MCP 服务器运行在 ToolUniverse 环境,模型运行在基于固定锁文件构建的独立环境,两者不可互相导入。创建示例:python3 -m venv .venvs/af3_torch;激活后升级 pip,安装 -e . 与 fastmcp。模型侧解释器路径由 TOOLUNIVERSE_AF3_TORCH_PYTHON 指定,需先创建空虚拟环境(如 python3 -m venv ~/af3_torch-venv),再由 tu remote setup --only environment 依据 environment/requirements.lock 以 --no-deps 填充。第二个 CPU 专用解释器位于 AF3_TORCH_JAX_REPO 检出内的 AF3_TORCH_JAX_PY 下,负责 AF3 特征化与 mmCIF 写出;模型加载的权重由该检出中的转换器生成而非下载,缺失上述变量时权重步骤会按名称拒绝并附带做法。锁文件头记录 85 个 pin 中替换的一个,以及 jaxlib 0.7.2 以下不发布 aarch64 wheel 的事实。
四、构建与使用方式 执行 export TOOLUNIVERSE_AF3_TORCH_PYTHON=~/af3_torch-venv/bin/python 后运行 tu remote setup af3_torch,其读取 provider.toml 依次执行 preflight、environment、kit、weights、smoke 五步,每步失败会按名称说明并给出修复方法;可加 --only 单步执行。smoke 步骤最关键:加载模型、发送一次请求、断言产物符合清单,并将实测峰值 VRAM 记录到 ~/.cache/tooluniverse/measured/af3_torch.json,供主机调度。常驻 worker 强制数据加载器为 0 工作进程;请求时不下载任何内容,清单声明每个权重文件的大小与 sha256,偏离即拒绝启动。
登录与分享:每台机器执行一次 tu remote login(或 tu remote login --env-file 导入受保护的 0600 文件),默认请求短期设备码并经浏览器批准,无头机器可加 --no-browser;随后 tu remote share af3_torch 一条命令完成预检、启动或复用回环端点、校验发现并前台保持中继。可用 --name 与 --workers 覆盖默认值。tu remote check 用于非分享就绪检查,tu remote run 启动仅本地前台服务器。
本地启动与验证:运行 python -m tooluniverse.remote.af3_torch.af3_torch_tool,端点 http://127.0.0.1:8036/mcp;用 fastmcp Client 列出工具,确认包含 af3_torch_predict,发现为空、重复或 schema 漂移即停止。重启后首个请求承担模型构建开销,之后不再承担。
Connect 中继:tuplatform-connect 尚未发布到 PyPI,需安装资料中给出 SHA-256 pin 的公开 wheel,随后 tu doctor --forward ... --json 与 tu serve --share --forward ... --name validation-af3_torch --workers 1。优先浏览器设备授权;CI 或迁移时仅通过受保护环境提供 TOOLUNIVERSE_SERVICE_KEY 或使用 --manual-key,绝不放于 shell 参数。该实现未经过 Platform 认证矩阵,证据均为单卡本地回环。
五、示例与输出 操作 af3_torch_predict 接收 fold_input(alphafold3 方言 JSON 字符串)与 name。资料给出 smoke 示例及通过本地 MCP 端点调用的 Python 代码。成功形态为 n_structures 大于零,且 scores 对象携带每个样本的置信度 JSON(含 avg_plddt);五个扩散样本需调用方自行按分数排序。输入失败返回 "OpenFold3 could not fold this query: ..." 并含上游原话,与 worker 不可用不同。需检查科学含义、输出边界、非法输入行为,以及路径、密钥与堆栈是否泄漏。
六、GPU 与并发调优 只用一个 worker:常驻 worker 设计上一次只服务一个请求,第二个并发请求在锁上排队而不会使峰值 VRAM 翻倍。先读清单中的 vram_budget_gb 与实测文件再考虑同卡共置;峰值随输入增大,超出清单测量包络即越界。测量顺序:冷启动、至少四次连续相同请求、混合形状序列(小、小、大、小);仅两次不同形状的热调用不足,因相同形状第二次请求可能因首次重放尝试遗留的 CUDA 图捕获失败而崩溃。随后测并行级别 1、2、4、8,内存允许才测 16;记录成功/错误、p50/p95、峰值 RAM/VRAM、利用率、排队、取消清理与恢复。仅在单次初始化与可恢复 OOM/超时被证实后才增加 worker。
七、故障排查与清理 读取拒绝信息:tu remote setup 每步按名称说明问题并附修复,退出码 3 为拒绝、1 为失败。worker 日志在 ~/.cache/tooluniverse/remote-logs/af3_torch-resident.log;堆栈不在请求输出目录,而因上游将 log_dir 绑定到构造时的 lightning 模块,落在出生目录 /tmp/af3_torch-resident-*/logs/predict_err_rank0.log。模型侧导入/可执行失败可重跑 --only environment(按锁以 --no-deps 重建);权重偏离 pin 时文件保留供检查,手动删除后重跑 --only weights;故意网络绑定的 401/403 需配置匹配的 TOOLUNIVERSE_API_TOKEN,优先回环加中继。Ctrl-C 停止服务器/中继,如安装可运行 tuplatform-service uninstall --name validation-af3_torch;worker 可能比服务器存活更久,有闲置超时与孤儿看门狗,可用 nvidia-smi 查询确认显卡释放。撤销临时密钥后仅删除 .venvs/af3_torch 与提供方自身缓存目录,勿用宽泛递归目标。仅使用实现 README 链接的官方上游文档,勿替换为第三方模型镜像。
八、适用场景与限制 适用于在具备 CUDA GPU 的 Linux 机器上私有部署 AF3-torch 远程工具、在 ToolUniverse 内以 MCP 调用 af3_torch_predict、通过 Connect 中继分享给受信任调用方。限制包括:需双解释器与本地权重转换;不面向 CPU;常驻单请求;公开共享、跨用户隔离、并发饱和、持久监管与结构精度未经测试;Platform 路径未经演练。收费、价格与平台支持情况暂未提供。