Cách GPT-6 Astra khắc phục Qwen3.5-0.8B chỉ bằng việc chỉnh sửa 0,016% trọng số

GPT-6 Astra đã chỉnh sửa 0,016% trọng số của Qwen3.5-0.8B mà không cần huấn luyện và nâng MATH-500 từ 7,9% lên 48,1%. Điều gì đã thay đổi, các giới hạn của nó, và cách kiểm thử cả hai mô hình.

Ashley Innocent

Ashley Innocent

4 tháng 11 2026

Cách GPT-6 Astra khắc phục Qwen3.5-0.8B chỉ bằng việc chỉnh sửa 0,016% trọng số

Apidog cho doanh nghiệp

Triển khai tại chỗ

SSO & RBAC

Tuân thủ SOC 2

Khám phá Apidog Enterprise

GPT-6 Astra đã nâng điểm MATH-500 của Qwen3.5-0.8B từ 7.9% lên 48.1% mà không cần huấn luyện gì cả. Nó đọc trọng số của mô hình, tìm ra một hướng khiến mô hình bị lặp trong quá trình suy nghĩ, rồi trừ hướng đó khỏi hai lớp MLP. Thao tác chỉnh sửa đó chạm tới 131,072 trọng số, tức 0.016% của mô hình. Những con số này đến từ một bài đăng ngày 2 tháng 11 của bốn nhà nghiên cứu tại MIT CSAIL, và mô hình đã chỉnh sửa được công khai, nên bạn có thể tự kiểm chứng tuyên bố này.

Dưới đây: lập trình không gian trọng số là gì, Astra đã thay đổi những gì, phương pháp này dừng lại ở đâu, và cách để coding agent của bạn so sánh hai mô hình bằng Apidog CLI.

Lập trình không gian trọng số là gì?

Lập trình không gian trọng số là việc một LLM đa dụng đọc và ghi trực tiếp vào trọng số của một mạng nơ-ron, được dẫn dắt bởi một mục tiêu diễn đạt bằng ngôn ngữ tự nhiên, không dùng gradient descent và không có vòng lặp huấn luyện. Mô hình lý luận xem mỗi phần của mạng tính toán những gì, rồi tự tay thay đổi các con số, giống như cách một lập trình viên sửa mã nguồn.

Thuật ngữ này xuất phát từ Sparks of Weight-Space Programming của Rikiya Takehi, Jayden Teoh, Alex Zhang và Omar Khattab, công bố ngày 2 tháng 11 năm 2026. Các tác giả gọi mọi kết quả là “rất sơ khai”, và một số trong đó chỉ đến từ một hoặc vài lần chạy. Để biết thêm bối cảnh về mô hình thực hiện việc chỉnh sửa, xem bài đánh giá thực tế GPT-6 Astra.

GPT-6 Astra đã sửa Qwen3.5-0.8B như thế nào

Kết quả nổi bật là Thí nghiệm 8. Các nhà nghiên cứu yêu cầu GPT-6 Astra làm cho Qwen3.5-0.8B giỏi toán hơn bằng cách chỉnh sửa trọng số của nó. Dưới đây là những gì đã diễn ra, từng bước một:

  1. Thiết lập. Astra được cấp một phiên Python (giống như notebook) với trọng số của mô hình đã được nạp, không có GPU, cùng 7,469 bài luyện tập GSM8K và 7,275 bài MATH từ các tập huấn luyện. Nó chưa bao giờ thấy các tập kiểm tra.
  2. Ngân sách. Thay vì huấn luyện, Astra chỉ được dùng 10, 25 hoặc 50 forward pass. Một forward pass cho phép mô hình trả lời tối đa 512 bài toán hoặc đọc tối đa 1,024 văn bản.
  3. Chẩn đoán. Astra nhận thấy mô hình gốc bị lặp: 85 trong số 96 câu trả lời luyện tập đầu tiên chạy tới giới hạn 32,768 token mà vẫn không đi tới đáp án. Các tác giả lưu ý rằng chính model card của Qwen cũng cảnh báo mô hình này dễ bị lặp trong suy nghĩ.
  4. Truy vết. Astra truy vết hiện tượng lặp về một hướng được ghi bởi các MLP ở lớp 15 và 19.
  5. Chỉnh sửa. Nó trừ hướng đó khỏi 64 cột đầu ra của down_proj trong mỗi lớp trong hai lớp đó. Đó là 131,072 trọng số trong tổng số 0.8 tỷ.
Sơ đồ chỉnh sửa Qwen3.5-0.8B: 24 lớp transformer với down_proj của MLP ở lớp 15 và 19 được tô sáng, một hướng gây lặp bị trừ khỏi 64 cột đầu ra ở mỗi lớp, tổng cộng 131,072 trọng số bị thay đổi

Theo model card trên Hugging Face, chỉ có hai tensor down_proj đó là khác so với checkpoint gốc Qwen/Qwen3.5-0.8B, và mỗi tensor được dựng lại đều được xác minh sha256 với tensor mà các tác giả đã đánh giá. Mô hình đã chỉnh sửa được phát hành theo giấy phép Apache 2.0.

Kết quả: Qwen3.5-0.8B gốc so với bản đã chỉnh sửa

Mọi con số ở đây đều lấy từ bài đăng của các tác giả (bật thinking, tối đa 32,768 token, nhiều mẫu cho mỗi bài toán). “Chạm giới hạn token” là tỷ lệ các câu trả lời MATH-500 bị hết token.

Qwen3.5-0.8B MATH-500 GSM8K IFEval Chạm giới hạn token
Gốc 7.9% 13.8% 21.0% 93.0%
Đã chỉnh sửa, 10 forward pass 12.3% 25.7% 49.0% 87.2%
Đã chỉnh sửa, 25 forward pass 14.1% 25.1% 39.9% 86.4%
Đã chỉnh sửa, 50 forward pass 48.1% 67.1% 62.3% 33.1%
Biểu đồ cột so sánh Qwen3.5-0.8B gốc và bản đã chỉnh sửa theo báo cáo của các tác giả: MATH-500 từ 7.9% lên 48.1%, GSM8K từ 13.8% lên 67.1%, IFEval từ 21.0% lên 62.3%, câu trả lời chạm giới hạn token từ 93.0% xuống 33.1%

Space demo cho phép bạn nhập một bài toán và xem cả hai mô hình trả lời.

Những gì việc chỉnh sửa trọng số không thể làm

Các tác giả đã chạy một phép đối chứng còn quan trọng hơn cả kết quả nổi bật. Họ thử áp dụng cách làm tương tự lên Gemma 3 270M, một mô hình hiếm khi bị lặp (8.5% câu trả lời chạm giới hạn, so với 93% ở Qwen).

Gemma 3 270M MATH-500
Gốc 6.8%
Chỉnh sửa tốt nhất (25 forward pass) 7.7%

Lỗi của Gemma là những lỗi thông thường, chẳng hạn tính toán sai, không có một thành phần đơn lẻ nào để tắt đi. Kết luận của các tác giả: việc chỉnh sửa đã loại bỏ một rào cản che giấu một năng lực, nhưng nó không thể thêm vào một năng lực mà mô hình vốn không có. Qwen vốn đã có thể giải ra nhiều đáp án. Nó chỉ không bao giờ hoàn thành chúng.

Vậy nên đây không phải là “huấn luyện đã hết thời”. Đó là việc một mô hình tiên tiến tìm ra và loại bỏ một lỗi nằm ở một chỗ duy nhất.

Phần còn lại của bài báo về lập trình không gian trọng số

Thí nghiệm 8 là một trong tám thí nghiệm. Những thí nghiệm còn lại dùng các mạng nhỏ hơn nhiều:

Nhật ký thí nghiệm đầy đủ bao gồm mọi prompt, các bản tóm tắt lý luận của Astra và từng đoạn mã nó đã chạy.

Tự kiểm chứng bản sửa lỗi lặp suy nghĩ của Qwen3.5-0.8B

Cách kiểm chứng gọn gàng nhất là phục vụ cả hai checkpoint sau cùng một API tương thích OpenAI rồi gửi cho chúng những prompt giống hệt nhau. vLLM làm được điều này với một lệnh cho mỗi mô hình:

vllm serve Qwen/Qwen3.5-0.8B --port 8001 \
  --served-model-name qwen --max-model-len 34816 --gpu-memory-utilization 0.45

vllm serve RikiyaT/Qwen3.5-0.8B-weight-space-programming --port 8002 \
  --served-model-name qwen --max-model-len 34816 --gpu-memory-utilization 0.45

Cả hai server đều phản hồi dưới tên qwen, nên một request body dùng được cho cả hai cổng. --max-model-len 34816 khớp với ví dụ trong model card.

Mỗi request mô phỏng đúng thiết lập lấy mẫu của các tác giả và bật thinking:

{
  "model": "qwen",
  "messages": [{"role": "user", "content": "{{question}}\nPlease reason step by step, and put your final answer within \\boxed{}."}],
  "temperature": 0.6,
  "top_p": 0.95,
  "top_k": 20,
  "presence_penalty": 1.5,
  "max_tokens": 32768,
  "chat_template_kwargs": {"enable_thinking": true}
}

Giá trị \boxed{} cuối cùng là đáp án, và finish_reason cho biết mô hình đã dừng (stop) hay đã hết token (length). Kết thúc bằng length nghĩa là bị lặp.

Nếu bạn không muốn chạy GPU, bạn có thể kiểm thử API GPT-6 Astra theo cách tương tự, hoặc so sánh các mô hình Qwen nhỏ ngay trên máy với thiết lập Qwen3.5 Ollama miễn phí.

Để coding agent của bạn kiểm thử cả hai mô hình bằng Apidog CLI

Chấm điểm hai mươi câu trả lời dài bằng tay là công việc dành cho coding agent của bạn. Apidog CLI cung cấp cho agent các environment, test scenario, lượt chạy theo dữ liệu và báo cáo, và nó chạy trên máy của bạn, nên các endpoint localhost hoạt động được.

Cài đặt nó và cấp skill cho agent của bạn:

npm install -g apidog-cli@latest
apidog login --with-token <YOUR_TOKEN>
npx -y skills add https://apidog.com   # pick your agent when prompted

Sau đó đưa cho Claude Code, Codex, Cursor hoặc OpenCode một prompt:

In Apidog project <id>, create two environments: qwen-base at http://localhost:8001
and qwen-edited at http://localhost:8002. Create a test scenario that POSTs to
/v1/chat/completions with the body in request.json, using {{question}} from the
first 10 GSM8K test questions in gsm8k-10.csv. Assert that the last \boxed{} value
equals {{answer}} and that choices[0].finish_reason is not "length". Run it against
both environments and give me a table: correct answers and length finishes per model.

Agent đọc schema của payload, xác thực JSON của nó rồi chạy các lệnh sau:

apidog environment create qwen-base --project <id> --base-url http://localhost:8001
apidog environment create qwen-edited --project <id> --base-url http://localhost:8002
apidog cli-schema get test-scenario-create
apidog cli-schema validate test-scenario-create --file scenario.json
apidog test-scenario create --project <id> --file scenario.json
apidog run -t <scenarioId> --project <id> -e <baseEnvId> \
  -d gsm8k-10.csv --timeout-request 1800000 -r cli,json --out-file qwen-base
apidog run -t <scenarioId> --project <id> -e <editedEnvId> \
  -d gsm8k-10.csv --timeout-request 1800000 -r cli,json --out-file qwen-edited

-d đưa từng dòng CSV vào như một lượt lặp. --timeout-request tính bằng mili giây, và một câu trả lời bị lặp có thể mất hàng phút để đốt hết 32,768 token. -r cli,json in ra bản tóm tắt và ghi một báo cáo JSON để agent có thể so sánh (diff). 10 câu hỏi này lấy từ tập test GSM8K.

Luồng so sánh: một coding agent chạy apidog run trên một test scenario với dữ liệu lặp GSM8K nhắm vào hai environment vLLM, Qwen3.5-0.8B gốc ở cổng 8001 và Qwen3.5-0.8B đã chỉnh sửa ở cổng 8002, rồi so sánh đáp án và finish_reason trong các báo cáo

Nếu lượt chạy của bạn giống của các tác giả, phần lớn câu trả lời từ mô hình gốc sẽ trượt assertion finish_reason và phần lớn câu trả lời từ bản đã chỉnh sửa sẽ vượt qua. Mười câu hỏi chỉ là một smoke test, không phải một benchmark, nên hãy coi khoảng cách đó là tín hiệu, chứ không phải điểm số. Thêm --upload-report để xem lượt chạy trong ứng dụng, và xem tài liệu tham chiếu lệnh apidog run để biết mọi cờ.

Cùng kịch bản đó cũng dùng được như một regression test cho bất kỳ lần thay mô hình nào; hướng dẫn Apidog CLI CI/CD trình bày cách thiết lập -r junit.

Điều này có nghĩa gì nếu bạn triển khai các mô hình nhỏ

Đang chọn một phiên bản GPT-6 cho công việc agent? Xem GPT-6 Luna vs Sol vs Astra.

Câu hỏi thường gặp

GPT-6 Astra có huấn luyện Qwen3.5-0.8B không? Không. Các tác giả không cho phép gradient descent và không có vòng lặp huấn luyện. Astra chỉnh sửa trọng số trong một phiên Python và chỉ quan sát mô hình qua 10, 25 hoặc 50 forward pass.

Chỉnh sửa đó đã thay đổi bao nhiêu trọng số? 131,072 trọng số, mà theo các tác giả là 0.016% của mô hình. Những thay đổi nằm trong các ma trận down_proj của MLP ở lớp 15 và 19, mỗi lớp 64 cột đầu ra.

Mô hình đã chỉnh sửa có được công khai không? Có, dưới tên RikiyaT/Qwen3.5-0.8B-weight-space-programming trên Hugging Face theo giấy phép Apache 2.0, kèm hash của hai tensor đã thay đổi và một lần chạy lại độc lập (51.0% trên MATH-500).

Vì sao điểm toán lại tăng mạnh đến vậy? Vì mô hình gốc bị lặp. Trên MATH-500, 93.0% câu trả lời của nó chạm giới hạn 32,768 token. Chỉnh sửa đã giảm con số đó xuống 33.1%, nên mô hình hoàn thành được những đáp án mà nó vốn đã có thể giải ra. Nó không học thêm toán mới.

Lập trình không gian trọng số có hiệu quả trên mọi mô hình không? Theo chính các tác giả thì chưa. Trên Gemma 3 270M, mô hình hiếm khi bị lặp, chỉnh sửa tốt nhất chỉ đưa MATH-500 từ 6.8% lên 7.7%. Các tác giả gọi tất cả kết quả của họ là rất sơ khai.

Tôi có thể kiểm thử mô hình đã chỉnh sửa mà không cần viết code không? Có. Space demo trên Hugging Face chạy cả hai mô hình với bài toán bạn nhập. Để có một phép kiểm tra lặp lại được, hãy dùng vLLM kết hợp Apidog CLI như trình bày ở trên.

button

Thực hành thiết kế API trong Apidog

Khám phá cách dễ dàng hơn để xây dựng và sử dụng API