782 字
4 分钟
AI Infra 实战 1 环境配置

环境配置#

配置一个可以使用Nvidia显卡的编程环境,由Linux环境直接配置或通过Windows wsl配置

Windows wsl#

首先要检查 Windows 版本,wsl 需要用到 Hyper-V 但是家庭版和教育版中没有这个功能,具体更改版本可以参考这个非官方脚本

irm https://get.activated.win | iex 

在确认版本之后在 启用或关闭Windows功能 查看 Hyper-V 选项是否开启: img.png

在 Powershell 中 输入wsl 命令之后按照相关提示安装对应的Distro即可。

安装完成后输入wsl命令可直接进入对应的虚拟机, 可以查看 wsl 情况,可以看到我这里安装的是Ubuntu-22.04

PS C:\Users\20223> wsl --status
默认分发: Ubuntu-22.04
默认版本: 2

wsl连接本机代理#

在进入wsl2虚拟机之后,如果需要连接主机的代理需要使用DNS tunnel 技术,之前在wsl1中直接指定代理服务器的方法不可行, 具体操作方法如下:

  1. 在宿主机 C:/User/<your_username> 目录下创建 .wslconfig 文件, 写入以下内容:

     [wsl2]
     autoMemoryReclaim=gradual
     networkingMode=mirrored
     dnsTunneling=true
     firewall=true
     autoProxy=true
     
        
     [experimental]
     autoMemoryReclaim=gradual
     sparseVhd=true
  2. 重启 wsl 应用配置 wsl --shutdown 关闭, wsl 开机

  3. 同时,在上面的.wslconfig文件中可以添加更多设置,具体内容参考Microsoft 文档

    [wsl2]
    
    # Limits VM memory to use no more than 4 GB, this can be set as whole numbers using GB or MB
    memory=4GB 
    
    # Sets the VM to use two virtual processors
    processors=2

开启 wsl NVIDIA cuda#

继续对于 Ubuntu 22.04 来说, 可以安装以下组件开启, 参考Nvidia 官方文档

The NVIDIA Container Runtime (nvidia-container-runtime)

The NVIDIA Container Toolkit CLI (nvidia-ctk)

The NVIDIA CDI Hooks (nvidia-cdi-hook)

The NVIDIA Container Runtime Hook (nvidia-container-runtime-hook)

The NVIDIA Container CLI (nvidia-container-cli)

The NVIDIA Container Library (libnvidia-container1)

使用的命令如下

配置repo

curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
  && curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
    sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
    sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list

可选择开启实验性功能包

sed -i -e '/experimental/ s/^#//g' /etc/apt/sources.list.d/nvidia-container-toolkit.list

升级包 list

sudo apt-get update

安装NVIDIA Container Toolkit packages (nvidia-ctk)

sudo apt-get install -y nvidia-container-toolkit

配置 Docker

通过nvidia-ctk配置docker作为运行时,在这一步时会影响docker的配置文件/etc/docker/daemon.json,可能会覆盖之前配置的代理,可以在命令完成之后重新检查

sudo nvidia-ctk runtime configure --runtime=docker

重启Docker Daemon

sudo systemctl restart docker

其他 Podman 和 Containerd 的配置可以参考Nvidia 官方文档

看看效果!#

通过docker运行一个 Ubuntu 容器,然后在容器里面运行nvidia-smi命令

sudo docker run --rm --runtime=nvidia --gpus all ubuntu nvidia-smi

如果输出结果是这样,那就大功告成了

$ sudo docker run --rm --runtime=nvidia --gpus all ubuntu nvidia-smi
Sun May 18 15:02:02 2025
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 575.51.02              Driver Version: 576.02         CUDA Version: 12.9     |
|-----------------------------------------+------------------------+----------------------+
| GPU  Name                 Persistence-M | Bus-Id          Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |           Memory-Usage | GPU-Util  Compute M. |
|                                         |                        |               MIG M. |
|=========================================+========================+======================|
|   0  NVIDIA GeForce RTX 3060 ...    On  |   00000000:01:00.0  On |                  N/A |
| N/A   37C    P0             20W /  105W |    2022MiB /   6144MiB |      0%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+

+-----------------------------------------------------------------------------------------+
| Processes:                                                                              |
|  GPU   GI   CI              PID   Type   Process name                        GPU Memory |
|        ID   ID                                                               Usage      |
|=========================================================================================|
|  No running processes found                                                             |
+-----------------------------------------------------------------------------------------+

Linux 环境#

Linux 环境建议通过云部署,举例来讲对于AWS可以通过Terraform代码构建带显卡的EC2实例,参考的代码

AI Infra 实战 1 环境配置
https://fuwari.vercel.app/posts/ai-infra-1/ai-infra-1/
作者
Kevin
发布于
2025-05-18
许可协议
CC BY-NC-SA 4.0