执行代码
本节介绍在开发环境中执行代码时的常见问题。
# Q:执行代码时,出现内存或显存OOM?
OOM 即 “Out Of Memory”,指内存或显存用完了。开发环境只适合调试环境和代码,正式任务建议提交离线训练,离线训练支持多机多卡分布式训练。如果调试环境和代码仍内存不足,可参考如下两条思路解决: ● 修改任务参数减少资源占用。 ● 开发环境停止后,修改开发环境实例配置即选择更大内存的实例规格,再启动。
# Q:开发环境调用虚拟 GPU 资源失败,怎么办?
可能是 cuda 版本不兼容的原因,比如 A100 的卡不支持 cuda11.0 以下的版本,建议升级当前开发环境中的 cuda 版本至 11.0 以上,然后保存为新的镜像,再重新创建开发环境。cuda 兼容性可参考 CUDA版本选择 了解。
# Q:开发环境中AI框架、cuda版本均已安装,仍无法调用虚拟GPU资源,为什么?
建议如下两种解决方法。 方法一:去对应 AI 框架官网或 CUDA版本选择 中查询框架与 cuda 版本的兼容情况,确保符合官方推荐。 方法二:在开发环境中执行以下步骤确认。
- 确认 LD_LIBRARY_PATH 中已存在 cuda 动态库的对应路径引用,且引用路径的 cuda 版本正确,查询命令及返回信息参考如下:
[root@node1 ~]# env|grep LD LD_LIBRARY_PATH=/opt/orion/lib/orion-cuda-10.0/:/usr/local/nvidia/lib:/usr/local/nvidia/lib64 - 对于有静态库调用需求的 AI 框架,须确认静态库引用路径正确,如 torch 环境,应确认
/opt/orion/lib/[[p]]orion-cuda-11.1/orionrun.so文件存在,且对应版本正确。查询及返回信息参考如下:[root@node1 ~]# cat /etc/ld.so.preload /opt/orion/lib/orion-cuda-11.1/orionrun.so
# Q:使用开发环境训练paddle框架的任务,开发环境会自动重启?
训练时使用的共享内存超过了平台设定的值 512M ,导致开发环境自动重启了。我们会在 V3.0.2 基础上临时提供一个提高共享内存的版本来确保客户任务能够正常运行,后续 V3.1.x 版本该值将是动态设置的,即内存申请量的一半。
# Q:开发环境中新任务资源不够,怎样杀掉之前启动的任务?
先使用 ps -ef 查看之前启动的任务进程的 pid 号,然后执行 kill -9 pid号 杀掉该进程。
# Q:Notebook中调试好的代码,想要转换成.py文件进行执行,如何实现?
在网页终端中使用 jupyter nbconvert --to python xxx.ipynb 命令将 .ipynb 文件转换为同名的 .py 文件。如下图所示:
① 执行 cd /gemini/code 进入代码文件夹。
② 执行 ls 列出了代码文件夹下的所有文件。
③ 执行 jupyter nbconvert --to python djtest.ipynb 将 djtest.ipynb 文件转换为 djtest.py 文件。
④ 执行 ls 验证文件转换并保存成功。
注意:转换时会将非代码的 cell 注释掉,可能会出现 jupyter 独特的、不合 python 规范的语句,需要手动修正。
