- DwarfStar 4 thu gọn llama.cpp để chỉ chạy DeepSeek-V4-Flash, giúp việc thử nghiệm LLM steering trên mô hình cục bộ trở nên dễ dàng hơn
- Steering là cách trích xuất chênh lệch kích hoạt của một khái niệm như “trả lời ngắn gọn” thành vector, rồi cộng nó vào cùng tầng trong lúc suy luận để thay đổi hành vi
- Steering đòi hỏi quyền truy cập vào trọng số hoặc kích hoạt nên mặc định phải chạy cục bộ; với người dùng API, đây là lĩnh vực chỉ các nhà cung cấp như OpenAI mới có thể làm được
- Nhiều điều chỉnh cơ bản vẫn dùng prompt đơn giản hơn, nhưng vẫn còn khả năng thay đổi các hành vi đã được học mà khó yêu cầu bằng prompt, như loại bỏ từ chối
- DeepSeek-V4-Flash và DwarfStar 4 có thể làm tăng số lượng thử nghiệm mã nguồn mở, và các ứng dụng thực tế có thể lộ diện trong vòng 6 tháng tới
DeepSeek-V4-Flash và DwarfStar 4
- DwarfStar 4 là dự án thu gọn llama.cpp để chỉ phục vụ việc chạy DeepSeek-V4-Flash, giúp việc thử nghiệm LLM steering trên mô hình cục bộ trở nên dễ dàng hơn
- DeepSeek-V4-Flash có thể là một mô hình cục bộ đủ tốt để cạnh tranh với năng lực coding dạng agent cấp thấp của các frontier model
- Vì steering cần truy cập vào trọng số hoặc kích hoạt của mô hình nên phải chạy cục bộ; sự xuất hiện của các mô hình như DeepSeek-V4-Flash tạo điều kiện để nhiều kỹ sư có thể tự mình thử nghiệm hơn
- antirez đã đưa steering vào DwarfStar 4 như một tính năng hạng nhất, nhưng ví dụ hiện tại vẫn gần với kiểu điều chỉnh “verbosity” ở mức đồ chơi, thứ cũng có thể tái tạo bằng prompt
- Bản phát hành đầu tiên của DwarfStar 4 xuất hiện 8 ngày trước, và điều đáng chú ý là tính năng steering này sẽ phát triển ra sao trong thời gian tới
Cách steering hoạt động
- Ý tưởng cơ bản của steering là trích xuất một khái niệm như “trả lời ngắn gọn” từ trạng thái nội bộ của mô hình, rồi tăng cường các kích hoạt số học cấu thành khái niệm đó trong lúc suy luận
-
Trích xuất steering vector đơn giản
- Có thể đưa cùng một tập 100 prompt vào mô hình hai lần: một lần với prompt bình thường, và lần còn lại với chuỗi bổ sung “respond tersely”
- Với mỗi cặp prompt, đo chênh lệch kích hoạt của mô hình; lấy một ma trận kích hoạt trừ đi ma trận còn lại sẽ cho ra steering vector
- Với một prompt bất kỳ, nếu cộng vector này vào cùng tầng kích hoạt đó thì có thể kỳ vọng mô hình sẽ trả lời súc tích hơn
- Các kích hoạt có thể đo được tồn tại ở nhiều điểm như sau attention, giữa các tầng, v.v.; có thể chọn một điểm hoặc thử nhiều điểm để tìm nơi hoạt động tốt nhất
-
Trích xuất đặc trưng tinh vi hơn
- Cũng có thể huấn luyện một mô hình riêng để trích xuất đặc trưng (feature) là các mẫu hành vi cùng xuất hiện trong các kích hoạt của mô hình gốc
- Sau đó có thể ánh xạ các đặc trưng đã trích xuất trở lại từng khái niệm riêng lẻ, rồi tăng cường kích hoạt theo cách tương tự
- sparse autoencoders của Anthropic được giới thiệu theo cách gần với nguyên lý này
- Cách này có thể nắm bắt các mẫu sâu hơn so với vector sai khác đơn giản, nhưng chi phí về thời gian, tính toán và chuyên môn cũng lớn hơn nhiều
- Có một phân tích chuyên sâu dùng mô hình LLaMA mở cho kiểu tiếp cận này, và kết quả khi tự thử thì gần với kết quả lẫn lộn
Vì sao steering thú vị
- Steering gợi ra khả năng thay vì phải cực nhọc xây dựng tập huấn luyện để đẩy mô hình về phía phân phối “thông minh”, ta chỉ cần tìm ra núm vặn “smart” bên trong mô hình rồi xoay hết cỡ sang phải
- Ngay cả trong việc chỉnh giọng điệu, ta cũng có thể hình dung một bảng điều khiển nơi thay vì thêm hoặc bớt các bổ ngữ như “you MUST” trong prompt, ta trực tiếp kéo các thanh trượt như ngắn gọn/dài dòng hoặc cẩn trọng/tốc độ
- Golden Gate Claude là ví dụ vừa thú vị vừa đáng lo, khi mọi câu đều bị kéo về Golden Gate Bridge, cho thấy steering có thể thay đổi hành vi mô hình mạnh đến mức nào
Vì sao steering chưa được dùng rộng rãi
- Steering trong nghiên cứu AI nằm ở vị thế giống một ý tưởng “tầng lớp trung lưu”, không thực sự khớp hẳn với cả các phòng lab AI lớn lẫn người dùng phổ thông
-
Ít cần thiết hơn với các phòng lab lớn
- Các phòng lab AI lớn có thể trực tiếp thao tác mô hình mà không cần làm kiểu “phẫu thuật não” vụng về trong lúc suy luận
- Anthropic có nghiên cứu mảng này, nhưng chủ yếu tiếp cận từ góc độ khả năng diễn giải và an toàn
- Khi muốn một hành vi cụ thể, các phòng lab lớn thường chọn huấn luyện mô hình thay vì steering
-
Người dùng phổ thông không có quyền truy cập
- Người dùng phổ thông dùng LLM qua API không thể truy cập trọng số hay kích hoạt mô hình, nên rất khó có được thông tin cần cho steering
- Ví dụ, phía duy nhất có thể nhận diện hoặc phơi bày steering vector của GPT-5.5 là OpenAI
- Với các mô hình có trọng số mở thì điều này khả thi, nhưng cho đến gần đây vẫn có đánh giá rằng chưa có mô hình mở nào đủ mạnh để đáng thử steering
-
Nhiều trường hợp dùng cơ bản thì prompt hiệu quả hơn
- Cách nói “trực tiếp thao tác bộ não” của mô hình nghe rất ấn tượng, nhưng prompt token cũng trực tiếp thay đổi trạng thái nội bộ của mô hình
- Steering có thể điều khiển kích hoạt khá tinh vi, nhưng chỉ cần thay đổi cách viết prompt cũng đã cho khả năng kiểm soát rất chi tiết
- Thay vì dùng steering để khiến mô hình dài dòng hơn, đơn giản yêu cầu như vậy sẽ dễ hơn rất nhiều
Có thể steering những thứ khó làm bằng prompt không
- Một khả năng khiến steering thực sự hữu ích là tìm ra các khái niệm không thể yêu cầu bằng prompt rồi steering chúng
- “Trí thông minh” có vẻ là một ứng viên, nhưng các mô hình thế hệ hiện tại đã tích hợp sẵn đặc tính đó đến mức kiểu prompting thời 4o như “you are an expert” khó còn tạo ra hiệu quả đáng kể
- Việc có tồn tại steering vector cho “trí thông minh” hay không là vấn đề thực nghiệm, nhưng có lý do để hoài nghi về sự tồn tại của một vector như vậy
- Steering vector cấu thành một khái niệm khó như “trí thông minh” có thể trải rộng gần như trên toàn bộ tập trọng số của mô hình; khi đó bài toán tìm vector rốt cuộc lại quy về bài toán huấn luyện một mô hình thông minh hơn
- Nếu thay các kích hoạt ở từng tầng của GPT-2 bằng kích hoạt từ một mô hình mạnh hơn nhiều nhưng cùng cấu trúc thì kết quả có thể tốt hơn, nhưng khi đó không phải là làm GPT-2 thông minh hơn mà gần như là đang trò chuyện với một mô hình mạnh hơn
- Steering đủ tinh vi cuối cùng sẽ thay thế chính mô hình thực, và trí thông minh khi đó không còn nằm trong mô hình gốc mà nằm trong bản thân steering
Steering như một dạng nén dữ liệu
- Một khả năng khác của steering là gói các khái niệm cần nhiều token vào trong một steering vector duy nhất để tiết kiệm cửa sổ ngữ cảnh
- Có thể xem đây như cách chuyển một khái niệm từ bộ nhớ làm việc của mô hình sang bộ nhớ ngầm
- Ví dụ, nếu một phần kiến thức mà GPT-5.5 có được khi đọc nhanh một codebase cụ thể nằm ẩn trong các kích hoạt, ta có thể nghĩ đến khả năng trích nó ra bằng một steering vector rất lớn
- Nhưng khái niệm “trạng thái biết codebase của tôi” cũng có lẽ phức tạp như “trí thông minh”, nên rất có thể sẽ cần tới fine-tuning toàn phần
- Kết quả trong ngành với ý tưởng “fine-tune mô hình bằng codebase” nhìn chung cũng không mấy thành công
- Dẫu vậy, vẫn chưa thể hoàn toàn loại trừ khả năng tồn tại kiểu steering như thế
Triển vọng và thử nghiệm của cộng đồng
- Steering có sức hấp dẫn, nhưng vẫn có sự hoài nghi rằng phần lớn lợi ích của nó có thể được tái tạo hiệu quả hơn bằng prompt, còn các mục tiêu tham vọng hơn thì có thể được tái tạo hiệu quả hơn bằng huấn luyện hoặc fine-tuning
- Cộng đồng mã nguồn mở vẫn chưa khai thác steering nhiều, nhưng với các xu hướng như DeepSeek-V4-Flash và DwarfStar 4, điều này có thể đang bắt đầu thay đổi
- Nếu steering có ứng dụng thực tế, khả năng là chúng sẽ lộ diện trong vòng 6 tháng tới
- Một điểm đáng theo dõi là liệu các công cụ chuyên theo mô hình như DwarfStar 4 có bắt đầu đi kèm thư viện các đặc trưng có thể tăng cường hay không
- Tương tự cách cộng đồng nhanh chóng tung ra wrapper và bản lượng tử hóa khi có một mô hình trọng số mở nổi tiếng, cũng có thể sẽ xuất hiện làn sóng trích xuất các đặc trưng có thể boost từ mô hình
Thảo luận bổ sung: loại bỏ từ chối và steering lúc runtime
- Sau đó, trong phần bình luận trên Hacker News, nhiều người bình luận cùng antirez cho rằng steering có thể thay đổi các hành vi đã được học mà khó thay đổi bằng prompt
- Ví dụ tiêu biểu là loại bỏ sự từ chối (refusal) của mô hình
- Theo một người bình luận, việc gỡ kiểm duyệt hoặc abliteration trên các mô hình mở thực tế đã được thực hiện theo cách này
- Theo antirez, việc chỉnh sửa trọng số có thể làm tổn hại năng lực mô hình nhiều hơn, trong khi steering lúc runtime nhẹ hơn có thể chỉ áp dụng khi cần
1 bình luận
Ý kiến trên Hacker News
Cảm ơn vì đã đăng bài, và xin đính chính một điểm: với tính năng steering của DwarfStar, có thể loại bỏ hoàn toàn cơ chế từ chối của DS4.
Thứ ở mức đồ chơi chỉ là bộ dữ liệu ví dụ, tức các cặp prompt mà tôi cung cấp, chứ không phải bản thân tính năng này.
Tôi cho rằng bất kỳ ai có thể tạo bộ dữ liệu phù hợp và hiểu cách dùng tính năng steering được tài liệu hóa tốt đều có thể tiếp cận steering.
Tôi cũng không chắc việc để những người chỉ biết copy-paste mà không hiểu gì có thể tiếp cận một mô hình không từ chối là điều tốt, nên tôi đã không công khai file steering, nhưng chuyện này vẫn khá rối.
Gần đây, phần hỗ trợ đã được mở rộng để có thể áp dụng vector steering vào các giá trị kích hoạt ở những thời điểm khác nhau, như luôn luôn, chỉ sau khi suy nghĩ xong, hoặc chỉ ở ngoài các lệnh gọi công cụ.
Một điểm quan trọng mà nhiều người không biết là cách steering theo hướng vector bên trong engine suy luận tốt hơn rất nhiều so với việc dùng GGUF đã bị chỉnh sửa theo cùng cách.
Càng steering nhiều thì năng lực của mô hình càng bị suy giảm, nên áp dụng ở thời điểm chạy cho phép chỉ dùng mức tối thiểu cần thiết để đạt mục tiêu mong muốn, và thậm chí chỉ áp dụng ở đúng khoảnh khắc đã chọn.
Tôi chưa triển khai, nhưng có vẻ cũng có thể chỉ áp dụng steering khi năng lượng của hướng từ chối vượt qua một ngưỡng nhất định, và vẫn còn nhiều chỗ để thử nghiệm.
Đây chủ yếu là đang nói đến các trường hợp đánh giá bảo mật phần mềm sao?
Tôi ngạc nhiên là bài viết này không nhắc đến ứng dụng lớn nhất của vector steering, tức khả năng loại bỏ cơ chế từ chối của mô hình (abliteration hoặc uncensoring).
Trước đây từng có một bài báo nói rằng “phần lớn cơ chế từ chối nằm trên một vector duy nhất”, và bằng cách tìm rồi làm suy yếu vector đó, người ta có thể khiến mô hình bỏ qua việc từ chối và nhìn chung trả lời “mọi” yêu cầu.
Điều này khá khả thi với các mô hình đời đầu học cơ chế từ chối bằng supervised fine-tuning (SFT); với các mô hình mới hơn thì có vẻ phức tạp hơn một chút, nhưng ở mức nào đó vẫn làm được.
Đã có các thư viện tự động hóa quá trình này để giảm từ chối, nhưng thường tập trung vào việc nhận diện và chỉnh sửa mô hình rồi phát hành dưới dạng mô hình đã gỡ kiểm duyệt.
Cách làm bằng steering cho phép bật thay đổi vector này một cách động, nên ngay cả khi quá trình abliteration làm hại độ chính xác ở các tác vụ không liên quan, cũng không cần phải thay đổi bản thân mô hình.
Cách làm bằng một nơ-ron duy nhất có vẻ khá tệ theo KLD, nên có lẽ vì thế mà các kỹ thuật mới hơn đã dần chiếm ưu thế.
Nếu đảo ngược góc nhìn thì việc không nói ra điều sai trái như “vaccine có hại” cũng thuộc về kiểm duyệt.
Khoa học và logic thường đối xử với những chủ đề như vậy như một dạng cần kiểm duyệt, nhưng một mô hình được lấy mẫu đồng đều từ Internet có thể sẽ nghĩ rằng vaccine là có hại.
Một cơ chế alignment bớt ngây thơ hơn sẽ kiểm duyệt các ngữ cảnh có vấn đề như thế.
Vì vậy tôi thấy khó hiểu khi cho rằng một loại thiên lệch nào đó đang bị kiểm duyệt, rồi bỏ nó đi sẽ cải thiện tính hữu dụng tổng quát.
Điều thật sự thú vị trong kho DS4, theo tôi, là phần khám phá những núm điều khiển mà các phòng thí nghiệm frontier đã giấu khỏi người dùng, và suy nghĩ xem chúng có thể đi vào luồng phát triển và tương tác thực tế như thế nào.
Việc khám phá các cách tương tác khác nhau, và chẳng hạn nghĩ cách tích hợp steering vào giao diện người dùng một cách hữu ích, thực sự rất hay.
Một khi bí mật được hé lộ và người dùng hiểu mức độ kiểm soát cũng như tính hữu ích mà họ có thể nhận được từ các mô hình bị lộ phần nội tại theo cách này, steering sẽ trở thành một thành phần cốt lõi trong hộp công cụ.
Có lẽ việc kỳ vọng mức độ kiểm soát như vậy từ mô hình hay nhà cung cấp mô hình rồi sẽ trở thành điều tự nhiên.
Mô tả rằng “DwarfStar 4 là phiên bản rút gọn của llama.cpp chỉ để chạy DeepSeek-V4-Flash” là không đúng.
DwarfStar 4 là một dự án độc lập.
Nó đúng là mang ơn llama.cpp, nhưng không phải là một bản rút gọn.
Có một phần mã lượng tử hóa cho bộ quantizer đã triển khai, và DwarfStar 4 không phải là một fork của llama.cpp.
Tuy nhiên, nếu không có llama.cpp thì đã không thể nhanh chóng kiểm tra các chi tiết quan trọng, nên dự án hẳn sẽ nghèo nàn hơn nhiều.
Nhưng nó không phải là llama.cpp rút gọn.
Điều đó không làm giảm tầm quan trọng của llama.cpp đối với không chỉ dự án này mà cả mọi dự án theo sau.
Điểm cốt lõi không phải là mã nguồn, mà là con đường để đi theo, các định dạng lượng tử hóa, những bài học, và các kernel tối ưu hóa có thể xem để học các mẫu thiết kế.
DwarfStar 4 dường như chủ yếu tồn tại nhờ llama.cpp, các tác giả cũng lấy cảm hứng lớn từ mã của llama.cpp, và một phần thậm chí còn được lấy dùng trực tiếp với ghi nhận bản quyền phù hợp.
Điều đó không có nghĩa là xấu, mà có vẻ hoàn toàn ổn.
ds4.ckhông liên kết với GGML, nhưng nó tồn tại nhờ con đường mà dự án llama.cpp đã mở ra, các kernel được phát triển ở đó, các định dạng lượng tử hóa, hệ sinh thái GGUF, và lượng tri thức kỹ thuật phải đánh đổi rất lớn mới có được.Khi tạo đường suy luận chuyên biệt cho DeepSeek V4 Flash, việc triển khai, kernel, kiểm thử và các lựa chọn thiết kế ở đó là tài liệu tham khảo cốt lõi; và dưới giấy phép MIT, các mảnh ghép ở mức nguồn như bố cục và bảng lượng tử hóa GGUF, logic lượng tử hóa CPU và dot-product, cùng một số kernel, đã được giữ lại hoặc áp dụng.
Vì vậy họ giữ lại thông báo bản quyền của các tác giả GGML trong file LICENSE như một sự tri ân chân thành - https://github.com/antirez/ds4#acknowledgements-to-llamacpp-...
https://news.ycombinator.com/item?id=48142885 Sau khoảng hai ngày nghịch thử kể từ đó, tôi đã nâng tốc độ sinh từ 47.85 t/s lên 57.07 t/s.
Tôi đã thử steering để làm AI cấp tiến hơn.
Bài viết: https://www.outcryai.com/research/shift-a-models-political-i...
Ứng dụng: https://apps.apple.com/us/app/outcry-activist-ai/id676208676...
Kỹ thuật này có nhiều tiềm năng.
Với những token ảo này, có thể khám phá các vùng phi ngôn ngữ trong không gian ngữ nghĩa của AI và thay đổi hành vi theo những cách phức tạp.
Tôi đã viết về cách tích hợp soft prompt vào activist AI ở đây: https://micahbornfree.substack.com/p/the-week-outcry-woke-up...
Và https://www.outcryai.com/research/how-to-create-activist-ai
Bài viết hay, nhưng có một điểm làm tôi bối rối.
Bài viết nói steering chỉ hoạt động với mô hình cục bộ, nhưng GitHub Copilot có tính năng “steer with message”, cho phép chỉnh hướng ngay giữa lúc chạy và tôi dùng nó khá thường xuyên.
Có lẽ đó là những kiểu steering khác nhau.
Steering cho agent nhiều khả năng là chèn thêm một thông điệp người dùng khác vào giữa luồng qua lại giữa harness và LLM.
Nó là việc chèn văn bản vào phần đầu ra suy nghĩ bằng ngôn ngữ tự nhiên của mô hình, hoặc một cách làm rất gần như vậy.
Tuy nhiên, cũng có thể tồn tại một cách trung gian dùng nghiên cứu NLA của Anthropic để xem biểu diễn ngôn ngữ tự nhiên của các activation của mô hình ở một số lớp nhất định, chỉnh sửa văn bản đó rồi chuyển ngược lại thành các activation hoàn toàn khác.
Làm sao có thể gọi mô hình là cục bộ được? Nếu cần khoảng 192GB RAM thì nghe hơi quá để gọi là local.
128GB thì tốt hơn, cứ xem README của DwarfStar.
Nó giống như hỏi với một người không có thiết bị vô tuyến hay ăng-ten cần thiết thì Zigbee có được xem là local/LAN hay không.
Dòng này trong kho DwarfStar được liên kết khiến tôi nghĩ tới control vector:
y = y - scale * direction[layer] * dot(direction[layer], y)https://vgel.me/posts/representation-engineering/ mô tả control vector là “một vector có thể được áp dụng lên activation của mô hình trong lúc suy luận để điều khiển hành vi của mô hình mà không cần prompt bổ sung; chính xác hơn là một danh sách vector, mỗi lớp một cái”.
Có vẻ nó gần với nghiên cứu deep learning hơn là thứ tôi thực sự muốn dùng.
Khi muốn học, như vậy sẽ tốt hơn nhiều so với một mô hình cứ liên tục nói “Tôi không thể giúp với yêu cầu có vấn đề này”.
Tôi không chắc về đoạn “chỉ cần điều chỉnh câu chữ trong prompt cũng đã có thể đạt mức kiểm soát rất tinh vi”.
Có thể là do tôi không biết viết prompt, nhưng việc vượt qua thiên lệch đến từ dữ liệu huấn luyện hay từ quá trình huấn luyện hậu kỳ có vẻ là điều bất khả thi.
Với prompt, cùng lắm chỉ có thể moi ra các mẫu từ dữ liệu huấn luyện; thực sự không thấy có gì giống kiểm soát tinh vi cả.