You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

Jupyter Notebook中torch.cuda.device_count()返回0但is_available()返回True的问题

问题原因及解决方案

核心原因

你的Jupyter Notebook环境中CUDA_VISIBLE_DEVICES被设置为-1,这个值会强制屏蔽所有GPU设备,导致torch.cuda.device_count()返回0;而torch.cuda.is_available()返回True是因为系统本身的CUDA驱动与PyTorch版本匹配,该函数仅验证CUDA环境可用性,不检查GPU是否可见。

终端环境正常是因为终端的CUDA_VISIBLE_DEVICES未被设置为-1,PyTorch可以正常识别GPU。

解决步骤

  1. 临时修复(单次有效)
    重启Jupyter Notebook内核后,先执行以下代码设置环境变量,再导入PyTorch:

    import os
    os.environ["CUDA_VISIBLE_DEVICES"] = "0"
    import torch
    # 验证
    print(torch.cuda.device_count())  # 应返回1
    
  2. 从终端启动Jupyter(彻底解决环境变量继承问题)
    激活你的conda环境lol,然后直接从终端启动Jupyter:

    conda activate lol
    jupyter notebook
    

    这种方式下,Notebook会完全继承终端的环境变量,包括正确的GPU可见性配置。

  3. 检查Jupyter配置文件
    查找Jupyter的配置文件jupyter_notebook_config.py(通常在~/.jupyter/目录下),检查是否存在强制设置环境变量的配置:

    c.NotebookApp.env = {'CUDA_VISIBLE_DEVICES': '-1'}
    

    如果有,将其删除或修改为{'CUDA_VISIBLE_DEVICES': '0'},保存后重启Jupyter。

  4. 检查conda环境激活脚本
    查看~/anaconda3/envs/lol/etc/conda/activate.d/目录下的脚本文件,确认是否有设置CUDA_VISIBLE_DEVICES=-1的代码,如有则删除该配置。

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

火山引擎 最新活动