การรัน LLMs บน AMD NPU ด้วย FastFlowLM - คู่มือสำหรับ Fedora

ตอนนี้คุณสามารถรัน Large Language Models บน AMD NPU ของคุณได้โดยตรงผ่าน Fedora คู่มือนี้จะแสดงวิธีการตั้งค่า stack บน ASUS ROG Flow Z13 ที่ใช้ชิป Ryzen AI Max 390

การตั้งค่านี้ต้องใช้ 4 เลเยอร์ในการทำงาน:

  • Kernel + DKMS driver (amdxdna): สร้าง device node และโหลด firmware
  • XRT base: AMD runtime
  • XRT NPU plugin: ช่วยให้ XRT มองเห็น NPU
  • FastFlowLM (flm): เครื่องมือสำหรับรันโมเดล

เนื่องจาก Fedora ยังไม่มีแพ็กเกจสำเร็จรูปสำหรับเรื่องนี้ คุณจึงต้อง build จาก source

⚠️ การแก้ไขที่สำคัญก่อนเริ่มดำเนินการ

  1. เปิดใช้งาน IOMMU ผู้ใช้หลายคนปิดการใช้งาน IOMMU เพื่อปรับแต่ง GPU ซึ่งจะทำให้ NPU ใช้งานไม่ได้ ตรวจสอบการตั้งค่าของคุณด้วย: cat /proc/cmdline หากคุณเห็น amd_iommu=off ให้ลบออกใน /etc/default/grub จากนั้นสร้าง grub config ใหม่และรีบูตเครื่อง

  2. ตั้งค่า Memlock เป็นแบบไม่จำกัด (Unlimited) NPU จำเป็นต้องใช้ locked memory ตรวจสอบขีดจำกัดของคุณด้วย: ulimit -l หากไม่ใช่ unlimited ให้เพิ่มบรรทัดเหล่านี้ลงใน /etc/security/limits.d/99-memlock.conf: * soft memlock unlimited * hard memlock unlimited จากนั้นให้ log out แล้ว log in เข้ามาใหม่

  3. แก้ไข Path ของ xrt-smi ห้ามทำ symlink ให้กับ xrt-smi เพราะจะทำให้สคริปต์ภายในเสียหาย ให้ใช้ wrapper แทน:

sudo tee /usr/local/bin/xrt-smi <<'EOF'
#!/bin/sh
exec /opt/xilinx/xrt/bin/xrt-smi "$@"
EOF
sudo chmod +x /usr/local/bin/xrt-smi

สรุปขั้นตอนการ Build

  • ติดตั้ง dependencies: ใช้ dnf เพื่อติดตั้ง git, dkms, cmake และไลบรารีสำหรับการพัฒนาต่างๆ
  • Build XRT: Clone repo xdna-driver สร้าง cmake3 wrapper สำหรับ Fedora จากนั้น build และติดตั้ง RPMs
  • ติดตั้ง NPU Plugin: Build xrt_plugin จาก repo xdna-driver และติดตั้ง RPM ที่ได้
  • Build FastFlowLM: Clone repo FastFlowLM และใช้ cmake ในการ build และติดตั้ง

คำสั่งสำหรับตรวจสอบความถูกต้อง

ตรวจสอบ kernel และ NPU: flm validate

ตรวจสอบฮาร์ดแวร์: xrt-smi examine xrt-smi validate

รันโมเดล: flm run gemma4-it:e4b

ผลการทดสอบประสิทธิภาพ (Ryzen AI Max 390)

  • เวลาในการสร้าง token แรก: 1.21 วินาที
  • ความเร็วในการ Prefill: 18 tok/s
  • ความเร็วในการ Decoding: 11 tok/s

ที่มา: https://dev.to/ankk98/running-llms-on-amd-npu-with-fastflowlm-fedora-guide-1oo5

ชุมชนเพื่อการเรียนรู้ (ไม่บังคับ): https://t.me/GyaanSetuAi