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 系统
这里只讲核心步骤,细枝末节网上教程一大把。
- 下载镜像:Ubuntu 22.04 LTS Server 或 Desktop(看需求),CentOS 选 Rocky Linux 9。
- 制作启动盘:用 Rufus(Windows)或 dd(Linux/Mac)写入 U 盘。
- BIOS 设置:关闭 Secure Boot,开启 UEFI(建议)。
- 分区:简单起见,
/boot给 1GB,swap给物理内存的 1~2 倍,其余全给/。 - 软件包选择:安装时勾选“SSH server”和“标准系统工具”。
注意: 如果你用的显卡是 RTX 30/40 系列,系统内核需不低于 5.11。Ubuntu 20.04 默认内核是 5.4,建议直接选 22.04 或手动升级内核。
3.4 驱动与 CUDA Toolkit
驱动安装是最大坑点。我的经验是:不要用系统自带的 Nouveau 驱动,也不要从 Ubuntu 的附加驱动管理器乱点。
标准做法如下:
- 禁用 Nouveau:
sudo bash -c "echo blacklist nouveau > /etc/modprobe.d/blacklist-nvidia-nouveau.conf"
sudo update-initramfs -u
sudo reboot
重启后检查:
lsmod | grep nouveau # 无输出则成功
- 安装 NVIDIA 驱动:推荐用官方 runfile 或 NVIDIA 仓库。
sudo apt update
sudo apt install nvidia-driver-545 # 版本号匹配你的显卡和 CUDA 需求
sudo reboot
验证驱动:
nvidia-smi
输出应能看到显卡型号和驱动版本。
- 安装 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 是很好的过渡方案。
安装步骤:
- 开启 WSL:以管理员运行 PowerShell
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
reboot
- 安装 Ubuntu WSL:从 Microsoft Store 下载 Ubuntu 22.04 或 24.04。
- 设置 WSL2 为默认版本:
wsl --set-default-version 2
- 在 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、CentOS 还是 WSL2,核心步骤都一样——装系统、装驱动、调内核、跑验证。把这一步做扎实了,后面模型部署就是水到渠成的事。