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

Thủ thuật

Tăng tốc nhân hệ điều hành gấp 232 lần nhờ tự động hóa nghiên cứu với Codex

(giờ Việt Nam)

Tóm tắt AI

Một lập trình viên đã sử dụng AI agent dựa trên Codex để tự động phân tích, đề xuất và kiểm chứng các giải pháp tối ưu hóa mã nguồn, giúp rút ngắn đáng kể thời gian tìm kiếm điểm nghẽn hiệu năng.

Bản dịch AI

08 Tháng 7, 2026

Mục lục

Giới thiệu

Tóm tắt cuộc thi

GPU Mode, phối hợp cùng Core Automation, gần đây đã tổ chức một cuộc thi với chủ đề tự động nghiên cứu (auto-research). Đề bài yêu cầu triển khai thuật toán phân rã QR (QR factorization) dạng Householder thu gọn theo lô (batched square compact-Householder QR). Tôi đã xếp thứ 12 trên tổng số 183 người tham gia, đạt tốc độ nhanh gấp 232 lần so với giải pháp cơ sở (baseline). Bài viết này chia sẻ về cách tôi đạt được kết quả đó. Tôi sẽ đi qua phương pháp tiếp cận, những bài học và các nút thắt cổ chai mà tôi gặp phải trong suốt cuộc thi. Đây là lần thử sức nghiêm túc đầu tiên của tôi với lĩnh vực tự động nghiên cứu. Một số người có thể gọi đây là "kỹ thuật vòng lặp" (loop engineering), và thành thật mà nói, điều đó cũng chẳng sao cả.

Lưu ý rằng bạn không cần phải nắm vững toán học hay chi tiết về bài toán để hiểu hầu hết nội dung bài viết này. Tôi tập trung vào phương pháp tiếp cận của mình và coi các kiến thức toán học hay bản thân bài toán là yếu tố phụ, vì hầu hết người đọc sẽ không tham gia cuộc thi này.

Bạn có thể xem trang đầy đủ của cuộc thi tại đây: Link bài toán và Bảng xếp hạng

Cuộc thi này là một phần trong chuỗi sự kiện "Linear Algebra Kernels in the Age of Research" (Các nhân đại số tuyến tính trong kỷ nguyên nghiên cứu) của GPU Mode.

Giới thiệu bài toán

Chúng tôi được cung cấp một lô các ma trận vuông FP32 CUDA A với kích thước batch x n x n, và phải trả về cùng định dạng biểu diễn Householder QR thu gọn như torch.geqrf(A): một ma trận H có tam giác trên là R và tam giác dưới lưu trữ các vectơ Householder, cộng với một vectơ tau chứa các hệ số phản xạ. Trình kiểm tra (checker) sẽ tái tạo Q bằng torch.linalg.householder_product(H, tau), lấy R = triu(H), và xác minh:

A≈QR,Q⊤Q≈I,Q⊤A≈R

Trong số các bài nộp đúng, bảng xếp hạng đánh giá thời gian chạy dựa trên trung bình nhân (geometric mean) qua các kích thước và trường hợp điều kiện khác nhau. Các kích thước quan trọng là các ma trận vuông theo lô như 512 x 512, cùng với các trường hợp lớn hơn như 1024, 2048 và 4096. Các định dạng FP16, FP8 hoặc NVFP4 độ chính xác thấp được cho phép sử dụng nội bộ, nhưng các nhân tố trả về vẫn phải thỏa mãn các kiểm tra QR theo chuẩn FP32.

Một ví dụ nhỏ 3 x 3 là:

A=[12−5146167−68−424−41]=[6/7−69/175−58/1753/7158/1756/175−2/76/35−33/35]⏟Q[1421−140175−700035]⏟R

Ở đây Q là ma trận trực giao, nghĩa là các cột của nó có độ dài đơn vị và vuông góc với nhau, còn R là ma trận tam giác trên, nghĩa là mọi phần tử dưới đường chéo chính đều bằng 0. Cuộc thi không yêu cầu chúng ta in trực tiếp ma trận Q và R dày đặc; nó yêu cầu định dạng Householder thu gọn để trình kiểm tra có thể tái tạo Q và đọc R từ tam giác trên.

Đối với ví dụ 3×3 ở trên, bộ phản xạ đầu tiên ánh xạ cột đầu tiên (12, 6, −4) thẳng vào (−14, 0, 0) trong một bước duy nhất. Giá trị −14 trở thành R11. Cách thức hoạt động của nó nằm trong phần toán học.

Tại sao bài toán này có thể thực hiện bằng tự động nghiên cứu

GPU Mode cung cấp cho người tham gia giao diện dòng lệnh (CLI) popcorn, giúp nó trở nên thân thiện với các tác nhân (agent). Các tác nhân có thể sử dụng công cụ này để kiểm thử, đo điểm chuẩn (benchmark) và gửi bài trực tiếp lên bảng xếp hạng. Trình kiểm tra cũng cung cấp phản hồi theo từng kích thước ma trận cùng với thời gian trung bình nhân tổng thể.

Những người quan sát tinh ý sẽ nhận thấy đây là thiết lập phù hợp để viết một vòng lặp. Các tác nhân luôn khao khát những vòng lặp phản hồi chặt chẽ. Chúng cho phép các tác nhân leo đồi (hill-climb) đến mức thỏa mãn.

Các cuộc thi của GPU Mode thường cung cấp cách để bạn lặp lại việc tối ưu hóa các nhân (kernel). Bạn có thể gửi bài trực tiếp, hoặc một nhà tài trợ như Modal sẽ hỗ trợ tín dụng. Ở đây, ban tổ chức về cơ bản cho phép gửi bài không giới hạn miễn là bạn giãn cách thời gian giữa các lần gửi. Nếu không, hàng đợi sẽ trở nên quá dài và các lượt chạy của mọi người sẽ bị quá thời gian (timeout). Có thời điểm không gian làm việc thậm chí còn hết tín dụng Modal vì mọi người gửi bài liên tục. Đây là một cách hay để giúp việc học tập trở nên dễ tiếp cận.

Trong suốt 14 ngày, tôi đã gửi hơn 1500 bài.

Học đủ để đặt những câu hỏi tốt hơn

codex-image (1)

Tôi đã biết những kiến thức cơ bản về tối ưu hóa nhân GPU (chủ yếu là Triton với một chút hiểu biết về CUDA) trong một năm, nhưng chưa làm việc chuyên nghiệp trong lĩnh vực này. Điều tôi muốn nói là tôi là một "kẻ yếu thế" so với những người xung quanh trên bảng xếp hạng. Người xếp ngay trên tôi (CUDA Colonel) là một kỹ sư chính tại NVIDIA.

Dù sao thì, bỏ qua chuyện khoe khoang, vì tôi đã biết những kiến thức cơ bản và gần đây có đọc về GatedDeltaNet, nên tôi khá nhạy bén với các thuật ngữ về nhân GPU.

Bạn càng hiểu rõ một vấn đề, bạn càng có thể đặt câu lệnh (prompt) tốt hơn cho các LLM, bởi vì bạn chuyển đổi những "điều chưa biết mà ta không biết" (unknown unknowns) thành "những điều chưa biết mà ta đã biết" (known unknowns).

Đồng thời, cần lưu ý rằng cuộc thi này có thể thực hiện được mà không cần kiến thức chuyên môn sâu - có thể bạn sẽ không lọt vào top 10, nhưng bạn vẫn có thể đạt được tốc độ cải thiện đáng kể so với baseline chỉ bằng cách dựa vào vòng lặp tác nhân của mình.

Những bước đầu tiên của tôi trong cuộc thi là tìm hiểu phân rã QR là gì và cách thực hiện nó. Có nhiều cách để làm điều đó - như Gram-Schmidt và phản xạ Householder. Cuộc thi bắt buộc sử dụng phản xạ Householder. Tôi đã trao đổi qua lại với Claude và xem một vài video trên YouTube để xây dựng trực giác. Sau khi thảo luận với Claude, rõ ràng là chúng tôi cần sử dụng thuật toán Householder theo khối (blocked Householder) làm kiến trúc chính cùng với cập nhật WY ở phần đuôi. Hóa ra, GPT-5.5 cũng có ý tưởng tốt về điều này. Phân rã QR là một bài toán khá phổ biến.

Tôi thấy khái niệm này thú vị vì các phép phân rã ma trận xuất hiện trong một số biến thể tối ưu hóa hiện đại cho việc huấn luyện LLM, đặc biệt là trong các phương pháp sử dụng tiền điều kiện ma trận (matrix preconditioning), chẳng hạn như các bộ tối ưu hóa kiểu Shampoo và các phương pháp liên quan. Muon (được Kimi sử dụng) là một ví dụ điển hình khác: thay vì coi cập nhật trọng số là một vectơ phẳng khổng lồ, nó giữ nguyên cấu trúc ma trận và trực giao hóa cập nhật động lượng, thường thông qua một vài lần lặp Newton-Schulz để xấp xỉ nhân cực (polar factor).

(Tùy chọn) Toán học cho phân rã QR: Phản xạ Householder

Tôi khuyên bạn nên đọc lướt qua phần này nếu tò mò về toán học, nếu không thì cứ thoải mái bỏ qua. Điều duy nhất cần lưu ý là có sự phụ thuộc tuần tự trong Householder QR khiến việc thực hiện GEMM trở nên khó khăn. Chúng ta sử dụng Householder theo khối để làm cho nó có hình dạng giống phép nhân ma trận hơn.

andrew

Hợp đồng

Xem lại nhanh hợp đồng: đầu vào là một lô các ma trận vuông FP32 A; đầu ra là định dạng thu gọn (H, tau) mà torch.geqrf trả về. Tam giác trên của H là R. Bên dưới đường chéo, H lưu trữ các vectơ Householder, và tau lưu trữ một giá trị vô hướng cho mỗi cột. Trình kiểm tra tái tạo Q từ (H, tau) và xác minh A ≈ QR.

Gương phản chiếu

Hãy tạm quên ma trận đi. Trong gương phòng tắm, hình ảnh phản chiếu của bạn nằm phía sau mặt kính một khoảng đúng bằng khoảng cách bạn đứng trước nó.

Nếu x⟂ là phần của x vuông góc với mặt kính, thì phản xạ chỉ đơn giản là trừ đi phần đó hai lần:

xreflected=x−2x⟂

Vì vậy, một phản xạ Householder là việc tìm ra phần vuông góc và trừ nó đi hai lần.

Lưu trữ gương phản chiếu

Đọ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.