深度神经网络:网络服务器实际操作疑难问题及解决方法

lxf2023-05-05 00:46:42

深度神经网络:网络服务器实际操作疑难问题及解决方法

创作者:光火

电子邮箱:victor_b_zhang@163.com

深度神经网络每日任务广泛必须独立显卡适用,因而相关领域学者常常会在服务端做好工作。这时候,除开编码隐匿的 Bugserver 操作中的一系列问题也会产生巨大困惑。充分考虑各种问题非常复杂且甚为普遍,文中对此进行归纳并提供相关解决方法。文章内容经常性升级,提议跟踪。

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-smips 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
本站是一个以CSS、JavaScript、Vue、HTML为中心的前端开发技术网址。我们的使命是为众多前端工程师者提供全方位、全方位、好用的前端工程师专业知识和技术服务。 在网站上,大家可以学到最新前端开发技术,掌握前端工程师最新发布的趋势和良好实践。大家提供大量实例教程和实例,让大家可以快速上手前端工程师的关键技术和程序。 本站还提供了一系列好用的工具软件,帮助你更高效地开展前端工程师工作中。公司提供的一种手段和软件都要经过精心策划和改进,能够帮助你节约时间精力,提高研发效率。 此外,本站还拥有一个有活力的小区,你可以在社区里与其它前端工程师者沟通交流技术性、交流经验、处理问题。我们坚信,街道的能量能够帮助你能够更好地进步与成长。 在网站上,大家可以寻找你需要的一切前端工程师网络资源,使您成为一名更加出色的网页开发者。欢迎你添加我们的大家庭,一起探索前端工程师的无限潜能!