跳转至内容
  • 版块
  • 最新
  • 标签
  • 热门
  • 用户
  • 群组
皮肤
  • 浅色
  • 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 广场
4

4cld62ca

@4cld62ca
取消关注 关注
关于
帖子
3
主题
2
分享
0
群组
0
粉丝
0
关注
0

帖子

最新 最佳 有争议的

  • 关于Proxmox VE上运行AI的折腾记录
    4 4cld62ca

    详细的折腾记录不再展开,有点心塞
    该方法适用于
    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.rom
    

    PS

    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
    

    软件依赖

    这里要注意两个事项

    1. 先打个快照,避免安装失败删除文件的繁琐,直接回滚

    2. 空间大一些

    [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 down  
    
    

    PS

    1. ollama的proxy

      这个是因为ollama看起来没有鉴权,我之前配置hermes 时又需要填写api_key,所以用AI写了一个代理,这个可以完全可以用AI自己写的。不再赘述

    AI硬件 linux

  • 关于我的环境的分享
    4 4cld62ca

    确实不便宜,可能 玩的属性>生产力的属性,单说玩游戏的感觉确实不错,比如奇异人生,双影奇境啥的
    生产力可能就没太干正事,主要想瑟瑟,是我技术太菜了,本地ai都光给出方案,没有任何一个去执行的,我也没有精力调试了,直接用deep seekv4 pro版本干活,写一套完整的报销项目(行程单、发票等等材料的整合)也才100多。

    AI硬件

  • 关于我的环境的分享
    4 4cld62ca

    总结:

    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文件加钩子脚本能够使用

    缺点:

    1. 散热:机器内都为暴力风扇,需要使用脚本通过ipmi来调整,还好我工作的小单间里有空调,平时也在家工作,环境温度也用小爱+温湿度计+小爱空调助手控制,噪音基本可以压住,部分测试可能会导致机箱内风扇提高,但持续时间不长
    2. 游戏:腾讯游戏比如三角洲没法玩,会检查是否为虚拟机,屮,没法玩,都只玩steam上的
    3. 独占需求:只能干一件事情,要么用显卡打游戏,要么玩AI,无法同时进行,当让一些在linux上跑steam的项目我也接触过,感觉差点意思

    ps:我知道9070xt显存比较小,我只是想尝试。

    AI硬件
  • 登录

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