Hacker News Nổi bật (buzzing.cc bản dịch tiếng Trung)
88

Mô hình

Needle2: Mô hình ngôn ngữ 14MB tối ưu cho thiết bị di động và robot

(giờ Việt Nam)

Tóm tắt AI

Needle2 là mô hình mã nguồn mở 45M tham số, được thiết kế chuyên biệt cho việc gọi công cụ và xử lý dữ liệu trên các thiết bị biên như điện thoại, thiết bị đeo và nhà thông minh với dung lượng cực nhẹ.

Bản dịch AI

Needle 2 - The 14 MB Agentic LLM for Tiny Devices | Cactus

Hôm nay, chúng tôi ra mắt Needle 2: một mô hình mã nguồn mở với 45 triệu tham số dành cho việc gọi công cụ (tool calling), sử dụng thiết bị và trích xuất dữ liệu có cấu trúc. Toàn bộ mô hình chỉ là một tệp nhị phân 14MB, chạy một phiên làm việc đầy đủ trong 28MB RAM. Nó được xây dựng dựa trên các phát hiện từ Simple Attention Network của chúng tôi, được nén xuống định dạng CQ2-bit bằng Cactus Quants và tích hợp sẵn vào engine của riêng nó.

Trên các tiêu chuẩn đánh giá về gọi công cụ và sử dụng thiết bị di động, Needle 2 đạt kết quả ngang ngửa với các mô hình nhỏ khác như FunctionGemma 270M, LFM2.5 230M và Apple FM, trong khi kích thước nhỏ hơn từ 5 đến 70 lần và sử dụng định dạng 2-bit so với f16 của các mô hình kia. Needle đạt tốc độ giải mã 500 token/giây trên Raspberry Pi 5, từ 400–1.500 token/giây trên các thiết bị VR như Meta Quest 3S và Apple Vision Pro, và dao động từ 300–700 trên các điện thoại dưới 200 USD như dòng Samsung A-Series. Với mức RAM phiên làm việc cao nhất khoảng 28MB, Needle có thể chạy trên các vi điều khiển đời mới như ESP32-S3.

Playground cho phép bạn thử nghiệm Needle cho các thiết bị đeo, robot, nhà thông minh, điện thoại và ô tô. Needle được cấp phép theo Apache 2.0, với trọng số (weights) trên Hugging Face; kho lưu trữ (repo) sẽ giúp bạn bắt đầu chạy.

45 triệu tham số

800+ tok/s trên Pi 5 (prefill)

500+ tok/s trên Pi 5 (giải mã)

Nén CQ2-bit

Kích thước tệp 14 MB

RAM phiên làm việc 28 MB

Cam kết của chúng tôi

Mang AI lên thiết bị cho các thiết bị dưới 200 USD: Edge AI gần đây thường được hiểu là Mac và PC, nhưng thực tế "edge" chủ yếu là phần cứng giá rẻ: hơn 21 tỷ thiết bị IoT được kết nối so với khoảng 1,5 tỷ PC, và ở các thị trường mới nổi, hầu hết điện thoại được bán với giá dưới 200 USD. Nếu tính cả điện thoại giá rẻ, Raspberry Pi, vi điều khiển, thiết bị đeo, robot nhỏ như Reachy Mini và các thiết bị nhà thông minh, thì khoảng bốn trong năm thiết bị edge có giá dưới 200 USD. Đó chính là phần cứng mà Needle nhắm tới: không GPU, không NPU, chỉ với vài trăm MB RAM.

Gọi hàm & Sử dụng thiết bị: Việc bật đèn không cần một mô hình tiên phong (frontier model). Một chiếc đồng hồ, một ngôi nhà, một robot: mỗi thứ đều đã bộc lộ khả năng của mình dưới dạng các hàm với các tham số được định kiểu, vì vậy phần khó duy nhất là ánh xạ một câu lệnh lộn xộn vào chúng: hàm nào, với giá trị nào. Theo cách đó, vấn đề không cần kiến thức thế giới hay văn xuôi mở, đó là lý do tại sao 45 triệu tham số là đủ trong khi chat cần hàng tỷ. Công thức nhỏ gọn hơn đó chính là cam kết mà mọi thứ khác đều tuân theo.

Trích xuất & Đầu ra có cấu trúc: Schema (lược đồ) chính là giao diện, và cùng một công thức đó bao phủ cả các tài liệu: một schema cộng với một đoạn văn sẽ trả về các trường được định kiểu, một trường enum là một bộ phân loại, một trường mảng thu thập danh sách trong một lần gọi. Chúng tôi thực thi điều này bằng một hợp đồng, không phải quy ước: mỗi lượt đều được trả lời bằng một "call envelope", lệnh gọi trống là sự từ chối, và một ngữ pháp cấp byte được biên dịch từ các schema đã khai báo sẽ ràng buộc mọi token. Ngữ pháp mang cú pháp, vì vậy tất cả 45 triệu tham số đều tập trung vào việc chọn hàm và căn cứ vào các đối số trong từ ngữ của người dùng.

Hợp tác Edge-Cloud: Không có mô hình nhỏ nào bao phủ được mọi thứ, vì vậy Needle sẽ thông báo thay vì đoán: mỗi phản hồi đều mang một điểm tin cậy (confidence score) đã học được, và các yêu cầu lạc đề sẽ trả về lệnh gọi trống. Trên ngưỡng của bạn, hãy thực hiện; dưới ngưỡng đó, hãy hỏi lại hoặc chuyển lên cloud. Hầu hết các yêu cầu trên thiết bị là điều khiển thông thường, vì vậy việc chuyển lên cloud rất hiếm và lộ trình mặc định vẫn đảm bảo tính riêng tư, tức thì và miễn phí.

Lượng tử hóa 2-bit không mất dữ liệu: Các mô hình nhỏ thường bị hỏng khi lượng tử hóa hậu kỳ (post-hoc), vì vậy chúng tôi không bao giờ lượng tử hóa hậu kỳ: Needle 2 được huấn luyện với Cactus Quants từ tiền huấn luyện đến hậu huấn luyện, bao gồm cả trọng số, kích hoạt và KV cache. Mô hình 2-bit mà bạn triển khai chính là mô hình đã được huấn luyện. Đó là cách đưa 45 triệu tham số vào 14MB mà không mất mát gì về hiệu năng.

Đồng thiết kế mô hình & Suy luận: Mọi lựa chọn kiến trúc đều được kiểm chuẩn trên phần cứng mục tiêu trước khi được áp dụng, và sản phẩm bàn giao là một cặp, không chỉ là trọng số: một tệp nhị phân C++ duy nhất không phụ thuộc vào thư viện ngoài, tự dò tìm CPU khi khởi động và chọn các kernel của nó, với mô hình, tokenizer và trình biên dịch ngữ pháp được đóng gói bên trong. Một artifact duy nhất chạy từ Cortex-M đến x86 và WebAssembly. Không cần cài đặt và không cần tải xuống.

Tinh chỉnh trên Mac/PC của bạn: Mỗi sản phẩm đều có từ vựng công cụ riêng, và một mô hình 45 triệu tham số đủ nhỏ để huấn luyện lại ngay tại nơi nó chạy: repo và gói python cho phép tinh chỉnh và kiểm tra trên máy tính của bạn chỉ trong vài phút đến vài giờ. Hãy xuất xưởng một Needle biết sử dụng các công cụ trên thiết bị của bạn, thay vì một trợ lý chung chung.

Sản xuất

Needle sẵn sàng cho sản xuất đối với các sản phẩm yêu cầu dung lượng RAM tối thiểu, độ trễ thấp, tính riêng tư và độ tin cậy khi ngoại tuyến. Pebble - đơn vị tiên phong trong ngành thiết bị đeo hiện đại - chạy nó cục bộ trong ứng dụng Index 01 để chuyển các yêu cầu bằng giọng nói thành hành động mà không cần kết nối mạng.

Pebble Index Ring không có màn hình. Vì vậy, khi bạn nói với nó, hành động phải được thực hiện ngay lập tức, mọi lúc, dù có hay không có kết nối internet. Chúng tôi chạy Cactus Needle cục bộ trong ứng dụng thay vì dựa vào cloud. Dung lượng của mô hình rất nhỏ và hiệu suất không bao giờ làm chúng tôi thất vọng.

Kiến trúc

Needle 2 được tiền huấn luyện trên tập dữ liệu 115 tỷ token độc quyền và hậu huấn luyện trên 38 tỷ token với các dấu vết suy luận nhỏ gọn và thiết kế phân bổ tập dữ liệu cẩn thận. Để so sánh quy mô: LFM2.5-230M được tiền huấn luyện trên 19 nghìn tỷ token, gấp khoảng 120 lần tổng số của Needle, và đánh giá dưới đây cho thấy cả hai có kết quả ngang ngửa. Mỗi thành phần tồn tại để đạt được khả năng mà không tốn băng thông. Hadamard MLP thay thế các phép chiếu dense thông thường bằng biến đổi Walsh cố định và các đường chéo đã học, vì vậy việc trộn kênh vốn chiếm ưu thế trong việc đọc trọng số của mô hình nhỏ hầu như không tốn tham số nào cả. Engram chuyển kiến thức thế giới ra khỏi stack vào các bảng n-gram băm được đọc vài hàng mỗi token: dung lượng gần như miễn phí tại thời điểm giải mã, điều này rất quan trọng trên các thiết bị mà mỗi megabyte đọc từ flash đều ảnh hưởng đến độ trễ và pin. Các luồng residual đa làn (multi-lane) mang lại cho mạng 27 lớp, rộng 512 sự linh hoạt định tuyến của một mạng rộng hơn nhiều, với chi phí chỉ là vài phép nhân chấm (dot product) mỗi lớp thay vì tăng thêm attention hoặc khối lượng MLP.

Hệ thống bộ nhớ được thiết kế ngược từ các thiết bị có RAM cố định. Attention sử dụng cửa sổ trượt 256-token nên KV cache bị giới hạn bất kể phiên làm việc kéo dài bao lâu, và prompt hệ thống cùng các khai báo công cụ được ghim như những "bể chứa" vĩnh viễn để thứ duy nhất mà một mô hình gọi công cụ không bao giờ được quên—các công cụ của nó—về mặt cấu trúc không thể bị loại bỏ. Bản thân cache được huấn luyện với QAT, và trọng số được lưu trữ trong Cactus Quants ở mức trung bình 2-bit mỗi trọng số. Kết quả là các quyết định về chất lượng và quyết định triển khai được tách biệt: một mô hình đã huấn luyện, được chuyên biệt hóa theo bất kỳ độ chính xác và cửa sổ nào mà thiết bị mục tiêu có thể đáp ứng.

Engine đạt được tốc độ nhờ vào những gì nó từ chối tính toán. Trọng số không bao giờ giải nén vào RAM: các mã 2-bit được mở rộng bên trong các thanh ghi vector, hợp nhất thành các phép nhân chấm số nguyên, vì vậy bộ nhớ thường trú giữ nguyên kích thước blob và lộ trình số học là int8 từ đầu đến cuối—bao gồm cả kích hoạt, KV cache và các bảng định tuyến làn. Ngữ pháp là một sự tối ưu hóa, không chỉ là một sự đảm bảo: vì bộ khớp (matcher) biết token nào là hợp lệ trước khi các logit tồn tại, engine chỉ tính toán điểm đầu ra cho các hàng ứng viên, bỏ qua tới 98% phép chiếu từ vựng trên các token cấu trúc, và bỏ qua hoàn toàn trên các bước mà đầu ra đã bị ép buộc. Một tệp nhị phân vạn năng dò tìm CPU khi khởi động và tự chọn tầng kernel của nó—SDOT, NEON, AVX2, RISC-V vectors, wasm SIMD hoặc scalar—và nhóm luồng (thread pool) chạy qua các phần tuần tự ngắn của một token thay vì ở trạng thái nghỉ, điều này riêng nó đã gần như tăng gấp đôi tốc độ giải mã. Không có điều nào trong số này làm thay đổi một đầu ra duy nhất: mọi thủ thuật đều chính xác hoặc được xác thực từng token so với lộ trình tham chiếu.

Tất cả cuối cùng đều là vấn đề về năng lượng. Trên silicon của thiết bị, việc di chuyển một byte từ flash hoặc DRAM tốn kém hơn hàng bậc so với một phép nhân-cộng (multiply-accumulate), vì vậy ngân sách quan trọng là FLOPs trên mỗi token và byte trên mỗi token cộng lại. Kiến trúc này cắt giảm cái đầu tiên: một transformer thông thường với độ rộng và sâu của Needle tiêu tốn 164 MFLOPs mỗi token, và ngay cả khi bị ép xuống số lượng tham số của Needle cũng tiêu tốn 87, vì mọi tham số nó sở hữu đều phải được thực hiện thông qua matmul. Needle chỉ tiêu tốn 70, và giữ lại một phần năm số tham số dưới dạng bộ nhớ được thu thập không tốn bất kỳ phép tính số học nào. Tệp nhị phân cắt giảm cái thứ hai, như phần engine đã chỉ ra: không có gì được tái tạo, số học giữ ở mức int8 từ đầu đến cuối, và ngữ pháp cắt giảm tính toán ngay lập tức, vì vậy việc giải mã một token đọc tối đa 14MB blob một lần, và trên các token cấu trúc thì ít hơn đáng kể. Đây là thứ tạo nên tuổi thọ pin. Ngay cả trên một chiếc điện thoại cao cấp, một trợ lý luôn bật cũng phải sống trong ngân sách năng lượng; mỗi MFLOP là milliwatt-giờ, và Needle tiêu tốn ít hơn từ 7 đến 85 lần số đó trên mỗi token so với các mô hình mà nó được so sánh.

Tính toán trên mỗi token

Bộ nhớ phiên làm việc bị giới hạn là thứ giúp các vi điều khiển có thể tiếp cận được. Vì cửa sổ trượt giới hạn trạng thái, RAM của Needle 2 là một mức trần cố định 28MB, không phải là một đường cong tăng theo độ dài cuộc hội thoại. Điều đó phù hợp với các linh kiện lớp MCU có RAM ngoài, chẳng hạn như ESP32-P4 với 32MB PSRAM, hoặc các bo mạch STM32H7 và NXP i.MX RT với SDRAM. Engine biên dịch đơn luồng cho bare metal và được cung cấp dưới dạng thư viện tĩnh cho Cortex-M4, M7 và M55.

Đánh giá

Chúng tôi đánh giá trên năm tiêu chuẩn gọi hàm công khai: Mobile Actions của Google, DroidCall, các bài kiểm tra trong miền và ngoài miền của Seal-Tools, và BFCL v4 single-turn. Điểm số được xếp hạng theo khớp chính xác nghiêm ngặt: một hàng chỉ đạt nếu tên hàm, thứ tự gọi và mọi giá trị đối số đều khớp. Tất cả các con số của Needle 2 được đo lường từ đầu đến cuối thông qua engine C++ được cung cấp trong cấu hình sản xuất: trọng số CQ2-bit, bật truy xuất công cụ và cửa sổ KV trượt 256-token. Không có gì được nới lỏng để làm tiêu chuẩn; các con số phản ánh chính xác engine mà thiết bị chạy, bao gồm cả việc loại bỏ cửa sổ. Các mô hình cơ sở (baselines) chạy các checkpoint đã phát hành dưới vLLM ở ngữ cảnh đầy đủ, và Apple FM chạy trên thiết bị.

Hai sự bất đối xứng làm cho việc so sánh này trở nên khó khăn, và chúng tôi nêu rõ cả hai ngay từ đầu. Độ chính xác: các mô hình cơ sở cố tình giữ ở mức f16, vì lượng tử hóa hậu huấn luyện thông thường xuống 2 bit sẽ làm sụp đổ các mô hình chưa bao giờ được huấn luyện để nén mạnh, trong khi Cactus Quants được tích hợp vào quá trình huấn luyện của Needle ngay từ đầu. Sự chênh lệch đó có lợi cho các mô hình cơ sở. Phạm vi: Needle được huấn luyện đặc biệt cho việc gọi công cụ tác nhân (agentic tool calling) và không gì khác, trong khi mọi mô hình cơ sở đều là mô hình ngôn ngữ tổng quát mang theo khả năng chat, văn xuôi và kiến thức thế giới bên cạnh việc gọi công cụ. Sự chênh lệch đó có lợi cho Needle. Không có cách nào rõ ràng để cân bằng cả hai cùng một lúc, vì vậy chúng tôi không cố gắng. Các bảng trả lời một câu hỏi hẹp: mô hình nào thực thi các lệnh gọi công cụ chính xác trong ngân sách trên thiết bị. Chúng tôi chấp nhận sự chênh lệch; nó vẫn vẽ nên bức tranh mà chúng tôi dự định.

Mobile Actions (961 hàng)

DroidCall test split (200 hàng)

Seal-Tools in-domain (700 hàng)

Seal-Tools out-of-domain (654 hàng)

Needle không được huấn luyện để gọi hàm tổng quát: tập dữ liệu của nó là các hành động trên thiết bị tiêu dùng—nhà thông minh, di động, thiết bị đeo, TV, ô tô—cộng với trích xuất có cấu trúc, và các bề mặt API doanh nghiệp và mục đích chung của BFCL, bao gồm các danh mục SDK Java và JavaScript, nằm hoàn toàn ngoài phân phối đó. Tuy nhiên, nó vẫn ngoại suy: trên các lệnh gọi đơn giản bằng Python, nó đạt kết quả trong phạm vi một điểm so với FunctionGemma, một mô hình lớn hơn gấp sáu lần được huấn luyện chính xác cho tác vụ này, và nó duy trì tỷ lệ hình thành tốt 93,4 trên tất cả 3.641 hàng. Khoảng cách tập trung ở nơi dữ liệu huấn luyện của nó chưa từng có: Java, JavaScript và các danh mục gọi đa nhiệm song song.

BFCL v4 single-turn (3.641 hàng)

Cactus
Đọc bài gốc

Bài viết được AI dịch và tổng hợp tự động từ Hacker News Nổi bật (buzzing.cc bản dịch tiếng Trung). Liên kết bài gốc ở phía trên. Dữ liệu đồng bộ qua API công khai được ghi nguồn tại AI HOT (canonical) ↗. AIHOT.vn luôn dẫn nguồn đầy đủ — nếu bạn thấy điểm cần chỉnh sửa, hãy gửi ý kiến tại trang phản hồi.