2 poin oleh GN⁺ 2025-03-08 | 1 komentar | Bagikan ke WhatsApp
  • Ini adalah dokumen quick start IPEX-LLM portable zip/tgz untuk pengguna yang ingin langsung menjalankan llama.cpp di GPU Intel, dan pada paket terbaru juga membahas cara menjalankan DeepSeek-R1-671B-Q4_K_M dengan 1 atau 2 Arc A770 pada Xeon
  • Lingkungan target mencakup Windows dan Linux, serta memandu prosedur menjalankan model GGUF pada Intel Core Ultra/generasi ke-11~14 dan GPU Intel Arc A-Series/B-Series
  • Alur dasarnya adalah menyiapkan model GGUF secara lokal lalu menjalankan llama-cli dengan opsi seperti -ngl 99, -c 2500, -n 2048, --temp 0
  • FlashMoE khusus Linux adalah CLI yang disesuaikan untuk menjalankan MoE GGUF keluarga DeepSeek V3/R1, dengan kebutuhan memori CPU 380GB, 1~8 Arc A770, dan disk 500GB untuk DeepSeek V3/R1
  • Dalam lingkungan dengan beberapa GPU Intel campuran, semua GPU akan digunakan secara default, sehingga pada kombinasi iGPU/dGPU Anda dapat memilih GPU dengan ONEAPI_DEVICE_SELECTOR atau mematikan pemeriksaan dengan SYCL_DEVICE_CHECK=0

Menjalankan llama.cpp dengan portable zip/tgz

  • llama.cpp portable zip adalah paket berbasis ipex-llm untuk menjalankan llama.cpp langsung di GPU Intel
  • Dokumen ini mengasumsikan alur portable zip/tgz yang mengurangi instalasi manual, dan portable zip terbaru mencakup menjalankan DeepSeek-R1-671B-Q4_K_M pada 1 atau 2 Arc A770 di Xeon
  • Cakupan perangkat keras yang telah divalidasi:
    • Intel Core Ultra processors
    • Intel Core generasi ke-11~14
    • Intel Arc A-Series GPU
    • Intel Arc B-Series GPU

Quick start Windows

  • Disarankan memperbarui driver GPU Intel ke versi terbaru

  • Unduh IPEX-LLM llama.cpp portable zip untuk Windows dari rilis v2.3.0-nightly lalu ekstrak

  • Pindah ke folder hasil ekstraksi di cmd

    • cd /d PATH\\TO\\EXTRACTED\\FOLDER
  • Pengguna yang memakai beberapa GPU dapat menerapkan pengaturan pemilihan GPU sebelum menjalankan

  • Menjalankan model GGUF

    • Sebelum menjalankan, Anda harus mengunduh atau menyalin model GGUF komunitas ke direktori lokal
    • Model contoh adalah DeepSeek-R1-Distill-Qwen-7B-Q4_K_M.gguf dari bartowski/DeepSeek-R1-Distill-Qwen-7B-GGUF
    • Ganti path model dengan lokasi sebenarnya lalu jalankan llama-cli.exe
    llama-cli.exe -m PATH\TO\DeepSeek-R1-Distill-Qwen-7B-Q4_K_M.gguf -p "A conversation between User and Assistant. The user asks a question, and the Assistant solves it. The assistant first thinks about the reasoning process in the mind and then provides the user with the answer. The reasoning process and answer are enclosed within <think> </think> and <answer> </answer> tags, respectively, i.e., <think> reasoning process here </think> <answer> answer here </answer>. User: Question:The product of the ages of three teenagers is 4590. How old is the oldest? a. 18 b. 19 c. 15 d. 17 Assistant: <think>" -n 2048  -t 8 -e -ngl 99 --color -c 2500 --temp 0 -no-cnv
    
    • Output contoh menampilkan 1 perangkat SYCL Intel Arc A770 Graphics, KV cache, SYCL compute buffer, pengaturan sampler, dan informasi performa pembuatan token

Quick start Linux

  • Disarankan memeriksa versi driver GPU dan, bila perlu, memasang sesuai panduan instalasi driver GPU client Intel

  • Unduh IPEX-LLM llama.cpp portable tgz untuk Linux dari rilis v2.3.0-nightly lalu ekstrak

  • Pindah ke folder hasil ekstraksi di terminal

    • cd /PATH/TO/EXTRACTED/FOLDER
  • Saat menggunakan llama.cpp portable zip di Linux, jangan melakukan source oneAPI

  • Menjalankan model GGUF

    • Seperti di Windows, siapkan model GGUF komunitas seperti DeepSeek-R1-Distill-Qwen-7B-Q4_K_M.gguf secara lokal
    • Ganti path model dengan lokasi sebenarnya lalu jalankan ./llama-cli
    ./llama-cli -m /PATH/TO/DeepSeek-R1-Distill-Qwen-7B-Q4_K_M.gguf -p "A conversation between User and Assistant. The user asks a question, and the Assistant solves it. The assistant first thinks about the reasoning process in the mind and then provides the user with the answer. The reasoning process and answer are enclosed within <think> </think> and <answer> </answer> tags, respectively, i.e., <think> reasoning process here </think> <answer> answer here </answer>. User: Question:The product of the ages of three teenagers is 4590. How old is the oldest? a. 18 b. 19 c. 15 d. 17 Assistant: <think>" -n 2048  -t 8 -e -ngl 99 --color -c 2500 --temp 0 -no-cnv
    
    • Output contoh mencakup daftar perangkat SYCL, llama_kv_cache_init, llama_init_from_model, sampler chain, serta informasi eksekusi seperti n_ctx = 2528, n_batch = 4096, n_predict = 2048

Menjalankan DeepSeek V3/R1 dengan FlashMoE

  • FlashMoE adalah alat command-line yang dibangun di atas llama.cpp, dan dioptimalkan untuk menjalankan model MoE seperti DeepSeek V3/R1

  • Saat ini tersedia di platform Linux

  • Model MoE GGUF yang telah diuji:

  • Model MoE GGUF lainnya juga didukung

  • Persyaratan dan hal yang perlu diperhatikan

    • Persyaratan untuk menjalankan DeepSeek V3/R1:
      • Memori CPU 380GB
      • 1~8 Arc A770
      • Disk 500GB
        • Model yang lebih besar atau presisi lain mungkin memerlukan lebih banyak sumber daya
        • Pada platform dengan 1 Arc A770, panjang konteks harus dikurangi untuk menghindari OOM, misalnya dengan menambahkan -c 1024 di akhir perintah
        • Pada platform dual-socket, Anda bisa mendapatkan performa decoding yang lebih baik dengan mengaktifkan SNC (Sub-NUMA Clustering) di BIOS dan menambahkan numactl --interleave=all di depan perintah eksekusi
        • Saat menggunakan FlashMoE juga, jangan melakukan source oneAPI
  • Menjalankan CLI

    ./flash-moe -m /PATH/TO/DeepSeek-R1-Q4_K_M-00001-of-00009.gguf --prompt "What's AI?" -no-cnv
    
    • Output contoh menampilkan informasi eksekusi seperti KV buffer untuk 8 perangkat SYCL, pipeline parallelism enabled, graph nodes/splits, n_threads = 48, n_ctx = 4096, n_batch = 4096
  • Menjalankan serving

    ./flash-moe -m /PATH/TO/DeepSeek-R1-Q4_K_M-00001-of-00009.gguf --serve -n 512 -np 2 -c 4096
    
    • -n adalah jumlah token yang akan diprediksi, -np adalah jumlah urutan decoding paralel, dan -c adalah ukuran konteks total
    • Nilainya dapat disesuaikan dengan kebutuhan
    • Fitur serving tersedia mulai dari v2.3.0 nightly build
    • Output contoh mencakup n_slots = 2, n_ctx_slot = 2048 untuk tiap slot, pemuatan model, chat template, dan status menunggu server di http://127.0.0.1:8080

Pemilihan multi-GPU dan error SYCL

  • Deteksi perangkat SYCL yang berbeda

    • Jika GPU yang berbeda tercampur, error Detected different sycl devices dapat muncul
    • Contohnya adalah situasi ketika 2 Arc A770 dan 1 iGPU Intel UHD Graphics 770 terdeteksi bersama
    • Jika GPU tidak sama, pekerjaan akan dialokasikan berdasarkan memori perangkat, dan pada contoh ini iGPU menerima 2/3 beban komputasi sehingga performa turun drastis
    • Ada dua pilihan
      • Nonaktifkan iGPU untuk mendapatkan performa terbaik
      • Matikan pemeriksaan dan gunakan semua perangkat
    set SYCL_DEVICE_CHECK=0
    export SYCL_DEVICE_CHECK=0
    
  • Menentukan GPU yang akan digunakan

    • Jika ada beberapa GPU Intel, llama.cpp secara default akan berjalan di semua GPU
    • Untuk menggunakan hanya GPU tertentu, setel variabel lingkungan ONEAPI_DEVICE_SELECTOR sebelum memulai perintah llama.cpp
    • Windows:
    set ONEAPI_DEVICE_SELECTOR=level_zero:0
    set ONEAPI_DEVICE_SELECTOR="level_zero:0;level_zero:1"
    
    • Linux:
    export ONEAPI_DEVICE_SELECTOR=level_zero:0
    export ONEAPI_DEVICE_SELECTOR="level_zero:0;level_zero:1"
    

Opsi performa dan verifikasi tanda tangan

  • Immediate command lists

    • SYCL_PI_LEVEL_ZERO_USE_IMMEDIATE_COMMANDLISTS menentukan apakah immediate command lists digunakan untuk pengiriman pekerjaan GPU
    • Secara umum dapat meningkatkan performa, tetapi mungkin ada pengecualian, sehingga disarankan menguji baik saat variabel lingkungan diaktifkan maupun dimatikan untuk menemukan performa terbaik
    • Windows:
    set SYCL_PI_LEVEL_ZERO_USE_IMMEDIATE_COMMANDLISTS=1
    
    • Linux:
    export SYCL_PI_LEVEL_ZERO_USE_IMMEDIATE_COMMANDLISTS=1
    
  • Verifikasi tanda tangan portable zip/tgz 2.2.0

    • Versi portable zip/tgz 2.2.0 dapat memverifikasi tanda tangan dengan openssl
    • Sebelum verifikasi, openssl harus sudah terpasang di sistem
    openssl cms -verify -in <portable-zip-or-tgz-file-name>.pkcs1.sig -inform DER -content <portable-zip-or-tgz-file-name> -out nul -noverify
    

1 komentar

 
GN⁺ 2025-03-08
Opini Hacker News
  • Konfigurasi ini kemungkinan besar performanya tidak akan terlalu bagus karena VRAM tidak cukup, sehingga harus banyak memindahkan data antara memori CPU dan GPU
    Meski begitu, ada model kuantisasi DeepSeek-R1 di bawah 256GB, dan ini bukan versi distilasi: https://unsloth.ai/blog/deepseekr1-dynamic
    Sulit menguantifikasi perbedaannya dengan DSR1 FP8 penuh, tetapi model kuantisasi ~Q2 pun ternyata cukup layak dipakai
    Model lain yang patut disebut adalah DeepSeek v2.5; parameternya lebih sedikit daripada V3/R1, tetapi untuk menjalankannya di perangkat konsumen tetap perlu kuantisasi yang agresif. Baru-baru ini ada yang membuatnya: https://www.reddit.com/r/LocalLLaMA/comments/1irwx6q/deepsee...
    DeepSeek v2.5 bisa dibilang mungkin lebih baik daripada Llama 3 70B, jadi menurut saya ini model yang perlu lebih banyak diketahui oleh orang yang ingin menjalankan inferensi lokal

    • Saya mencoba kuantisasi Unsloth R1 dengan dual Xeon Gold 5218 dan DDR4-2666 384GB; hanya sekitar setengah kanal memori yang dipakai, jadi bukan konfigurasi optimal
      Dengan IQ2_XXS / 183GB dan konteks 16k, jika hanya memakai CPU, pemrosesan prompt mencapai 3 token/detik dan respons 1,44 token/detik; dengan CPU + NVIDIA RTX 70GB VRAM, pemrosesan prompt 4,74 token/detik dan respons 1,87 token/detik
      Akan lebih berguna jika Unsloth merilis kuantisasi serupa untuk DeepSeek V3 juga. Karena tidak perlu token reasoning, pada token/detik yang sama pun secara keseluruhan bisa lebih cepat
    • Saya berencana mencoba v2.5, dan semoga meski dikuantisasi sekecil itu tetap sekonsisten v3.5
      Saya memakai Q2_K_XL dan secara pribadi menurut saya sudah cukup bagus. Kekurangannya dibanding FP8 ada di sisi penulisan kreatif, jadi kalau memasukkan prompt cerita yang sama beberapa kali lalu membandingkannya dengan FP8, perbedaannya terlihat
      Untuk coding, 1,58-bit jelas menghasilkan lebih banyak kesalahan daripada Q2XXS atau Q2_K_XL
    • Saat ini sudah keluar lebih dari 8 token/detik, dan ada demo di tulisan ini: https://www.linkedin.com/posts/jasondai_run-671b-deepseek-r1...
  • https://github.com/intel/ipex-llm/blob/main/docs/mddocs/Quic...
    Persyaratan untuk lebih dari 8 token/detik adalah memori CPU 380GB, 1–8 kartu ARC A770, dan disk 500GB

    • Demo dari tulisan Jason Dai juga bisa dilihat: https://www.linkedin.com/posts/jasondai_with-the-latest-ipex...
    • Saya penasaran apakah satu Intel Arc A770 saja cukup untuk menghasilkan 8 token/detik atau lebih
    • Saya penasaran kira-kira berapa biaya konfigurasi ini
      Sepertinya di bawah 10 ribu dolar AS, dan rasanya saya juga belum melihat angka token/detiknya
  • Saya penasaran, dalam situasi ini Xeon sebenarnya berperan sebagai apa. Apakah ada alasan tidak bisa memakai prosesor x86 lain?

    • Sepertinya karena kebanyakan motherboard non-Xeon tidak punya kanal memori sebanyak itu untuk memasang memori sebesar ini dengan DIMM yang bisa dibeli secara komersial
    • DDR4 UDIMM maksimal 32GB per modul, DDR5 UDIMM maksimal 64GB per modul, dan motherboard non-Xeon biasanya punya paling banyak 4 slot UDIMM, jadi batasnya 128GB/256GB per node
      Motherboard server punya hingga 16 slot DIMM per soket dan mendukung RDIMM/LRDIMM, sehingga bisa memasang lebih banyak modul dan modul berkapasitas lebih besar
      Memang sempat ada peluncuran UDIMM 128GB pada masa puncak COVID
    • Tidak banyak motherboard selain Epyc yang menyediakan total RAM memadai dengan harga masuk akal. Untuk pengujian/pengembangan, server Dell dual-socket Xeon generasi lama bekas dengan RAM 512GB bisa dibeli cukup murah
      Setelah mencari beberapa menit barusan, mudah menemukan yang di bawah 1.500 dolar sebelum menambahkan kartu video atau SSD, dan konfigurasi RAM 1024GB juga terlihat di bawah 2.000 dolar
      Setidaknya untuk memasang beberapa kartu PCI-Express x16 3.0 dengan kecepatan penuh, lane PCIe juga harus mencukupi, dan ini sulit ditemukan pada motherboard workstation Intel soket tunggal
      Sebagai contoh, ada beberapa konfigurasi relatif murah dengan RAM 512GB. Konsumsi dayanya besar dan berisik, tetapi pendekatan yang sama juga berlaku untuk perangkat keras x86-64 lain seperti hp atau supermicro. Biasanya konfigurasinya 16 x 32GB DDR4 DIMM
      https://www.ebay.com/itm/186991103256?_skw=dell+poweredge+t6...
      https://www.ebay.com/itm/235978320621?_skw=dell+poweredge+r7...
      https://www.ebay.com/itm/115819389940?_skw=dell+poweredge+r7...
  • Saya penasaran kenapa tidak ada GPU dengan RAM yang lebih besar tetapi lebih lambat dalam jumlah banyak. Dengan begitu model yang lebih besar bisa dimuat, sementara harganya tetap terjangkau

    • Untuk apa itu dibutuhkan. Mungkin bukan untuk gaming, dan kalau untuk AI, cara Nvidia saat ini adalah menyuruh orang membayar
      Permintaan GPU untuk AI lebih besar daripada pasokan, dan sebagian besar permintaan itu ditopang uang panas yang bisa mendapatkan subsidi, pinjaman, dan investasi. Vendor GPU bisa mengambil uang itu
      Sayangnya VRAM adalah pembeda yang sempurna antara penggunaan ringan dan penggunaan yang punya uang. Mirip dengan SSO yang menjadi pembeda sempurna antara enterprise dan non-enterprise sehingga dikenakan pajak SSO
    • Kalau dibuat seperti itu, motivasi untuk membeli GPU yang lebih mahal akan berkurang
    • Membuat GPU dengan VRAM lebih besar tentu saja memungkinkan, tetapi tidak ada cukup kompetisi yang memaksa mereka melakukannya. Cara sekarang jauh lebih menguntungkan
    • Belum lihat kabar AMD Halo Strix? Untuk AI, performanya lebih dari dua kali lebih cepat daripada Nvidia 4090, dan sudah dirilis minggu lalu
  • Apakah DeepSeek belajar cara menamai model dari OpenAI?

    • Konvensinya memang aneh, tetapi cukup standar di seluruh industri, khususnya untuk model GGUF. Artinya 671B parameter dikuantisasi ke 4-bit
      Istilah K_M tampaknya lebih spesifik untuk GGUF, dan menjelaskan strategi kuantisasi tertentu
  • Artikelnya perlu memuat lebih banyak informasi. Saya penasaran kenapa angka TPS semuanya ditutupi dengan x, performa seperti apa yang bisa diharapkan dari konfigurasi ini, dan bagaimana perbandingannya dengan konfigurasi workstation dual Epyc yang belakangan populer

    • Saat ini pada Xeon generasi ke-5 (EMR) 2-socket, hasilnya lebih dari 8TPS
    • Kalau ada tautan resep workstation dual Epyc yang katanya belakangan populer itu, saya ingin melihatnya
  • Dari keluaran sampel, nilai token/detik disensor, jadi jelas tampaknya berjalan sangat baik

  • Di luar Nvidia pun terlihat ada beberapa opsi untuk menjalankan inferensi LLM dan Stable Diffusion. Ada Intel Arc, seri Apple M, dan sekarang juga AMD Ryzen AI Max
    Memang jelas menjalankannya di Nvidia adalah yang paling optimal, tetapi karena sulit mendapatkan kartu Nvidia dengan VRAM besar dengan harga masuk akal, perangkat non-Nvidia pun terus terpikirkan
    Kalau tidak tertarik pada pelatihan atau fine-tuning dan hanya inferensi, apakah solusi seperti ini benar-benar layak dipakai? Saya juga penasaran apakah bisa dilakukan di mesin Linux

    • Kalau mau serius, memang sebaiknya pilih Nvidia
      Tulisan ini pada dasarnya lebih seperti pengingat dari Intel bahwa “kami juga membuat GPU”, dan kartu kelas anggarannya sendiri bagus, tetapi ekosistemnya terlalu tertinggal
      Sejujurnya, ini adalah bidang yang sulit dilakukan dengan benar sambil menghemat anggaran
  • Kalau APU untuk AI muncul, minat terhadap GPU sepertinya akan cepat mereda
    Dengan AMD Halo Strix atau APU Apple M3 Studio, kita bisa memakai RAM 512GB atau 128GB; jadi mengapa membeli Nvidia 4090 yang mahal?
    Nvidia selama mungkin mempertahankan harga tetap tinggi dan performa tetap rendah, dan baru sekarang kompetisi mulai datang. Intel juga bisa membuat APU dengan RAM melimpah
    Saya berharap Nvidia sedikit gelisah