开发机常见问题
本文为您介绍开发机的相关问题。
目录
名词说明:本文涉及以下缩写。
- BLB:负载均衡(Baidu Load Balance),开发机 SSH 与自定义服务的流量入口。
- PFS / CFS / BOS:并行文件存储 / 文件存储 / 对象存储,均为可挂载的外部存储。
- CCR:容器镜像服务(Baidu Cloud Container Registry),分个人版 / 企业版。
- C-prom:托管 Prometheus 监控服务,"停止实例通知"功能依赖其实例绑定。
一、开发机创建 & 启动
Q:开发机为什么依赖云磁盘?对云磁盘的依赖和关联有哪些?
开发机目前依靠云磁盘作为数据持久化载体。挂载云磁盘后,开发机数据会被自动保存,实例关机、异常等情况下数据不会丢失。
由于物理节点网卡特性,对云磁盘的挂载数量有限制,这决定了单个物理节点上可创建的、支持数据持久化的开发机数量(开发机本质是物理节点上的容器实例)。
因此在选购节点套餐时,建议优先选择云磁盘配额高的节点。
Q:如果节点不支持挂载云磁盘怎么办?
-
情况 1:队列中部分节点支持挂载云磁盘、部分不支持。 在全局云磁盘选项未关闭时,开发机默认只会在支持挂载云磁盘的节点上创建并调度。如需允许队列中所有节点创建无云磁盘挂载的开发机,管理员可按以下步骤设置:
- 进入 资源池 → 全局配置 → 开发机配置。
- 设置 是否强制挂载云磁盘。
- 关闭该选项后,开发机可在不支持挂载云磁盘的节点上创建并调度。
⚠️ 未挂载云磁盘的开发机默认不支持数据持久化,请谨慎设置。
-
情况 2:队列中所有节点都不支持挂载云磁盘。 该队列只允许创建无云磁盘挂载的开发机。此场景下,建议通过共享存储实现部分数据持久化:
- 创建开发机时同时挂载 PFS,并将工作目录挂载到 PFS 上;
- 存放在 PFS 上的代码和数据将被持久化。
Q:开发机创建表单的部分选项如何理解?
- 环境变量:出于服务稳定性考虑,自定义环境变量不允许与系统环境变量重名;若重名,表单会提醒并要求修改。
- 绑定 BLB:开发机 SSH 和自定义服务通过 BLB 作为流量入口。初次使用开发机需预先创建一个 BLB。BLB 只能被同一个集群绑定,每个自定义服务默认占用一个 BLB 端口和 IP 组配额;配额占满后 BLB 无法被绑定。
- 停止实例通知:开启此选项需资源池完成 C-prom 实例绑定。
Q:开发机长时间排队的常见原因有哪些?
- 队列节点资源不足(CPU / GPU / 内存);
- 队列节点云磁盘已挂满;
- BLB 配额不足(IP 组或端口在创建时间窗口内被抢占打满,常见于选择了配额临近打满的 BLB);
- 账号欠费。
可通过时间线,或点击开发机名称进入事件页面,查看具体报错详情。
Q:开发机实例启动后长时间处于"部署中"怎么办?
排查方法:
- 查看时间线报错提示;
- 单击开发机实例名称,在"事件"页签下查看报错信息。
常见原因:
- 资源账号欠费,导致云磁盘创建失败;
- 关联资源被释放(如已绑定的 PFS 实例在开发机启动前被删除或释放);
- 镜像拉取失败(网络问题、镜像仓库用户名密码错误、镜像本身问题等);
- 节点系统盘空间不足(容器数据目录容量不足,无法拉取镜像)。
二、开发机管理与使用
Q:开发机启动时可以开机执行 Python 文件吗?
可以。您可以在创建开发机实例时,或通过变更实例配置的方式,设置自定义启动脚本。
Q:找不到开发机实例怎么办?
请在导航栏切换不同地域,查看不同创建地、不同类型的实例。
Q:为什么启动开发机实例的时间越来越长?
每次启动时间逐渐变长,通常是因为您保存的镜像体积较大所致。
Q:停止或删除开发机实例后,数据和代码会丢失吗?
是否保留取决于您的操作以及实例是否挂载了云盘:
- 停止实例:包含云盘系统盘的实例,停止时数据已持久化到云盘,数据不会丢失;
- 删除实例:云盘将被释放,数据会被清除。
Q:为什么正在运行的开发机实例会自动停止?
可能有两类原因:
- 实例配置了闲时关机、低利用率关机、自动关机等策略,用于节省资源、提升集群利用率;
- 若开发机对队列其他成员可见,也可能被其他成员操作停止。
Q:使用开发机时,软件包、代码和数据推荐如何管理?
总体原则:运行环境装在开发机内,代码和数据存在外部存储中。具体建议:
- 数据集、模型权重等数据,推荐存储在外部存储(PFS、CFS、BOS 等)并挂载使用,不建议拷贝到开发机内部;
- 软件包(如 conda)推荐安装到开发机内;除非希望在多个开发机或训练环境间共享,才装到外部存储;
- 不需要打包镜像的场景,推荐代码也存外部存储;若需中途打包镜像,可将代码当前版本拷贝到开发机内。
三、镜像管理
Q:制作镜像时,哪些数据会被打包进镜像?
- 所有从外部挂载的存储卷(PFS、BOS、CFS 等)都不会被打包进镜像;
- 如需将外部存储里的数据打包进镜像,请事先(或在打包前)规划好存储路径。
Q:镜像拉取失败的常见原因有哪些?
- 镜像仓库用户名 / 密码输错;
- 镜像地址错误、镜像错误、镜像不存在等;
- 网络异常。
Q:为什么制作开发机镜像时会失败或超时?
- 镜像大小超限:单层镜像保存的数据量不应超过 40 GiB,否则构建失败。镜像可写层过大(如放入大容量数据集)是最常见原因。建议仅保留必要的代码与环境,数据集存到 PFS 等共享存储;可通过清理云磁盘、将非必要数据转移到共享存储来降低可写层大小。
- 地域不匹配:开发机实例与容器镜像服务 CCR 实例必须位于同一地域,否则制作镜像时找不到对应的镜像仓库。
- 系统盘空间不足:剩余可用空间小于待写入镜像层的数据大小时,会报
insufficient capacity of ephemeral storage错误。 - 网络问题:个人版 CCR 通过公网推送镜像,较大镜像可能因网络波动或传输超时而失败;企业版 CCR 若与开发机在同一 VPC,可走内网推送,更快更稳定。
四、挂载配置
本节示例统一使用挂载路径
/mnt/workspace/pfs/data(工作目录下)与/mnt/pfs/data(工作目录外)做对比说明。
Q:开发机实例如何挂载和使用自己的文件系统?
您可以在新建实例时挂载 PFS / CFS / BOS,然后通过开发机 Terminal 进入挂载目录查看并使用文件。
目前开发机仅支持在创建实例时挂载同地域下的文件系统。
Q:成功挂载了 PFS,为什么在 JupyterLab 左侧文件浏览器里看不到?
这是因为文件浏览器默认显示实例的工作目录(路径一般为 /mnt/workspace)。若挂载路径(如 /mnt/pfs/data)不在工作目录下,就不会显示在左侧列表中。可通过下列任一方式解决:
- 通过代码访问:文件其实已挂载成功,在代码中使用完整挂载路径即可,例如
open('/mnt/pfs/data/my_file.csv')。 - 更改挂载点:配置挂载时把挂载路径设到工作目录的子目录下,例如
/mnt/workspace/pfs/data,挂载后即可在文件浏览器中看到。 - 通过终端访问:在 Terminal 中
cd /mnt/pfs/data,再用ls等命令查看和操作文件。
Q:两个开发机实例之间如何互传、分享数据?
让两个实例挂载相同的文件系统路径(PFS / CFS / BOS / 数据集),将数据存放在该路径下即可实现共享。
五、网络问题
Q:开发机实例如何访问公网,或被公网访问?
- 访问公网:参见《容器实例开启访问公网》。
- 被公网访问:开发机可通过绑定已挂载公网 IP 的 BLB 实现被公网访问,参见《公网访问开发机实例》。
六、第三方库安装
Q:如何在开发机中安装并使用第三方库?
在开发机 Terminal 中执行以下命令:
1# Python 3
2pip install --user xxx
3
4# Python 2
5source activate python2
6pip install --user xxx
将 xxx 替换为待安装的库名。安装成功后,单击 kernel → restart kernel 重启服务。
Q:为什么安装的第三方包没有生效?
import 时找不到包,先尝试重启服务;若仍报错,确认当前使用的 Python 环境是否与安装时一致。
Q:pip install 报依赖冲突或版本错误怎么办?
通常由环境不兼容导致,按以下顺序排查:
- 更换镜像(首选):停止当前实例,新建实例时选择一个不同的官方镜像。
-
指定版本安装:查阅库的官方文档,选一个适配当前环境(Python / CUDA 版本)的版本:
Bash1pip install package_name==x.y.z -
更换下载源:使用国内镜像源,例如清华源:
Bash1pip install -i https://pypi.tuna.tsinghua.edu.cn/simple package_name
Q:Terminal 里装好了库,为什么 Jupyter Notebook 里 import 找不到?
可能是 Terminal 和 Jupyter 使用了不同的 Python 环境。用 which python 确认当前环境,或直接在 Notebook 中安装所需库。
Q:开发机里没有 unzip 或 7z 命令,如何解压文件?
通过 apt-get 安装:
1# 安装 unzip
2apt-get update && apt-get install -y unzip
3unzip your_file.zip
4
5# 安装 p7zip(用于 7z)
6apt-get update && apt-get install -y p7zip-full
77z x your_file.7z
Q:用 pip 安装时一直卡住或超时怎么办?
通常是网络问题:
- 检查实例是否配置了公网访问。若创建时选了"无公网访问",或配置了 VPC 但未设置 NAT 网关,将无法连接外部下载源。
-
更换下载源,例如切换到清华源:
Bash1pip install -i https://pypi.tuna.tsinghua.edu.cn/simple <包名> - 若网络确实不通,可在本地电脑下载好
.whl安装包,上传到开发机离线安装。
Q:可以在开发机里用 Docker 部署应用吗?
关于 Docker in Docker:开发机本身运行在容器中,目前暂不支持 Docker in Docker,该功能已在规划中,请持续关注。
七、实例运行
Q:关闭浏览器或电脑关机后,开发机中运行的训练任务还会继续吗?
会继续。开发机实例运行在云端,关闭本地设备不影响其运行状态。
⚠️ 注意:部分实例可能配置了闲置自动关机策略。若 CPU / GPU 等资源在一段时间内持续低于阈值,可能被判定为闲置并自动停止,从而中断任务。
Q:如何 Debug 代码?
- Debug Notebook 代码:Notebook 天然适合调试,每个 Cell 单独执行即可即时看到输出,也可用
print()输出关键变量值。 - Debug Python 代码:在 WebIDE 中使用 VSCode 标准的断点与调试功能。
Q:用 VSCode 客户端通过 SSH 连接开发机,频繁提示 OOM 并断开怎么办?
开发机负载很低却频繁断开、连上几分钟就报 OOM,通常是客户端 VSCode(remote server)侧的 OOM,而非开发机后端问题。
- 不要直接打开超大目录:避免在 VSCode Explorer 中直接展开或打开 PFS 挂载的数据集目录(如
/media下文件量巨大的目录),大量文件会撑爆 remote server 内存。 - 调大 remote server 预留内存:修改用户维度 VSCode remote server 的预留内存。
- 回滚 VSCode 版本:若问题在升级 VSCode 后才出现,可尝试回滚到此前可用的版本。
排查提示:报错弹窗若来自 VSCode 客户端,且开发机后端 code-server 服务正常(无重启等异常),即可判定为客户端环境问题。
Q:开发机实例规格不满足要求怎么办?
按以下步骤更新实例规格:
- 在开发机实例列表中,找到 操作 → 更多。
- 单击 变更配置。
- 在变更配置面板中更新实例规格。
说明:变更规格时若实例正在运行,会重建开发机;资源不足时会排队等待空闲资源。如有数据和环境需保存,请先通过制作镜像保存环境。
Q:开发机关机(停止)后,pip 安装的包和代码会丢失吗?
若使用云盘作为系统盘则不会丢失,实例磁盘数据(含 /mnt/workspace 和 /root 下的环境)都会保留,下次启动时环境和文件都还在。只有删除实例才会彻底清空所有数据。
八、相关文档
评价此篇文章
