当前位置: 首页 > article >正文

2025-01-08 - 通用人工智能技术 - RAG - 双系统 GPU直通 - 流雨声

问卷不采集个人信息,仅用于科研学习的统计,多谢各位
调查问卷: https://www.wjx.cn/vm/exIBFDM.aspx#

摘要

2025-01-08 周三 杭州 阴风阵阵

小记: 2024年的考试完结后,一下子整个人都松弛了些,但是2025年了,要给自己安排些活动了。

基础信息

1. 环境准备

操作系统:Windows 11 (保系统版本高于windows10 21H2或Windows11)

显卡:GeForce RTX 3070 8G

2. WSL2 简介

内核升级(必要): https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi

# wsl 版本更新
wsl --update

# wsl 版本信息
wsl --version

# wsl 进入系统(安装默认系统后)
wsl 
wsl cat /proc/version

# 系统重启
wsl --shutdown

# 查看可用子系统版本(需要动点脑筋)
wsl --list --online 

# 设置 wsl 版本
wsl --set-default-version 2

# 安装指定版本的子操作系统 
wsl --install -d Ubuntu-24.04

# 子系统导出
wsl --export Ubuntu-24.04 D:/linux.tar

# 子系统卸载
wsl --unregister Ubuntu-24.04

# 子系统重新导入(指定磁盘空间)
wsl --import Ubuntu-24.04 D:/Ubuntu D:/linux.tar --version 2

操作实践

1. 安装子系统

管理员打开 PowerShell ,进行如下操作:

# 安装 wsl 子系统
wsl --install -d Ubuntu-24.04

# 在WSL2中安装CUDA
官网 url: https://developer.nvidia.com/cuda-downloads?target_os=Linux&target_arch=x86_64&Distribution=WSL-Ubuntu&target_version=2.0&target_type=deb_network

2. 安装英伟达驱动
# 驱动安装如下
wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-keyring_1.1-1_all.deb

sudo dpkg -i cuda-keyring_1.1-1_all.deb

sudo apt-get update

sudo apt-get -y install cuda-toolkit-12-6

安装完成后,配置对应的环境变量,默认是修改/root/.bashrc文件,如果你使用的是其他shell,请修改对应shll的环境变量。

export CUDA_HOME=/usr/local/cuda-12.6
export LD_LIBRARY_PATH=$CUDA_HOME/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
export PATH=$CUDA_HOME/bin:$PATH

# 关联nvidia-smi
ln -s /usr/lib/wsl/lib/nvidia-smi /usr/bin/nvidia-smi

# nvidia 信息查看
nvidia-smi

3. 安装docker
# 添加 Docker 库
sudo apt install apt-transport-https ca-certificates curl software-properties-common gnupg lsb-release

# 添加 Docker 的官方 GPG 密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

# 添加 Docker 官方库
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# 更新 Ubuntu 源列表
sudo apt update

# 安装 Docker
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin

sudo  apt-cache madison docker-ce

sudo apt install docker-ce=5:27.4.1-1~ubuntu.24.04~noble docker-ce-cli=5:27.4.1-1~ubuntu.24.04~noble containerd.io

# 验证 Docker 服务是否在运行
sudo systemctl status docker
sudo systemctl enable docker
sudo systemctl start docker
sudo docker version
4. 安装 Docker Compose
# 安装最新版本的 docker compose
sudo curl -L "https://github.com/docker/compose/releases/download/v2.6.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

# 执行文件赋权
sudo chmod +x /usr/local/bin/docker-compose

# 版本查看
sudo docker-compose version
5. 配置 Docker 访问 GPU

为了让 Docker 容器中也能使用 GPU,大致步骤如下:

1)安装 nvidia-container-toolkit 组件
2)docker 配置使用 nvidia-runtime
3)启动容器时增加 --gpu 参数

  • 安装 nvidia-container-toolkit
    NVIDIA Container Toolkit 的主要作用是将 NVIDIA GPU 设备挂载到容器中。
# 设置依赖库
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

# 设置使用实验性包
sudo sed -i -e '/experimental/ s/^#//g' /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit

# 配置使用该 runtime(仅支持新版)
sudo nvidia-ctk runtime configure --runtime=docker

# 重启 docker 生效
sudo systemctl restart docker
6. 容器 GPU 测试
# 容器 GPU 输出测试
docker run --rm --gpus all nvidia/cuda:12.4.1-cudnn-devel-ubuntu22.04 nvidia-smi

# Docker 容器来充分利用 GPU 资源
docker run -it --gpus all \
    -v /mnt:/mnt \
    -v /media:/media \
    --name dev_cuda124 \
    --ulimit memlock=-1 \
    --ulimit stack=67108864 \
    --ipc=host \
    nvidia/cuda:12.4.1-cudnn-devel-ubuntu22.04

命令参数解析:

    -it:以交互模式运行容器,方便进行操作。
    --gpus all:允许容器使用主机上的所有 GPU。
    -v /mnt:/mnt 和 -v /media:/media:将主机的 /mnt 和 /media 目录挂载到容器中,以便在容器中访问主机数据。
    --name dev_cuda124:为容器指定名称 dev_cuda124,方便管理和识别。
    --ulimit memlock=-1:取消内存锁定限制,确保程序可以锁定尽可能多的内存,适用于深度学习任务。
    --ulimit stack=67108864:设置线程的最大栈大小为 64MB,避免深度学习任务中出现栈溢出问题。
    --ipc=host:共享主机的 IPC 命名空间,允许容器使用主机的共享内存。

总结

至此,双系统下的 GPU 直通方案并且支持 docker 使用 GPU 能力已经完成了配置,此后就可以使用 Docker 进行 GPU 开发的代码调试了。


http://www.kler.cn/a/505277.html

相关文章:

  • ImageSharp图形库学习
  • 9.7 visual studio 搭建yolov10的onnx的预测(c++)
  • replaceState和vue的router.replace删除query参数的区别
  • 大数据原生集群 (Hadoop3.X为核心) 本地测试环境搭建二
  • 【C++图论 拓扑排序】2392. 给定条件下构造矩阵|1960
  • 如何选择Ubuntu版本
  • LeetCode 3066.超过阈值的最少操作数 II:模拟 - 原地建堆O(1)空间 / 优先队列O(n)空间
  • WEB 攻防-通用漏-XSS 跨站脚本攻击-反射型/存储型/DOMBEEF-XSS
  • 书生大模型基础岛第四关
  • 批量识别图片型PDF指定区域内容识别保存表格+PDF批量改名:技术难题与项目实战总结
  • 【Sql递归查询】Mysql、Oracle、SQL Server、PostgreSQL 实现递归查询的区别与案例(详解)
  • Mac操作系统zip压缩加密
  • 【Vim Masterclass 笔记10】S06L23:Vim 核心操作训练之 —— 文本的搜索、查找与替换操作(第二部分)
  • 【21天学习AI底层概念】day13 (kaggle新手入门教程)Exercise: Underfitting and Overfitting
  • 【搭建JavaEE】(2)Tomcat安装配置和第一个JavaEE程序
  • 详解如何自定义 Android Dex VMP 保护壳
  • 深度学习核函数
  • HTML学习笔记(3)
  • YOLOv10-1.1部分代码阅读笔记-dataset.py
  • Web网页实现上拉加载分页
  • 蓝桥杯刷题第二天——背包问题
  • [信息安全] 1. 企业网络安全基础知识
  • Springboot和Es整合
  • 每天五分钟深度学习:神经网络中的激活函数
  • final修饰的用法
  • nVisual智能运维管理:革新机房布线管理,驱动企业数字化转型