Hugging Face đã triển khai các bản cập nhật quan trọng cho dự án Kernels của mình, giới thiệu một loại kho lưu trữ chuyên dụng, các biện pháp bảo mật nâng cao, giao diện dòng lệnh được thiết kế lại, hỗ trợ framework mở rộng và nền tảng cho phát triển kernel dựa trên tác nhân.

Kernels trở thành loại kho lưu trữ hạng nhất

Hub Hugging Face hiện có loại kho lưu trữ mới gọi là "kernel". Thay đổi này cho phép người dùng xem trực tiếp các bộ tăng tốc, hệ điều hành và phiên bản backend được hỗ trợ. Ví dụ: thông tin chi tiết về khả năng tương thích của kernel hiện được hiển thị nổi bật:

Flash Attention 3 Kernel Page

Tất cả các kernel có sẵn có thể được duyệt tại https://huggingface.co/kernels. Việc đưa kernels lên hàng công dân hạng nhất trên Hub cải thiện khả năng khám phá và giúp hệ sinh thái AI phát hiện xu hướng trên các kernel, mô hình và ứng dụng.

Bảo mật được nâng cấp đáng kể

Kernel chạy mã gốc với cùng quyền hạn như tiến trình Python tải chúng, khiến bảo mật trở thành ưu tiên hàng đầu. Dự án từ lâu đã nhấn mạnh tính tái lập—người dùng có thể biên dịch lại kernel và xác minh nó khớp với mã nguồn công khai bằng Nix để xây dựng kín và sandbox cách ly. Mã SHA1 Git nguồn được nhúng trong kernel để cải thiện nguồn gốc.

Các bổ sung gần đây bao gồm nhà xuất bản kernel đáng tin cậy và ký mã.

Nhà xuất bản kernel đáng tin cậy

Với loại kho lưu trữ mới, Hugging Face đã giới thiệu "nhà xuất bản đáng tin cậy". Theo mặc định, gói kernels chỉ tải kernel từ các tổ chức mà cộng đồng tin tưởng. Người dùng có thể chọn tải kernel từ các nguồn khác bằng đối số trust_remote_code:

from kernels import get_kernel
kernel_module = get_kernel(  
   "Atlas-Inference/gdn", version=1, trust_remote_code=True  
)  

Việc xuất bản kho kernel bị hạn chế theo mặc định. Người dùng và tổ chức phải yêu cầu quyền truy cập từ cài đặt tài khoản của họ, cho phép nhóm xem xét từng yêu cầu riêng lẻ.

Ký kernel

Ký mã bảo vệ khỏi thông tin đăng nhập Hub bị xâm phạm. Một kernel được ký bằng khóa riêng chỉ nhà phát triển biết và được xác thực bằng khóa công khai. Ngay cả khi kẻ tấn công xâm phạm thông tin đăng nhập của nhà xuất bản đáng tin cậy, chúng không thể ký một kernel độc hại nếu không có khóa riêng.

Dự án sử dụng cosign của Sigstore để ký bằng khóa riêng tạm thời có hiệu lực trong thời gian giới hạn. Nó cũng xác minh rằng kernel đã được ký bởi một quy trình làm việc GitHub đáng tin cậy từ một kho lưu trữ đáng tin cậy. Ký kernel đã được hỗ trợ bởi kernel-builder và lệnh kernels verify-signature đã có sẵn. Việc xác minh chữ ký khi tải chưa được thực thi, đang chờ thử nghiệm thêm. Ghi chú thiết lập sơ bộ có trong ghi chú phát hành kernels 0.16.0: https://github.com/huggingface/kernels/releases/tag/v0.16.0.

CLI được thiết kế lại

Các tiện ích trước đây nằm lẫn lộn giữa kernels và kernel-builder đã được tách riêng. Thư viện kernels hiện chỉ tập trung vào tải và chuẩn bị kernel, trong khi kernel-builder xử lý việc xây dựng. Điều này làm cho cả hai công cụ gọn nhẹ và tập trung hơn.

CLI được cải thiện cũng đặt nền tảng cho phát triển kernel dựa trên tác nhân.

Hỗ trợ framework và backend rộng hơn

Hỗ trợ cho các framework đã được mở rộng. Các thay đổi chính bao gồm:

  • Hỗ trợ Torch Stable ABI, cho phép nhà phát triển kernel nhắm mục tiêu một phiên bản Torch cụ thể hoặc bất kỳ phiên bản nào được phát hành sau đó trong khoảng hai năm. Ví dụ: kernel nhắm mục tiêu Torch 2.9 Stable ABI hỗ trợ Torch >= 2.9.

  • Apache TVM FFI hiện được hỗ trợ cùng với Torch. TVM FFI là một ABI chuẩn hóa hoạt động với PyTorch, Jax, CuPy và các framework khác, cho phép kernel chạy trên nhiều framework.

Nền tảng cho phát triển kernel dựa trên tác nhân

kernel-builder và kernels hỗ trợ phát triển kernel dựa trên tác nhân, nơi một tác nhân tạo ra một kernel tối ưu từ đầu. Cùng nhau, chúng cho phép một quy trình làm việc để tác nhân tạo khung, xây dựng, đo điểm chuẩn và tối ưu hóa kernel một cách lặp đi lặp lại.

Phát triển kernel dựa trên tác nhân vẫn còn mới, vì vậy các nguyên tắc cơ bản đơn giản, rõ ràng là quan trọng. kernel-builder thực thi một cấu trúc có thể tái lập để tạo khung và xây dựng kernel, cung cấp cho tác nhân một bố cục dự án có thể dự đoán được. CLI của nó được tối ưu hóa cho tác nhân với các lệnh không tương tác và đầu ra dễ diễn giải theo chương trình. Các kỹ năng dành riêng cho backend giúp tác nhân điều hướng các đặc thù của các backend khác nhau.

Xây dựng thành công một kernel chỉ là bước đầu tiên—nó phải mang lại tốc độ thực tế so với baseline trên phần cứng mục tiêu. Tích hợp với HF Jobs giúp việc đo điểm chuẩn trở nên dễ dàng, cho phép tác nhân chạy các bộ điểm chuẩn, thu thập kết quả hiệu suất và so sánh với baseline trên các cấu hình phần cứng khác nhau.

Dưới đây là một số ví dụ về kernel được tăng cường bởi tác nhân minh họa các loại kernel có thể được phát triển và đánh giá thông qua quy trình làm việc này.

Các cập nhật khác

Thiết lập môi trường

Một tập lệnh cài đặt hiện cung cấp thiết lập một cú nhấp chuột để xây dựng kernel với kernel-builder. Đối với các phiên bản tạm thời, có sẵn hướng dẫn thiết lập Terraform.

Thẻ hệ thống cho Kernels

Sau khi xây dựng kernel, một thẻ hệ thống được tạo cho mỗi kernel, hiển thị thông tin hữu ích bao gồm cách sử dụng và các giao diện của nó. Khi được đẩy lên Hub, thẻ này trở thành phần đầu trang của kernel:

System card for a kernel

Kiểm tra tương thích kernel

Sử dụng phương thức has_kernel() để kiểm tra xem kernel có tương thích trên hệ thống của bạn không:

from kernels import has_kernel
print(has_kernel("kernels-community/activation", version=1))  

Nó trả về một bool. Để biết thêm chi tiết về lý do tại sao kernel không được hỗ trợ, hãy sử dụng get_kernel_variants():

from kernels import get_kernel_variants, VariantAccepted
for decision in get_kernel_variants("kernels-community/activation", version=1):  
    name = decision.variant.variant_str  
    if isinstance(decision, VariantAccepted):  
        print(f"{name}: compatible")  
    else:  
        print(f"{name}: rejected ({decision.reason})")  

Nó sẽ in ra (tùy thuộc vào máy của bạn):

torch212-cxx11-cu130-aarch64-linux: compatible  
torch210-cu128-x86_64-windows: rejected (CPU (x86_64) does not match system CPU (aarch64))  
torch211-cu128-x86_64-windows: rejected (CPU (x86_64) does not match system CPU (aarch64))  
torch212-metal-aarch64-darwin: rejected (OS (darwin) does not match system OS (linux))  
torch211-metal-aarch64-darwin: rejected (OS (darwin) does not match system OS (linux))  
torch210-metal-aarch64-darwin: rejected (OS (darwin) does not match system OS (linux))  
torch29-metal-aarch64-darwin: rejected (OS (darwin) does not match system OS (linux))  
…  

Cải thiện hỗ trợ manylinux_2_28

Kernel-builder đã nhắm mục tiêu manylinux_2_28 gần như ngay từ đầu. Trước đây, nó sử dụng một chuỗi công cụ gcc hiện đại được biên dịch với glibc 2.28 và liên kết tĩnh libstdc++. Tuy nhiên, điều này gây ra sự cố khi có nhiều phiên bản libstdc++—như phiên bản được PyTorch liên kết động và phiên bản được kernel liên kết tĩnh. Một số kernel sử dụng chức năng như regex C++ đã kích hoạt các khởi tạo toàn cục, dẫn đến dữ liệu bị hỏng và lỗi phân đoạn.

Để khắc phục điều này, nhóm đã cập nhật cách tiếp cận để tránh các xung đột như vậy, đảm bảo tính ổn định cao hơn.

Các bản cập nhật này định vị dự án Kernels cho việc áp dụng rộng rãi hơn và các trường hợp sử dụng nâng cao hơn, bao gồm các quy trình làm việc tối ưu hóa dựa trên tác nhân. Với bảo mật, khả năng khám phá và hỗ trợ đa framework được cải thiện, Hugging Face đang đặt nền móng cho một hệ sinh thái kernel mạnh mẽ và linh hoạt hơn.