A Kernels projekt célja a saját kernel-ek csomagolásának, terjesztésének és fogyasztásának szabványosítása úgy, hogy a folyamat gördülékeny és biztonságos legyen, valamint jól illeszkedjen a Hugging Face Hub-hoz. Az elmúlt hónapokban a projekt jelentős átdolgozáson ment át: új tárolótípus, megerősített biztonsági rétegek, CLI-felosztás és agent-orientált fejlesztési alapok kerültek bevezetésre. Az alábbiakban összefoglaljuk a fontosabb változásokat és a közeljövő terveit.
Új repository típus: "kernel"
A Hub-on megjelent egy új repository típus, a "kernel". Ez lehetővé teszi, hogy a kernel-eket külön, számítási sajátosságokhoz igazítva kezeljék: a felhasználó például láthatja, mely akcelerátorok, operációs rendszerek és backend-verziók támogatottak egy adott kernelhez.
- Példa kernel-oldal: kernels-community/flash-attn3
- Az összes kernel böngészhető a Hub-on: https://huggingface.co/kernels
A kernel-ek elsőrendű entitássá tétele a Hub-on javítja a felfedezhetőséget és lehetővé teszi a trendek követését kernel-ek, modellek és az azokhoz kapcsolódó alkalmazások között.
Megerősített biztonság
Mivel a kernel-ek natív kódot futtatnak a betöltő Python folyamat jogosultságával, rosszindulatú kernel komoly kárt okozhat. Ennek megfelelően a Kernels projektnél a biztonság kiemelt fontosságú.
-
Reprodukálhatóság: Nix-et használják a build-ek tisztaságának és hermetikus kiértékelésének biztosítására, valamint a forrás Git SHA1-ét beágyazzák a kernelbe a bizonyíthatóság növeléséhez.
-
Trusted publishers (megbízható kiadók): az új repo-típus bevezetésével alapértelmezésben csak megbízható kiadók kerneljeit tölti be a kernels csomag. A trusted publisher olyan szervezet, amelyet a közösség jóhiszeműnek tekint. Nem megbízható forrásból is lehet kernel-t betölteni, de ekkor expliciten engedélyezni kell a trust_remote_code paraméterrel:
from kernels import get_kernel
kernel_module = get_kernel( "Atlas-Inference/gdn", version=1, trust_remote_code=True )
Publikáláshoz a felhasználóknak vagy szervezeteknek kérniük kell a kernel publisher jogosultságot az account beállításaikból; a jóváhagyást esetileg kezelik.
-
Kernel aláírás (code signing): további rétegként bevezették a kódaláírást. A kernel-t a fejlesztő privát kulcsával írják alá, és a publikus kulccsal ellenőrizhető. Ez védi azt az esetet, amikor egy támadó feltöri egy megbízható publisher Hub fiókját és rosszindulatú kernel-t tölt fel – a támadó nem tud érvényes aláírást készíteni nélküli a privát kulcs birtoklása.
- A megvalósításhoz Sigstore cosign-t használnak ideiglenes (ephemeral) privát kulcsokkal; mivel ezek kulcsok időben korlátozottak, egy kiszivárgás esetén általában nem használhatók tovább.
- Ellenőrzik továbbá, hogy a kernel-t egy megbízható GitHub workflow írta alá egy megbízható GitHub repo-ból.
Kernel signing támogatott a kernel-builder-ben és a kernels verify-signature parancs is elérhető a kernel aláírásának ellenőrzésére. A töltéskor való automatikus aláírásellenőrzés még nincs alapértelmezésben bekapcsolva: a csapat előbb további teszteket akar lefuttatni. Előzetes beállítási jegyzetek megtalálhatók a kernels 0.16.0 release notes-ban.
Átalakított CLI-k
Korábban több segédprogram (utility) összefonódott a kernels és a kernel-builder csomagokban. Most világosabb szeparációt vezettek be: a kernels könyvtár feladata a kernel-ek betöltése és előkészítése használatra, míg a kernel-builder a kernel építésével kapcsolatos teendőkért felel.
Ennek eredményeképp mindkét eszköz karcsúbb és célspecifikusabb lett. Részletes dokumentáció található a kernels CLI és a kernel-builder CLI oldalaknál.
Több framework és backend támogatás
Kiterjesztették a támogatást több framework és backend irányába, a legfontosabb változások:
-
Torch Stable ABI támogatás: a kernels és kernel-builder mostantól támogatja a Torch Stable ABI-t, ami azt jelenti, hogy a kernel fejlesztők egy adott Torch verziót vagy az azt követő körülbelül két évre visszamenőleg kompatibilis verziókat célozhatják meg. Példa: egy Torch 2.9 Stable ABI-t célzó kernel a Torch >= 2.9 környezetben fog működni.
-
Apache TVM FFI támogatás: a TVM FFI az első, Torch-on kívüli framework támogatás, amely standardizált ABI-t ad a kernel-eknek, és együttműködik más frameworkökkel, például PyTorch, Jax és CuPy-vel. Ez lehetővé teszi a többframework-ön átívelő kernel-ek készítését.
Alapok az agentikus (agentic) kernel-fejlesztéshez
A kernel-builder és a kernels eszközök kiegészítik az agentikus kernel-fejlesztés növekedését: az ügynökök (agents) képesek lehetnek egy (optimalizált) kernel létrehozására a semmiből, majd annak lefordítására, benchmarkolására és iteratív finomhangolására.
- A kernel-builder segít egy kiszámítható projektstruktúrát és reprodukálható build-folyamatot létrehozni, ami fontos az agentek automatizált működéséhez.
- A CLI-k agent-optimalizált viselkedésre törekednek: nem interaktív parancsok, géppel könnyen feldolgozható kimenetek.
- Backend-specifikus "skills" segítenek az agenteknek kezelni a különböző backendek idioszinkráziáit (toolchain, fordítási útvonalak, teljesítményjellemzők).
A sikeres build önmagában nem elegendő: a kernelnek valódi gyorsulást kell hoznia a célhardveren. Ezért fontos a benchmarking több hardverkonfiguráción és akár különböző akcelerátor-generációkon. A szoros integráció a HF Jobs szolgáltatással egyszerűsíti az automatizált benchmark futtatást, eredménygyűjtést és összehasonlítást a referencia-baseline-nal.
Példák agent-augmentált kernel-ekre:
Egyéb fejlesztések
-
Környezet beállítás: a kernel-builder által igényelt build környezet felállítása egyszerűsítve lett egy telepítő (installation script) segítségével. Emellett van Terraform útmutató az időszakos (ephemeral) példányok használatához.
-
System card: minden elkészült kernelhez egy system card készül, amely hasznos információkat mutat (használat, exponált interfészek stb.), és ez lesz a kernel Hub-oldalának front matter-e.
-
Kompatibilitás ellenőrzése: a has_kernel() metódussal programból ellenőrizhető, hogy egy kernel kompatibilis-e az aktuális rendszerrel. Részletesebb indoklásokért a get_kernel_variants() visszaadja az elfogadott és elutasított variánsokat és az elutasítás okát.
-
manylinux_2_28 támogatás javítása: korábban statikusan linkelték a libstdc++ könyvtárat, hogy elkerüljék a régebbi libstdc++ verziók kompatibilitási problémáit. Ez azonban ütközésekhez és memóriakorrupcióhoz vezetett, ha több libstdc++ verzió is jelen volt (például PyTorch dinamikusan linkelt és a kernel statikusan linkelt libstdc++-a). A megoldásként most dinamikusan linkelik a libstdc++-t, és a hivatalos manylinux_2_28 toolchain-nel fordítanak a jobb kompatibilitás érdekében.
Következtetés
A Kernels projekt célja mind a kernel-fejlesztők, mind a kernel-felhasználók szolgálata: egyszerűsíteni a csomagolást és terjesztést, miközben különös figyelmet fordítanak a biztonságra és a reprodukálhatóságra. A most bevezetett repository típus, a trusted publishers és a kódaláírási megoldás jelentősen növeli a biztonságot; a CLI-szétválasztás, framework-bővítések és agent-optimalizált funkciók pedig a fejlesztési munkafolyamatokat segítik. A projekt nyitott a közösségi visszajelzésekre és hozzájárulásokra.
Köszönet Aritra-nak a poszt áttekintéséért.



