首页 / 资讯中心 / 文章详情

PVE+Ubuntu搭建私有AI平台全流程指南

PVE+Ubuntu搭建私有AI平台全流程指南 ★ FEATURED ARTICLE
1. 项目背景与核心目标去年在二手市场淘了台Dell PowerEdge R730服务器双路E5-2680v4128G内存的配置原本打算做NAS用。但看着现在AI技术这么火就琢磨着能不能把这台老伙计改造成私有AI平台。上个月完成了基础环境搭建见系列文章一这次主要记录从PVE虚拟化到Ubuntu模板制作的完整过程。为什么要用PVEUbuntu这个组合首先Proxmox VEPVE作为开源虚拟化平台对二手服务器硬件兼容性好资源调度灵活其次Ubuntu LTS版本在AI开发领域的生态支持最完善。把它们做成模板后后面部署AI训练环境就能像搭积木一样快速复制。2. 硬件准备与PVE优化2.1 服务器硬件检查清单确认iDRAC固件已升级到最新关键老版本有PCIe设备识别问题内存插法每CPU配4条DDR4-2400组成四通道实测比双通道带宽提升37%硬盘配置2块480G SSD做PVE系统盘ZFS mirror6块4T HDD用LVM做成存储池显卡加装二手Tesla P40注意要关闭主板的PCIe ASPM节能避坑提示二手服务器务必用memtest86跑满24小时内存测试我们遇到过ECC内存纠错失效导致模型训练出错的玄学问题。2.2 PVE 8.4定制化安装从官网下载ISO制作启动盘时建议用Ventoy工具方便后期维护。安装时重点注意# 安装时手动分区方案 - /boot 1G ext4 - 剩余空间给zfs (raidz1) # 网络配置建议 - 管理口用独立网卡比如板载的Broadcom - 万兆网卡直通给虚拟机后面AI训练数据传输用安装完成后立即执行apt update apt -y full-upgrade pveam update sed -i s/stretch-security/bullseye-security/g /etc/apt/sources.list.d/pve-install-repo.list3. Ubuntu 24.04 LTS模板制作3.1 基础系统安装在PVE创建虚拟机时关键参数机型q35必须选这个才能PCIe直通BIOSOVMFUEFICPUhost类型开启嵌套虚拟化磁盘virtio-scsi单盘40G实际用LVM thin provisioning安装Ubuntu时选择最小化安装完成后# 删除cloud-init模板机不需要 apt purge cloud-init -y rm -rf /etc/cloud/ # 配置APT国内源 sudo sed -i s/archive.ubuntu.com/mirrors.aliyun.com/g /etc/apt/sources.list # 安装基础工具 apt install -y openssh-server vim lsof net-tools git curl build-essential3.2 系统深度优化修改/etc/sysctl.conf增加# 提升AI训练时的网络性能 net.core.rmem_max4194304 net.core.wmem_max4194304 net.ipv4.tcp_rmem4096 87380 4194304 net.ipv4.tcp_wmem4096 65536 4194304 # 大页内存配置HugePage vm.nr_hugepages2048 vm.hugetlb_shm_group1000创建/etc/udev/rules.d/10-custom.rules# 固定网卡命名避免克隆后eth0变eth1 SUBSYSTEMnet, ACTIONadd, DRIVERS?*, ATTR{address}MAC地址, NAMEeth03.3 制作PVE模板在PVE控制台执行# 清理临时文件 apt autoremove -y apt clean dd if/dev/zero of/zero bs1M || true rm -f /zero # 关机后转为模板 qm template VMID4. 从模板部署AI开发环境4.1 快速克隆实例# 命令行克隆比Web界面快3倍 qm clone 模板VMID 新VMID --name ubuntu-ai-dev --full4.2 环境初始化脚本创建~/init_ai_env.sh#!/bin/bash # 自动扩展根分区模板默认20G不够用 growpart /dev/vda 3 resize2fs /dev/vda3 # 安装NVIDIA驱动需提前上传.run文件 chmod x NVIDIA-Linux-x86_64-535.129.03.run ./NVIDIA-Linux-x86_64-535.129.03.run --silent --dkms --no-opengl-files # 配置Docker curl -fsSL https://get.docker.com | sh sudo usermod -aG docker $USER mkdir -p /etc/docker cat /etc/docker/daemon.json EOF { default-runtime: nvidia, runtimes: { nvidia: { path: /usr/bin/nvidia-container-runtime, runtimeArgs: [] } } } EOF4.3 典型AI环境部署示例# 拉取PyTorch镜像带CUDA 12.1 docker pull pytorch/pytorch:2.1.0-cuda12.1-cudnn8-runtime # 启动开发容器 docker run -it --gpus all -v ~/code:/workspace --shm-size16G pytorch/pytorch:2.1.0-cuda12.1-cudnn8-runtime5. 性能调优与问题排查5.1 PCIe直通配置编辑/etc/modprobe.d/vfio.confoptions vfio-pci ids10de:1b38,10de:10f0 disable_vga1然后更新initramfsupdate-initramfs -u -k all5.2 常见问题解决方案问题现象排查命令解决方法GPU利用率低nvidia-smi dmon -s u检查PCIe带宽是否降级lspci -vv内存不足报错free -h增加SWAP或调整训练batch size训练速度波动大atop -d检查是否有kswapd进程频繁活动5.3 监控方案建议安装PrometheusGrafana监控# Node Exporter docker run -d --namenode-exporter -p 9100:9100 --restartalways -v /proc:/host/proc -v /sys:/host/sys prom/node-exporter # NVIDIA GPU Exporter docker run -d --namenvidia-exporter -p 9835:9835 --restartalways -v /run/prometheus:/run/prometheus --runtimenvidia ghcr.io/utkuozdemir/nvidia_gpu_exporter这套方案在我司内部已经部署了7台同类服务器最老的机器已稳定运行11个月。有个经验特别值得分享二手服务器做AI平台一定要做好灰尘防护——我们遇到过两次因为积尘导致PCIe金手指接触不良模型训练时出现cudaErrorIllegalAddress报错。
阅读完成 · 觉得有帮助?
咨询建站