You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Paramiko建立SSH连接执行TensorFlow脚本无法识别GPU如何解决

核心原因

Paramiko调用exec_command执行命令时,默认启动的是非登录、非交互式shell,不会加载用户目录下的环境变量配置文件(如.bashrc、.bash_profile、.profile)。你的服务器CUDA路径配置(PATH、LD_LIBRARY_PATH)通常是写在上述用户级配置文件中的,所以Paramiko执行的进程无法找到CUDA动态库,自然识别不到GPU。
而PuTTY建立的是交互登录shell,会完整加载所有用户环境变量,因此可以正常调用GPU。

可行解决方案
  • 方案1:执行命令时主动触发登录shell或加载环境配置
    修改你的命令拼接逻辑,执行时先加载用户配置,示例代码如下:
    # 写法1:先加载.bashrc再执行脚本
    cmd_to_execute = f"source ~/.bashrc && ./{shFileName}.sh"
    # 写法2:显式用登录式bash执行命令
    cmd_to_execute = f"bash -l -c './{shFileName}.sh'"
    
  • 方案2:在待执行的.sh脚本头部添加环境变量配置
    直接在你要执行的.sh文件开头写入CUDA路径或者环境加载逻辑,避免依赖shell类型:
    # 方式A:加载用户环境配置
    source ~/.bashrc
    # 方式B:直接写死CUDA路径(替换为你服务器实际的CUDA安装路径即可)
    export PATH=/usr/local/cuda-11.0/bin:$PATH
    export LD_LIBRARY_PATH=/usr/local/cuda-11.0/lib64:$LD_LIBRARY_PATH
    
  • 方案3:将CUDA配置写入系统级环境文件
    如果你有服务器root权限,可以把CUDA相关的环境变量配置写入/etc/profile、/etc/bash.bashrc这类全局配置文件,所有类型的shell都能读取到配置,无需额外适配。

内容的提问来源于stack exchange,提问作者Bobbick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 21:15:04