CUDA error: no kernel image is available for execution on the device

1. 报错

在cuda+cudnn+pytorch环境下运行大模型,报如下错误信息:

复制代码
Setting `pad_token_id` to `eos_token_id`:151643 for open-end generation.
收到请求 /chat error===========================>error:CUDA error: no kernel image is available for execution on the device
CUDA kernel errors might be asynchronously reported at some other API call, so the stacktrace below might be incorrect.
For debugging consider passing CUDA_LAUNCH_BLOCKING=1
Compile with `TORCH_USE_CUDA_DSA` to enable device-side assertions.

2. 如何解决

出现这种问题的原因就是环境问题:

2.1 cuda+cudnn配置是否正确

2.2 cuda版本与pytorch的版本是否匹配

这个没有什么好办法因为每个人机器不一样(安装流程就是:1.安装cuda+cudnn;2.安装pytorch;3.安装transforms;),就是利用conda创建一个新的环境,然后重新安装环境

这里提供一个测试环境是否有问题的python代码,如果这个代码能够执行,那么cuda+cudnn+pytorch环境就基本没有什么问题:

复制代码
import torch  # 导入 PyTorch 库
print("PyTorch 版本:", torch.__version__)  # 打印 PyTorch 的版本号
 
# 检查 CUDA 是否可用,并设置设备("cuda:0" 或 "cpu")
device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
print("设备:", device)  # 打印当前使用的设备
print("CUDA 可用:", torch.cuda.is_available())  # 打印 CUDA 是否可用
print("cuDNN 已启用:", torch.backends.cudnn.enabled)  # 打印 cuDNN 是否已启用
 
# 打印 PyTorch 支持的 CUDA 和 cuDNN 版本
print("支持的 CUDA 版本:", torch.version.cuda)
print("cuDNN 版本:", torch.backends.cudnn.version())
 
# 创建两个随机张量(默认在 CPU 上)
x = torch.rand(5, 3)
y = torch.rand(5, 3)
 
# 将张量移动到指定设备(CPU 或 GPU)
x = x.to(device)
y = y.to(device)
 
# 对张量进行逐元素相加
z = x + y
 
# 打印结果
print("张量 z 的值:")
print(z)  # 输出张量 z 的内容>>>
print("PyTorch 版本:", torch.__version__)  # 打印 PyTorch 的版本号

# 检查 CUDA 是否可用,并设置设备("cuda:0" 或 "cpu")
device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
print("设备:", device)  # 打印当前使用的设备

print("CUDA 可用:", torch.cuda.is_available())  # 打印 CUDA 是否可用

print("cuDNN 已启用:", torch.backends.cudnn.enabled)  # 打印 cuDNN 是否已启用


# 打印 PyTorch 支持的 CUDA 和 cuDNN 版本
print("支持的 CUDA 版本:", torch.version.cuda)

print("cuDNN 版本:", torch.backends.cudnn.version())

# 创建两个随机张量(默认在 CPU 上)
x = torch.rand(5, 3)
y = torch.rand(5, 3)

# 将张量移动到指定设备(CPU 或 GPU)
x = x.to(device)
y = y.to(device)

# 对张量进行逐元素相加
z = x + y

# 打印结果
print("张量 z 的值:")

print(z)  # 输出张量 z 的内容

3. 我操作的思路

  1. cuda安装

查看教程: 1.ubunbu 22.04安装nvidia驱动.mhtml

chmod +x NVIDIA-Linux-x86_64-570.133.07.run

./NVIDIA-Linux-x86_64-570.133.07.run

nvidia-smi

  1. cudnn

官网: https://developer.nvidia.com/cudnn-downloads

wget https://developer.download.nvidia.com/compute/cudnn/9.8.0/local_installers/cudnn-local-repo-ubuntu2404-9.8.0_1.0-1_amd64.deb

sudo dpkg -i cudnn-local-repo-ubuntu2404-9.8.0_1.0-1_amd64.deb

sudo cp /var/cudnn-local-repo-ubuntu2404-9.8.0/cudnn-*-keyring.gpg /usr/share/keyrings/

sudo apt-get update

sudo apt-get -y install cudnn

  1. pytorch安装

pip3 install --pre torch torchvision torchaudio --index-url https://download.pytorch.org/whl/nightly/cu128

  1. transforms

pip install transformers datasets tokenizers -i https://pypi.tuna.tsinghua.edu.cn/simple

相关推荐
嘟哩DuliDuli7 分钟前
AI创作工作区的项目上下文与多模态任务边界
android·人工智能·安全·ai·软件工程
const_qiu7 分钟前
第 2.5 章 2.5.4-2.5.5:JWT 双 Token 与声明式权限守卫
java·人工智能
阿Q的AI笔记13 分钟前
13.7个百分点、6天16.7万星、99.9百分位会话超45分钟:Harness Engineering完全指南
人工智能·深度学习
chien01115 分钟前
算力效率的边界:3 个有价值观点 + 4 类遗留问题(AI Infra 技术解读)
人工智能
叶子丶苏18 分钟前
VibeCoding实战三个AI小项目-VibeCoding入门笔记02
大数据·人工智能·笔记
不是万能的豆学长20 分钟前
AI时代程序员职业前景重塑逻辑
人工智能·ai
土生土长的IU23 分钟前
今日论题-AI革命对互联网的影响
大数据·人工智能
ByteCoder.35 分钟前
每次开播都要重新准备话术,怎么整理成可复用模板?
人工智能·ai·助播虾
CV@CV41 分钟前
世界模型与智能体协同推理逻辑
人工智能·算法·边缘计算·量子计算·具身智能
pusheng20251 小时前
普晟传感再获“消防产业核心配套优质品牌”:以可靠传感技术,让全球合规变简单
大数据·前端·人工智能·物联网·安全