用途
该技能用于在 ToolUniverse 框架下,将 OpenFold3(OpenBind-0 参数)作为远程工具进行搭建、启动、验证和故障排查;也可选择通过 ToolUniverse Connect 中继共享。
主要能力
- 提供五步设置流程:preflight、environment、kit、weights、smoke,可用
tu remote setup openfold3_ob0一次执行,或通过--only分步执行。 - 创建两个隔离环境:MCP 服务器运行在 ToolUniverse 环境中,模型运行在独立环境中(由
TOOLUNIVERSE_OPENFOLD3_OB0_PYTHON指定路径)。 - 自动下载并校验权重(OpenBind-0 的
of3-ob-2025-06-30-174k.pt,注册名openbind-2025-06-30-174k)。 - 提供本地启动与验证方式,MCP Streamable HTTP 端点默认
http://127.0.0.1:8052/mcp。 - 支持通过
tu remote share将服务私有共享至 ToolUniverse Connect。 - 包含性能调优建议:单 worker、VRAM 预算检查、冷启动与连续请求测试、并发级别测试等。
- 包含故障排查指引:拒绝信息解读、日志位置、常见错误处理等。
使用方式
前置条件
- 从 ToolUniverse 仓库根目录运行,Linux 系统,Python 3.12.3。
- 需要 CUDA GPU;该 provider 模型常驻内存,非 CPU 目标。
- 将 provider 数据、权重、缓存和凭证放在 Git 之外。
- 绑定回环地址;非回环绑定需要
TOOLUNIVERSE_API_TOKEN。
设置流程
- 运行标准库契约检查:
python scripts/remote_validation/setup_skill_preflight.py --implementation openfold3_ob0 - 创建两个虚拟环境:
- ToolUniverse 环境(MCP 服务器):
python3 -m venv .venvs/openfold3_ob0 . .venvs/openfold3_ob0/bin/activate python -m pip install --upgrade pip python -m pip install -e . python -m pip install fastmcp - 模型环境(使用标准库 venv,避免 uv venv):
"$(uv python find --managed-python 3.11)" -m venv ~/openfold3_ob0-venv export TOOLUNIVERSE_OPENFOLD3_OB0_PYTHON=~/openfold3_ob0-venv/bin/python
- ToolUniverse 环境(MCP 服务器):
- 执行设置(五步):
可逐步执行,例如tu remote setup openfold3_ob0--only smoke验证模型可运行并记录 VRAM 峰值到~/.cache/tooluniverse/measured/openfold3_ob0.json。
本地启动与验证
python -m tooluniverse.remote.openfold3_ob0.openfold3_ob0_tool
在另一 shell 中验证工具发现:
import asyncio
from fastmcp import Client
async def main():
async with Client("http://127.0.0.1:8052/mcp") as client:
print([tool.name for tool in await client.list_tools()])
asyncio.run(main())
确认发现包含 openfold3_ob0_fold。
调用示例:
import asyncio
import json
from fastmcp import Client
async def main():
arguments = json.loads(r'{"chains":[{"molecule_type":"protein","sequence":"LSDEDFKAVFGMTRSAFANLPLWKQQNLKKEKGLF"}]}')
async with Client("http://127.0.0.1:8052/mcp") as client:
result = await client.call_tool("openfold3_ob0_fold", arguments)
print(result)
asyncio.run(main())
成功时返回 n_structures 大于零及 scores 对象,包含每个样本的 *_confidences_aggregated.json(avg_plddt、ptm、iptm、sample_ranking_score、has_clash)。五个扩散样本需调用方自行排序。per-residue 的 *_confidences.json 仅在小于 64 KiB 时返回,否则在 scores_omitted 中给出路径。
共享至 ToolUniverse Connect
安装中继 SDK:
python -m pip install fastmcp pyyaml "tuplatform-connect @ https://connect.aiscientist.tools/downloads/tuplatform_connect-0.3.0-py3-none-any.whl#sha256=3fad5eee5ecf7887a693d93ccd1aa112dc0955617a885d1fc3daded0030f9ae0"
登录(每台机器一次):
tu remote login
# 或从受保护的 0600 文件导入:
tu remote login --env-file /path/to/tooluniverse-service.env
共享:
tu remote share openfold3_ob0
可选参数:--name、--workers。
调优与排查
- 使用单个 worker;常驻 worker 设计上一次处理一个请求。
- 参考
vram_budget_gb和测量文件;VRAM 峰值随输入规模呈 N² 增长,超出预算的查询会被拒绝。 - 测试应包含冷启动、至少四次连续相同请求、混合形状序列、并发级别 1/2/4/8(谨慎 16)。
- 日志:
~/.cache/tooluniverse/remote-logs/openfold3_ob0-resident.log;traceback 在/tmp/openfold3_ob0-resident-*/logs/predict_err_rank0.log。 - 退出码 3 表示拒绝,1 表示失败;拒绝信息会指明问题及修复方法。
适用场景
- 需要在本地 GPU 上私有部署 OpenFold3(OpenBind-0)结构预测服务。
- 需要通过 ToolUniverse Connect 将服务私有共享给授权用户。
- 需要验证模型运行、记录 VRAM 峰值、进行性能调优。
限制
- 需要 Linux + CUDA GPU,CPU 非目标。
- 必须使用 OpenBind-0 参数;与 openfold3 provider(0.4.1 / preview-2)不兼容,两者需独立环境和端口。
- 权重来自公开 S3 桶,无许可证接受;上游未对参数本身声明许可证,代码为 Apache-2.0。
- 公共发布、跨用户隔离、并发、恢复和生物学准确性未测试;建议保持私有部署。
- 该实现未通过 Platform 矩阵测试;证据仅为单卡本地回环端点。
- 中继 SDK 未发布至 PyPI,需从指定 URL 安装。
- 不提供模型精度保证;用户需自行检查科学意义、输出边界和无效输入行为。