用途:在用户已决定把任务派发到其 SSH/SLURM 主机后,负责远程计算的编排层,包括分区、环境激活、作业脚本、文件传输与失败恢复;具体跑什么、为什么跑由任务本身及其技能决定。
主要能力:通过 host.compute.create(provider) 绑定主机,用 c.submit_job() 提交作业(每次提交弹出用户审批弹窗并消耗其配额),c.call_command() 执行探测命令,c.download() 拉取主机文件,c.attach_job(job_id).result() 非阻塞读取已回收结果,c.close() 清理作业工作目录。作业提交后由守护进程后台轮询,完成后发出 compute_done 通知,用 wait_for_notification 等待,再用 save_artifacts(payload['featured_files']) 发布产物。
使用方式:host.compute.* 只能在 repl 工具(控制面内核)中调用,不在 python 工具中;两个内核共享工作目录但不共享内存,因此先在 python 单元准备输入文件,再在 repl 单元执行 create→submit_job 并结束单元,然后调用 wait_for_notification 等待通知,最后回到 python 工具读取 hpc/<jobId>/ 下的文件。repl 工具仅含标准库(python -I -S),pandas/numpy 工作应留在 python 工具中,通过文件传递数据。
限制:submit_job 的 command 是作业脚本,调度指令按 sbatch/qsub 风格书写,不支持 --array/--chdir/--wrap;作业在 bash -eo pipefail 下运行,cwd 为 scratch 下每作业独立工作目录,输入以 ./<dst_filename> 平铺暂存,dst_filename 不能含斜杠;只有该工作目录下的文件会被自动回收,约 100 MB 以上文件默认留在集群并出现在 left_on_remote。每次非 Always-Allowed 的提交/命令调用显示一个审批弹窗,最多 10 个。若返回 retry_after_user_action: true,说明主机不可达,应调用 ask_about_compute 并等待,不要自行循环。用户给出并发预算时可用 host.compute.set_concurrency_limit(k) 设为会话属性,host.compute.status() 返回 k 与提供方上限。跨会话状态仅存于 compute_details() 工具,可用 mode:'read' 读取、mode:'append' 追加。资料未提供具体收费、价格或平台支持范围。