Hugging Face Kernels 주요 업데이트

Hugging Face Kernels 주요 업데이트

새로운 저장소 유형으로서의 Kernels

Hugging Face는 커스텀 커널을 일급 시민(first-class)으로 만들고, 검색 가능하게 하며, 어떤 가속기, 운영 체제 및 백엔드 버전이 지원되는지 보여주기 위해 Hub에 새로운 "kernel" 저장소 유형을 추가했습니다.

사용자는 https://huggingface.co/kernels 에서 모든 커널을 찾아볼 수 있으며, https://huggingface.co/kernels/kernels-community/flash-attn3 와 같은 Flash Attention 3 커널의 예시 페이지를 확인할 수 있습니다.

커널을 일급 시민으로 만듦으로써 사용자는 커널, 모델 및 애플리케이션 전반의 트렌드를 파악할 수 있습니다.

보안 강화

Hugging Face는 악성 커널이 Python 프로세스와 동일한 권한으로 실행되는 것을 방지하기 위해 신뢰할 수 있는 게시자(trusted publishers) 및 코드 서명(code signing)을 도입하여 커널 보안을 강화했습니다.

신뢰할 수 있는 커널 게시자

기본적으로 kernels 패키지는 신뢰할 수 있는 게시자의 커널만 로드하며, 다른 소스에서 로드하려면 trust_remote_code=True 인자가 필요합니다.

from kernels import get_kernel

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

사용자와 조직은 계정 설정에서 게시자 권한을 요청해야 하며, 이를 통해 사례별 검토가 이루어집니다.

커널 서명

추가적인 보안 계층으로 Sigstore의 cosign을 에페머럴(ephemeral) 개인 키와 함께 사용하여, 유출된 키가 짧은 유효 기간 이후에 재사용될 수 없도록 합니다.

커널은 신뢰할 수 있는 GitHub 저장소의 신뢰할 수 있는 GitHub workflow에 의해 서명됩니다.

kernel-builder는 서명을 지원하며 kernels verify-signature CLI를 통해 서명을 검증할 수 있습니다. 로드 시 검증 기능은 추가 테스트를 대기 중입니다.

예비 설정 노트는 kernels 0.16.0 릴리스 노트에서 확인할 수 있습니다: https://github.com/huggingface/kernels/releases/tag/v0.16.0.

개편된 CLI

각 CLI를 더 가볍고 전문화되게 만들기 위해 kernelskernel-builder의 역할을 분리했습니다.

  • kernels CLI는 커널을 로드하고 사용을 위해 준비하는 작업을 담당합니다.
  • kernel-builder CLI는 커널 빌드를 담당합니다.

문서는 kernels CLI 및 kernel‑builder CLI 페이지에서 확인할 수 있습니다.

이러한 분리는 에이전트 기반(agentic) 커널 개발 경험도 향상시킵니다.

확장된 프레임워크 및 백엔드 지원

커널 호환성을 넓히기 위해 프레임워크 및 백엔드 지원이 확장되었습니다.

  • Torch Stable ABI: 커널은 특정 Torch 버전 또는 약 2년 동안 이후의 모든 버전을 대상으로 지정할 수 있습니다. 예를 들어, Torch 2.9 Stable ABI를 대상으로 하는 커널은 Torch >= 2.9에서 작동합니다.
  • Apache TVM FFI: Torch 이외에 지원되는 첫 번째 프레임워크로, PyTorch, Jax, CuPy와 상호 운용되는 표준화된 ABI를 제공하여 프레임워크 간에 실행되는 커널을 가능하게 합니다.

에이전트 기반 커널 개발을 위한 기반

이제 도구는 커널의 스캐폴딩(scaffolding), 빌드, 벤치마킹 및 반복적인 최적화를 위해 구조화되고 에이전트 친화적인 워크플로우를 제공합니다.

kernel-builder는 예측 가능한 프로젝트 레이아웃과 반복 가능한 빌드를 강제하며, 에이전트에 최적화된 CLI(비대화형 명령, 명확한 출력)를 제공하고, 툴체인, 컴파일 경로 및 성능 고려 사항을 캡처하는 백엔드별 기술을 포함합니다.

HF Jobs와의 통합을 통해 에이전트는 다양한 하드웨어 구성에서 벤치마크 세트를 실행하고, 성능 결과를 수집하고, 정의된 기준선(baseline)과 비교할 수 있습니다.

이 워크플로우를 통해 개발된 커널 예시:

기타 개선 사항

사용성 및 신뢰성이 여러 차례 업그레이드되었습니다.

환경 설정

원클릭 설치 스크립트로 kernel‑builder 환경 설정을 간소화했습니다. 에페머럴 인스턴스를 위한 Terraform 설정 가이드도 제공됩니다.

커널을 위한 시스템 카드

빌드 후 사용 지침과 노출된 인터페이스를 보여주는 시스템 카드가 생성됩니다. Hub에 푸시되면 커널의 front matter가 됩니다.

예시: kernels‑community/flash-attn3를 위한 시스템 카드.

내 시스템에서 커널이 호환되나요?

has_kernel() 함수는 호환 여부를 나타내는 불리언(boolean)을 반환합니다.

from kernels import has_kernel

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

상세한 이유를 보려면 get_kernel_variants()가 각 변형(variant)과 수락 또는 거부 이유를 나열합니다.

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})

개선된 manylinux_2_28 지원

이전에는 오래된 libstdc++ 문제를 피하기 위해 커널이 libstdc++를 정적 링크(statically linked)했으나, 이로 인해 동적 버전과 정적 버전이 상호 작용할 때 segfault가 발생했습니다.

이제 커널은 libstdc++를 동적으로 링크하며, 오래된 libstdc++ 버전과의 호환성을 유지하기 위해 공식 manylinux_2_28 툴체인으로 컴파일됩니다.

결론

이번 업데이트는 커널을 더 안전하고, 검색 가능하며, 빌드하기 쉽고, 자동화된 에이전트 주도 워크플로우에 더 적합하게 만듦으로써 커널 개발자와 사용자 모두에게 기여하는 것을 목표로 합니다.

커뮤니티의 피드백을 환영합니다.

감사의 말: 포스트를 검토해 준 Aritra에게 감사드립니다.

Sources