รัน Deepseek R1 Distill 8B Q40 บน Raspberry Pi 5 จำนวน 4 เครื่อง
(github.com/b4rtaz)- ผลการรันโมเดล
deepseek_r1_distill_llama_8b_q40ด้วย Raspberry Pi 5 8GB จำนวน 4 เครื่อง บน distributed-llama v0.12.2 พบว่าทั้งความเร็วในการประเมินและการสร้างสูงกว่าการจัดชุด 2 เครื่อง - ชุด 2 เครื่องทำได้ Evaluation 7.70 tok/s, Prediction 3.54 tok/s ส่วนชุด 4 เครื่องทำได้ Evaluation 11.68 tok/s, Prediction 6.43 tok/s
- ล็อก Prediction ของชุด 4 เครื่องแสดงประมาณ 155.60ms ต่อโทเคน ขณะที่ชุด 2 เครื่องอยู่ที่ประมาณ 282.22ms ต่อโทเคน ทำให้เห็นความแตกต่างของความเร็วการประมวลผลตามจำนวนโหนดที่เพิ่มขึ้นในโมเดลเดียวกัน
- ผู้ใช้รายอื่นแชร์ผลบน v0.12.7 ด้วย 8 โหนด, LAN 2.5G และชุดที่ใช้ CPU Intel รุ่นเก่า ได้ Evaluation 33.64 tok/s และ Prediction 16.63 tok/s
- สำหรับกรณีที่โปรเซสถูกปิดเพราะหน่วยความจำไม่พอบน Raspberry Pi 5 8GB จำนวน 2 เครื่อง มีคำตอบว่าจำเป็นต้อง ลดขนาดคอนเท็กซ์ ด้วย
--max-seq-len 4096
ผลการรันของชุด Raspberry Pi 5 8GB
- โมเดลที่ทดสอบคือ
deepseek_r1_distill_llama_8b_q40และเวอร์ชัน distributed-llama คือ 0.12.2 - ชุดที่นำมาเปรียบเทียบคือ 2 x Raspberry Pi 5 8GB และ 4 x Raspberry Pi 5 8GB
| ชุด | Evaluation | Prediction |
|---|---|---|
| 2 x Raspberry Pi 5 8GB | 7.70 tok/s | 3.54 tok/s |
| 4 x Raspberry Pi 5 8GB | 11.68 tok/s | 6.43 tok/s |
ตัวเลขจากล็อกของชุด 2 เครื่อง
- ชุด 2 x Raspberry Pi 5 8GB บันทึกตัวเลขต่อไปนี้ในการประเมิน
nBatches: 32nTokens: 19tokens/s: 7.70129.89 ms/tok
- ใน Prediction บันทึกตัวเลขต่อไปนี้
nTokens: 77tokens/s: 3.54282.22 ms/tok
- เมื่อการรันสิ้นสุดลง ล็อกแสดงข้อความ Network is closed
ตัวเลขจากล็อกของชุด 4 เครื่อง
- ชุด 4 x Raspberry Pi 5 8GB บันทึกตัวเลขต่อไปนี้ในการประเมิน
nBatches: 32nTokens: 19tokens/s: 11.6885.63 ms/tok
- ใน Prediction บันทึกตัวเลขต่อไปนี้
nTokens: 77tokens/s: 6.43155.60 ms/tok
- ในล็อกมีการแสดงซ้ำ ๆ ระหว่างการสร้างโทเคนว่ามีการส่ง
864 kBและรับ1191 kB
ผล 8 โหนดจากผู้ใช้รายอื่น
- ผู้ใช้รายหนึ่งแชร์ผลจากการใช้ 8 โหนด บน distributed-llama v0.12.7
- ส่วนใหญ่เป็น CPU Intel รุ่นเก่า แบบ 4 คอร์หรือ 6 คอร์
- รองรับ AVX2
- เชื่อมต่อผ่าน LAN 2.5G
- ผลการรันของชุดนี้เป็นดังนี้
- Evaluation:
33.64 tok/s,29.73 ms/tok - Prediction:
16.63 tok/s,60.13 ms/tok - จำนวนโทเคนของ Prediction คือ
245
- Evaluation:
- คำสั่งที่ใช้มีรูปแบบเป็นการระบุโมเดล, tokenizer,
--buffer-float-type q80,--nthreads 6,--max-seq-len 4096,--workersหลายตัว และ--steps 256ให้กับ./dllama inference
ปัญหาการรันและคำตอบ
- มีการแชร์กรณีที่ชุด Raspberry Pi 5 8GB จำนวน 2 เครื่องแสดง RequiredMemory: 20474 MB ระหว่างรัน แล้วจบด้วย
Killed- คำสั่งของโหนดรากมี
--buffer-float-type q80,--steps 16,--nthreads 4และที่อยู่ worker 1 ตัว - คำตอบคือจำเป็นต้องลด ขนาดคอนเท็กซ์ ด้วย
--max-seq-len 4096
- คำสั่งของโหนดรากมี
- ผู้ใช้รายอื่นแชร์อาการที่หลังเชื่อมต่อกับ worker หลายตัวแล้ว พรอมป์
what is 99+12ให้ผลลัพธ์เป็นเพียงช่องว่างและจุด- ในล็อกแสดง
RopeScaling: f=8.0, l=1.0, h=4.0, o=8192,RequiredMemory: 3310 MB,Chat template: deepSeek3 - ผู้ดูแลถามถึงเวอร์ชันที่ใช้งาน และตอบให้ตรวจสอบว่าได้ pull การเปลี่ยนแปลงล่าสุดแล้วหรือไม่ รวมถึงรันบน CPU รุ่นใด
- ในล็อกแสดง
1 ความคิดเห็น
ความคิดเห็นบน Hacker News
ประกาศต่าง ๆ ที่บอกว่ารัน Deepseek R1 บน Raspberry Pi โดยทั่วไปมักมีรูปแบบเดียวกัน: จริง ๆ แล้วใกล้เคียงกับการรัน Llama หรือ Qwen ที่ถูกปรับด้วยเทคนิคการกลั่นของ DeepSeek มากกว่า
DeepSeek กระตุ้นให้โมเดลภาษาขนาดใหญ่ที่ถูกกลั่นตัดเอาต์พุตของตัวเองด้วยคำว่า “Wait.” เพื่อให้เกิดการให้เหตุผลได้ในระดับหนึ่ง แต่ก็อ่อนกว่าความสามารถในการให้เหตุผลของโมเดลเต็มมาก และอาจติดลูปที่เอาแต่สงสัยตัวเองด้วยการพูด “Wait.” ซ้ำไม่รู้จบ แทนที่จะพัฒนาข้อสรุปที่ได้ไปแล้วด้วยนัยใหม่ ๆ
อย่างไรก็ตาม ถ้าดูส่วน Distilled Model Evaluation[1] ในรีโพซิทอรี R1 อย่างเป็นทางการ DeepSeek-R1-Distill-Llama-8B ก็ถือว่าค่อนข้างดี และในบาง benchmark ยังบอกว่าดีกว่า 4o-0513 กับ Sonnet-1022 ด้วย
ต้องจำไว้ด้วยว่ามีการ sample จาก formal grammar อยู่ด้วย ใน llama.cpp มี GBNF และตอนนี้ก็มีการตั้งค่า lazy grammar[2] แล้ว ทำให้ใช้งานได้ค่อนข้างดีในบางกรณี หมายความว่า grammar จะเข้ามาแทรกภายหลัง
นอกจากนี้ยังมีช่องให้ fine-tune เพิ่มเติมได้อีก หลายบริษัทตอนนี้ให้บริการ “RFT” ซึ่งเป็นวิธีเพิ่มความสมบูรณ์ให้ dataset แบบ supervised fine-tuning ทั่วไปด้วยข้อมูล reasoning สังเคราะห์ที่สร้างโดย R1 ตัวใหญ่ ดังนั้นผลลัพธ์นี้อาจเป็นผลลัพธ์เบื้องต้นที่มีคุณค่ามากกว่าที่คิดมาก
การ decode ที่ 6 tok/s ไม่ได้เร็ว แต่คนที่ใช้ Raspberry Pi ไม่ค่อยสนใจเรื่องแบบนั้นนัก
[1] https://github.com/deepseek-ai/DeepSeek-R1#distilled-model-e...
[2] https://github.com/ggerganov/llama.cpp/pull/9639
สงสัยว่า R1 ฝึกโมเดล Llama หมายความว่าอย่างไร และวิธีการกลั่นของ DeepSeek มีอะไรพิเศษ
ถ้าเป็นโมเดล ‘กลั่น’ ที่ถูกต้อง ก็ควรถูกฝึกตั้งแต่แรกให้เลียนแบบโมเดลที่ใหญ่กว่าอย่างสมบูรณ์ แต่กรณีนี้ไม่ได้เกิดขึ้น
เช่นเคย ตัวเลข tok/s ต้องดูแบบเผื่อใจอย่างมาก
ในเดโม “แก้” คำถามที่มีไม่ถึง 500 โทเคน การที่ทำได้เองก็ยังน่าทึ่งอยู่ แต่สำหรับปัญหาจริงและโมเดลที่ “คิด” ด้วยความยาว context ที่ใช้งานได้จริง เช่น 8~16k โทเคน จะเข้าใกล้ความเร็วนั้นได้ยาก แม้แต่ Epyc ที่มีหลาย channel พอความยาว context เลยประมาณ 4096 ก็ร่วงลงมาเหลือ 2~4 tok/s
pos=0 => P 138 ms S 864 kB R 1191 kB Connect
pos=2000 => P 215 ms S 864 kB R 1191 kB .
pos=4000 => P 256 ms S 864 kB R 1191 kB manager
pos=6000 => P 335 ms S 864 kB R 1191 kB the
แค่โมเดลช่วยได้นิดหน่อย ก็อาจทำให้มันมีความสามารถมากกว่าตอนนี้มาก
ผลลัพธ์ก็ไม่ได้แย่ แต่ถ้าจะจ่าย £320 กับ Pi 5 สี่เครื่อง ก็หา 3080 มือสอง 12GB ได้ และความเร็วโทเคนน่าจะเร็วกว่าเกิน 10 เท่าด้วย
https://github.com/geerlingguy/ollama-benchmark?tab=readme-o...
จุดที่น่าสนใจตรงนี้คือสามารถรัน inference ของ Llama แบบ กระจายศูนย์ ข้ามคอมพิวเตอร์หลายเครื่องได้
อาจเชื่อมเครื่องมือเข้ากับโมเดล R1 ตัวเต็มที่ช้าแต่กระจายอยู่ทั่วโลกแบบ Seti@HOME แล้วให้มัน reasoning งานที่ลึกและซับซ้อนแบบสาธารณะได้หรือเปล่า
นี่คือ คลัสเตอร์ Beowulf เวอร์ชันสมัยใหม่
ถ้าเพิ่มเงินอีกนิดจาก Pi 5 สี่เครื่อง ก็หาเซิร์ฟเวอร์ Dell 1U บน eBay ที่มี CPU Epyc 32 คอร์กับหน่วยความจำ 64GB ได้ และประสิทธิภาพอย่างน้อยก็น่าจะสูงกว่าระดับเลขหลักเดียว
ถ้าจะพูดถึง Beowulf cluster ใน homelab อย่างน้อยก็ควรรันชุดอย่าง Slurm+Lustre หรือ k8s+OpenStack+Ceph บน compute node ที่ต่อเครือข่าย FDR Infiniband ราคาถูกมาก ๆ ผมว่าของแบบนี้ที่มี node ช้า ๆ สี่ตัวแล้วยัง scale แบบเชิงเส้นไม่ได้ด้วยซ้ำ มันดูยากที่จะยอมรับ
ยังไม่เห็นหรือไม่เข้าใจว่า Raspberry Pi หลายเครื่องถูก ใช้งานแบบขนาน อย่างไร
ถ้ามีใครชี้ทางให้ได้ก็คงดี
จะถึงเมื่อไหร่กันที่เราจะติดตั้ง เครื่องมือ AI เจ๋ง ๆ รุ่นใหม่นี้ได้ด้วย
apt-get install?brew install ollamaอาจเป็นจุดเริ่มต้นที่ดีollama pullก็ค่อนข้างใกล้เคียงแล้วapt-getอย่างเคร่งครัด แต่คอมโพเนนต์โครงสร้างพื้นฐานส่วนใหญ่ภายใต้ “เครื่องมือ AI” ติดตั้งได้ด้วยconda installมันช่วยบันทึกบทสนทนาและทำให้ดาวน์โหลดโมเดลได้ง่ายด้วย
ถ้าอยากลองโมเดลนี้บน Mac โมเดลที่ใช้ดูเหมือนจะเป็น DeepSeek-R1-Distill-Llama-8B หรือใกล้เคียง ซึ่งรันด้วย ปลั๊กอิน llm-mlx ตัวใหม่ได้แบบนี้
brew install llm # or pipx install llm or uv tool install llmllm install llm-mlxllm mlx download-model mlx-community/DeepSeek-R1-Distill-Llama-8Bllm -m mlx-community/DeepSeek-R1-Distill-Llama-8B 'poem about an otter'ประสิทธิภาพก็ค่อนข้างดี ตอนที่เพิ่งรันได้ 22 tokens/second: https://gist.github.com/simonw/dada46d027602d6e46ba9e4f48477...
ถ้าเพิ่มหน่วยความจำจะช่วยไหม? ล่าสุดมี Rpi 5 ที่ใส่ RAM 16GB ออกมาแล้ว
ตราบใดที่โมเดลใส่ลงหน่วยความจำได้ สิ่งที่กำหนดการทำงานจริงคือแบนด์วิดท์หน่วยความจำ
โมเดล Q4 พารามิเตอร์ 8B น่าจะใส่ใน Pi 8GB เครื่องเดียวได้
ตอนที่ Adafruit มีของเข้าเมื่อไม่นานนี้ ผมแทบจะซื้อมาได้เครื่องหนึ่ง แต่ไม่นานก็ขายหมดอีกทันที
ถึงอย่างนั้น ไม่เกี่ยวกับประสิทธิภาพ ยังมีบางโมเดลที่ต้องใช้เกิน 8GB ในการรัน จน Ollama รันไม่ได้เลย
ต้องมีผลิตภัณฑ์แบบ Alexa หรือ Google Home
เพียงแต่แทนที่จะเชื่อมต่อกับคลาวด์ ควรเป็นรูปแบบที่รัน โมเดลภาษาขนาดใหญ่แบบโลคัล ไม่รู้ว่าทำไมยังไม่มี หรือยังไม่มีใครทำอยู่
โมเดลภาษาขนาดใหญ่ที่ดีมีราคาแพง ดังนั้นคำถามจริง ๆ คือจะทำให้ถูกพอจนยังเหลือมาร์จิน และใส่โมเดลที่มีประโยชน์พอให้คนซื้อได้หรือไม่
ไม่แน่ใจว่ามีการใช้เครื่องมือได้หรือเปล่า แต่สามารถเปิดเผยสิ่งที่น่าถามได้ เช่น สภาพอากาศ