@terry
是啊,干点啥就不够了,只怪自己当时没看抡锤者
4cld62ca
-
瞎折腾工具 -
瞎折腾工具我的瞎折腾工具
PVE 硬件清单
配件 型号 CPU Intel Xeon Gold 6154 ×2(18 核 ×2 线程,共 36 核 72 线程 @3.0GHz) 主板 超微 x11dpi-nt RAM 352GB DDR4-2133 ECC LRDIMM *11 ) GPU Radeon RX 9070 XT 16G 系统 Proxmox VE 机箱 国鑫 24盘位 阵列卡 LSI SAS 9361-8i 机箱内装不下显卡,用pcie扩展到外置
软件方面
主机操作系统是pve-manager/9.2.20,主要跑测试/客户VPN环境虚拟机,
显卡应用方面
受限于显卡直通不能同时分享给多个虚拟机共同使用,采用了单虚拟机多容器的结构,我没有做过容器化显卡会有多少性能损耗的测试[root@pod2 ~]# podman ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 21edc0966acd localhost/rvc:tb /bin/sh -c while ... 4 weeks ago Up 4 hours rocm-query 0694e5ef8973 docker.io/josh5/steam-headless:latest 4 weeks ago Up 4 hours 8083/tcp steam-headless d7a557067de7 localhost/triposr:latest uvicorn server:ap... 3 weeks ago Exited (0) 3 weeks ago triposr 01b9742d7a5c localhost/human-fit:latest uvicorn server:ap... 3 weeks ago Exited (137) 11 days ago humanbody d6a7931d5881 localhost/comfyui:latest python main.py --... 3 weeks ago Exited (137) 3 weeks ago 8188/tcp comfyui 660306b25e9b localhost/fish-speech-server:rocm 3 weeks ago Exited (143) 3 weeks ago 0.0.0.0:8080->8080/tcp fish-s2 2577ae30f160 localhost/voxcpm-serve:vulkan 2 weeks ago Up 4 hours 0.0.0.0:8099->8099/tcp na-voxcpm e641f546b827 localhost/novel-audiobook:latest python3 /podmanda... 4 hours ago Up 4 hours 8000/tcp na-tasks b1e6ea9b6474 localhost/gpuman:latest python /podmandat... 4 hours ago Up 4 hours 0.0.0.0:7873->7873/tcp gpuman 13eda493f882 localhost/novel-audiobook:latest python /podmandat... 4 hours ago Up 4 hours 0.0.0.0:8000->8000/tcp novel-audiobook dca3683495ce localhost/strata-rocm:latest 43 minutes ago Up 31 minutes 0.0.0.0:8080->8080/tcp, 8001/tcp strata从使用感觉来说一般,吞吐不够,稍大的模型都用不了,所以一般都是本地做测试,流程跑通调用云API跑批量任务
现在正在做有声小说项目的测试相关,敏感内容都被云拒绝了,会自动在本地跑
综合来看显卡的负载其实比较少,一般用 steam-headless 玩玩游戏和小说做做离线任务
后面可能会上9700实现多卡


-
关于Proxmox VE上运行AI的折腾记录详细的折腾记录不再展开,有点心塞
该方法适用于
1 显卡出品时间较新
2 虚拟机配置直通完成,虚拟机关闭或者重启不释放显卡资源,再次启动时报错,比如error writing '1' to '/sys/bus/pci/devices/0000:04:00.0/reset': Inappropriate ioctl for device宿主机环境
CPU(s) 72 x Intel(R) Xeon(R) Gold 6154 CPU @ 3.00GHz (2 CPU 插槽数) 内核版本 Linux 7.0.6-2-pve (2026-05-29T11:08Z) 显卡 AMD 9070XT配置直通:
/etc/default/grub: GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt pcie_acs_override=downstream,multifunction split_lock_detect=off usbcore.autosuspend=-1" /etc/modules vfio vfio_iommu_type1 vfio_pci /etc/modprobe.d/ 的部分我没有做宿主机
宿主机配置文件举例
root@pve:~# cat /etc/pve/qemu-server/129.conf args: -cpu host,hv_passthrough,level=35,-hypervisor,+svm ###关键配置 bios: ovmf boot: order=scsi0;ide0;net0 cores: 32 cpu: host efidisk0: data1:vm-129-disk-0,efitype=4m,pre-enrolled-keys=1,size=1M hookscript: local:snippets/ryzen_igpu_reset.sh ###关键配置 hostpci0: 0000:da:00.0,pcie=1 <<<关键配置 hostpci1: 0000:da:00.1,pcie=1,romfile=9070xt.rom ###关键配置 machine: pc-q35-10.0+pve1 memory: 65536 meta: creation-qemu=10.0.2,ctime=1761193467 name: win-ai1 net0: e1000e=BC:24:11:E8:29:C5,bridge=vmbr0,firewall=1 numa: 0 ostype: win11 scsi0: data1:vm-129-disk-1,iothread=1,size=64G scsi1: data1:vm-129-disk-2,iothread=1,size=64G scsi2: data1:vm-129-disk-3,iothread=1,size=128G钩子脚本ryzen_igpu_reset.sh
root@pve:~# cat /var/lib/vz/snippets/ryzen_igpu_reset.sh #!/bin/bash phase="$2" echo "Phase is $phase" if [ "$phase" == "pre-start" ]; then # Unbind gpu from amdgpu echo "0000:da:00.0" > /sys/bus/pci/drivers/amdgpu/unbind 2>/dev/null ###修改路径 echo "0000:da:00.1" > /sys/bus/pci/drivers/snd_hda_intel/unbind 2>/dev/null ###修改路径 sleep 5 elif [ "$phase" == "post-stop" ]; then # Unbind gpu from vfio-pci sleep 5 echo "0000:da:00.0" > /sys/bus/pci/drivers/vfio-pci/unbind 2>/dev/null sleep 2 echo "0000:da:00.1" > /sys/bus/pci/drivers/vfio-pci/unbind 2>/dev/null sleep 5 # Bind amdgpu echo "0000:da:00.0" > /sys/bus/pci/drivers/amdgpu/bind 2>/dev/null # Bind snd_hda_intel echo "0000:da:00.1" > /sys/bus/pci/drivers/snd_hda_intel/bind 2>/dev/null sleep 2 fi ###记得授权 root@pve:~# chmod +x /var/lib/vz/snippets/ryzen_igpu_reset.sh上传rom文件到以下路径
/usr/share/kvm/9070xt.romPS
1 gpu路径获取
root@pve:~# lspci -nnk 输出类似 da:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Navi 48 [Radeon RX 9070/9070 XT/9070 GRE] [1002:7550] (rev c0) Subsystem: Sapphire Technology Limited Navi 48 XTX [Sapphire Pulse Radeon RX 9070 XT] [1da2:e490] Kernel driver in use: vfio-pci Kernel modules: amdgpu da:00.1 Audio device [0403]: Advanced Micro Devices, Inc. [AMD/ATI] Navi 48 HDMI/DP Audio Controller [1002:ab40] Subsystem: Advanced Micro Devices, Inc. [AMD/ATI] Navi 48 HDMI/DP Audio Controller [1002:ab40] Kernel driver in use: vfio-pci Kernel modules: snd_hda_intel da:00就是路径了,后面的.0和.1区分了声卡,不过配置文件中使用,要在前面加0000,如0000:da:00.0虚拟机
操作系统
[root@pod1 ~]# cat /etc/os-release NAME="Oracle Linux Server" VERSION="9.7" ID="ol" ID_LIKE="fedora" VARIANT="Server" VARIANT_ID="server" VERSION_ID="9.7" PLATFORM_ID="platform:el9" PRETTY_NAME="Oracle Linux Server 9.7" ANSI_COLOR="0;31" CPE_NAME="cpe:/o:oracle:linux:9:7:server" HOME_URL="https://linux.oracle.com/" BUG_REPORT_URL="https://github.com/oracle/oracle-linux" ORACLE_BUGZILLA_PRODUCT="Oracle Linux 9" ORACLE_BUGZILLA_PRODUCT_VERSION=9.7 ORACLE_SUPPORT_PRODUCT="Oracle Linux" ORACLE_SUPPORT_PRODUCT_VERSION=9.7软件依赖
这里要注意两个事项
-
先打个快照,避免安装失败删除文件的繁琐,直接回滚
-
空间大一些
[root@pod2 ~]# df -Th Filesystem Type Size Used Avail Use% Mounted on devtmpfs devtmpfs 4.0M 0 4.0M 0% /dev tmpfs tmpfs 32G 0 32G 0% /dev/shm tmpfs tmpfs 13G 9.1M 13G 1% /run /dev/mapper/ol-root xfs 47G 29G 18G 62% / /dev/sda2 xfs 1014M 605M 410M 60% /boot /dev/sda1 vfat 599M 7.6M 592M 2% /boot/efi /dev/mapper/podmanvg-podmandatalv xfs 96G 51G 46G 53% /podmandata /dev/mapper/podmanvg-podmanisolv xfs 64G 20G 45G 31% /var/lib/containers tmpfs tmpfs 6.3G 0 6.3G 0% /run/user/0 [root@pod2 ~]# ls /opt/ amdgpu rocm rocm-7.2.3 [root@pod2 ~]# du -sh /opt/ 24G /opt/ /podmandata 是容器持久化的路径 /var/lib/containers 是各类容器使用的路径安装方式:
参考AMD官方文档安装基于Linux的驱动,并成功让 rocminfo 命令有完整的回显
AI的部署
这里我选择了容器化运行,大不了我删了容器再来一次,少折腾
[root@pod2 ~]# cat ollama.yaml services: ollama: image: docker.io/ollama/ollama:0.30.0-rc23-rocm container_name: ollama devices: - /dev/kfd:/dev/kfd - /dev/dri:/dev/dri ports: - "0.0.0.0:11434:11434" env_file: - /root/.ollama.env volumes: - /podmandata/ollama:/root/.ollama:Z - /opt/rocm/lib/hipblaslt/library:/usr/lib/ollama/rocm/hipblaslt/library:ro - /etc/localtime:/etc/localtime:ro networks: - podman-net restart: unless-stopped think-filter: image: docker.io/library/python:3.13-alpine container_name: ollama-think-filter ports: - "0.0.0.0:8099:8099" command: sh -c "pip install -q httpx && python3 /app/think-filter.py" volumes: - /podmandata/think-filter:/app:Z - /etc/localtime:/etc/localtime:ro networks: - podman-net restart: unless-stopped proxy: image: docker.io/library/caddy:alpine container_name: ollama-proxy env_file: - /root/.ollama.env ports: - "0.0.0.0:8080:8080" volumes: - /podmandata/caddy/Caddyfile:/etc/caddy/Caddyfile:ro,Z - /podmandata/caddy/data:/data:Z - /etc/localtime:/etc/localtime:ro networks: - podman-net restart: unless-stopped networks: podman-net: external: true name: podman podman pull ollama/ollama:0.30.0-rc23-rocm #启动 podman-compose -f ollama.yaml up -d #停止 podman-compose -f ollama.yaml downPS
-
ollama的proxy
这个是因为ollama看起来没有鉴权,我之前配置hermes 时又需要填写api_key,所以用AI写了一个代理,这个可以完全可以用AI自己写的。不再赘述
-
-
关于我的环境的分享确实不便宜,可能 玩的属性>生产力的属性,单说玩游戏的感觉确实不错,比如奇异人生,双影奇境啥的
生产力可能就没太干正事,主要想瑟瑟,是我技术太菜了,本地ai都光给出方案,没有任何一个去执行的,我也没有精力调试了,直接用deep seekv4 pro版本干活,写一套完整的报销项目(行程单、发票等等材料的整合)也才100多。 -
关于我的环境的分享总结:
1.折腾永无止境
2.没事别老瞎折腾
核心需求:
有一套稳定的虚拟化环境,能够支持我的各客户的VPN环境,避免相互干扰,也可以进行一些数据库以及相关测试
V1版本
硬件
咸鱼:x99 n手未知品牌双路主板;n手 ddr3内存,n手inter 服务器8盘位硬盘笼,n手 14k 2.5寸硬盘,lsi 9361-8i
淘宝: n手Ecpu,大的铜散热器,风扇架子
京东:exta机箱,电源,锉刀,电动打磨工具,风扇,
软件:esxi
总结:基本够用,但是inter 服务器硬盘笼无法散热,要用大的铜散热器贴在上面,前面用几个8寸风扇和风扇架子组装一下吹
弊端:不是一体化,搬动很麻烦(当时租的房子也比较小,拖地的时候要特别小心),14k的硬盘容量小,多几个虚拟机就满了
V2版本
扩展需求:能够打游戏和尝试ai,不互相影响,都独占虚拟机
淘宝:n手国产4u服务器机箱(含硬盘架子,硬盘背板,冗余电源套装),n手超微 x11dpi-nt主板,n手硬盘,n手内存,pcie扩展板卡及线缆
京东:全新AMD 9070xt
软件:pve
总结:够用,也好用,前期折腾显卡直通很麻烦,在pve论坛尝试各种方法,最终采用bar文件加钩子脚本能够使用
缺点:
- 散热:机器内都为暴力风扇,需要使用脚本通过ipmi来调整,还好我工作的小单间里有空调,平时也在家工作,环境温度也用小爱+温湿度计+小爱空调助手控制,噪音基本可以压住,部分测试可能会导致机箱内风扇提高,但持续时间不长
- 游戏:腾讯游戏比如三角洲没法玩,会检查是否为虚拟机,屮,没法玩,都只玩steam上的
- 独占需求:只能干一件事情,要么用显卡打游戏,要么玩AI,无法同时进行,当让一些在linux上跑steam的项目我也接触过,感觉差点意思
ps:我知道9070xt显存比较小,我只是想尝试。