1 điểm bởi GN⁺ 2024-10-12 | 1 bình luận | Chia sẻ qua WhatsApp

lm.rs: Chạy suy luận mô hình ngôn ngữ cục bộ trên CPU bằng Rust

  • Giới thiệu

    • lm.rs là một dự án cho phép chạy suy luận mô hình ngôn ngữ trên CPU bằng Rust.
    • Được lấy cảm hứng từ llama2.c và llm.c của Karpathy, dự án được thiết kế để có thể chạy mô hình ngôn ngữ với lượng mã tối thiểu mà không cần thư viện ML.
    • Trước đây chỉ hỗ trợ mô hình Gemma 2 của Google, nhưng nay đã hỗ trợ thêm mô hình Llama 3.2 và mô hình hình ảnh PHI-3.5.
  • Các mô hình đã chuẩn bị sẵn

    • Cung cấp benchmark và liên kết tải xuống cho nhiều mô hình và tokenizer khác nhau.
    • Khuyến nghị sử dụng các mô hình lượng tử hóa Q8_0, Q4_0.
    • Tốc độ được đo trên AMD Epyc 16 lõi.
  • Chuyển đổi mô hình

    • Có thể chuyển đổi các mô hình của Google/Meta sang định dạng lmrs.
    • Sau khi cài đặt các phụ thuộc Python, có thể dùng các script export.pytokenizer.py để chuyển đổi mô hình và tokenizer.
  • Build

    • Có thể biên dịch và chạy mã Rust bằng cargo.
    • Để kích hoạt tính năng đa phương thức, cần bao gồm tính năng multimodal.
  • TODOs

    • Thêm các phương pháp lấy mẫu.
    • Kiểm thử các mô hình 9B và 27B.
    • Song song hóa vòng lặp multi-head attention.
    • Thêm các chỉ số hiệu năng.
    • Thêm tính năng cung cấp system prompt.
    • Hỗ trợ lượng tử hóa (int8, int4).

# Tóm tắt của GN⁺

  • lm.rs cung cấp một cách hiệu quả để chạy mô hình ngôn ngữ trên CPU bằng Rust. Điều này hữu ích trong các môi trường gọn nhẹ vì không cần thư viện ML.
  • Phù hợp cả với các lập trình viên mới làm quen với Rust, đồng thời hỗ trợ nhiều mô hình nên có tính mở rộng cao.
  • Việc hỗ trợ các mô hình đa phương thức như PHI-3.5 cũng bao gồm khả năng xử lý hình ảnh.
  • Một dự án có chức năng tương tự là thư viện Transformers của Hugging Face.

1 bình luận

 
GN⁺ 2024-10-12
Ý kiến trên Hacker News
  • Khi chạy 1.2G llama3.2-1b-it-q80.lmrs trên MacBook M2 64GB, nó hoạt động nhanh và mức sử dụng CPU là 1000% trên 13 luồng
  • Có vẻ hữu ích để giải thích cách Transformer hoạt động thông qua các ví dụ mã
    • Cần cải thiện để thư viện không in ra stdout
    • Có thắc mắc liệu có thể triển khai mà không cần unsafe hay không
  • Có thể dùng nhiều công cụ Rust khác nhau để tải mô hình và thực hiện các tác vụ LLM khác
    • Có thể giúp giảm phụ thuộc vào Python
    • Không rõ có kế hoạch hỗ trợ ngữ pháp hay không
  • Tiêu đề chưa rõ ràng
    • Cách diễn đạt "no dependency" có thể gây hiểu nhầm
  • Trước đây đã làm công việc tương tự nhưng hiệu năng không đạt kỳ vọng
    • Cần benchmark cho bản triển khai bằng Rust
    • Việc triển khai suy luận LLM có thể trở thành "hello world!" mới cho lập trình viên
  • Hỗ trợ Metal/Cuda là điều thiết yếu
  • Đánh giá cao sự nhiệt huyết của cộng đồng Rust
  • Không rõ liệu các bản triển khai này có đều phụ thuộc vào CPU hay không
  • Cần so sánh với các dự án khác
    • Nếu hỗ trợ mô hình Vision thì sẵn sàng thử