跳转至内容
  • 版块
  • 最新
  • 标签
  • 热门
  • 用户
  • 群组
皮肤
  • 浅色
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • 深色
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(LCZ-Blue)
  • 不使用皮肤
  • LCZ-Green
  • LCZ-Blue
  • LCZ-Black
折叠
品牌标识

抡锤者

首页 版块 标签 硬件 AI 广场
  1. 主页
  2. 版块
  3. 随便聊聊
  4. Proxmox VE 9.2+ Intel 核显 SR-IOV + AMD Radeon AI PRO R9700 直通+Ubuntu24.04部署实测(三)

Proxmox VE 9.2+ Intel 核显 SR-IOV + AMD Radeon AI PRO R9700 直通+Ubuntu24.04部署实测(三)

已定时 已固定 已锁定 已移动 随便聊聊
r9700ubuntu本地模型
2 帖子 2 发布者 96 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • Magic629M 离线
    Magic629M 离线
    Magic629
    德高望重
    编写于 最后由 编辑
    #1

    PVE 9.2 主机与 llama.cpp 推理服务器- R9700 直通 Ubuntu 搭建本地大模型

    作为家庭主服务器使用:
    1、PPPOE(Ikuai8)
    2、OpenWRT(科学上网)
    3、软路由(另外加一张4口2.5G网卡)
    4、本地AI服务器
    5、解码影音库、远程办公
    6、注意:🚀 ALL IN ONE · ALL IN BOOM 💥
    7、做好数据备份、网络冗余。

    关键设备:显卡 PCI ID 1002:7551(gfx1201),宿主机 PCI 地址 0000:04:00.0。


    阶段一:宿主机配置 GPU 直通

    在 PVE 宿主机(R9700)上操作。

    1.1 确认 IOMMU 已启用

    # 确认有 IOMMU 组(有输出即已启用)
    ls /sys/kernel/iommu_groups/ | wc -l
    
    # 查看显卡 IOMMU 组(应为独立组)
    for d in /sys/kernel/iommu_groups/*/devices/*; do
      echo "$d -> $(basename $(dirname $(dirname $d)))"
    done | grep -i "04:00"
    

    1.2 配置 vfio-pci 绑定显卡

    ① 写入 vfio 绑定规则

    cat > /etc/modprobe.d/vfio.conf <<'EOF'
    options vfio-pci ids=1002:7551,1002:ab40
    softdep amdgpu pre: vfio-pci
    EOF
    

    1002:7551 是显卡本体,1002:ab40 是显卡音频功能(可绑可不绑,绑了更干净)。

    ② 配置 vfio 模块开机加载

    cat > /etc/modules-load.d/vfio.conf <<'EOF'
    vfio
    vfio_iommu_type1
    vfio_pci
    vfio_virqfd
    EOF
    

    ③ 把 vfio 模块加入 initramfs(关键,确保在 amdgpu 之前抢占显卡)

    cat >> /etc/initramfs-tools/modules <<'EOF'
    vfio
    vfio_iommu_type1
    vfio_pci
    vfio_virqfd
    EOF
    

    ④ 更新 initramfs

    update-initramfs -u -k all
    

    1.3 给 VM 添加直通设备

    # VMID 以实际为准(本机为ID 102)
    qm set 102 -hostpci0 0000:04:00.0,pcie=1
    

    pcie=1 让 QEMU 以 PCIe 模式呈现设备( GPU 必需)。
    若 VM 正在运行,该改动会在下次启动时生效。

    1.4 重启宿主机生效

    reboot
    

    1.5 验证直通成功

    宿主机上(显卡应绑定 vfio-pci 而非 amdgpu):

    lspci -nnk -s 04:00.0
    # 期望:Kernel driver in use: vfio-pci
    

    客户机 Ubuntu 内(显卡应出现且绑定 amdgpu):

    lspci -nnk | grep -A3 1002:7551
    # 期望:Kernel driver in use: amdgpu
    

    阶段二:客户机安装 ROCm

    在 Ubuntu 24.04 虚拟机内操作(以下命令需要 root / sudo)。

    2.1 安装前置包

    sudo apt update
    sudo apt install -y python3-setuptools python3-wheel curl
    

    2.2 下载并安装 amdgpu-install 脚本

    # 下载最新 amdgpu-install(版本号可能更新,以 repo 为准)
    wget https://repo.radeon.com/amdgpu-install/31.50/ubuntu/noble/amdgpu-install_31.50.315000-1_all.deb
    sudo apt install -y ./amdgpu-install_31.50.315000-1_all.deb
    

    2.3 补充 AMD 仓库公钥(重要,否则 apt 报 NO_PUBKEY)

    sudo mkdir -p /etc/apt/keyrings
    curl -sL https://repo.radeon.com/rocm/rocm.gpg.key | \
      sudo gpg --dearmor --yes -o /etc/apt/keyrings/rocm.gpg
    
    # 验证 key ID 应为 9386B48A1A693C5C
    gpg --show-keys /etc/apt/keyrings/rocm.gpg
    

    2.4 安装 ROCm(跳过 dkms 内核驱动)

    sudo amdgpu-install -y --usecase=rocm --no-dkms
    

    --no-dkms:Ubuntu 24.04 内核自带 amdgpu 已能驱动 R9700(gfx1201),无需额外 DKMS 内核模块,可避免编译失败。
    该命令会安装 ROCm 10.0 的 gfx1201 专用完整栈(rocBLAS、MIOpen、RCCL 等),耗时取决于网速。

    2.5 给用户加 GPU 访问权限

    sudo usermod -a -G render,video $USER
    

    ⚠️ 组权限需重新登录(注销或重启)才生效。

    2.6 验证 ROCm 识别 GPU

    # 重新登录后执行
    rocminfo | grep -iE "gfx1201|R9700"   # 应显示 gfx1201 / Radeon AI PRO R9700
    amd-smi                                # 应显示 Radeon AI PRO R9700 + 显存
    

    阶段三:安装 llama.cpp 与模型

    3.1 下载 AMD 官方预编译二进制

    # 预编译包自带 ROCm 运行时(约 3.5GB)
    wget -O llama-bin-linux.zip \
      "https://repo.radeon.com/rocm/llama.cpp/linux/rocm-rel-7.2.1/llama-b8407-ubuntu-24.04-rocm-7.2.1-gfx110X-gfx115X-gfx120X-x64.zip"
    

    也可用 aria2 多线程加速:aria2c -x 16 -s 16 -o llama-bin-linux.zip "URL"(实测可提速百倍)。

    3.2 解压并安装

    sudo apt install -y unzip
    sudo mkdir -p /opt/llama.cpp
    sudo unzip -q -o llama-bin-linux.zip -d /opt/llama.cpp
    

    解压后目录(记录下完整路径,后面要用):

    /opt/llama.cpp/llama-b8407-ubuntu-24.04-rocm-7.2.1-gfx110X-gfx115X-gfx120X-x64/
    

    3.3 下载模型(GGUF 格式)

    mkdir -p /opt/llama.cpp/models
    cd /opt/llama.cpp/models
    
    # 示例:Qwen2.5-1.5B(中文友好,约 1.1GB)
    wget -O qwen2.5-1.5b-instruct-q4_k_m.gguf \
      "https://huggingface.co/Qwen/Qwen2.5-1.5B-Instruct-GGUF/resolve/main/qwen2.5-1.5b-instruct-q4_k_m.gguf"
    

    国内网络可改用镜像 https://hf-mirror.com/...;或下载更大的模型(7B/14B/32B)放入同一目录。

    3.4 创建便捷启动器(本机为例)

    sudo tee /usr/local/bin/llama-cpp >/dev/null <<'EOF'
    #!/bin/bash
    DIR="/opt/llama.cpp/llama-b8407-ubuntu-24.04-rocm-7.2.1-gfx110X-gfx115X-gfx120X-x64"
    export LD_LIBRARY_PATH="$DIR"
    MODEL="/opt/llama.cpp/models/qwen2.5-1.5b-instruct-q4_k_m.gguf"
    case "$1" in
      server) shift; exec "$DIR/llama-server" -m "$MODEL" -ngl 99 -fa on -c 4096 "$@";;
      cli)    shift; exec "$DIR/llama-cli"    -m "$MODEL" -ngl 99 "$@";;
      bench)  shift; exec "$DIR/llama-bench"  -m "$MODEL" "$@";;
      *) echo "用法: llama-cpp {server|cli|bench} [参数]";;
    esac
    EOF
    sudo chmod +x /usr/local/bin/llama-cpp
    

    阶段四:验证与使用

    4.1 验证 GPU 推理

    # 命令行对话测试
    llama-cpp cli -p "你好" -n 60 --no-display-prompt
    

    期望输出包含:

    ggml_cuda_init: found 1 ROCm devices (Total VRAM: 30576 MiB)
      Device 0: AMD Radeon Graphics, gfx1201
    ...(生成的中文回复)...
    

    4.2 日常使用

    llama-cpp server   # 启动 Web 服务 → 浏览器打开 http://localhost:8080
    llama-cpp cli      # 命令行对话
    llama-cpp bench    # 性能测试
    

    关键参数:

    • -ngl 99:所有层 offload 到 GPU(性能关键)
    • -fa on:Flash Attention(省显存提速)
    • -c 4096:上下文长度

    4.3 更换更大模型

    1. 下载 GGUF 到 /opt/llama.cpp/models/
    2. 编辑 /usr/local/bin/llama-cpp,把 MODEL= 改为新模型路径

    常见问题(实测踩坑记录)

    问题 原因 解决
    apt 报 NO_PUBKEY 9386B48A1A693C5C amdgpu-install 未自动导入公钥 手动下载 rocm.gpg.key 到 keyrings
    rocminfo 找不到 GPU 用户不在 render 组 / 未重新登录 usermod -aG render,video $USER 后重新登录
    llama.cpp 报 libamd_comgr.so.3 找不到 未设库路径 设 LD_LIBRARY_PATH 指向解压目录
    下载速度慢(KB/s) 单线程 + 代理 用 aria2c -x 16 -s 16 多线程

    f4ea5643-d6ab-4bd1-ac92-51aaca700fcc-image.jpeg
    b7d955ad-cee2-4f7d-bd4e-d52e2770bc45-image.jpeg
    3158e1e4-17c4-43e7-9238-813e54b108ff-image.jpeg

    1 条回复 最后回复
    1
    • terryT 在线
      terryT 在线
      terry
      超级版主
      编写于 最后由 编辑
      #2

      非常好的分享,图文并茂,格式工整,置顶。

      油管:https://www.youtube.com/@抡锤者

      1 条回复 最后回复
      0
      • ,terryT terry 固定了此主题
      • ,系统 取消固定了此主题

      你好!看起来您对这段对话很感兴趣,但您还没有一个账号。

      厌倦了每次访问都刷到同样的帖子?您注册账号后,您每次返回时都能精准定位到您上次浏览的位置,并可选择接收新回复通知(通过邮件或推送通知)。您还能收藏书签、为帖子顶,向社区成员表达您的欣赏。

      有了你的建议,这篇帖子会更精彩哦 💗

      注册 登录
      回复
      • 在新帖中回复
      登录后回复
      • 从旧到新
      • 从新到旧
      • 最多赞同


      • 登录

      • 登录或注册以进行搜索。
      • 第一个帖子
        最后一个帖子
      0
      • 版块
      • 最新
      • 标签
      • 热门
      • 用户
      • 群组