惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Y
Y Combinator Blog
Security Archives - TechRepublic
Security Archives - TechRepublic
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Apple Machine Learning Research
Apple Machine Learning Research
Blog — PlanetScale
Blog — PlanetScale
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
G
Google Developers Blog
F
Full Disclosure
大猫的无限游戏
大猫的无限游戏
酷 壳 – CoolShell
酷 壳 – CoolShell
T
Threat Research - Cisco Blogs
A
Arctic Wolf
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
The Cloudflare Blog
博客园 - 【当耐特】
AWS News Blog
AWS News Blog
U
Unit 42
V
Vulnerabilities – Threatpost
P
Privacy International News Feed
T
Tor Project blog
Microsoft Security Blog
Microsoft Security Blog
宝玉的分享
宝玉的分享
Google DeepMind News
Google DeepMind News
爱范儿
爱范儿
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Recorded Future
Recorded Future
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
C
CXSECURITY Database RSS Feed - CXSecurity.com
T
Threatpost
Latest news
Latest news
GbyAI
GbyAI
S
SegmentFault 最新的问题
MongoDB | Blog
MongoDB | Blog
N
Netflix TechBlog - Medium
Hacker News: Ask HN
Hacker News: Ask HN
美团技术团队
N
News | PayPal Newsroom
J
Java Code Geeks
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Microsoft Azure Blog
Microsoft Azure Blog
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
The Hacker News
The Hacker News
The GitHub Blog
The GitHub Blog
V
V2EX
N
News and Events Feed by Topic
T
Troy Hunt's Blog
Security Latest
Security Latest
博客园 - 叶小钗
P
Palo Alto Networks Blog

CodeSky 代码之空

如何让 AI 成为 24 小时牛马:我的个人项目实践 - CodeSky 代码之空 AI 浪潮下真实诉求的想象空间—同志仍需努力 - CodeSky 代码之空 AI 浪潮下的新时代开发模式—AI Coding 的快速成长 - CodeSky 代码之空 体验豆包手机的 24 小时 - CodeSky 代码之空 Agent Platform Self-Host 开源项目对比 - Coze Studio - CodeSky 代码之空 Chrome 端到端网络排查战记 - CodeSky 代码之空 瞎逼逼:2025 年还没有升级研发工具的你落伍了吗 - CodeSky 代码之空 Project. 博客重建计划 - CodeSky 代码之空 群晖 Gitea + Gitea Actions 安装与部署服务教程 - CodeSky 代码之空 Python 音频去广告+字幕提取 - CodeSky 代码之空 群晖通过 Active Backup for Business 实现服务器快照 - CodeSky 代码之空 HTTP Auth From BasicAuth to WebAuthn - CodeSky 代码之空 Redis 分布式锁的实现 - CodeSky 代码之空 限流与常见实现 - CodeSky 代码之空 Redis 大 key、热 key 判别和解决方案 - CodeSky 代码之空 缓存:高并发读的救世主 - CodeSky 代码之空 如何解决服务中的事务问题 - CodeSky 代码之空 聊聊 MySQL 索引与索引设计 - CodeSky 代码之空 Redis 中使用键空间监听 key 过期消息 - CodeSky 代码之空 AI:Make 死宅 Great Again - CodeSky 代码之空
Windows WSL 启用 NVIDIA CUDA 配置教程 - CodeSky 代码之空
敖天羽 · 2025-01-27 · via CodeSky 代码之空

拖稿时间太长,只能努力还原……QvQ,因为如你所见的近期主要功夫都在重写博客系统和简历页面上了,当然也包括在 NAS 上部署的 gitea + action 的配置之类的,因此后面可以更新的文章还是挺多的

之前我也写过两篇 AI 相关的文章,不过因为不涉及到开发,只涉及到使用,所以我还是用 Windows 宿主机开发的,这次由于涉及到了开发,所以就得折腾一下 WSL GPU 加速的方案。

安装

首先,先保证宿主机已经安装了驱动,也就是https://www.nvidia.com/Download/index.aspx中获得下载地址。

然后需要在 WSL 中安装 cuda toolkit,下载地址:https://developer.nvidia.com/cuda-downloads?target_os=Linux&target_arch=x86_64&Distribution=WSL-Ubuntu&target_version=2.0&target_type=deb_network,并按照官方提供的命令依次安装,比如通过 Network 安装的命令为:

1wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-keyring_1.1-1_all.deb
2sudo dpkg -i cuda-keyring_1.1-1_all.deb
3sudo apt-get update
4sudo apt-get -y install cuda-toolkit-12-8
5

安装完成后,你使用两个命令:

1nvidia-smi
2nvcc --version
3

如果上面两个命令都没问题且能输出你的显卡,那在安装商我们就初步获得了成功。

如果提示command not found,建议确认一下 PATH 配置,加上 /usr/bin/cuda/bin

使用与测试

下一步,我们要测试在 Python 中是否能够正常使用 GPU,这是一段测试代码:

1import torch
2
3def check_gpu():
4    # 检查 CUDA 是否可用
5    cuda_available = torch.cuda.is_available()
6    print(f"CUDA Available: {cuda_available}")
7
8    if cuda_available:
9        # 获取 GPU 设备数量
10        device_count = torch.cuda.device_count()
11        print(f"Number of CUDA Devices: {device_count}")
12
13        # 遍历所有 GPU 设备
14        for i in range(device_count):
15            print(f"\nDevice {i}:")
16            # 获取设备名称
17            print(f"  Name: {torch.cuda.get_device_name(i)}")
18            # 获取显存信息
19            print(f"  Total Memory: {torch.cuda.get_device_properties(i).total_memory / 1024**3:.2f} GB")
20            # 当前显存使用情况
21            print(f"  Memory Allocated: {torch.cuda.memory_allocated(i) / 1024**3:.2f} GB")
22            print(f"  Memory Reserved: {torch.cuda.memory_reserved(i) / 1024**3:.2f} GB")
23
24        # 简单计算测试(将张量移动到 GPU 并执行操作)
25        try:
26            device = torch.device("cuda:0")
27            x = torch.randn(1000, 1000).to(device)
28            y = torch.randn(1000, 1000).to(device)
29            z = torch.matmul(x, y)
30            print("\nGPU 计算测试成功!")
31            print(f"结果张量形状: {z.shape}")
32        except Exception as e:
33            print(f"\nGPU 计算测试失败: {str(e)}")
34    else:
35        print("未检测到可用的 CUDA 设备,请检查以下可能原因:")
36        print("1. 确保已在 Windows 中安装 NVIDIA 驱动程序")
37        print("2. 确保 WSL 2 已启用 GPU 支持")
38        print("3. 确保已安装 CUDA Toolkit")
39
40if __name__ == "__main__":
41    check_gpu()
42

因此你需要先安装 torch,期间如果报 llvmlite 安装的错误,可能需要先安装:

1sudo apt-get update
2sudo apt-get install llvm
3

然后再安装最新的 llvm 版本(我测试的时候出现了安装的 torch 和 llvmlite 版本不兼容的情况,可能需要视情况而定进行调整):

1poetry add "llvmlite>=0.39.0"
2

运行后如果输出显卡,证明识别成功了:

CUDA Available: True
Number of CUDA Devices: 1

Device 0:
  Name: NVIDIA GeForce RTX 4070 Ti SUPER
  Total Memory: 15.99 GB
  Memory Allocated: 0.00 GB
  Memory Reserved: 0.00 GB

GPU 计算测试成功!
结果张量形状: torch.Size([1000, 1000])

当然,在实际项目中,我也遇到过死活就是用的是 CPU 的情况(这点可以通过 Windows 的资源管理器或者 nvidia-smi 查看正在使用的进程得出)。比如我之前使用 whisper 时死活不生效,就需要手动指明 device:

1device = "cuda:0" if torch.cuda.is_available() else "cpu"
2print(f"使用设备: {device}")
3# 加载模型到指定设备
4model = whisper.load_model(model_name, device=device)
5

总结

在实际操作中,安装过程可能会遇到各种依赖版本不兼容、配置错误等问题,像llvmlite版本与torch不匹配、命令找不到需要检查 PATH 配置等情况,都需要我们根据具体报错信息进行排查和解决。

总之,不能让显卡白买了。

参考资料