1 điểm bởi theoverstructure 3 giờ trước | 1 bình luận | Chia sẻ qua WhatsApp

LLM đang ngày càng xa tầm tay cá nhân, và DRIFT đối phó bằng cách chia một LLM để chạy trên nhiều thiết bị cá nhân.

DRIFT là một dự án mã nguồn mở chạy một LLM bằng cách chia nó theo từng lớp trên nhiều thiết bị cá nhân.

Ngày nay, khi một lập trình viên cá nhân muốn tự tay thử nghiệm AI, cả hai phía đều không dễ dàng. Các mô hình hàng đầu như Fable5 ngày càng bị hạn chế truy cập, còn các mô hình cục bộ, trái với câu nói “có thể chạy trên máy tính của tôi”, trên thực tế vẫn đòi hỏi khá nhiều bộ nhớ GPU và công sức thiết lập. Dù mô hình có mở, năng lực chạy mô hình đó ở quy mô đủ lớn vẫn tập trung vào một số phần cứng và nền tảng nhất định. Rốt cuộc, điều này tạo ra một môi trường AI mang tính tập trung hóa và gây ra giới hạn lớn đối với mức độ cá nhân có thể tiếp cận công nghệ mới nhất.

Câu hỏi mà DRIFT đặt ra rất đơn giản.

Nếu một máy không thể gánh toàn bộ mô hình, liệu nhiều thiết bị cá nhân có thể cùng chạy một mô hình hay không?

DRIFT dùng Apple GPU (MPS) trên Mac cùng với NVIDIA GPU (CUDA) trên PC Windows/Linux để chạy một mô hình. Mô hình được tách theo từng lớp decoder, và giữa các node chỉ gửi hidden state, chứ không gửi toàn bộ mô hình hay KV cache. Việc giao tiếp được xử lý bằng một giao thức byte trung lập dựa trên TCP + msgpack, thay vì đối tượng PyTorch hay CUDA handle.

Các tính năng chính như sau.

  • Tự động chia một LLM theo từng lớp decoder
  • Chạy kết hợp Mac MPS và NVIDIA CUDA
  • Sử dụng TCP + msgpack cho giao tiếp giữa các node
  • Giảm nghẽn băng thông ở head node bằng chế độ chuỗi P2P
  • Đường truyền được mã hóa dựa trên X25519, ChaCha20-Poly1305
  • Xác minh công việc của từng node bằng biên nhận chữ ký Ed25519
  • Failover dựa trên re-split + replay khi node chết giữa chừng
  • Cung cấp HTTP API tương thích OpenAI
  • Về lý thuyết có thể chia theo số lượng lớp decoder. Với Qwen mặc định, có thể chia một mô hình để chạy trên tối đa 28 máy; với Gemma, tối đa 35 máy; hiện tại điểm tối ưu thực tế là khoảng 2–4 máy

Các dự án giải quyết vấn đề tương tự gồm Exo và llama.cpp RPC. Exo có thể ghép các máy Apple Silicon lại với nhau để dùng như một cụm cục bộ, nhưng giao tiếp giữa các node bị gắn với phía MLX nên khó vượt ra ngoài hệ sinh thái Apple. llama.cpp RPC có thể tận dụng nhiều backend, nhưng đó là cách RPC gắn với runtime ggml/llama.cpp. Điểm khác biệt của DRIFT là nó nâng ranh giới giữa các node lên thành một giao thức byte trung lập, thay vì một runtime ML cụ thể. Vì vậy, dự án tập trung vào việc đưa những tổ hợp vốn khó đặt vào cùng một runtime phân tán, như Apple MPS và NVIDIA CUDA, vào trong một lần chạy mô hình duy nhất.

Phần triển khai của DRIFT nằm trên Python và PyTorch, nhưng hợp đồng giữa các node được thiết kế theo cách không phụ thuộc vào PyTorch. Việc tải và chạy mô hình tận dụng Hugging Face Transformers, safetensors, PyTorch MPS/CUDA, còn bên ngoài cung cấp API tương thích OpenAI dựa trên Starlette/Uvicorn. Giao tiếp nội bộ được bọc bằng framing msgpack và lớp mã hóa, với thiết kế nhằm tách biệt “chạy mô hình nào trên thiết bị nào” khỏi “các node trao đổi những byte nào với nhau”.

Lý do cá nhân tôi thấy dự án này thú vị là vì nó không bắt đầu câu chuyện “phi tập trung hóa AI” ngay từ kinh tế token hay các mạng lưới khổng lồ. Thứ cần có trước tiên là một tầng thực thi để các thiết bị cá nhân thực sự có thể tham gia vào một lần chạy mô hình. Cần có một cấu trúc có thể xác minh ai đã tính lớp nào, có thể khôi phục khi node rời đi, và không bị trói vào một nhà cung cấp hay trung tâm dữ liệu cụ thể; khi đó mới có thể xây dựng một mạng lưới lớn hơn ở phía trên.

DRIFT không phải là dự án đặt tốc độ lên hàng đầu. Ngược lại, ưu tiên của nó là độ chính xác. Dự án tập trung vào việc xác minh xem khi chạy phân tán, kết quả có giống với kết quả chạy trên một máy duy nhất hay không. Theo README, với Qwen2.5-1.5B-Instruct, dự án đã vượt qua nhiều cổng kiểm tra parity, và cũng bao gồm các thử nghiệm kết hợp Mac MPS với NVIDIA CUDA.

Trong bối cảnh các mô hình AI hàng đầu ngày càng đóng lại, còn AI cục bộ vẫn đòi hỏi phần cứng đắt tiền, DRIFT đặt ra một câu hỏi khá thực tế.

Khi các mô hình frontier ngày càng xa rời khách hàng cá nhân, liệu ta có thể gom tài nguyên của cá nhân lại để khuếch đại sức mạnh đó hay không?

GitHub: https://github.com/TaewoooPark/DRIFT

1 bình luận

 
theoverstructure 2 giờ trước

DRIFT là một dự án trước hết xem xét liệu có thể chia nhỏ và chạy chính xác một LLM duy nhất trên các thiết bị cá nhân dị chủng hay không, hơn là cạnh tranh về tốc độ!

Đặc biệt, khi so với Exo / llama.cpp RPC / Petals, tôi muốn xin ý kiến chuyên môn và phản hồi của mọi người về việc liệu điểm khác biệt có đủ thuyết phục hay không, cũng như những khía cạnh bổ sung mà môi trường thực tế yêu cầu khi chạy hỗn hợp MPS↔CUDA.