30 điểm bởi xguru 2023-11-14 | 5 bình luận | Chia sẻ qua WhatsApp
  • Stack Rust+WASM có thể trở thành một lựa chọn thay thế mạnh mẽ cho Python trong suy luận AI
    • So với Python, ứng dụng Rust+Wasm chỉ có kích thước bằng 1/100, nhanh hơn 100 lần, và có thể chạy an toàn ở mọi nơi với tăng tốc phần cứng toàn diện mà không cần thay đổi mã nhị phân
    • Rust là ngôn ngữ của AGI
  • Thử viết một chương trình Rust đơn giản để chạy suy luận LLama2 ở tốc độ native
    • Sau khi biên dịch sang Wasm, tệp nhị phân chỉ còn 2MB nhưng vẫn hoàn toàn portable sang các bộ tăng tốc phần cứng dị chủng
    • Ngoài ra, runtime Wasm (WasmEdge) còn cung cấp môi trường thực thi bảo mật an toàn cho môi trường cloud. Nó hoạt động trơn tru với các công cụ container để điều phối và chạy ứng dụng portable trên nhiều loại thiết bị khác nhau

Tại sao không phải Python?

  • Các LLM như llama2 thường được huấn luyện bằng Python (ví dụ: PyTorch, Tensorflow, JAX)
  • Nhưng dùng Python cho các ứng dụng suy luận, vốn chiếm khoảng 95% khối lượng tính toán AI, là một sai lầm lớn
  • Các gói Python có phụ thuộc phức tạp. Việc thiết lập và sử dụng rất khó khăn
  • Phụ thuộc Python rất đồ sộ. Docker image cho Python hoặc PyTorch thường có dung lượng vài GB hoặc hàng chục GB, đây là vấn đề đặc biệt nghiêm trọng khi chạy suy luận AI trên server hoặc thiết bị edge
  • Python là một ngôn ngữ rất chậm. Nó có thể chậm hơn tới 35.000 lần so với các ngôn ngữ biên dịch như C, C++, Rust
  • Vì Python chậm, phần lớn workload thực tế phải được ủy thác cho các shared library native bên dưới lớp wrapper Python
    • Do đó, ứng dụng suy luận Python rất phù hợp để làm demo, nhưng lại rất khó chỉnh sửa sâu bên trong để đáp ứng các yêu cầu riêng của doanh nghiệp
    • Vì phụ thuộc nặng vào thư viện native và việc quản lý phụ thuộc phức tạp, rất khó port chương trình AI bằng Python sang nhiều thiết bị khác nhau trong khi vẫn tận dụng được các đặc tính phần cứng riêng của từng thiết bị
  • Các gói Python thường dùng trong toolchain LLM thường xung đột trực tiếp với nhau
  • Chris Lattner, người nổi tiếng với LLVM, TensorFlow và ngôn ngữ Swift, đã có một cuộc phỏng vấn rất hay trên podcast startup tuần này, trong đó ông giải thích vì sao Python rất phù hợp để huấn luyện mô hình nhưng lại là lựa chọn sai cho ứng dụng suy luận

Ưu điểm của Rust+Wasm

  • Stack Rust+Wasm cung cấp một hạ tầng điện toán đám mây thống nhất trải dài từ thiết bị, edge cloud, server on-premise đến public cloud
  • Đây là một lựa chọn thay thế mạnh mẽ cho stack Python dành cho ứng dụng suy luận AI, và việc Elon Musk gọi Rust là ngôn ngữ của AGI cũng không có gì đáng ngạc nhiên
  • Siêu nhẹ: ứng dụng suy luận chỉ có 2MB bao gồm mọi phụ thuộc. Con số này còn chưa đến 1% kích thước của một container PyTorch điển hình
  • Rất nhanh: mang lại tốc độ native C/Rust cho mọi phần của ứng dụng suy luận như tiền xử lý, phép toán tensor và hậu xử lý
  • Portable: có thể chạy cùng một ứng dụng bytecode Wasm trên mọi nền tảng điện toán chính hỗ trợ tăng tốc phần cứng dị chủng
  • Dễ thiết lập, phát triển và triển khai: không còn phụ thuộc phức tạp. Có thể dùng các công cụ tiêu chuẩn trên laptop để build một tệp Wasm duy nhất và triển khai ở bất kỳ đâu
  • An toàn và hỗ trợ cloud: runtime Wasm được thiết kế để cô lập mã người dùng không đáng tin cậy. Runtime Wasm có thể được quản lý bằng công cụ container và dễ dàng triển khai lên các nền tảng cloud-native

Demo suy luận bằng Rust

  • Được viết bằng 40 dòng mã Rust và biên dịch sang Wasm
  • Khi đã có bytecode Wasm, có thể triển khai lên bất kỳ thiết bị nào hỗ trợ runtime WasmEdge
  • Plugin WasmEdge GGML dựa trên llama.cpp sẽ tự động tận dụng tăng tốc phần cứng của thiết bị để chạy mô hình llama2

Các bước tiếp theo

  • Bộ công cụ WasmEdge GGML hiện đã có thể sử dụng và thực tế đang được các khách hàng cloud-native dùng, nhưng vẫn còn ở giai đoạn đầu
  • Nếu bạn quan tâm đến việc đóng góp cho dự án mã nguồn mở và định hình hướng đi của hạ tầng suy luận LLM trong tương lai, dưới đây là một số hạng mục có thể tham gia
    • Bổ sung plugin GGML cho nhiều phần cứng và nền tảng OS hơn: như TPU trên Linux và Windows, ARM NPU và các chip AI chuyên dụng khác
    • Hỗ trợ nhiều cấu hình llama.cpp hơn: hiện tại đã hỗ trợ truyền một số tùy chọn cấu hình từ Wasm sang plugin GGML, nhưng mục tiêu là hỗ trợ toàn bộ các tùy chọn mà GGML cung cấp
    • Hỗ trợ API WASI NN cho nhiều ngôn ngữ tương thích Wasm khác: đặc biệt là Go, Zig, Kotlin, JavaScript, C và C++

5 bình luận

 
gcback 2023-11-14

Cách tiếp cận thực tế nhất mà Apple, hiện đang lép vế trong AI, có thể chọn dường như là dùng một engine suy luận S/W được tối ưu như trong bài viết để tăng tốc bằng NPU của chip A trên iPhone, đồng thời đưa nguyên khối file foundation model vào iPhone.

Gần đây, trong giới học thuật và công nghiệp, quan điểm chủ đạo là hiệu năng AI phụ thuộc vào dữ liệu và fine-tuning hơn là kích thước, và cũng có nhiều đánh giá cho rằng hiệu năng fine-tuning của llama2 là khá tốt, nên tôi nghĩ việc liên tục phân phối các mô hình đã được huấn luyện tốt xuống edge device cũng hoàn toàn khả thi. Xét ở góc độ đó, chiến lược dồn tất cả vào iPhone có vẻ khá thực tế.

 
ragingwind 2023-11-14

WASM nổi đến vậy sao? Nhưng chẳng phải nên so sánh Python với Mojo thì đúng hơn sao?

 
freedomzero 2023-11-14

Tôi đồng ý. Có thể xem Mojo vẫn đang ở giai đoạn thử nghiệm.

 
cosine20 2023-11-14

Mojo vẫn chưa được phát hành chính thức, nhưng Rust đã là một ngôn ngữ khá trưởng thành và đang thay thế nhiều phần trong môi trường sản xuất.

 
xguru 2023-11-14

GN⁺: Chạy suy luận Llama2 nhanh và có tính di động trên các edge dị chủng
Hãy tham khảo thêm phần tóm tắt của GN⁺ và cả các bình luận trên Hacker News.