SuperAPI AI 工具集

setup-esm_if1-remote-tool

智能体与模型

查看项目

更新于 10-20 04:54

技能介绍

用途

该技能用于在 ToolUniverse 仓库中搭建、启动、验证并排障 ESM-IF1 反向折叠(inverse folding)远程工具。ESM-IF1 的输入是蛋白质结构,输出是设计出的氨基酸序列,因此它属于结构到序列的方向,与同系列中从序列预测结构的折叠工具方向相反。该技能的目标是把这一能力作为常驻的远程工具运行,并可选通过 ToolUniverse Connect 中继共享。

主要能力

  • 提供 MCP 工具 esm_if1_design,接收 PDB 结构、链标识、采样数量、温度与随机种子,返回 sequences、native_seq、recovery、n_tokens、designed_length、route(singlechain 或 multichain)、device、kit_levers、weights_held_by 等字段。
  • 采用双环境结构:MCP 服务器运行在 ToolUniverse 的环境中;模型运行在独立环境里,从固定的 requirements.lock 以 --no-deps 安装,避免版本被静默解析成其他值,二者不能互相导入。
  • 由 tu remote setup 驱动五个步骤:preflight、environment、kit、weights、smoke。每步失败时会按名称报错并给出修复方法。smoke 步骤会持有模型、发送一次请求,并断言输出符合清单(outputs 为 *.fasta,output_keys 为 sequences 与 native_seq),测量结果写入 ~/.cache/tooluniverse/measured/esm_if1.json。
  • 权重获取:仅一个 1.7 GB 文件 esm_if1_gvp4_t16_142M_UR50.pt,由套件自带下载器(python -m esm_if1_opt.weights DIR)获取,并校验大小与 sha256。请求时不进行任何下载;worker 在加载前后各做一次检查,防止 torch.hub 目录不一致或权重被替换。

使用方式

  1. 前置条件:Linux、Python 3.12.3,从 ToolUniverse 仓库根目录运行;不需要 GPU,文档中的验证也未使用 GPU。模型环境必须使用 Python 3.11;首次需要 C/C++ 编译器,因为 biotite 0.39.0 会从固定版本的源码包构建。
  2. 先运行标准库契约检查:python scripts/remote_validation/setup_skill_preflight.py --implementation esm_if1;导出资源后加 --check-provider-env;服务启动后加 --live;分享前加 --check-connect-prereqs(仅报告密钥是否设置,不打印值)。
  3. 创建服务器环境:python3 -m venv .venvs/esm_if1,激活后升级 pip,安装 -e . 与 fastmcp。
  4. 创建模型环境:用 uv venv --seed --python 3.11 创建解释器,并通过 TOOLUNIVERSE_ESM_IF1_PYTHON 指向它;uv venv 必须带 --seed。随后执行 tu remote setup esm_if1,或逐项执行 --only preflight|environment|kit|weights|smoke。
  5. 本地启动:python -m tooluniverse.remote.esm_if1.esm_if1_tool,端点默认 http://127.0.0.1:8050/mcp。用 fastmcp 的 Client 列出工具,确认发现结果包含 esm_if1_design 且无重复或结构漂移,再调用示例。
  6. 共享:先安装固定 SHA-256 的 tuplatform-connect 公共 wheel,再执行 tu remote login(默认使用浏览器设备码授权,无头机器加 --no-browser),之后用 tu remote share esm_if1 共享;例如 tu remote share esm_if1 --name my-esm-if1-remote --workers 1。也可用 tu remote check 做就绪检查,或 tu remote run 仅本地前台运行。密钥只应通过受保护的环境变量文件或 tu remote login --manual-key 提供,不能写进命令行参数。
  7. 非回环地址绑定需要 TOOLUNIVERSE_API_TOKEN;提供者数据、权重、缓存和凭据都应放在 Git 之外。

性能与资源

文档给出的测量结果:CPU 上 64 至 395 个残基的峰值常驻内存约为 2.45 GiB,800×2 时为 3.65 GiB,声明上限组合(1600 token × 4 行)下为 11.22 GiB、耗时 757.7 s;建议按 11.22 GiB 调度,除非部署限制了输入长度。线程方面建议设为 1:torch 默认的 20 线程反而最慢(64 残基×2 样本时单线程 8.66 s,20 线程 13.91 s)。吞吐主要靠 batched_sampling 将(骨架,样本)行合并进一次前向:单行每序列 11.14 s,8 行 1.94 s,约 5.7 倍;因此应提高 num_samples,而不是并发发起 N 个请求。常驻 worker 一次只处理一个请求,第二个进行中的请求会在其锁上排队,建议只用一个 worker。若某条骨架的行未被全部采样,sequences 会故意为空列表;这表示请求失败,而不是答案为空。

适用场景

适用于需要在本地或私有环境中把 ESM-IF1 反向折叠能力接入 ToolUniverse、并以 MCP 工具形式调用或共享的场景;适合在 CPU 主机上部署,也适合需要可复现性(固定依赖、固定权重校验、记录本机测量)的科研工作流。

限制

文档明确说明:公开发布、跨用户隔离、并发、恢复以及设计质量均未测试,应保持该部署为私有;该实现未经平台矩阵验证,未通过 Platform 路由调用过,现有证据仅为单机回环端点的本地验证;tuplatform-connect 尚未发布到 PyPI,需安装指定 wheel。