9 điểm bởi GN⁺ 2026-03-12 | 1 bình luận | Chia sẻ qua WhatsApp
  • Áp dụng Autoresearch của Karpathy vào tối ưu hóa GPU kernel
  • Công cụ nghiên cứu tự động cho GPU kernel tự động tối ưu Triton hoặc CUDA C++ kernel khi đưa mô hình PyTorch vào làm đầu vào
  • Cung cấp pipeline tự động hoàn toàn để profile, trích xuất, tối ưu hóa và xác minh các kernel nút thắt cổ chai của mô hình
  • Điều phối ưu tiên bằng orchestration dựa trên định luật Amdahl, mỗi thử nghiệm mất khoảng 90 giây nên có thể lặp lại hàng trăm lần qua đêm
  • Tích hợp với KernelBench để thực hiện 50~300 lần thử nghiệm lặp lại cho hơn 250 bài toán, cho phép khám phá có hệ thống thay vì tạo sinh một lần
  • Hỗ trợ tối ưu hóa kernel hiệu quả và có thể tái lập với backend kép Triton và CUDA C++, xác minh ưu tiên độ chính xác, và cấu trúc chỉnh sửa một tệp duy nhất

Cách hoạt động

  • AutoKernel nhận mô hình PyTorch làm đầu vào và thực hiện các bước sau
    • Xác định các GPU kernel là nút thắt cổ chai bằng profiling
    • Trích xuất và tách chúng thành các Triton hoặc CUDA C++ kernel độc lập
    • Lặp lại việc sửa đổi, benchmark, giữ lại hoặc hoàn tác thông qua vòng lặp tối ưu hóa tự động
    • Xác minh độ chính xác rồi báo cáo mức cải thiện tốc độ tổng thể
  • Dựa trên các chỉ dẫn trong program.md, hệ thống chỉnh sửa kernel.py và thực hiện kiểm tra độ chính xác 5 bước cùng phân tích roofline thông qua bench.py
  • Mỗi thử nghiệm mất khoảng 90 giây, tương đương khoảng 40 lần mỗi giờ và khoảng 320 lần trong một đêm

Thực thi và các thành phần

  • Môi trường bắt buộc: NVIDIA GPU (H100/A100/RTX 4090), Python 3.10+, gói uv
  • Cấu thành các script chính
    • profile.py: xếp hạng kernel theo thời gian GPU
    • extract.py: trích xuất các kernel nút thắt cổ chai hàng đầu
    • bench.py: benchmark hiệu năng và độ chính xác 5 bước
    • orchestrate.py: lập lịch đa kernel dựa trên định luật Amdahl
    • verify.py: xác minh toàn bộ mô hình và báo cáo mức tăng tốc
  • program.md bao gồm chiến lược tối ưu hóa 6 bước, xử lý xung đột và khung ra quyết định để có thể tự động chạy trong thời gian dài

Các kernel được hỗ trợ và mô hình ví dụ

  • Hỗ trợ 9 loại kernel: matmul, softmax, layernorm, rmsnorm, flash_attention, fused_mlp, cross_entropy, rotary_embedding, reduce
  • Mỗi kernel đi kèm triển khai tham chiếu theo PyTorch (reference.py) và phiên bản Triton/CUDA ban đầu (kernels/, kernels/cuda/)
  • Mô hình ví dụ: GPT-2, LLaMA (bao gồm 7B), BERT-base, mô hình tự định nghĩa
  • Có thể tích hợp cả mô hình HuggingFace bằng uv sync --extra models

Tích hợp KernelBench

  • Tích hợp với KernelBench (Stanford Scaling Intelligence Lab) để thực hiện benchmark tiêu chuẩn cho GPU kernel do AI tạo ra
  • AutoKernel thực hiện 50~300 lần thử nghiệm lặp lại cho mỗi bài toán để khám phá không gian tối ưu hóa một cách có hệ thống
  • Các công cụ chính
    • bridge.py: tải bài toán và tạo kernel ban đầu
    • bench_kb.py: đánh giá độ chính xác và hiệu năng
    • scorer.py: tính điểm toàn bộ level
    • program_kb.md: chỉ dẫn agent dành riêng cho KernelBench

Xuất lên HuggingFace Hub

  • Có thể xuất các kernel đã tối ưu lên HuggingFace Hub và gọi lại dễ dàng bằng get_kernel()
  • export_hf.py hỗ trợ xuất và tải lên CUDA kernel

Nguyên tắc thiết kế

  • Backend kép Triton + CUDA C++: Triton cho lặp nhanh, CUDA cho hiệu năng cao nhất
  • Ưu tiên độ chính xác: nếu không khớp với kết quả PyTorch thì hoàn tác ngay
  • Xác định ưu tiên theo mức đóng góp hiệu năng tổng thể bằng orchestration dựa trên định luật Amdahl
  • Cấu trúc chỉnh sửa một tệp (kernel.py) giúp dễ theo dõi thay đổi và khôi phục
  • Log TSV (results.tsv) ghi lại kết quả thử nghiệm theo cách đơn giản và dễ đọc

Định dạng ghi kết quả

  • results.tsv ghi lại số thứ tự, loại kernel, thông lượng (TFLOPS), độ trễ, tỷ lệ so với đỉnh GPU, mức tăng tốc so với PyTorch, độ chính xác, mức dùng VRAM, mô tả của từng thử nghiệm

Bối cảnh dự án

  • Lấy cảm hứng từ khái niệm autoresearch của Andrej Karpathy, áp dụng cấu trúc AI agent tự trị dành cho nghiên cứu LLM vào tối ưu hóa GPU kernel
  • Việc tích hợp KernelBench dựa trên nghiên cứu của Stanford Scaling Intelligence Lab, và AutoKernel thực hiện tối ưu hóa lặp lại thay vì tạo sinh một lần
  • Dự án được phát triển bởi nhóm Forge của RightNow AI và phát hành theo giấy phép MIT

1 bình luận

 
GN⁺ 2026-03-12
Ý kiến trên Hacker News
  • Dự án này thật sự rất tuyệt
    Tôi cũng đã làm thứ gì đó tương tự trong vài tuần qua, nhưng là một phiên bản tổng quát hơn nhiều và bị thiết kế quá mức
    Cách tiếp cận này, tập trung vào Triton và chỉ một số kernel cụ thể, vừa đơn giản vừa hiệu quả
    Tuy nhiên biểu đồ tiến độ khá khó hiểu. Nó trông giống benchmark matmul fp16 4096x4096x4096, nhưng dù nói là cải thiện 1,31 lần so với cuBLAS, nó chỉ cho thấy 187 TFLOPS, tức 18,9% mức tận dụng đỉnh
    cuBLAS cho hiệu năng gần mức đỉnh hơn nhiều, nên có lẽ là do overhead CPU hoặc một nút thắt cổ chai khác
    Benchmark thực sự rất khó, nhưng tôi nghĩ lĩnh vực này sẽ cực kỳ hứa hẹn trong 6 tháng tới

  • Nếu thứ này hoạt động được trong những nơi như llama.cpp thì có lẽ lợi ích còn lớn hơn nhiều
    Có rất nhiều kernel lượng tử hóa và cấu hình phần cứng khác nhau, lại có nhiều người dùng cá nhân, nên biên độ cải thiện hiệu quả sẽ rất lớn
    Sẽ thật tốt nếu dự án này tham gia đóng góp vào đó

    • Nhận định đó rất đúng
      llama.cpp có nhiều CUDA kernel được tinh chỉnh thủ công như Q4_K_M, Q5_K_S, Q8_0, và mỗi cái nhắm tới một hồ sơ phần cứng khác nhau
      Nếu có thể tự động tối ưu theo từng GPU thì sẽ là một thay đổi cực lớn
      Hiện tại, ngay cả cùng một định dạng lượng tử hóa, chênh lệch hiệu năng giữa RTX 3090 và 5070 Ti vẫn rất lớn
      Những môi trường có độ đa dạng phần cứng cao như llama.cpp chính là nơi khám phá kernel tự động tỏa sáng nhất
  • Tuyệt vời!
    Tôi cũng đang thêm tính năng tương tự cho Apple Silicon
    Trong dự án autoresearch-everywhere của mình, tôi đang biến autoresearch thành một công cụ nghiêm túc

  • Có gì đó không ổn
    Nếu lấy GEMM fp16 4kx4kx4k làm chuẩn thì cutlass nhanh hơn khoảng 3 lần

  • Tôi tò mò không biết họ đã benchmark so sánh với auto-scheduling như Ansor của TVM chưa

  • Đây mới chỉ là khởi đầu
    Để tham khảo, Google đã làm điều tương tự từ hai thế hệ mô hình trước rồi
    Trong bài blog tháng 5/2025 AlphaEvolve, họ công bố đã tăng tốc 23% kernel cốt lõi của kiến trúc Gemini bằng cách chia phép nhân ma trận lớn thành các bài toán con nhỏ hơn, từ đó giảm thời gian huấn luyện 1%
    Giờ đây đã đến thời kỳ mà những kỹ thuật như vậy cũng có thể làm được “ngay tại nhà”
    Đặc biệt khi gần đây có nhiều huấn luyện dựa trên RL, cải thiện tốc độ suy luận sẽ trực tiếp dẫn tới cải thiện tốc độ huấn luyện

  • Tôi tự hỏi đến bao giờ những runtime ngôn ngữ mã nguồn mở như Swift hay Rust cũng sẽ có các tối ưu kiểu này để vắt ra giọt hiệu năng cuối cùng