用途
该技能用于在 ToolUniverse 中把 Chai-1 配置为远程工具:搭建两个隔离的 Python 环境、按固定 sha256 校验证并下载模型权重、启动本地 Streamable HTTP MCP 端点、执行冒烟验证,并可选地通过 ToolUniverse Connect 中继共享给经授权调用方。
前置条件
- 在 ToolUniverse 仓库根目录运行,Linux,Python 3.12.3。
- 需要 CUDA GPU;该提供方在请求之间常驻模型,CPU 不是目标平台。
- 提供方数据、权重、缓存与凭据须放在 Git 之外。
- 绑定回环地址;非回环绑定需要 TOOLUNIVERSE_API_TOKEN,且不得写入参数或结果。
在下载大型依赖前先运行标准库契约检查:
python scripts/remote_validation/setup_skill_preflight.py --implementation chai1
导出提供方资源后加 --check-provider-env;服务器启动后加 --live 验证 MCP 工具集;共享前加 --check-connect-prereqs(只报告密钥是否已设置,不打印值)。
创建两个环境
MCP 服务器运行在 ToolUniverse 环境,模型运行在独立的固定锁文件环境,二者不能互相导入。
python3 -m venv .venvs/chai1
. .venvs/chai1/bin/activate
python -m pip install --upgrade pip
python -m pip install -e .
python -m pip install fastmcp
模型侧解释器路径由 TOOLUNIVERSE_CHAI1_PYTHON 指定,需先自行创建空解释器(如 python3 -m venv ~/chai1-venv),再执行 tu remote setup --only environment,按 src/tooluniverse/remote/chai1/environment/requirements.lock 以 --no-deps 安装,避免版本被静默解析成其他版本。
配置与权重
设置 CHAI_DOWNLOADS_DIR 指向 Git 之外的可写目录,并设置 TOOLUNIVERSE_CHAI1_PYTHON,然后运行:
export CHAI_DOWNLOADS_DIR=...
export TOOLUNIVERSE_CHAI1_PYTHON=~/chai1-venv/bin/python
tu remote setup chai1
该命令读取 provider.toml 并依次执行 preflight、environment、kit、weights、smoke 五步,可用 --only 单步执行。smoke 步骤会驻留模型、发送一次请求、断言输出与 manifest 一致,并把实测峰值 VRAM 记录到 ~/.cache/tooluniverse/measured/chai1.json。权重共八个文件按固定 sha256 校验,请求时不下载任何内容;Chai-1 不需要 MSA 服务器。
启动与本地验证
python -m tooluniverse.remote.chai1.chai1_tool
端点地址为 http://127.0.0.1:8033/mcp。可用 fastmcp Client 列出工具,确认发现结果包含 chai1_fold,出现空、重复或 schema 漂移即停止。重启后第一次请求承担模型构建开销,之后不再重复,因此只测首调用会测错对象。
示例调用
操作 chai1_fold:
{"fasta":">protein|name=A\nMKTAYIAKQRQISFVKSHFSRQLEERLGLIEVQ\n","seed":0,"num_diffn_samples":1}
预期成功结构包含 n_structures、每个结构的 aggregate_score/ptm/iptm、timing 与 weights_held_by;仅当 return_structures 为 true 时返回 mmCIF 文本(多结构回复可达数 MB,可能被传输层截断成非法 JSON)。
共享与 Connect
tuplatform-connect 中继尚未发布到 PyPI,需安装指定 SHA-256 的公开 wheel:
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 doctor --forward http://127.0.0.1:8033/mcp --json
tu serve --share --forward http://127.0.0.1:8033/mcp --name validation-chai1 --workers 1
每台机器登录一次 tu remote login(无浏览器机器加 --no-browser),之后每次私有共享只需 tu remote share chai1;可用 tu remote check chai1 做非共享就绪检查,tu remote run chai1 启动纯本地前台服务器。密钥只通过受保护环境或 tu remote login --manual-key 提供,绝不写入 shell 参数。
GPU 与并发调优
使用单个 worker:驻留 worker 一次服务一个请求,第二个在途请求在锁上排队而非翻倍 VRAM。在共用显卡前先读 manifest 的 vram_budget_gb 与实测文件。测试流程:冷启动、至少四次连续相同请求、混合形状序列(小、小、大、小),再做并行级别 1、2、4、8,内存允许才做 16;记录成功/错误、p50/p95、峰值 RAM/VRAM、利用率、排队、取消清理与恢复。仅在证明单飞初始化与可恢复 OOM/超时行为后才增加 worker。
限制与状态
验证(2026-09-29):chai_lab 0.6.1 在优化套件 fast 模式下运行于 NVIDIA GB10(aarch64,cc 12.1);单 worker 对 89 残基链做三次折叠分别耗时 67.6 s、26.6 s、25.7 s,实测保留峰值 9.8 GiB;alloc 杠杆因在本进程无法取胜而声明关闭,套件记为 PARTIAL 激活。公开共享、跨用户隔离、并发、恢复与生物学准确性均未测试,应保持私有部署。该实现晚于 2026-08-16 的平台认证矩阵,未通过 Platform 实际调用过,证据均为单卡、本地、经回环端点获得。
故障排查
拒绝信息会指明问题并给出修复;退出码 3 为拒绝,1 为失败。worker 日志在 ~/.cache/tooluniverse/remote-logs/chai1-resident.log。模型侧导入失败时重跑 --only environment;权重偏离固定值时对应文件会保留供检查,手动删除后重跑 --only weights。非回环绑定的 401/403 需配置匹配的 bearer 认证令牌。Ctrl-C 停止服务器/中继;worker 可能比服务器存活更久,用 nvidia-smi --query-compute-apps=pid,used_memory --format=csv 确认显卡是否空闲。清理时仅删除 .venvs/chai1 与该提供方自己的缓存目录,不要使用大范围递归目标。