Společnost Hugging Face představila významné aktualizace svého projektu Kernels, které zahrnují vyhrazený typ repozitáře, vylepšená bezpečnostní opatření, přepracovaná rozhraní příkazového řádku, rozšířenou podporu frameworků a základy pro vývoj kernelů řízený agenty.

Kernely se stávají prvotřídním typem repozitáře

Hub Hugging Face nyní obsahuje nový typ repozitáře nazvaný „kernel“. Tato změna uživatelům umožňuje přímo vidět podporované akcelerátory, operační systémy a verze backendů. Například podrobnosti o kompatibilitě kernelu jsou nyní zobrazeny výrazně:

Flash Attention 3 Kernel Page

Všechny dostupné kernely lze procházet na adrese https://huggingface.co/kernels. Tím, že se kernely stanou prvotřídními občany na Hubu, se zlepšuje jejich objevitelnost a pomáhá to ekosystému AI sledovat trendy napříč jádry, modely a aplikacemi.

Bezpečnost dostává zásadní posílení

Kernely spouštějí nativní kód se stejnými oprávněními jako proces Pythonu, který je načítá, takže bezpečnost je nejvyšší prioritou. Projekt již dlouho klade důraz na reprodukovatelnost – uživatelé mohou kernel znovu zkompilovat a ověřit, že odpovídá veřejnému zdroji, pomocí Nix pro hermetické sestavení a izolované sandboxy. Zdrojový Git SHA1 je vložen do kernelu pro zlepšení původu.

Mezi nedávné přírůstky patří důvěryhodní vydavatelé kernelů a podepisování kódu.

Důvěryhodní vydavatelé kernelů

S novým typem repozitáře zavedla Hugging Face „důvěryhodné vydavatele“. Ve výchozím nastavení balíček kernels načítá pouze kernely od organizací, kterým komunita důvěřuje. Uživatelé se mohou přihlásit k načítání kernelů z jiných zdrojů pomocí argumentu trust_remote_code:

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

Publikování repozitářů kernelů je ve výchozím nastavení omezeno. Uživatelé a organizace musí požádat o přístup v nastavení svého účtu, což týmu umožňuje posoudit každý požadavek jednotlivě.

Podepisování kernelů

Podepisování kódu chrání před kompromitovanými přihlašovacími údaji k Hubu. Kernel je podepsán soukromým klíčem známým pouze vývojáři a ověřen veřejným klíčem. I když útočník získá přístup k přihlašovacím údajům důvěryhodného vydavatele, bez soukromého klíče nemůže podepsat škodlivý kernel.

Projekt používá Sigstore cosign k podepisování pomocí dočasných soukromých klíčů, které jsou platné po omezenou dobu. Také ověřuje, že kernel byl podepsán důvěryhodným GitHub workflow z důvěryhodného repozitáře. Podepisování kernelů je již podporováno nástrojem kernel-builder a je k dispozici příkaz kernels verify-signature. Ověřování podpisu při načítání zatím není vynuceno, čeká se na další testování. Předběžné poznámky k nastavení jsou v poznámkách k vydání kernels 0.16.0: https://github.com/huggingface/kernels/releases/tag/v0.16.0.

Přepracovaná CLI

Nástroje, které byly dříve smíšené mezi kernels a kernel-builder, byly odděleny. Knihovna kernels se nyní zaměřuje výhradně na načítání a přípravu kernelů, zatímco kernel-builder se stará o sestavování. Díky tomu jsou oba nástroje štíhlejší a cílenější.

Vylepšené CLI také pokládá základy pro vývoj kernelů řízený agenty.

Širší podpora frameworků a backendů

Podpora frameworků byla rozšířena. Klíčové změny zahrnují:

  • Podpora Torch Stable ABI, která umožňuje vývojářům kernelů cílit na konkrétní verzi Torch nebo jakoukoli verzi vydanou po ní po dobu přibližně dvou let. Například kernel cílený na Torch 2.9 Stable ABI podporuje Torch >= 2.9.

  • Apache TVM FFI je nyní podporován vedle Torch. TVM FFI je standardizované ABI, které funguje s PyTorch, Jax, CuPy a dalšími, což umožňuje kernelům běžet napříč více frameworky.

Základ pro vývoj kernelů řízený agenty

kernel-builder a kernels podporují vývoj kernelů řízený agenty, kde agent vytvoří optimalizovaný kernel od nuly. Společně umožňují pracovní postup, při kterém agenti vytvářejí kostru, sestavují, benchmarkují a iterativně optimalizují kernely.

Vývoj kernelů řízený agenty je stále nový, takže jsou důležité jednoduché a jasné základy. kernel-builder vynucuje reprodukovatelnou strukturu pro vytváření kostry a sestavování kernelů, což agentům poskytuje předvídatelné rozvržení projektu. Jeho CLI je optimalizováno pro agenty s neinteraktivními příkazy a výstupy, které lze snadno interpretovat programově. Dovednosti specifické pro backend pomáhají agentům orientovat se v odlišnostech různých backendů.

Úspěšné sestavení kernelu je jen prvním krokem – musí přinést skutečné zrychlení oproti základnímu nastavení na cílovém hardwaru. Integrace s HF Jobs usnadňuje benchmarkování, což agentům umožňuje spouštět benchmarkové sady, sbírat výsledky výkonu a porovnávat je se základním nastavením napříč různými hardwarovými konfiguracemi.

Níže jsou uvedeny některé příklady kernelů rozšířených o agenty, které ilustrují typy kernelů, jež lze tímto pracovním postupem vyvíjet a vyhodnocovat.

Různé aktualizace

Nastavení prostředí

Instalační skript nyní poskytuje nastavení jedním kliknutím pro sestavování kernelů pomocí kernel-builder. Pro dočasné instance je k dispozici průvodce nastavením Terraform.

Systémová karta pro kernely

Po sestavení kernelů je pro každý kernel vytvořena systémová karta, která odhaluje užitečné informace včetně toho, jak jej používat a jeho rozhraní. Po odeslání na Hub se tato karta stane úvodní stránkou kernelu:

System card for a kernel

Kontrola kompatibility kernelů

Pomocí metody has_kernel() můžete zkontrolovat, zda je kernel kompatibilní s vaším systémem:

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

Vrací bool. Pro více podrobností o tom, proč kernel není podporován, použijte 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})")  

Mělo by vypsat (v závislosti na vašem počítači):

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

Vylepšená podpora manylinux_2_28

Kernel-builder cílil na manylinux_2_28 téměř od začátku. Dříve používal moderní gcc toolchain zkompilovaný s glibc 2.28 a staticky linkovaný libstdc++. To však způsobovalo problémy, když bylo zapojeno více verzí libstdc++ – například ta dynamicky linkovaná PyTorchem a ta staticky linkovaná kernelem. Některé kernely používající funkce jako C++ regex spouštěly globální inicializace, což vedlo k poškození dat a segfaultům.

Aby to napravil, tým aktualizoval přístup, aby se těmto konfliktům vyhnul, což zajišťuje větší stabilitu.

Tyto aktualizace staví projekt Kernels na cestu k širšímu přijetí a pokročilejším případům použití, včetně pracovních postupů optimalizace řízených agenty. Díky vylepšené bezpečnosti, objevitelnosti a podpoře napříč frameworky pokládá Hugging Face základy pro robustnější a flexibilnější ekosystém kernelů.