2 điểm bởi GN⁺ 2025-03-08 | 1 bình luận | Chia sẻ qua WhatsApp
  • Đây là tài liệu khởi động nhanh IPEX-LLM portable zip/tgz dành cho người dùng muốn chạy trực tiếp llama.cpp trên GPU Intel; ở gói mới nhất còn đề cập đến việc chạy DeepSeek-R1-671B-Q4_K_M trên Xeon với 1 hoặc 2 Arc A770
  • Môi trường mục tiêu bao gồm cả Windows và Linux, hướng dẫn quy trình chạy model GGUF trên Intel Core Ultra/thế hệ 11~14 và GPU Intel Arc A-Series/B-Series
  • Luồng cơ bản là chuẩn bị model GGUF trên máy cục bộ rồi chạy llama-cli với các tùy chọn như -ngl 99, -c 2500, -n 2048, --temp 0
  • FlashMoE chỉ dành cho Linux là CLI được tối ưu để chạy MoE GGUF dòng DeepSeek V3/R1; với DeepSeek V3/R1, yêu cầu bộ nhớ CPU 380GB, 1~8 Arc A770 và 500GB dung lượng đĩa
  • Trong môi trường trộn nhiều GPU Intel, mặc định hệ thống sẽ dùng tất cả GPU, vì vậy với cấu hình iGPU/dGPU có thể chỉ định GPU bằng ONEAPI_DEVICE_SELECTOR hoặc tắt kiểm tra bằng SYCL_DEVICE_CHECK=0

Chạy llama.cpp bằng portable zip/tgz

  • llama.cpp portable zip là gói dựa trên ipex-llm để chạy trực tiếp llama.cpp trên GPU Intel
  • Tài liệu giả định theo luồng portable zip/tgz nhằm giảm cài đặt thủ công; portable zip mới nhất đề cập đến việc chạy DeepSeek-R1-671B-Q4_K_M trên Xeon với 1 hoặc 2 Arc A770
  • Phạm vi phần cứng đã được xác thực:
    • Intel Core Ultra processors
    • Intel Core thế hệ 11~14
    • GPU Intel Arc A-Series
    • GPU Intel Arc B-Series

Khởi động nhanh trên Windows

  • Khuyến nghị cập nhật driver GPU Intel lên phiên bản mới nhất

  • Tải IPEX-LLM llama.cpp portable zip cho Windows từ bản phát hành v2.3.0-nightly rồi giải nén

  • Trong cmd, chuyển vào thư mục đã giải nén

    • cd /d PATH\\TO\\EXTRACTED\\FOLDER
  • Người dùng nhiều GPU có thể áp dụng thiết lập chọn GPU trước khi chạy

  • Chạy model GGUF

    • Trước khi chạy, cần tải xuống hoặc chép model GGUF từ cộng đồng vào thư mục cục bộ
    • Model ví dụ là DeepSeek-R1-Distill-Qwen-7B-Q4_K_M.gguf từ bartowski/DeepSeek-R1-Distill-Qwen-7B-GGUF
    • Thay đường dẫn model bằng vị trí thực tế rồi chạy 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
    
    • Kết quả ví dụ hiển thị 1 thiết bị SYCL Intel Arc A770 Graphics, KV cache, SYCL compute buffer, thiết lập sampler và thông tin hiệu năng sinh token

Khởi động nhanh trên Linux

  • Khuyến nghị kiểm tra phiên bản driver GPU và nếu cần thì cài đặt theo Intel client GPU driver installation guide

  • Tải IPEX-LLM llama.cpp portable tgz cho Linux từ bản phát hành v2.3.0-nightly rồi giải nén

  • Trong terminal, chuyển vào thư mục đã giải nén

    • cd /PATH/TO/EXTRACTED/FOLDER
  • Khi dùng llama.cpp portable zip trên Linux thì không được source oneAPI

  • Chạy model GGUF

    • Tương tự Windows, chuẩn bị sẵn model GGUF từ cộng đồng như DeepSeek-R1-Distill-Qwen-7B-Q4_K_M.gguf trên máy cục bộ
    • Thay đường dẫn model bằng vị trí thực tế rồi chạy ./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
    
    • Kết quả ví dụ bao gồm danh sách thiết bị SYCL, llama_kv_cache_init, llama_init_from_model, chuỗi sampler, n_ctx = 2528, n_batch = 4096, n_predict = 2048 và các thông tin chạy khác

Chạy DeepSeek V3/R1 bằng FlashMoE

  • FlashMoE là công cụ dòng lệnh được xây dựng trên llama.cpp, tối ưu cho việc chạy các model MoE như DeepSeek V3/R1

  • Hiện chỉ dùng được trên nền tảng Linux

  • Các model MoE GGUF đã được thử nghiệm:

  • Các model MoE GGUF khác cũng được hỗ trợ

  • Yêu cầu và lưu ý

    • Yêu cầu để chạy DeepSeek V3/R1:
      • Bộ nhớ CPU 380GB
      • 1~8 Arc A770
      • Dung lượng đĩa 500GB
        • Model lớn hơn hoặc độ chính xác khác có thể cần nhiều tài nguyên hơn
        • Trên nền tảng chỉ có 1 Arc A770, cần giảm độ dài ngữ cảnh để tránh OOM; ví dụ thêm -c 1024 vào cuối lệnh
        • Trên nền tảng dual-socket, bật SNC (Sub-NUMA Clustering) trong BIOS và thêm numactl --interleave=all trước lệnh chạy có thể cho hiệu năng giải mã tốt hơn
        • Khi dùng FlashMoE cũng không được source oneAPI
  • Chạy CLI

    ./flash-moe -m /PATH/TO/DeepSeek-R1-Q4_K_M-00001-of-00009.gguf --prompt "What's AI?" -no-cnv
    
    • Kết quả ví dụ hiển thị KV buffer của 8 thiết bị SYCL, pipeline parallelism enabled, graph nodes/splits, n_threads = 48, n_ctx = 4096, n_batch = 4096 và các thông tin chạy khác
  • Chạy chế độ Serving

    ./flash-moe -m /PATH/TO/DeepSeek-R1-Q4_K_M-00001-of-00009.gguf --serve -n 512 -np 2 -c 4096
    
    • -n là số token cần dự đoán, -np là số chuỗi giải mã song song, -c là kích thước ngữ cảnh tổng thể
    • Có thể điều chỉnh các giá trị này cho phù hợp với yêu cầu
    • Tính năng Serving dùng được từ v2.3.0 nightly build
    • Kết quả ví dụ bao gồm n_slots = 2, n_ctx_slot = 2048 của từng slot, quá trình nạp model, chat template và trạng thái chờ server tại http://127.0.0.1:8080

Chọn nhiều GPU và lỗi SYCL

  • Phát hiện các thiết bị SYCL khác nhau

    • Nếu trộn nhiều GPU khác nhau, có thể xuất hiện lỗi Detected different sycl devices
    • Ví dụ là trường hợp cùng lúc phát hiện 2 Arc A770 và 1 iGPU Intel UHD Graphics 770
    • Nếu GPU không giống nhau, tác vụ sẽ được phân bổ theo bộ nhớ thiết bị; trong ví dụ, iGPU nhận 2/3 khối lượng tính toán nên hiệu năng giảm mạnh
    • Có hai lựa chọn
      • Tắt iGPU để có hiệu năng tốt nhất
      • Tắt kiểm tra và dùng tất cả thiết bị
    set SYCL_DEVICE_CHECK=0
    export SYCL_DEVICE_CHECK=0
    
  • Chỉ định GPU sẽ dùng

    • Nếu có nhiều GPU Intel, llama.cpp mặc định sẽ chạy trên tất cả GPU
    • Để chỉ dùng GPU cụ thể, hãy đặt biến môi trường ONEAPI_DEVICE_SELECTOR trước khi bắt đầu lệnh 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"
    

Tùy chọn hiệu năng và xác minh chữ ký

  • Immediate command lists

    • SYCL_PI_LEVEL_ZERO_USE_IMMEDIATE_COMMANDLISTS quyết định có dùng immediate command lists để gửi tác vụ GPU hay không
    • Thường có thể cải thiện hiệu năng, nhưng vẫn có ngoại lệ; nên thử cả khi bật và tắt biến môi trường để tìm mức hiệu năng tốt nhất
    • Windows:
    set SYCL_PI_LEVEL_ZERO_USE_IMMEDIATE_COMMANDLISTS=1
    
    • Linux:
    export SYCL_PI_LEVEL_ZERO_USE_IMMEDIATE_COMMANDLISTS=1
    
  • Xác minh chữ ký của portable zip/tgz 2.2.0

    • Phiên bản portable zip/tgz 2.2.0 có thể xác minh chữ ký bằng openssl
    • Trước khi xác minh, hệ thống cần cài openssl
    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 bình luận

 
GN⁺ 2025-03-08
Ý kiến trên Hacker News
  • Cấu hình này thiếu VRAM, nên phải chuyển nhiều dữ liệu qua lại giữa bộ nhớ CPU và GPU, vì vậy nhiều khả năng hiệu năng sẽ không thật sự tốt
    Dù vậy vẫn có bản mô hình lượng tử hóa dưới 256GB của DeepSeek-R1, và không phải bản chưng cất: https://unsloth.ai/blog/deepseekr1-dynamic
    Khó định lượng khác biệt so với DSR1 FP8 đầy đủ, nhưng ngay cả mô hình lượng tử hóa ~Q2 cũng dùng được khá ổn ngoài dự đoán
    Một mô hình khác đáng nhắc đến là DeepSeek v2.5; nó có ít tham số hơn V3/R1, nhưng để chạy trên phần cứng tiêu dùng vẫn cần lượng tử hóa mạnh. Gần đây đã có người làm sẵn: https://www.reddit.com/r/LocalLLaMA/comments/1irwx6q/deepsee...
    DeepSeek v2.5 có thể còn được xem là tốt hơn Llama 3 70B, nên tôi nghĩ đây là mô hình mà những ai muốn chạy suy luận cục bộ nên biết đến nhiều hơn

    • Tôi đã thử lượng tử hóa Unsloth R1 trên dual Xeon Gold 5218 và 384GB DDR4-2666; chỉ dùng khoảng một nửa số kênh bộ nhớ nên không phải cấu hình tối ưu
      Với IQ2_XXS / 183GB, ngữ cảnh 16k, nếu chỉ dùng CPU thì xử lý prompt đạt 3 token/giây, trả lời 1,44 token/giây; với CPU + NVIDIA RTX 70GB VRAM thì xử lý prompt đạt 4,74 token/giây, trả lời 1,87 token/giây
      Nếu Unsloth phát hành lượng tử hóa tương tự cho DeepSeek V3 thì có lẽ sẽ hữu ích hơn. Vì không cần token suy luận, nên dù cùng token/giây tổng thể vẫn có thể nhanh hơn
    • Tôi định sẽ thử chạy v2.5, và hy vọng dù lượng tử hóa nhỏ như vậy nó vẫn nhất quán như v3.5
      Tôi đang dùng Q2_K_XL và cá nhân thấy đủ tốt. Điểm thua FP8 là ở mảng viết sáng tạo, nên nếu đưa cùng prompt kể chuyện vài lần rồi so với FP8 sẽ thấy khác biệt
      Trong lập trình, bản 1,58 bit chắc chắn gây lỗi nhiều hơn Q2XXS hoặc Q2_K_XL
    • Hiện tại đạt hơn 8 token/giây, và có demo trong bài này: https://www.linkedin.com/posts/jasondai_run-671b-deepseek-r1...
  • https://github.com/intel/ipex-llm/blob/main/docs/mddocs/Quic...
    Yêu cầu để đạt hơn 8 token/giây là 380GB bộ nhớ CPU, 1–8 card ARC A770 và 500GB ổ đĩa

    • Cũng có thể xem demo trong bài của Jason Dai: https://www.linkedin.com/posts/jasondai_with-the-latest-ipex...
    • Tôi thắc mắc liệu chỉ một Intel Arc A770 có đủ để đạt từ 8 token/giây trở lên không
    • Tôi tò mò chi phí của cấu hình này vào khoảng bao nhiêu
      Có vẻ dưới 10.000 USD, và hình như tôi cũng chưa thấy số liệu token/giây
  • Tôi thắc mắc trong tình huống này Xeon chính xác đóng vai trò gì. Có lý do nào khiến không thể dùng bộ xử lý x86 khác không?

    • Có vẻ là vì hầu hết bo mạch chủ không phải Xeon không có đủ kênh bộ nhớ để gắn lượng bộ nhớ cỡ này bằng các DIMM có thể mua thương mại.
    • DDR4 UDIMM tối đa 32GB mỗi module, DDR5 UDIMM tối đa 64GB mỗi module, còn bo mạch chủ không phải Xeon thường chỉ có tối đa 4 khe UDIMM, nên giới hạn mỗi node là 128GB/256GB.
      Bo mạch chủ server có thể có tới 16 khe DIMM mỗi socket và hỗ trợ RDIMM/LRDIMM, nên có thể gắn nhiều module hơn và các module dung lượng lớn hơn.
      Thời điểm đỉnh dịch COVID cũng từng có UDIMM 128GB được ra mắt.
    • Không có nhiều bo mạch chủ cung cấp tổng dung lượng RAM đủ lớn với giá hợp lý ngoài Epyc. Để test/phát triển, có thể mua khá rẻ các server Dell dual-socket Xeon đời cũ đã qua sử dụng với 512GB RAM.
      Vừa tìm vài phút thì dễ thấy cấu hình dưới 1500 USD trước khi thêm card đồ họa hay SSD, và cấu hình 1024GB RAM cũng có dưới 2000 USD.
      Ít nhất nếu muốn gắn nhiều card PCI-Express x16 3.0 chạy đủ tốc độ thì cũng cần đủ lane PCIe, điều này khó tìm trên bo mạch chủ workstation Intel single-socket.
      Có thể nêu vài cấu hình tương đối rẻ với 512GB RAM làm ví dụ. Chúng sẽ ăn điện nhiều và ồn, nhưng các phần cứng x86-64 khác như hp hay supermicro cũng theo cùng cách tiếp cận. Thường là cấu hình 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...
  • Tôi thắc mắc vì sao họ không tung ra GPU có nhiều RAM hơn, lớn hơn nhưng chậm hơn. Như vậy có thể chứa được các mô hình lớn hơn mà giá vẫn trong tầm chịu được.

    • Cái đó sẽ cần cho đâu chứ. Chắc không phải cho game, còn nếu là AI thì cách làm hiện tại của Nvidia là “hãy trả tiền đi”.
      Nhu cầu GPU cho AI đang vượt cung, và đằng sau phần lớn nhu cầu đó là dòng tiền nóng có thể nhận trợ cấp, vay vốn hoặc vốn đầu tư. Hãng GPU có thể thu lấy số tiền đó.
      Đáng tiếc là VRAM là một tiêu chí hoàn hảo để phân tách nhu cầu dùng nhẹ và nhu cầu có tiền. Nó giống như SSO trở thành tiêu chí hoàn hảo để phân tách bản doanh nghiệp và không phải doanh nghiệp, rồi bị gắn thuế SSO.
    • Nếu làm như vậy thì động lực mua GPU đắt hơn sẽ giảm.
    • Dĩ nhiên có thể làm GPU có VRAM lớn hơn, nhưng không có đủ cạnh tranh để họ phải làm vậy. Cách hiện tại sinh lời hơn nhiều.
    • Chưa thấy tin về AMD Halo Strix à? Trong AI nó nhanh hơn Nvidia 4090 hơn gấp đôi, và đã ra mắt tuần trước.
  • DeepSeek học cách đặt tên mô hình từ OpenAI à?

    • Quy ước này đúng là hơi lạ, nhưng trong toàn ngành, đặc biệt với các mô hình GGUF, nó khá chuẩn. Nghĩa là 671B tham số được lượng tử hóa xuống 4-bit.
      Thuật ngữ K_M có vẻ đặc thù hơn với GGUF và mô tả chiến lược lượng tử hóa cụ thể.
  • Bài viết cần có thêm thông tin. Tôi muốn biết vì sao các số TPS đều bị che bằng x, có thể kỳ vọng hiệu năng thế nào từ cấu hình này, và so với cấu hình workstation dual Epyc đang thịnh hành gần đây thì ra sao.

    • Hiện tại trên Xeon thế hệ 5 2 socket (EMR) đang đạt trên 8TPS.
    • Nếu có link công thức cấu hình workstation dual Epyc được nói là đang thịnh hành gần đây thì tôi muốn xem.
  • Nhìn việc họ che giá trị token/giây trong kết quả mẫu thì chắc hẳn nó chạy rất tốt.

  • Có vẻ ngoài Nvidia cũng có vài lựa chọn để chạy suy luận LLM và Stable Diffusion. Có Intel Arc, dòng Apple M, và giờ có cả AMD Ryzen AI Max.
    Rõ ràng chạy trên Nvidia là tối ưu nhất, nhưng vì khó kiếm card Nvidia VRAM cao với giá hợp lý nên tôi vẫn cứ nghĩ đến thiết bị không phải Nvidia.
    Nếu không quan tâm đến huấn luyện hay tinh chỉnh, mà chỉ suy luận thôi, thì các giải pháp kiểu này có thực sự dùng được không? Cũng tò mò liệu có khả thi trên máy Linux không.

    • Nếu muốn làm nghiêm túc thì nên đi theo Nvidia.
      Bài này về cơ bản gần như chỉ là Intel nhắc rằng “chúng tôi cũng làm GPU rồi đấy”, và bản thân card giá rẻ thì ổn, nhưng hệ sinh thái còn tụt hậu quá xa.
      Nói thật, đây là lĩnh vực khó có thể tiết kiệm ngân sách mà vẫn làm cho ra hồn.
  • Tôi nghĩ khi APU dành cho AI xuất hiện, sự quan tâm dành cho GPU sẽ nhanh chóng nguội đi.
    Với AMD Halo Strix hay Apple M3 Studio APU, có thể dùng RAM 512GB hoặc 128GB, vậy tại sao phải mua Nvidia 4090 đắt đỏ?
    Nvidia đã giữ giá cao và hiệu năng thấp lâu nhất có thể, và giờ cạnh tranh mới xuất hiện. Intel cũng có thể làm APU gắn thật nhiều RAM.
    Hy vọng Nvidia đang hơi sốt ruột.