用途:本技能用于在 ToolUniverse 仓库中完成 OpenDDE 远程工具的部署流程,包括环境构建、模型权重下载、冒烟测试、本地启动、连通性验证、通过 ToolUniverse Connect 中继共享,以及常见故障排查。
主要能力:
- OpenDDE 为 AlphaFold3 类全原子共折叠模型,输入为 AlphaFold Server 风格的作业,实体类型包括 proteinChain、dnaSequence、rnaSequence、ligand 和 ion,各带 count。
- 一次请求即一个复合物按一个种子折叠,最多 5 个扩散样本(num_diffusion_samples),每个样本单独评分;经过 num_recycles 个 Pairformer 循环(默认 10)和每个样本 num_diffusion_steps 步(默认 200),按 ranking_score 对样本排序。
- 采用常驻 worker,首个请求承担模型构建开销,后续请求复用。
- tu remote setup 读取 provider.toml,依次执行 preflight、environment、kit、weights、smoke 五步;每步失败会报出名称并附修复方法。
- smoke 步骤会持有模型、发送一次请求,校验回复中至少有一个 *sample<n>.cif 且 structures 字段非空,并把实测峰值显存写入 ~/.cache/tooluniverse/measured/opendde.json。
使用方式(按资料):
- 前提:在 ToolUniverse 仓库根目录运行,Linux,Python 3.12.3;需要 CUDA GPU,torch 为 2.7.1+cu128,需要 570 或更新驱动;绑定回环地址;数据、权重、缓存和凭据放在 Git 之外。
- 先运行标准库契约检查:python scripts/remote_validation/setup_skill_preflight.py --implementation opendde;导出提供方资源后可加 --check-provider-env,服务器启动后可加 --live,共享前可加 --check-connect-prereqs。
- 创建两个环境:MCP 服务器环境用 python3 -m venv .venvs/opendde,激活后升级 pip,安装 -e . 和 fastmcp;模型环境需先用 CPython 3.11 的 STDLIB venv 模块在 TOOLUNIVERSE_OPENDDE_PYTHON 指向的路径创建空解释器(示例 ~/opendde-venv),再由 tu remote setup --only environment 按 requirements.lock 以 --no-deps 填充。
- 导出 TOOLUNIVERSE_OPENDDE_PYTHON 后运行 tu remote setup opendde;调试时可加 --only preflight|environment|kit|weights|smoke 单步执行。
- 权重来自 Hugging Face 的 aurekresearch/OpenDDE 上游仓库,通过上游下载器获取;manifest 声明每个文件的尺寸和 sha256,启动时校验,不符则拒绝启动。OPENDDE_ROOT_DIR 指定权重根目录(默认 ~/.opendde)。不要导出任何 OPENDDE_OPT_* 变量。
- 本地启动:python -m tooluniverse.remote.opendde.opendde_tool,Streamable HTTP 端点为 http://127.0.0.1:8058/mcp;用 fastmcp Client 列出工具,确认包含 opendde_fold。
- 共享:先 tu remote login(headless 可加 --no-browser,或用 --env-file 导入 0600 文件),再 tu remote share opendde;可加 --name 和 --workers 覆盖名称与 worker 数。tu remote check 用于非共享就绪检查,tu remote run 用于仅本地前台服务,tu remote logout 移除本地副本,--revoke 撤销平台连接。
- 接入 ToolUniverse Connect:安装带 SHA-256 固定的 tuplatform-connect 0.3.0 wheel,然后执行 tu doctor --forward http://127.0.0.1:8058/mcp --json 和 tu serve --share --forward ... --name validation-opendde --workers 1。密钥仅通过受保护环境或登录流程提供,不要写入 shell 参数。
- 示例调用:opendde_fold,参数 {"chains":[{"molecule_type":"protein","sequence":"LSDEDFKAVFGMTRSAFANLPLWKQQNLKKEKGLF"}]},通过 fastmcp Client 调用;预期成功形状为 n_structures 为 5,scores 含各样本的 plddt、ptm、iptm、ranking_score,以及 use_msa: false 和 peak_reserved_gib。资料注明该示例尚未通过实时端点运行。
限制(按资料):
- 不进行 MSA 搜索,也不使用模板,每次请求都按单序列折叠,回复中标注 use_msa: false;单序列版本的准确性明显低于使用 MSA 的版本。
- 配体仅支持 SMILES 或 CCD_<id>,上游的 FILE_<path> 形式会被拒绝。
- 优化套件固定关闭([kit] mode = "off"),其唯一预构建对象为 x86-64。
- 仅支持 bf16 精度;fp32 在 200 tokens 时实测显存为 1.6 倍、时间约两倍,不提供。
- 每个复合物最多 400 个聚合物 token,最多 20 条链,count 1 到 16;num_diffusion_samples 1–5,num_diffusion_steps 1–400,num_recycles 1–20。样本数影响时间不影响显存,token 数驱动峰值显存。400 是实测最大规模,并非已证明的上限;512 和 800 tokens 未运行。
- 常驻 worker 一次只处理一个请求,第二个在途请求在锁上排队;建议单 worker。
- 验证状态:OpenDDE 1.1.1 在 NVIDIA GB10(aarch64,cc 12.1,驱动 580.173.02)上以优化套件关闭、torch 2.7.1+cu128 运行;五步 setup 已跑通,100/200/400 残基阶梯在两个独立持有的 worker 上峰值分别为 3.69/6.85/22.55 GiB。未验证项包括四次连续相同请求、混合序列、驻留收益、上限拒绝、敌对环境启动测试及示例经实时 MCP 端点运行;公开发布、跨用户隔离、并发、恢复和结构准确性均未测试,该部署应保持私有。
适用场景:需要在自有 CUDA GPU 上以私有远程工具方式提供 OpenDDE 结构预测,并通过 ToolUniverse 或 ToolUniverse Connect 调用的部署与验证场景。