深度神经网络:网络服务器实际操作疑难问题及解决方法
创作者:光火
电子邮箱:victor_b_zhang@163.com
创作者:光火
电子邮箱:victor_b_zhang@163.com
深度神经网络每日任务广泛必须独立显卡适用,因而相关领域学者常常会在服务端做好工作。这时候,除开编码隐匿的 Bug,server 操作中的一系列问题也会产生巨大困惑。充分考虑各种问题非常复杂且甚为普遍,文中对此进行归纳并提供相关解决方法。文章内容经常性升级,提议跟踪。
Driver/library version mismatch
- 问题描述:cmd键入
nvidia-smi
后,发生如下所示出错信息内容,而且全部应用 GPU 程序均没法正常运转Failed to initialize NVML: Driver/library version mismatch
- 解决方法:一般是因为系统驱动在线升级,造成驱动版本与核心版本不一致所引起的
-
最先在终端键入如下所示指令
cat /var/log/dpkg.log | grep nvidia
如下图,系统驱动早已自 525.89.02 升级为 525.105.17
接着根据以下指令,查询显卡驱动程序的内核版本
cat /proc/driver/nvidia/version
假若显卡驱动程序仍然是旧版,则考虑到重启服务器。在终端键入
sudo reboot
服务器重启之后重新加载核心,这时再键入
nvidia-smi
就可以正常的查询独立显卡应用情况并打开程序了。假若难题仍未解决,可以参考一下本文
-
ImportError: ... version GLIBCXX_3.4.29 not found
-
问题描述:程序执行不成功,并出现如下所示出错
ImportError: /lib/x86_64-linux-gnu/libstdc .so.6: version GLIBCXX_3.4.29 not found
-
解决方法:要报错表明默认设置途径中的
libstdc .so.6
缺乏GLIBCXX_3.4.29
,详尽解决方案可以参考一下本文,这儿做简略汇总-
最先在终端键入如下所示指令,查询现阶段拥有的所有
GLIBCXX
版本号strings /usr/lib/x86_64-linux-gnu/libstdc .so.6 | grep GLIBCXX
假若的确缺乏相对应的版本信息(如本例里的
GLIBCXX_3.4.29
),则继续查询现阶段系统软件的许多同类产品文档,然后找到一个比较高的版本号sudo find / -name "libstdc .so.6*"
挑选该高版本途径,运用以前的指令查询
GLIBCXX
strings 查到的高版本 GLIBCXX 途径 | grep GLIBCXX 比如: strings /home/datamining/miniconda3/envs/target/lib/libstdc .so.6.0.30 | grep GLIBCXX
倘若其中包括所需要的版本号,则拷贝到特定文件目录并重新建立连接
# 拷贝 # cp 检索过的途径 cp /home/datamining/miniconda3/envs/target/lib/libstdc .so.6.0.30 /lib/x86_64-linux-gnu/ # 删掉以前链接 sudo rm /lib/x86_64-linux-gnu/libstdc .so.6 # 建立一个新的连接 sudo ln -s /usr/lib/x86_64-linux-gnu/libstdc .so.6.0.30 /lib/x86_64-linux-gnu/libstdc .so.6
-
(errno: 98 - Address already in use).
-
问题描述: 有多卡顿应用
DDP
训练算法,但程序执行之后出现如下所示出错。(有关DDP
的简单介绍可以参考一下本文)The server socket has failed to bind to ?UNKNOWN? (errno: 98 - Address already in use).
-
解决方法:
DDP
所选择的默认端口号是 29500,假若该端口号现阶段被程序流程占有,往往会产生矛盾,造成以上出错。这里带来二种解决方法- 方法一:根据
nvidia-smi
或ps aux|grep python
查看相对应的过程,并通过kill -9 PID
强制性释放资源 - 方法二:在
DDP
的启动命令中手动式加上--master_port=xxxxx
选择项,绕开已经被占用 29500 端口号# before nohup torchrun --nproc_per_node=4 train.py > nohup.out & # after nohup torchrun --nproc_per_node=4 --master_port=25641 train.py > nohup.out &
- 方法一:根据
Server VS Code 软件必须不断组装
- 问题描述:多的人应用 VS Code 控制同一台服务器,发觉拓展(Extensions)经常要反复组装
- 解决方法:全部作业者统一将 VS Code 升级至正式版【左上方点一下 Help(协助) 时选择 Check for Updates(检查更新) 】
nohup 后程序流程随 VS Code 对话框关掉而停止
- 问题描述:应用
nohup
指令让程序流程后台程序,但 VS Code 对话框关闭后,程序流程也会跟着全自动停止 - 解决方法:应用
nohup
指令初始化操作后,在终端键入 exit 之后再关闭程序
参考文献
- 处理 Failed to initialize NVML: Driver/library version mismatch
- 处理 ImportError: /usr/lib/x86_64-linux-gnu/libstdc .so.6: version `GLIBCXX_3.4.22‘ not found
- 处理 DDP :The server socket has failed to bind to [::]:29500 (errno: 98 - Address already in use