Needle - Mô hình 26 triệu tham số chưng cất từ Gemini Tool Calling
(github.com/cactus-compute)- Mô hình sử dụng công cụ (tool use) mã nguồn mở với 26 triệu tham số, được thiết kế để chạy trên các thiết bị tiêu dùng cỡ nhỏ như smartphone, smartwatch và kính thông minh
- Xuất phát từ quan sát rằng gọi công cụ không phải là suy luận mà là truy xuất và lắp ghép (truy vấn → khớp tên công cụ → trích xuất đối số → xuất JSON), nên không cần mô hình lớn
- Áp dụng kiến trúc Simple Attention Network, toàn bộ mô hình chỉ gồm attention và gating, hoàn toàn không có MLP
- Encoder 12 tầng + Decoder 8 tầng, kết nối bằng cross-attention
- d=512, 8H/4KV, BPE=8192
- Được tạo ra bằng cách chưng cất (distill) từ Gemini 3.1, tiền huấn luyện 200B token trên 16 TPU v6e (27 giờ), sau đó huấn luyện tiếp với 2B token dữ liệu function calling (45 phút)
- Trong production, đạt tốc độ prefill 6,000 tok/s, decode 1,200 tok/s trên Cactus inference engine
- Trên benchmark function calling một lần gọi, vượt FunctionGemma-270M, Qwen-0.6B, Granite-350M, LFM2.5-350M
- Tuy vậy trong môi trường hội thoại, các mô hình đó vẫn có tính đa dụng rộng hơn
- Có thể khái quát sang mọi tác vụ truy cập tri thức có cấu trúc bên ngoài mà không cần FFN (RAG, sử dụng công cụ v.v.)
- Nếu thông tin thực tế được cung cấp trong đầu vào, không cần ghi nhớ nó trong trọng số FFN
- Với lệnh
needle playground, có thể thử công cụ riêng trong web UI và fine-tune một cú nhấp chuột; hỗ trợ fine-tune cục bộ trên Mac/PC - Bộ dữ liệu huấn luyện được tổng hợp bằng Gemini, gồm 15 danh mục công cụ như bộ đếm thời gian, nhắn tin, điều hướng, nhà thông minh
- Giấy phép MIT, dựa trên Python, công khai đầy đủ trọng số và quy trình tạo bộ dữ liệu trên Hugging Face
2 bình luận
Tiếng Hàn có ổn không..?
Ý kiến trên Hacker News
Tò mò không biết có ví dụ hay dữ liệu nào về khả năng phân biệt của mô hình dùng công cụ không
Ví dụ kiểu như “thời tiết ở San Francisco thế nào”, còn công cụ được truyền vào là cỡ
tools='[{"name":"get_weather","parameters":{"location":"string"}}]'Hơn 10 năm trước tôi từng làm một thứ[1] có thể xử lý bài toán này bằng SPARQL và knowledge graph
Điều tôi thực sự tò mò là nó xử lý độ mơ hồ tốt đến mức nào
Nếu gửi một tin nhắn như “mai 10 giờ gặp nhau uống cà phê nhé” và một lệnh như “lưu cái này lại”, liệu nó có thể chọn hành động “thêm lịch” trong số vài chục công cụ khả dĩ, dù không đến hàng trăm, hay không
[1] https://github.com/nlothian/Acuitra/wiki/About
Prompt là “tôi phải báo với sếp là mình sẽ đến muộn”, và kết quả là
20mins [{"name":"set_timer","arguments":{"time_human":"20 minutes"}}]Nó không dùng công cụ email, và tôi cũng thử hỏi theo 2–3 cách khác nhưng kết quả tương tự
Tò mò không biết có lo ngại phản ứng từ Google không
Được biết Google phản ứng với các nỗ lực chưng cất bằng “các biện pháp phòng vệ chủ động theo thời gian thực có thể làm giảm hiệu năng của mô hình học sinh”
Nếu bị phát hiện, có thể họ đã cố tình cho ăn một biến thể Gemini ngu hơn nhưng vẫn có vẻ hợp lý: https://cloud.google.com/blog/topics/threat-intelligence/dis...
Tuy vậy, mô hình này nhỏ và chỉ tập trung vào dùng công cụ, nên về lượng token tiêu thụ có lẽ còn chưa chạm tới mức của những người muốn chưng cất cả một mô hình đầy đủ
Có thể sắp trở nên khả thi để tạo những thứ như chương trình dòng lệnh cho phép chỉ định tham số một cách chọn lọc bằng ngôn ngữ tự nhiên
Tất nhiên sẽ có nhiều người phản đối việc thêm 14MB và thêm tính toán chỉ để “parse”, và nếu ai cũng bắt đầu làm vậy thì có thể sẽ khá tệ
Dù vậy, việc giờ đây điều đó đã khả thi thật sự rất thú vị
Có thể đóng gói kèm một mô hình được fine-tune để hiểu cách dùng chương trình
Ví dụ
> toolcli what can you dosẽ chạytoolcli --help summary, còntoolcli add tom to teamfutz groupsẽ thànhtoolcli --gadd teamfutz tomTuy nhiên bài toán cốt lõi vẫn còn đó
Sẽ hay nếu công khai demo trực tiếp của “needle playground”
Nó nhỏ như vậy thì chi phí chạy ở đâu đó trên một VPS nhỏ có vẻ cũng khá rẻ
Dù vậy ai cũng có thể làm được, và chạy ngay trên laptop cũng rất dễ
Tôi cũng sẽ thử hướng VPS
Nhận định “các tác vụ truy xuất không cần FFN” khá thú vị
Nếu tri thức nằm trong ngữ cảnh thì gần như đó là lập luận rằng trọng số FFN là dư thừa cho tác vụ đó
Tò mò không biết điều này có khái quát được sang gọi công cụ nhiều lượt nơi phải theo dõi trạng thái qua nhiều lần gọi hay không, hay là sẽ vỡ ở đó
Gọi một lần là trường hợp dễ
Thú vị, và cũng khớp với quan sát tôi từng thấy khi dùng Claude Code thời kỳ đầu
Sonnet thường gọi công cụ rất nhanh để thu thập thêm ngữ cảnh, còn Opus thì hay suy luận lâu hơn với ngữ cảnh sẵn có để giải quyết vấn đề
Điều này tạo ra nhiều hàm trùng lặp và làm chậm phát triển, nhưng ở các model mới như GPT-5.5 và Opus 4.6 thì có vẻ vấn đề này đã giảm bớt
Kết luận của tôi là model “ngu hơn”, tức nhỏ hơn, có thể lại tốt hơn để làm lớp vỏ thực thi agent, hoặc ít nhất là thực tế hơn khi chạy rẻ và nhanh cho nhiều bài toán
Tôi không thấy Gemini đặc biệt giỏi ở những chuỗi gọi công cụ dài
Sẽ thú vị nếu chưng cất từ các dấu vết có chuỗi gọi công cụ dài giữa các truy vấn người dùng, giống như các phiên Codex hay Claude Code thực tế
Cá nhân tôi muốn có một mô hình lớn hơn chút, nhưng vẫn chạy dễ dàng trên thiết bị như M2 MacBook Pro 32GB, với mục tiêu chính là học tăng cường cho gọi công cụ
Các mô hình trọng số mở như Kimi hay Qwen đang tiến gần tới đó, nhưng việc lượng tử hóa cần thiết để vừa với thiết bị nhỏ có vẻ làm giảm hiệu năng khá nhiều
Trào lưu framework agent hiện nay là ngớ ngẩn, và theo tôi phần lớn tồn tại để tăng doanh thu cho các công ty LLM
LLM nói chung có ích khá hạn chế, nhưng khi kết hợp với một lần dùng công cụ thì trở nên hữu ích và đáng tin cậy hơn nhiều
Tôi tự xây một bộ công cụ rất cụ thể cho các tác vụ riêng trên API openrouter
Kiểu nhấn nút để LLM làm một việc hữu ích, chứ không phải nhấn nút rồi hy vọng LLM chạy vòng lặp gọi công cụ trong 5 phút và xử lý đúng thứ tự
Nếu cần nhiều lần gọi công cụ, tôi nối chúng một cách tất định trong code
Có thể kiểm tra đầu ra của A rồi mới đi tiếp sang B hoặc C, nên đáng tin hơn nhiều, đồng thời hiệu quả hơn về thời gian và token
Tôi xem các vòng lặp agent gần như là một trò lừa khổng lồ
Tôi không hiểu vì sao chúng ta lại phải cố xoay xở để làm cho nó “chạy được” bằng mọi giá
Google, MS, Meta, OpenAI và các bên khác giờ còn lén gọi công cụ của họ là “Intelligence”, thậm chí chẳng phải “Artificial Intelligence”, vậy thì tại sao nó không thông minh và tại sao nó không hoạt động
Hơn 1 nghìn tỷ USD đã được đổ vào mà chúng ta vẫn phải nghĩ ra những câu thần chú prompt và cấu hình tối ưu chỉ để một máy tạo rác xuất ra thứ gì đó nửa vời còn tạm dùng được
Trong khi một số lãnh đạo công nghệ còn công khai đe dọa bắt chúng ta quy phục trong những viễn cảnh “nền văn minh” kỳ quặc của họ
Tôi nghĩ bộ não tốt hơn của chúng ta còn có chỗ để dùng, thay vì tự hạ mình thành trợ tá bất lực cho một thần dụ ma thuật
Kết quả thí nghiệm Cactus cho thấy “chừng nào mô hình còn phụ thuộc vào nguồn tri thức bên ngoài thì có thể loại bỏ hoàn toàn MLP khỏi mạng transformer” nghe rất thú vị
Tình cờ là hôm nay một sinh viên của tôi cũng vừa trình bày kết quả nghiên cứu xác nhận điều này
Khi loại bỏ MLP khỏi Qwen, mô hình vẫn còn làm được các tác vụ biến đổi trên đầu vào, nhưng mất tri thức
Sự khác biệt giữa M và B quá dễ gây nhầm
Tôi đề xuất viết là 0.026B
Dù các nhà phát triển LLM ngày nay quen hơn với mô hình hàng tỷ tham số, cách ghi này vẫn hợp lệ
Rất đáng mong đợi, làm tốt lắm
Các model edge của Gemma4 từng được hứa hẹn là tốt cho use case agent, nhưng trong mọi bài test tôi thử thì thực sự rất thất vọng
Nó thất bại ngay cả ở những kịch bản dùng công cụ cơ bản nhất
Tò mò không biết bạn đã chạy benchmark dùng công cụ cho Needle chưa, hoặc có kế hoạch làm không
Nếu có thì sẽ rất hay nếu thêm kết quả vào repo
Tôi vừa thử đặt báo thức và thêm đồ vào danh sách mua sắm, và nó làm tốt hơn Siri