开发机常见问题
本文为您介绍开发机的相关问题。
开发机创建&启动
Q:开发机为什么依赖云磁盘,开发机对云磁盘的依赖和关联依赖有哪些?
开发机目前依靠云磁盘作为数据持久化载体,挂载云磁盘后开发机数据将被自动保存,实例关机、异常等情况数据不会丢失。
目前物理节点因网卡特性,对云磁盘的挂载数量有限制,决定了在物理节点上可创建的支持数据持久化开发机数量(开发机本质为物理节点上的容器实例)。
所以在选购节点套餐时,建议优先云磁盘配额高的节点
Q:如果节点不支持挂载云磁盘怎么办?
情况1:
如果队列中部分节点支持挂载云磁盘、部分不支持挂载云磁盘,在全局配置云磁盘选项未关闭的情况下,开发机默认只会在支持挂载云磁盘的节点上创建并调度。此情况下,开发机支持管理员设置,允许队列中所有的节点创建无云磁盘挂载的开发机。具体方式:在"资源池-全局配置中-开发机配置"中设置是否强制挂载云磁盘。关闭此选项后,开发机可在不支持挂载云磁盘的节点上创建并调度,注意:未挂载云磁盘的开发机默认不支持数据持久化,请谨慎设置

情况2:如果队列中所有的节点都不支持挂载云磁盘,该队列只允许创建无云磁盘挂载的开发机
在云磁盘选项关闭或者队列节点都不支持挂载云磁盘的情况下,建议通过共享存储实现部分数据持久化
- 创建开发机时同时挂载PFS
- 将开发机的工作目录挂载到PFS上
在PFS上的代码和数据将被持久化
Q:开发机创建表单部分选项说明
- 环境变量:考虑到产品服务的稳定性,自定义环境变量设置不允许与系统环境变量重名,如果重名表单会提醒,并要求修改
- 绑定BLB:开发机SSH和自定义服务通过BLB作为流量入口,初次使用开发机时,需要预先创建一个BLB;BLB只能被同一个集群绑定,每个自定义服务都会默认占用一个BLB端口和IP组配额,如果配额被占满,BLB无法被绑定
- 停止实例通知:若要开启此选项,需要资源池完成C-prom实例绑定
Q:开发机长时间排队的常见原因?
- 队列节点资源不足(CPU/GPU/内存)
- 队列节点云磁盘已挂满
- BLB配额不足(BLB的IP组或端口在开发机创建的时间窗口内被抢占打满,这种情况常见于选择了一个配额临近打满的BLB)
- 账号欠费
可通过时间线或者点击开发机名称,进入开发机事件页面查看具体的报错详情
Q:开发机实例启动长时间处于部署中
排查方法:
- 查看时间线报错提示
- 单击开发机实例名称,在事件页签下查看报错信息
常见原因:
- 资源账号欠费,导致云磁盘创建失败
- 关联资源被释放,比如开发机已绑定了某个PFS实例,但该实例在开发机启动前已被删除或释放
- 镜像拉取失败(常见为网络问题、镜像仓库用户名密码错误、镜像问题等)
- 节点系统盘空间不足(容器数据目录容量不足,无法拉取镜像)
开发机管理与使用
Q:开发机启动时可以开机执行Python文件吗?
您可以在创建开发机实例时,或通过变更实例配置的方式设置自定义启动脚本。
Q:找不到开发机实例?
您可以在导航栏切换不同地域,查看创建地不同类型的实例

Q:启动开发机实例时间越来越长
每次启动时间逐渐变长可能是由于您的保存镜像体积较大所致。
Q:停止或删除开发机实例后,我的数据和代码会丢失吗?
数据是否保留取决于您的操作以及实例是否已挂载云盘类型。
- 停止实例:包含云盘系统盘的实例,停止实例时数据已持久化到云盘上,数据不会丢失
- 删除实例:云盘将被释放,数据会被清除
Q:为什么我正在运行的开发机实例会自动停止?
实例配置了闲时关机、低利用率关机、自动关机等策略。这些策略旨在节省资源,帮助提升集群资源利用率。
若开发机对队列其它成员可见,也可能被其它成员操作停止。
Q:使用开发机时,软件包、代码和数据推荐如何管理?
总体上,推荐运行环境安装在开发机内,代码和数据存储在外部存储中,具体参考如下方式:
- 数据集、模型权重等数据,通常不建议拷贝到开发机内部,推荐存储在外部存储(pfs、cfs、bos等),挂载到开发机内访问使用
- 软件包(conda等)推荐安装到开发机内,不推荐安装到外部存储。除非希望通过外部存储,在多个开发机或训练环境中共享软件包环境
- 在不需要打包镜像的场景中,推荐代码也存储在外部存储中。如果需要中途打包镜像,可以将代码当前版本拷贝到开发机内
镜像管理
Q:制作镜像时,都有哪些数据会被打包到镜像里?
- 将开发机制作成镜像时,所有从外部挂载的存储卷,都不会被打包进镜像,包括 pfs、bos、cfs 等
- 如果需要将外部存储里的数据打包进镜像,请事先或在打包镜像前规划存储路径
Q:镜像拉取失败的常见原因?
- 镜像仓库用户名密码输错
- 镜像地址错误、镜像错误、镜像不存在等
- 网络异常
****
Q:为什么制作开发机镜像时会失败或超时?
-
镜像大小超限:开发机制作镜像时,单层镜像保存的数据量不应超过40 GiB,否则构建会失败。建议您尝试缩小镜像大小。
- 镜像单次制作的内容过大,将对制作、镜像推送、拉取、存储等过程带来管理问题,业内一般将镜像可写层限制在40G以内(可通俗理解为在上一次镜像的基础上新增内容不能超过40G)。该大小能够满足绝大多数已知场景的镜像制作。镜像制作失败最常见的原因为镜像可写层过大超过40G,镜像内放了太多的非必要数据(比如大容量数据集),建议仅保留必要的代码、环境等数据,数据集可以存储到PFS等共享存储上。碰到这种原因导致的镜像制作失败,可以通过清理云磁盘数据解决,可将云磁盘上非镜像必须的数据转移到共享存储上,降低镜像可写层大小。
- 地域不匹配:开发机实例与容器镜像服务CCR实例必须位于同一地域,否则在制作镜像时将无法找到对应的镜像仓库。
- 系统盘空间不足:制作镜像时,如果系统盘的剩余可用空间小于需要写入镜像层的数据大小,会报“insufficient capacity of ephemeral storage”错误。
- 网络问题:使用个人版CCR时,镜像是通过公网推送的,较大的镜像可能会因为网络波动或传输时间过长而导致超时失败。企业版CCR实例若与开发机实例绑定在同一个VPC内,则可以通过内网推送,速度更快更稳定。
挂载配置
Q:开发机实例如何挂载和使用自己的文件系统?
您可以在新建实例时挂载PFS/CFS/BOS,可以通过开发机Terminal进入挂载目录查看并使用文件。
目前开发机仅支持在创建实例时,挂载同地域下的文件系统
Q:成功挂载了PFS等文件系统,为什么在JupyterLab界面的左侧文件浏览器中看不到?
这是因为开发机的文件浏览器默认显示的是实例的工作目录,其路径通常是/mnt/workspace。而您挂载文件系统时指定的挂载路径(例如 /mnt/pfs/data)并不在默认工作目录下,因此不会直接显示在左侧文件列表中。
解决方法:
- 通过代码访问:您的文件实际上已经成功挂载。在代码中,您需要使用完整的挂载路径来访问它们,例如
open('/mnt/data/my_file.csv')。 - 更改挂载点:为了在UI中方便地看到文件,您可以在配置挂载时,将挂载路径设置为工作目录下的一个子目录,例如
/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#Python 2版本。
4source activate python2
5pip install --user xxx
其中xxx需要替换为待安装的第三方库名称。安装成功后,需要单击kernelrestart kernel,重启服务。
Q:为什么安装的第三方包没有生效?
通过pip命令安装第三方包后,使用import命令导入时,如果出现无法查找到该包的问题,则先尝试重启服务。如果依然报错,则确认当前使用的环境。
Q:我在开发机里用 pip install 安装一个包失败了,报依赖冲突或版本错误,该怎么办?
通常由环境不兼容导致。请按以下顺序排查解决:
- 首选方案:更换镜像。 停止当前实例,新建一个开发机实例,选择一个不同的官方镜像。
- 指定版本安装。 查阅该包的官方文档,找到一个支持您当前开发机环境(Python/CUDA版本)的包版本,然后执行
pip install package_name==x.y.z。 - 更换下载源。 尝试使用清华源等国内镜像:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple package_name。
Q:我在**开发机**的**Terminal**里明明装好了库,为什么在**Jupyter Notebook**里**import 还是找不到?**
可能是因为Terminal和Jupyter使用了两个不同的Python环境。您可以通过which python命令确认当前是哪个Python环境,或者在Notebook中安装所需的库
Q:想在开发机里使用Docker来部署我的应用,可以吗?
目前暂不支持Docker in Docker,该功能已在规划中,请持续关注
Q:开发机实例里没有unzip或7z命令,怎么解压文件?
您可以通过apt-get命令来安装。
- 安装
unzip:在Terminal中运行apt-get update && apt-get install -y unzip,然后使用unzip your_file.zip。 - 安装
p7zip(用于7z):在Terminal中运行apt-get update && apt-get install -y p7zip-full,然后使用7z x your_file.7z。
Q:开发机实例关机(停止)后,我用pip安装的包和写的代码会丢失吗?
如果使用了云盘作为系统盘则不会丢失。 实例的磁盘数据(包括/mnt/workspace和/root下的环境)都会被保留。下次启动实例时,所有环境和文件都还在。只有删除实例才会彻底清空所有数据。
Q:使用pip安装时一直卡住或超时,是怎么回事?
可能是网络问题。
- 检查实例是否配置了公网访问。如果你创建实例时选择了“无公网访问”或配置了VPC但没有设置NAT网关,将无法连接到外部下载源。
- 尝试更换下载源,比如从默认的阿里源切换到清华源:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple <包名>。 - 如果网络实在不通,可以在您自己的电脑上下载好
.whl格式的安装包,上传到开发机中进行离线安装。
实例运行
Q:关闭浏览器或电脑关机后,开发机 中运行的训练任务还会继续吗?
会继续。开发机 实例运行在云端,关闭本地设备不影响其运行状态。但请注意,部分实例可能配置了 闲置自动关机策略。如果实例的 CPU、GPU 等资源在一段时间内持续低于某个阈值,可能会被系统判定为闲置并自动停止,从而中断您的任务。
Q:为什么开发机无法启动Docker?
因为开发机本身运行在容器中,目前暂不支持Docker in Docker,该功能已在规划中,请持续关注
Q:如何Debug代码?
- Debug Notebook代码:Notebook天然就是适合Debug的形态,每个Cell单独执行就可即时看到运行输出,可以直接用
print()输出关键变量值。 - Debug Python代码:在WebIDE中使用VSCode标准的设置断点及运行调试功能。
