3、操作系统与环境准备:Linux(Ubuntu/CentOS)安装、驱动与内核配置、Windows/WSL2备选方案

说实话,AI模型部署这件事,八成的问题都出在环境上。我见过太多人模型写好了,结果在部署环节折腾了两三天——驱动版本不对,内核参数没调,或者干脆装错了系统。这一章,咱们就把地基打牢。

3.1 为什么选择Linux

深度学习框架对Linux的支持最完善。CUDA、TensorRT、ONNX Runtime这些核心工具,要么优先发布Linux版本,要么只有Linux才能完整跑通。Windows当然也能用,但在生产环境里,Linux的稳定性和内存管理优势太明显了。

我个人习惯把训练和推理都放在同一套Linux环境里。一次配置,后续省心。你想想看,如果在Windows上调好了模型,上服务器又得重装一遍驱动,时间成本划不来。

3.2 Ubuntu vs CentOS 怎么选?

它们俩是AI部署领域最常见的发行版。我列个表,直观对比:

维度 Ubuntu CentOS(含Rocky Linux)
官方支持 NVIDIA、PyTorch、TensorFlow 优先发布 .deb 包 通常需要额外处理 EPEL 或第三方仓库
内核版本 较新,默认支持较新的显卡驱动 较老,有时需要手动升级内核
包管理 apt,上手简单 yum/dnf,配置略复杂
生产环境占比 研发和中小团队居多 大厂、传统机房部署常见
我个人的建议 **新手和研发首选**,省事 如果你运维团队用惯了 CentOS 可以沿用

我曾经有个项目,客户强制用 CentOS 7,结果内核太老,GTX 3090 驱动怎么都装不上。最后妥协升级到了 CentOS Stream 8 才搞定。所以,除非有硬性要求,否则我倾向 Ubuntu 20.04 或 22.04 LTS。

3.3 安装 Linux 系统

这里只讲核心步骤,细枝末节网上教程一大把。

  1. 下载镜像:Ubuntu 22.04 LTS Server 或 Desktop(看需求),CentOS 选 Rocky Linux 9。
  2. 制作启动盘:用 Rufus(Windows)或 dd(Linux/Mac)写入 U 盘。
  3. BIOS 设置:关闭 Secure Boot,开启 UEFI(建议)。
  4. 分区:简单起见,/boot 给 1GB,swap 给物理内存的 1~2 倍,其余全给 /。
  5. 软件包选择:安装时勾选“SSH server”和“标准系统工具”。

注意: 如果你用的显卡是 RTX 30/40 系列,系统内核需不低于 5.11。Ubuntu 20.04 默认内核是 5.4,建议直接选 22.04 或手动升级内核。

3.4 驱动与 CUDA Toolkit

驱动安装是最大坑点。我的经验是:不要用系统自带的 Nouveau 驱动,也不要从 Ubuntu 的附加驱动管理器乱点。

标准做法如下:

  1. 禁用 Nouveau:
sudo bash -c "echo blacklist nouveau > /etc/modprobe.d/blacklist-nvidia-nouveau.conf"
sudo update-initramfs -u
sudo reboot

重启后检查:

lsmod | grep nouveau  # 无输出则成功
  1. 安装 NVIDIA 驱动:推荐用官方 runfile 或 NVIDIA 仓库。
sudo apt update
sudo apt install nvidia-driver-545  # 版本号匹配你的显卡和 CUDA 需求
sudo reboot

验证驱动:

nvidia-smi

输出应能看到显卡型号和驱动版本。

  1. 安装 CUDA Toolkit:和驱动版本要匹配。比如驱动 545 对应 CUDA 12.x。
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
sudo apt update
sudo apt install cuda

添加环境变量:

echo 'export PATH=/usr/local/cuda/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc

验证:

nvcc --version

我的避坑指南: 曾经有一次,我图省事用 Ubuntu 源里的 nvidia-driver-470,结果和 CUDA 11.8 冲突,跑模型时报段错误。后来老老实实从 NVIDIA 官网下载对应的 runfile 安装,再也没出过问题。驱动版本和 CUDA 版本一定要看 NVIDIA 官方兼容表。

3.5 内核配置与优化

AI 模型部署对内存和 I/O 有较高要求。几个内核参数需要调整:

  • 调整共享内存大小:Docker 容器默认 64MB,跑大模型经常不够。
sudo mount -o remount,size=8G /dev/shm

永久生效:在 /etc/fstab 中添加:

tmpfs /dev/shm tmpfs defaults,size=8G 0 0
  • 增大文件描述符限制:服务并发高时可能遇到 "Too many open files"。
sudo bash -c "echo 'fs.file-max = 1000000' >> /etc/sysctl.conf"
sudo sysctl -p
  • 关闭 Transparent Hugepages:数据库类应用需要,AI 推理常为了降低延迟也建议关闭(视场景)。
echo never | sudo tee /sys/kernel/mm/transparent_hugepage/enabled

为什么要调这些? 我之前部署一个 7B 的对话模型,用容器跑,结果 /dev/shm 默认太小,模型加载到一半就爆了。调完后内存使用降到 70%。这些参数虽然小,但非常关键。

3.6 Windows/WSL2 备选方案

有些开发者习惯 Windows 桌面环境,又想跑 Linux 原生工具。WSL2 是很好的过渡方案。

安装步骤:

  1. 开启 WSL:以管理员运行 PowerShell
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
reboot
  1. 安装 Ubuntu WSL:从 Microsoft Store 下载 Ubuntu 22.04 或 24.04。
  2. 设置 WSL2 为默认版本:
wsl --set-default-version 2
  1. 在 WSL 里安装 NVIDIA 驱动和 CUDA(需要 Windows 主机已安装 NVIDIA 驱动)。

WSL2 内直接执行 nvidia-smi 即可看到显卡。然后和 Linux 一样安装 CUDA Toolkit。

局限: WSL2 不支持 GPU Direct、NVIDIA vGPU 等高级功能。如果是生产环境或需要多卡推理,还是得用裸机 Linux。另外,WSL2 的网络和文件系统性能略低于原生 Linux,日常开发够用,压测时需要注意。

3.7 环境验证

装完别急着跑大模型。先跑个小脚本确认一切就绪:

# 检查 GPU 是否可用(Python)
python3 -c "import torch; print(torch.cuda.is_available()); print(torch.cuda.get_device_name(0))"

# 检查 onnxruntime
python3 -c "import onnxruntime as ort; print(ort.get_device())"

如果输出 True 和 GPU,说明环境通了。我曾经在客户现场调试,最后发现是 CUDA 路径没加到 LD_LIBRARY_PATH,导致 Python 调不到 GPU。所以这一步验证很关键。

操作系统环境准备流程框架 操作系统环境准备流程 选择环境 Ubuntu 22.04 LTS CentOS / Rocky Linux Windows + WSL2 安装 NVIDIA 驱动 + CUDA Toolkit 内核配置:shm / 文件句柄 / THP 环境验证(torch/ort) 🙋 个人提醒 驱动版本必须 与 CUDA 匹配

总结一下: 无论选 Ubuntu、CentOS 还是 WSL2,核心步骤都一样——装系统、装驱动、调内核、跑验证。把这一步做扎实了,后面模型部署就是水到渠成的事。