3 điểm bởi GN⁺ 2025-02-17 | 1 bình luận | Chia sẻ qua WhatsApp
  • Khi chạy mô hình deepseek_r1_distill_llama_8b_q40 bằ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 8GB4 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: 32
    • nTokens: 19
    • tokens/s: 7.70
    • 129.89 ms/tok
  • Trong Prediction, ghi nhận các số liệu sau
    • nTokens: 77
    • tokens/s: 3.54
    • 282.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: 32
    • nTokens: 19
    • tokens/s: 11.68
    • 85.63 ms/tok
  • Trong Prediction, ghi nhận các số liệu sau
    • nTokens: 77
    • tokens/s: 6.43
    • 155.60 ms/tok
  • Trong log, khi sinh token, các giá trị gửi 864 kB và nhận 1191 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
  • 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 256 cho ./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 4 và 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
  • 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

1 bình luận

 
GN⁺ 2025-02-17
Ý 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

    • Một kiểu lỗi thường thấy ở các mô hình DeepSeek đã chưng cất là nó không nhận ra mình đang dậm chân tại chỗ
      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
    • Không rõ có phải tiêu đề bài gửi đã bị đổi hay không, nhưng hiện tại nó ghi rõ là Deepseek R1 Distill 8B Q40, nên gọi là “Deepseek R1” thì đúng là mô tả sai kết quả
      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
    • Mong ai đó giải thích cho một kỹ sư phần mềm không làm machine learning toàn thời gian rằng phương pháp chưng cất này có nghĩa là gì
      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
    • Đây chỉ là một LLaMa được fine-tune để tạo ra chuỗi suy nghĩ giống DeepSeek mà thôi
      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
    • Tôi thực sự không thích việc những mô hình như thế này có thể được gắn thương hiệu là Deepseek R1
  • 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

    • Tôi đã thử kiểm tra các lần chạy dài, tức khả năng dự đoán, trên bốn Raspberry Pi 5
      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
    • Robot nhỏ thường xử lý bài toán nhỏ
      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

    • Hoặc có thể gắn trực tiếp GPU 12GB hoặc 16GB vào một Pi 5, rồi đạt hơn 20 tok/s ngay cả với mô hình lớn hơn
      https://github.com/geerlingguy/ollama-benchmark?tab=readme-o...
    • Nếu tiêu đề là “Deepseek R1 Distill 8B Q40 on 1x 3080, 60.43 tok/s (eval 110.68 tok/s)” thì có lẽ đã không lên Hacker News
    • Dù vậy, điện năng là 48W so với 320W
    • Cũng có thể dùng kiểu như hai chiếc 3060 12GB
  • Đ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

    • Vậy thì bản tương đương với GPU phân tán ở đâu?
      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

    • Thành thật mà nói, tôi không hiểu lắm meme cụm Raspberry Pi
      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 install nhỉ?

    • Trên Mac, brew install ollama có thể là điểm khởi đầu tốt
    • Sẽ làm được khi bản phân phối bạn đang dùng bắt đầu đóng gói các công cụ mô hình ngôn ngữ lớn, hoặc khi bạn chuyển sang một bản phân phối như vậy
    • ollama pull cũng khá gần với hình thức đó rồi
    • Dù không hẳn đúng nghĩa là apt-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ằng conda install
    • Bạn cũng có thể tải lm-studio bản GUI đẹp mắt
      Nó 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 llm
    llm install llm-mlx
    llm mlx download-model mlx-community/DeepSeek-R1-Distill-Llama-8B
    llm -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

    • Tốc độ suy luận phụ thuộc nhiều vào tốc độ đọc/ghi hơn là dung lượng bộ nhớ
      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ớ
    • Miễn là mô hình và ngữ cảnh vừa trong bộ nhớ, bản thân dung lượng RAM sẽ không giúp được gì thêm
      Mô hình Q4 8B tham số có lẽ sẽ vừa trên một máy Pi 8GB
    • Pi 5 16GB vừa xuất hiện đã nhanh chóng biến mất
      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

    • Chắc là vì giá thành chăng
      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
    • Có thể làm thứ gì đó hơi giống vậy với Home Assistant
      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
    • Với mô hình ngôn ngữ lớn cục bộ, ý bạn là kiểu Ollama + llamacpp phải không?