Chạy Deepseek R1 Distill 8B Q40 trên bốn Raspberry Pi 5
(github.com/b4rtaz)- Khi chạy mô hình
deepseek_r1_distill_llama_8b_q40bằng 4 Raspberry Pi 5 8GB trên distributed-llama v0.12.2, cả tốc độ đánh giá và sinh đều cao hơn so với cấu hình 2 máy - Cấu hình 2 máy ghi nhận Evaluation 7.70 tok/s, Prediction 3.54 tok/s, còn cấu hình 4 máy ghi nhận Evaluation 11.68 tok/s, Prediction 6.43 tok/s
- Log Prediction của cấu hình 4 máy hiển thị khoảng 155.60ms mỗi token, còn cấu hình 2 máy khoảng 282.22ms mỗi token, cho thấy chênh lệch tốc độ xử lý khi tăng số node trên cùng một mô hình
- Một người dùng khác chia sẻ kết quả trên v0.12.7 với 8 node, LAN 2.5G và cấu hình dựa trên các CPU Intel cũ: Evaluation 33.64 tok/s và Prediction 16.63 tok/s
- Với trường hợp tiến trình bị kết thúc do thiếu bộ nhớ trên 2 Raspberry Pi 5 8GB, có phản hồi rằng cần giảm kích thước context bằng
--max-seq-len 4096
Kết quả chạy với cấu hình Raspberry Pi 5 8GB
- Mô hình thử nghiệm là
deepseek_r1_distill_llama_8b_q40, phiên bản distributed-llama là 0.12.2 - Các cấu hình được so sánh là 2 x Raspberry Pi 5 8GB và 4 x Raspberry Pi 5 8GB
| Cấu hình | 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 |
Số liệu log của cấu hình 2 máy
- Cấu hình 2 x Raspberry Pi 5 8GB ghi nhận các số liệu sau trong Evaluation
nBatches: 32nTokens: 19tokens/s: 7.70129.89 ms/tok
- Trong Prediction, ghi nhận các số liệu sau
nTokens: 77tokens/s: 3.54282.22 ms/tok
- Khi kết thúc chạy, log hiển thị Network is closed
Số liệu log của cấu hình 4 máy
- Cấu hình 4 x Raspberry Pi 5 8GB ghi nhận các số liệu sau trong Evaluation
nBatches: 32nTokens: 19tokens/s: 11.6885.63 ms/tok
- Trong Prediction, ghi nhận các số liệu sau
nTokens: 77tokens/s: 6.43155.60 ms/tok
- Trong log, khi sinh token, các giá trị gửi
864 kBvà nhận1191 kBđược hiển thị lặp lại
Kết quả 8 node của người dùng khác
- Một người dùng chia sẻ kết quả sử dụng 8 node trên distributed-llama v0.12.7
- Phần lớn là CPU Intel cũ, cấu hình 4 core hoặc 6 core
- Hỗ trợ AVX2
- Kết nối LAN 2.5G
- Kết quả chạy của cấu hình này như sau
- Evaluation:
33.64 tok/s,29.73 ms/tok - Prediction:
16.63 tok/s,60.13 ms/tok - Số token Prediction là
245
- Evaluation:
- Lệnh được dùng có dạng chỉ định mô hình, tokenizer,
--buffer-float-type q80,--nthreads 6,--max-seq-len 4096, nhiều--workers,--steps 256cho./dllama inference
Vấn đề khi chạy và phản hồi
- Có trường hợp được chia sẻ rằng trên cấu hình 2 Raspberry Pi 5 8GB, trong khi chạy, sau khi hiển thị RequiredMemory: 20474 MB, tiến trình kết thúc với
Killed- Lệnh trên node gốc bao gồm
--buffer-float-type q80,--steps 16,--nthreads 4và 1 địa chỉ worker - Phản hồi cho biết cần giảm kích thước context bằng
--max-seq-len 4096
- Lệnh trên node gốc bao gồm
- Một người dùng khác chia sẻ hiện tượng sau khi kết nối với nhiều worker, với prompt
what is 99+12, đầu ra chỉ gồm khoảng trắng và dấu chấm- Log hiển thị
RopeScaling: f=8.0, l=1.0, h=4.0, o=8192,RequiredMemory: 3310 MB,Chat template: deepSeek3 - Quản trị viên hỏi phiên bản đang dùng và phản hồi rằng hãy kiểm tra xem đã pull các thay đổi mới nhất chưa và đang chạy trên CPU nào
- Log hiển thị
1 bình luận
Ý kiến trên Hacker News
Các bài công bố về việc chạy Deepseek R1 trên Raspberry Pi nhìn chung đều theo cùng một kiểu: trên thực tế, nó gần với việc chạy Llama hoặc Qwen đã được chỉnh sửa bằng kỹ thuật chưng cất của DeepSeek hơn
DeepSeek khiến các mô hình ngôn ngữ lớn đã chưng cất tự ngắt đầu ra bằng “Wait.” để buộc chúng suy luận ở một mức độ nào đó, nhưng khả năng suy luận vẫn yếu hơn nhiều so với mô hình đầy đủ, và thay vì phát triển kết luận đã có theo một sắc thái mới, nó có thể rơi vào vòng lặp tự nghi ngờ, lặp đi lặp lại “Wait.” vô tận
Tuy vậy, nếu xem mục Distilled Model Evaluation[1] trong kho R1 chính thức, thì DeepSeek-R1-Distill-Llama-8B cũng khá ổn, và ở một số benchmark còn tốt hơn 4o-0513 và Sonnet-1022
Cũng cần nhớ rằng có cả việc lấy mẫu từ ngữ pháp hình thức. llama.cpp có GBNF, và giờ cũng đã có thiết lập lazy grammar[2], nên với một số trường hợp sử dụng thì đã khá hữu dụng. Tức là ngữ pháp có thể can thiệp ở bước sau
Ngoài ra còn có dư địa để fine-tune thêm. Nhiều công ty hiện đã cung cấp dịch vụ “RFT”, theo kiểu làm phong phú một bộ dữ liệu fine-tune có giám sát bình thường bằng dữ liệu suy luận tổng hợp do mô hình R1 lớn tạo ra. Vì vậy, kết quả này có thể là một kết quả ban đầu giá trị hơn nhiều so với tưởng tượng
Tốc độ giải mã 6 tok/s không nhanh, nhưng người dùng Raspberry Pi thường không quá bận tâm chuyện đó
[1] https://github.com/deepseek-ai/DeepSeek-R1#distilled-model-e...
[2] https://github.com/ggerganov/llama.cpp/pull/9639
Tôi tò mò “R1 huấn luyện mô hình Llama” nghĩa là gì, và điều gì khiến phương pháp chưng cất của DeepSeek trở nên đặc biệt
Nếu là mô hình “chưng cất” đúng nghĩa, nó phải được huấn luyện ngay từ đầu để mô phỏng hoàn toàn mô hình lớn hơn, nhưng ở đây điều đó không xảy ra
Như mọi khi, các con số tok/s cần được nhìn với mức hoài nghi rất lớn
Trong bản demo, họ “giải” một câu hỏi chưa đến 500 token. Việc làm được như vậy tự nó vẫn đáng ngạc nhiên, nhưng với bài toán thật và độ dài ngữ cảnh “hữu ích” thật sự cho mô hình “biết suy nghĩ”, tức 8~16k token, thì khó có thể đạt gần tốc độ đó. Ngay cả Epyc nhiều kênh cũng rơi xuống 2~4 tok/s khi độ dài ngữ cảnh vượt khoảng 4096
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
Chỉ cần mô hình hỗ trợ một chút thôi cũng có thể khiến chúng hữu dụng hơn hiện tại rất nhiều
Đây không phải kết quả tệ, nhưng nếu bỏ £320 cho bốn Pi 5 thì có thể kiếm được một chiếc 3080 12GB cũ, và tốc độ token có lẽ sẽ nhanh hơn hơn 10 lần
https://github.com/geerlingguy/ollama-benchmark?tab=readme-o...
Điều thú vị ở đây là có thể chạy suy luận Llama theo kiểu phân tán trên nhiều máy tính
Liệu có thể làm kiểu Seti@HOME, nối công cụ vào một mô hình R1 đầy đủ nhưng chậm và phân tán khắp thế giới, rồi để nó suy luận công khai cho các tác vụ sâu và phức tạp không?
Đây là một cụm Beowulf phiên bản hiện đại
Chỉ cần thêm một chút tiền so với bốn Pi 5 là có thể tìm được trên eBay một máy chủ Dell 1U với CPU Epyc 32 nhân và 64GB RAM, hiệu năng sẽ cao hơn ít nhất một bậc một chữ số
Nếu đã muốn nói đến Beowulf cluster trong homelab, thì theo tôi ít nhất cũng nên chạy cấu hình kiểu các node tính toán với mạng FDR Infiniband rất rẻ, cùng Slurm+Lustre hoặc k8s+OpenStack+Ceph. Kiểu này với bốn node chậm mà còn không mở rộng tuyến tính thì hơi khó châm chước
Tôi chưa thấy hoặc chưa hiểu các Raspberry Pi được dùng song song như thế nào
Sẽ tốt nếu ai đó chỉ đúng hướng
Không biết đến bao giờ mới có thể cài những công cụ AI mới tuyệt vời này bằng
apt-get installnhỉ?brew install ollamacó thể là điểm khởi đầu tốtollama pullcũng khá gần với hình thức đó rồiapt-get, nhưng phần lớn các thành phần hạ tầng nằm dưới mục “công cụ AI” đều có thể cài bằngconda installNó lưu các cuộc trò chuyện và giúp tải mô hình dễ dàng
Nếu muốn thử mô hình này trên Mac, có vẻ mô hình được dùng là kiểu DeepSeek-R1-Distill-Llama-8B và có thể chạy như sau với plugin llm-mlx mới
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'Hiệu năng cũng khá tốt, lúc tôi vừa chạy thử đạt 22 tokens/second: https://gist.github.com/simonw/dada46d027602d6e46ba9e4f48477...
Thêm bộ nhớ có giúp ích không? Gần đây đã có RPi 5 gắn RAM 16GB
Chỉ cần mô hình vừa trong bộ nhớ, thì thứ quyết định hoạt động thực tế là băng thông bộ nhớ
Mô hình Q4 8B tham số có lẽ sẽ vừa trên một máy Pi 8GB
Gần đây khi Adafruit có hàng lại tôi mới cố mua được một chiếc, rồi nó lại lập tức cháy hàng
Dù vậy, ngoài chuyện hiệu năng, vẫn có những mô hình yêu cầu hơn 8GB để chạy nên Ollama hoàn toàn không chạy được
Cần có một sản phẩm kiểu Alexa hay Google Home
Chỉ là thay vì kết nối lên đám mây thì nó phải chạy mô hình ngôn ngữ lớn cục bộ. Không hiểu sao đến giờ vẫn chưa có, hoặc chưa ai làm
Mô hình ngôn ngữ lớn tốt thì đắt, nên câu hỏi thực sự là liệu có thể làm nó đủ rẻ để vẫn có lãi mà vẫn tích hợp được một mô hình đủ hữu ích để người ta mua hay không
Tôi không chắc nó có hỗ trợ dùng công cụ hay không, nhưng ít nhất có thể đưa vào những thứ đáng hỏi như thời tiết