Bohrium Dev Node Management — Bohrium 开发节点管理
v525通过bohr CLI或open.bohrium.com API管理Bohrium开发节点(容器/VM)。使用场景:用户询问创建/启动/停止/删除Bohrium开发机器,检查可用资源和价格,或管理节点生命周期。不适用:作业提交、镜像管理或项目管理。
运行时依赖
安装命令
点击复制技能文档
SKILL:Bohrium 开发节点管理概述 在 Bohrium 平台上管理开发节点(容器/VM 实例)。优先使用 bohr CLI;对于不支持的操作,回退到 API。开发节点用于数据准备、编译、调试和后处理。它们支持 Web Shell 和 SSH 连接。
身份验证 "bohrium-node": { "enabled": true, "apiKey": "YOUR_ACCESS_KEY", "env": { "ACCESS_KEY": "YOUR_ACCESS_KEY" } }
先决条件:安装 bohr CLI # macOS /bin/bash -c "$(curl -fsSL https://dp-public.oss-cn-beijing.aliyuncs.com/bohrctl/1.0.0/install_bohr_mac_curl.sh)" # Linux /bin/bash -c "$(curl -fsSL https://dp-public.oss-cn-beijing.aliyuncs.com/bohrctl/1.0.0/install_bohr_linux_curl.sh)" source ~/.bashrc && export PATH="$HOME/.bohrium:$PATH"
列出节点 bohr node list # 所有节点(表格) bohr node list --json # JSON bohr node list -s # 只显示运行中的节点 bohr node list -p # 只显示暂停的节点 bohr node list -d # 只显示等待的节点 bohr node list -w # 只显示等待的节点 bohr node list -q # 只显示 ID 和名称 JSON 字段:nodeId、nodeName、status(Started/Paused/Pending/Waiting)、cpu/memory/gpu、ip、imageName、cost
创建节点 bohr node create # 交互式:项目 -> 镜像 -> 机器 -> 名称 -> 磁盘 bohr node create 是交互式的。对于自动化,使用 API(见下文)。 推荐镜像: 场景 镜像 CPU 基本 registry.dp.tech/dptech/ubuntu:20.04-py3.10 CPU + Intel MPI registry.dp.tech/dptech/ubuntu:20.04-py3.10-intel2022 GPU 基本 registry.dp.tech/dptech/ubuntu:20.04-py3.10-cuda11.6 GPU + Intel MPI registry.dp.tech/dptech/ubuntu:20.04-py3.10-intel2022-cuda11.6
连接到节点 bohr node connect 1431145 # 无密码 SSH 通过 nodeId 替代:Web Shell 通过 Bohrium web UI(自动登录为 root),或手动 SSH 使用 API 中的凭据。
停止/删除 bohr node stop 1431145 # 停止(暂停计费,数据保留) bohr node delete 1431145 # 删除(不可逆) 重要:节点在运行时持续计费。停止或删除不使用的节点。
存储和网络 项目 详细信息 系统磁盘 创建时选择(最大 100GB);存储 OS 包 个人磁盘 /personal 每用户每项目 500GB;在节点释放后保留 共享磁盘 /share 每项目 1TB;所有成员读写 公共端口 默认打开 50001-50005 GPU 驱动程序 v525 默认;不能升级 Docker 不支持在容器节点内部(安全)
数据集挂载 在创建容器节点时挂载数据集;通过路径访问(例如 /bohr/my-dataset/v1)。 增加 2-4 秒启动延迟(无论数据集数量) 使用 df -a | grep bohr 查看挂载点
启动时间和镜像缓存 场景 启动时间 缓存 CPU 机器 ~20 秒 缓存 GPU 机器 ~40 秒 GPU 在资源压力下 1-5 分钟 无缓存(新/过期镜像)10-30 分钟(镜像拉取) 缓存规则: 公共镜像具有持久缓存 自定义镜像:缓存构建 10-30 分钟后创建;等待后使用 自定义镜像未使用 30 天:缓存过期,需要重新拉取
计费从资源分配开始,即使在镜像拉取期间
API 补充(CLI 不支持) import os, requests AK = os.environ.get("ACCESS_KEY", "") BASE = "https://open.bohrium.com/openapi/v1/node" HEADERS = {"accessKey": AK} HEADERS_JSON = {**HEADERS, "Content-Type": "application/json"}
# 程序化节点创建(非交互式) r = requests.post(f"{BASE}/add", headers=HEADERS_JSON, json={ "projectId": 154, "name": "my-node", "imageId": 2168, "machineConfig": {"type": 0, "value": 388, "label": "c2_m4_cpu"}, "diskSize": 20, }) # 返回:{"code": 0, "data": {"machineId": 1427300}}
# 可用资源 r = requests.get(f"{BASE}/resources", headers=HEADERS) # 返回:{disks, cpuList, gpuList} — value = skuId
# 资源定价 r = requests.get(f"{BASE}/resources/price", headers=HEADERS, params={"skuId": 388, "projectId": 154}) # 返回:{"data": {"price": "0.4"}} (CNY/小时)
# 节点详细信息(包括 SSH 密码) r = requests.get(f"{BASE}/{machine_id}", headers=HEADERS) # 返回:{nodeId, nodeName, status, ip, nodeUser, nodePwd, domainName, ...}
# 重启(必须先停止) requests.post(f"{BASE}/restart/{machine_id}", headers=HEADERS)
# 重命名 requests.post(f"{BASE}/modify/{machine_id}", headers=HEADERS_JSON, json={"name": "new-name"})
# 查看/绑定数据集 r = requests.get(f"{BASE}/ds", headers=HEADERS, params={"nodeId": node_id}) requests.post(f"{BASE}/ds/bind", headers=HEADERS_JSON, json={"nodeId": node_id, "datasetId": dataset_id})
状态代码 状态 含义 CLI 显示 2 运行 Started - -1 停止/释放 Paused
配额 资源 限制 节点 每用户每项目 4 个 系统磁盘 最大 100GB 个人磁盘 每用户每项目 500GB 共享磁盘 每项目 1TB
SSH 与 Web Shell 环境 方法 环境变量源 Web Shell 系统环境 + /root/.bashrc SSH /root/.bashrc 只(覆盖全局)
故障排除 问题 原因 解决方案 无资源选择