Co je Zinc, inferenční engine LLM v Zig pro AMD a Apple

Poslední aktualizace: 02/04/2026
Autor: Isaac
  • Zinc je inferenční engine pro LLM v jazyce Zig, který využívá grafické procesory AMD RDNA3/RDNA4 a Apple Silicon bez nutnosti spoléhat se na ROCm, CUDA nebo Python.
  • Používá Vulkan na Linuxu a Metal na macOS se shadery vyladěnými pro každou architekturu a ověřenou podporou kvantizovaných GGUF modelů.
  • Nabízí CLI, HTTP server s OpenAI kompatibilním API a integrovaný webový chat v jednom binárním souboru, který lze snadno kompilovat pomocí Zig.
  • Projekt je v aktivním vývoji, s dobrými výkonnostními výsledky a plánem zaměřeným na dávkování, kompresi KV a vyšší efektivitu.

Inferenční engine Zinc se Zig a Vulkan

Zinc je lokální inferenční engine pro modely s rozsáhlými jazyky (LLM), navržený tak, aby co nejlépe využil spotřebitelské GPU od AMD (RDNA3 a RDNA4) a čipy Apple Silicon. Jako jazyk používá Zig a jako grafické backendy Vulkan/Metal. Pokud máte moderní grafickou kartu a frustruje vás nedostatečné efektivní využití vLLM, ROCm nebo jiných špatně optimalizovaných řešení, tento projekt je navržen tak, aby tuto mezeru zaplnil.

Cíl společnosti Zinc je velmi jasný : nabídnout jednoduchý, rychlý a bez závislostí způsob, jak lokálně spouštět modely GGUF, s jedinou sestavou, jedním binárním souborem a serverem kompatibilním s OpenAI API a s integrovaným rozhraním pro chat v prohlížeči. Toho všeho je dosaženo pomocí ručně vytvořených shaderů pro každou platformu, nízkoúrovňového designu a uživatelského prostředí přizpůsobeného vývojářům a pokročilým uživatelům.

Co je Zinc (inferenční engine Zig) a jaký problém řeší?

Zinc je inferenční engine pro LLM, napsaný primárně v jazyce Zig a od základu navržený tak, aby plně využíval hardware dvou rozšířených, ale tradičně nedostatečně využívaných rodin GPU: spotřebitelských GPU od AMD založených na RDNA3/RDNA4 a Apple Silicon SoC (M1, M2, M3, M4, M5). Místo spoléhání se na ROCm, CUDA nebo MLX je založen na Vulkan 1.3 v Linuxu a Metal v macOS.

Projekt vznikl na základě opakující se stížnosti v komunitě: majitelé výkonných grafických karet AMD zjišťují, že ROCm dobře nepodporuje spotřebitelské karty, vLLM bez ROCm jednoduše nefunguje a trasa Vulkan v souboru llama.cpp zachází s GPU jako se sekundárním hráčem s generickými shadery, bez specifického ladění architektury a bez solidní historie serveru.

Společnost Zinc vychází z předpokladu, že hardware je již připraven : karty RDNA3 a RDNA4 mají více než dostatek paměti, výpočetní kapacity a šířky pásma VRAM pro provoz velkých modelů a čipy Apple Silicon disponují unifikovanou pamětí a výkonnými výpočetními jednotkami. Skutečným úzkým hrdlem je software, proto byl pro tyto platformy vytvořen specifický engine s velmi nízkoúrovňovým systémovým přístupem.

V praxi je nyní Zinc schopen načítat velké modely GGUF (kolem 21 GB vah VRAM pro model s 35B parametry), vytvářet výpočetní graf se stovkami uzlů (například pro hybridní transformátor s vrstvami MoE a SSM) a generovat koherentní text konkurenceschopnou rychlostí, zejména na jemně vyladěném hardwaru RDNA4.

Proč byl Zig vybrán pro stavbu Zincu?

Zig se perfektně hodí pro druh práce, kterou vyžaduje inferenční engine pro GPU zaměřený na Vulkan a Metal: intenzivní volání grafického API, manuální správa paměti GPU, nahrávání do vyrovnávací paměti příkazů a integrovaný kanál pro sestavení shaderů. Je to čistý, nefalšovaný systémový kód a Zig nabízí sadu nástrojů, která se tomuto faktu dokonale hodí.

Klíčovou funkcí je `@cImport` , která umožňuje přímý přístup k C ABI rozhraní Vulkan bez generování složitých vazeb nebo dalších vrstev. To usnadňuje volání nízkoúrovňových funkcí API přesně tak, jak jsou definovány, což snižuje tření a režijní náklady při interakci s ovladačem a běhovým prostředím grafiky.

Použití comptime v Zigu je velmi užitečné pro generování dispečerských tabulek podle typu kvantizace a pro specializaci cest kódu v době kompilace, což se promítá do menšího větvení za běhu a efektivnějšího výběru jader a formátů, jako jsou Q4_K, Q5_K, Q6_K, Q8_0 nebo F16, v závislosti na načteném modelu GGUF.

Správa chyb a zdrojů pomocí errdefer pomáhá udržovat čištění zdrojů GPU pod kontrolou: vyrovnávací paměti, obrázky, deskriptory a další objekty Vulkan/Metal jsou správně uvolňovány i v případě přechodných chyb, čímž se zabraňuje únikům VRAM a nekonzistentním stavům po selháních uprostřed inicializace nebo dekódovací smyčky.

Zigův vlastní systém sestavení výrazně zjednodušuje integraci kompilace shaderů: příkaz `zig build` může zřetězit kroky pro vyvolání glslc v Linuxu, umístit již zkompilované shadery SPIR-V do `zig-out/share/zinc/shaders/` a vytvořit jeden binární soubor v `zig-out/bin/zinc`, který vše sdružuje. V systému macOS se shadery Metal (MSL) kompilují za běhu.

Obecná architektura: Vulkan v AMD a Metal v Apple Silicon

Zinc je navržen se dvěma odlišnými cestami spuštění , jednou pro Linux s grafickými kartami AMD s využitím Vulkan 1.3 a druhou pro macOS s Apple Silicon s využitím Metal, ačkoli z pohledu uživatele je zážitek prakticky stejný: sestavení binárního souboru, výběr ověřeného modelu GGUF a spuštění inference přes CLI, HTTP server nebo rozhraní webového chatu.

Trasa AMD plně využívá možností RDNA3 a RDNA4 : používá ručně psané výpočetní shadery GLSL s Wave64, kooperativní maticí a architekturně specifickými strategiemi dlaždicového rozkládání, běžící na Vulkanu. Nejedná se o generický backend, který „funguje i na AMD“, ale spíše o jádra speciálně vyladěná pro co nejlepší využití hardwaru.

  AMD dokončilo akvizici společnosti ZT Systems za 4.900 miliardy dolarů, aby posílila své zaměření na umělou inteligenci

Na platformě Apple Silicon používá Zinc nativní shadery v jazyce Metal (MSL) s operacemi simdgroup, čímž využívá unifikovanou paměť a mmap s nulovou kopií k přímému načítání modelů bez nákladných mezikroků kopírování. To je v souladu s filozofií SoC od společnosti Apple, kde CPU a GPU sdílejí stejný paměťový prostor.

Výběr backendu se provádí automaticky během kompilace : Zig detekuje, zda je sestavován v prostředí Linuxu s podporou Vulkanu nebo na macOS s Metalem a aktivuje odpovídající cestu. Z pohledu příkazu build uživatel jednoduše spustí `zig build -Doptimize=ReleaseFast` a připraví binární soubor pro svou platformu.

Tento design se vyhýbá závislosti na specifických ovladačích, jako je ROCm nebo MLX, a také na běhových prostředích, jako je CUDA nebo Python. Zinc je koncipován jako „jeden binární soubor bez těžkého ML stacku“, což je obzvláště atraktivní pro ty, kteří chtějí nastavit lokální LLM server na stolním počítači nebo notebooku, aniž by se museli zabývat složitými instalacemi.

Podporované platformy, GPU a modely

Zinc se v současnosti zaměřuje na dvě hlavní prostředí : Linux s grafickými kartami AMD RDNA3/RDNA4 prostřednictvím Vulkan 1.3 a macOS s procesory Apple Silicon od M1 do M5 prostřednictvím Metal. To zahrnuje jak dedikované grafické karty pro stolní počítače, tak i karty zaměřené na umělou inteligenci (například Radeon AI PRO), a také integrované čipy v noteboocích a stolních počítačích Apple.

V systému Linux byla kompatibilita ověřena u karet, jako je AMD Radeon AI PRO R9700 (RDNA4, 32 GB), a karet RDNA3, jako je RX 7900 XTX. U RDNA4 se doporučuje před spuštěním programu Zinc povolit kooperativní optimalizaci matice pomocí proměnné prostředí RADV_PERFTEST=coop_matrix, protože to umožňuje efektivnější výpočetní cesty v ovladači RADV.

V systému macOS běží Zinc na procesoru Apple Silicon, od raného M1 až po nedávné generace, jako je M4 a novější, s využitím backendu Metal a vlastních MSL shaderů. Byl testován například na M1 Pro s 32 GB unifikované paměti, což stačí k modelům s několika miliardami parametrů, a na některých 35GB variantách se specifickými požadavky na paměť.

Pokud jde o modely, Zinc se omezuje na velmi specifickou sadu end-to-end validovaných GGUF, spíše než aby uváděl rozsáhlý teoretický katalog. Patří mezi ně varianty Qwen3.5 s parametry 2B a 35B, s kvantizacemi jako Q4_K_M nebo Q4_K_XL, navržené pro vyvážení spotřeby VRAM a výkonu inference.

Mezi podporované kvantizační formáty patří Q4_K, Q5_K, Q6_K, Q8_0 a F16, což umožňuje úpravy kvality a rychlosti na základě dostupného hardwaru. Například v současných benchmarkech dosahuje model Qwen3.5 2B Q4_K_M na RDNA4 přibližně 27 tok/s a na Apple Silicon přibližně 17 tok/s při dekódování jednoho proudu.

Aktuální výkonnost a stav projektu

Zinc je stále experimentální software , který je v aktivním vývoji, ale již se může pochlubit slušnými výkonnostními údaji a stabilním pipeline pro CLI a HTTP server inference. V testovacím prostředí s Radeon AI PRO R9700 (RDNA4, 32 GB, 576 GB/s) byly na modelu Qwen3.5 35B-A3B UD kvantovaném na Q4_K_XL naměřeny rychlosti kolem 38 taktů/s.

V jednoduchých testech dekódování z příkazového řádku je typickým případem vydání krátkého příkazu typu „Hlavní město Francie je“ a generování 128 tokenů. Za těchto podmínek byly v modelu 35B pozorovány rychlosti blízké 37,95 tok/s s přibližně 26,3 ms/tok a v modelu 2B Q4_K_M na stejném uzlu RDNA4 přibližně 26,71 tok/s (37,4 ms/tok).

Je pozoruhodné, že model 35B dokáže na tomto hardwaru překonat model 2B, což naznačuje, že úzkým hrdlem není jen počet parametrů, ale spíše tvar grafu, typ použitých jader a efektivita dekódovací cesty. Engine dosahuje modelované šířky pásma přibližně 112,5 GB/s pro celou cestu tokenu, což je zhruba 19,5 % teoretického maxima čipu.

Toto zdánlivé „nedostatečné využití“ paměti samo o sobě není problém, protože jediný dekódovací proud není navržen tak, aby zcela saturoval šířku pásma DRAM. Zbývající čas je stráven ve středních a malých jádrech a ve větších hloubkách výpočetního grafu. Pro zlepšení celkového využití není správným přístupem požadovat po jediném proudu, aby dělal vše, ale spíše implementovat dávkování a souběžnost.

Ve srovnání s jinými enginy, jako je llama.cpp , je současná základní hodnota Zincu na RDNA4 pro model 35B a základní dekódování kolem 40 tok/s, zatímco llama.cpp může na stejném uzlu a modelu překročit 100 tok/s. Plán Zincu zahrnuje překlenutí této mezery optimalizací aktivních jader, snížením režie Vulkanu a vylepšením trasy racionalizovaného chatu (/v1/chat/completions), aby se přiblížila výkonu trasy čistého dekódování.

Vyladěné interní prvky a shadery

Engine Zinc se skládá z několika již dokončených základních stavebních bloků: infrastruktura Vulkan, analyzátor a zavaděč modelů GGUF, detekce GPU RDNA3/RDNA4, nativní tokenizátor BPE (z metadat GGUF), sada 16 výpočetních shaderů GLSL, nástroje pro tvorbu a tvorbu výpočetních grafů a smyčka forward pass pro dekódování.

  Jak používat Microsoft Copilot k psaní obchodních návrhů

Shadery od AMD jsou napsány speciálně pro RDNA a používají schémata wave64, kooperativní matice a dlaždicového uspořádání přizpůsobená hierarchii paměti a výpočetním jednotkám architektury. To je v kontrastu s generickými řešeními, kde se pro všechno používá stejný shader, což má za následek výkon hluboko pod potenciálem karty.

V Apple Siliconu jsou tyto cesty podporovány nativními jádry MSL , která využívají operace simdgroup a přímý přístup k mapovaným modelům v unifikované paměti, minimalizují kopie a využívají integrované povahy čipu. Optimalizace této cesty mírně zaostává za RDNA4, ale aktivně se vyvíjí.

Výpočetní graf, který Zinc vytváří pro komplexní model, jako je Qwen3.5 35B-A3B-UD, může dosáhnout více než 700 uzlů, včetně vrstev MoE (Mixture of Experts), SSM a projekce slovní zásoby. Celý tento graf se posouvá směrem ke strategii, kde se dekódování zaznamenává jako jeden příkaz Vulkan na token, čímž se snižuje 120 zátěží GPU-CPU na token, které v současnosti negativně ovlivňují výkon.

Kromě inferenčního jádra obsahuje Zinc integrovaný HTTP server s API kompatibilním s OpenAI v adresáři /v1 a také rozhraní chatu založené na prohlížeči, které je obsluhováno z adresáře /. API podporuje streamování tokenů a na adrese /health je k dispozici koncový bod pro kontrolu stavu pro integraci s orchestrátory a monitorovacími systémy.

Instalace závislostí a kompilace Zincu

Pro používání Zincu potřebujete jen velmi málo externích nástrojů , zejména pokud používáte macOS s Apple Silicon. V tomto prostředí jednoduše nainstalujte Zig (verze 0.15.2 nebo vyšší) a nástroje příkazového řádku Xcode pomocí `xcode-select --install`. Vulkan, glslc, Python a MLX nejsou nutné, protože celý proces závisí na systému sestavení Metal a Zigu.

V Linuxu s grafickou kartou AMD je nastavení stejně jednoduché : doporučuje se aktualizovat balíčky pomocí `apt update` a nainstalovat `libvulkan-dev`, `vulkan-tools` a `glslc`, stejně jako `git` pro naklonování repozitáře. Zig 0.15.2+ musí být stažen z oficiálních webových stránek a přidán do PATH, aby se `zig build` spustil bez problémů.

Jakmile jsou závislosti nainstalovány, postup sestavení je na obou platformách identický: naklonujte oficiální repozitář GitHub pomocí příkazu `git clone https://github.com/zolotukhin/zinc.git`, přejděte do adresáře a spusťte příkaz `zig build -Doptimize=ReleaseFast`. Volba `ReleaseFast` je důležitá pro získání optimalizovaného binárního souboru a vyhnutí se zavádějícím měřením výkonu.

Výsledný binární soubor je uložen do souboru ./zig-out/bin/zinc . V Linuxu proces sestavení také zkompiluje GLSL shadery do SPIR-V a umístí je do souboru zig-out/share/zinc/shaders/. V macOS jsou však Metal shadery kompilovány za běhu z kódu MSL, který je součástí projektu.

Je důležité si uvědomit klíčový detail v Linux RDNA4 : některé novější verze glslc mohou při kompilaci shaderů způsobit významné snížení výkonu. Projekt doporučuje používat verzi glslc poskytovanou v systémových repozitářích, spíše než novější verze získané jinými způsoby.

Předběžná kontrola a první kroky se zinkem

Před zobrazením jakékoli výzvy je vhodné spustit předběžnou kontrolu pomocí příkazu `./zig-out/bin/zinc –check`. Tento příkaz ověří, zda je hostitelské prostředí, GPU a potřebná aktiva v pořádku a zda nechybí žádné shadery, funkce Vulkan/Metal ani metadata modelu.

Na počítačích s RDNA4 je obzvláště užitečné exportovat proměnnou RADV_PERFTEST=coop_matrix před kontrolní a inferenční relací a poté znovu zavolat ./zig-out/bin/zinc –check. Cílem je ověřit, zda byla GPU správně detekována, zda jsou aktivní kooperativní optimalizace matice a zda se neobjevily žádné kritické varování.

Pokud kontrola skončí zobrazením READY [OK] , znamená to, že prostředí je v rozumném stavu pro testování inference. Pokud se zobrazí varování, je vhodné je nejprve vyřešit (ovladače, verze Vulkanu, nezkompilované shadery, nedostatek VRAM pro zvolený model atd.) před posouzením výkonu nebo stability enginu.

Kontrola také ověřuje aspekty, jako je detekce zařízení Vulkan, výběr aktivní GPU, kompatibilita spravovaných modelů při předávání –model-id, metadata GGUF a odhad, zda se model vejde do paměti VRAM dostupné na vybrané GPU.

Jakmile je tato fáze dokončena, doporučený pracovní postup je velmi jednoduchý : vypsat katalog kompatibilních modelů pro daný stroj, stáhnout jeden ověřený pro váš profil GPU a provést počáteční inferenci CLI s krátkým výzvou. To vám umožní ověřit, zda celý proces (tokenizace, forward pass, textový výstup) funguje správně.

Katalog modelů, stahování a správa

Zinc obsahuje systém spravovaných modelů , který detekuje profil GPU (např. amd-rdna4-32gb nebo apple-silicon) a zobrazuje, které ověřené modely nejlépe odpovídají dané konfiguraci paměti a kapacity. K procházení tohoto katalogu se používá příkaz `./zig-out/bin/zinc model list`.

Pro stažení modelu se používá příkaz `model pull` , například `./zig-out/bin/zinc model pull qwen35-2b-q4k-m`. Tím se stáhne soubor GGUF odpovídající modelu Qwen3.5 2B s kvantizací Q4_K_M a uloží se do lokální mezipaměti, přičemž se také ověří hash SHA-256, aby se zajistila integrita stahování.

Po stažení můžete nastavit výchozí model pro budoucí spuštění pomocí `./zig-out/bin/zinc model use qwen35-2b-q4k-m` a zkontrolovat, který model je aktuálně aktivní, pomocí `./zig-out/bin/zinc model active`. Díky tomu mnoho následných volání nemusí explicitně specifikovat `--model-id`.

  Apple Intelligence integruje Google Gemini jako alternativu k ChatGPT v iOS 18.4

Pokud již model nepotřebujete, můžete jej z mezipaměti uvolnit pomocí příkazu ./zig-out/bin/zinc model rm qwen35-2b-q4k-m, což pomáhá spravovat místo na disku, pokud experimentujete s více verzemi kvantizace nebo alternativními modely.

Katalog je záměrně úzký a zaměřuje se na modely, které projektový tým kompletně ověřil, spíše než na slib teoretické kompatibility se stovkami variant GGUF. Podrobnější informace o pracovních postupech modelů a možnostech ukládání do mezipaměti naleznete ve specializované webové dokumentaci k platformě Zinc.

Inference CLI, HTTP server a webový chat

Nejjednodušší způsob testování Zincu je pomocí rozhraní příkazového řádku (CLI) . Jakmile je binární soubor zkompilován, model stažen a kontrola proběhne úspěšně, můžete spustit jednoduchý první test pomocí příkazu jako `./zig-out/bin/zinc --model-id qwen35-2b-q4k-m --prompt "Hlavní město Francie je"`. V systému Linux RDNA4 nezapomeňte povolit `export RADV_PERFTEST=coop_matrix`, abyste využili kooperativní matici.

Pokud je vše správně nakonfigurováno, měly by se v protokolech zobrazovat zprávy z modelového zavaděče, dokončení předběžného vyplnění a počet vygenerovaných tokenů spolu s rychlostí v tocích/s, a to vše končí souvislou výstupní zprávou, ve výše uvedeném příkladu obvykle slovem „Paris“. Tato sekvence naznačuje, že hlavní inferenční cesta je funkční.

Kromě čistého režimu CLI integruje Zinc i serverový režim přístupný pomocí `./zig-out/bin/zinc chat`, který spouští HTTP server (ve výchozím nastavení na portu 9090) a otevře vestavěné rozhraní chatu ve vašem prohlížeči. Odtud můžete s modelem interagovat podobným způsobem jako v online chatu, včetně podpory pro delší režimy „zdůvodnění“.

Server lze také spustit ručně pomocí příkazu `./zig-out/bin/zinc --model-id qwen35-2b-q4k-m -p 8080`, což vám umožní vybrat port, který nejlépe vyhovuje vašim potřebám. Poté jednoduše otevřete `http://localhost:8080/` ve vašem prohlížeči a zpřístupníte stejné chatovací rozhraní, které je součástí binárního souboru.

Zveřejněné HTTP API od Zincu podporuje OpenAI na trase /v1, což vám umožňuje nasměrovat klienty nebo SDK, které již s OpenAI API fungují, přímo na vaši instanci Zinc. Součástí je také koncový bod /health pro kontroly stavu v produkčních nasazeních nebo orchestrovaných prostředích.

Aktuální omezení a plán

Ačkoli je Zinc již funkční, projekt otevřeně uvádí , že je stále v experimentální fázi a že některé části jsou stále ve vývoji. Režim CLI je v současné době nejpropracovanějším způsobem, jak začít; server, pokrytí modelu a jemné ladění výkonu se zdokonalují častými iteracemi.

Existují určitá uznávaná omezení : seznam podporovaných modelů je záměrně omezen; plán pro Apple Silicon se stále dolaďuje, aby se přiblížil efektivitě RDNA4; a implementace kontinuálního, víceprocesového dávkování pro současnou obsluhu více klientů je v plánu, ale ještě není dokončena.

Vývojový tým pracuje na několika klíčových oblastech, aby se posunul od „syrového dekódování nad 30 toků/s“ k podpoře úloh s dlouhým uvažováním při zachování této rychlosti a zlepšení celkového využití GPU. To zahrnuje překlenutí mezery mezi /v1/completions a /v1/chat/completions, kde šablony chatu a čas do prvního tokenu (TTFT) přidávají dodatečné režijní náklady.

Další oblastí, na které se pracuje, je snížení fluktuace deskriptorů v horké cestě Vulkanu: myšlenkou je znovu používat vazby a minimalizovat práci na token v dekódovací smyčce, aby se čas CPU a latence na operaci Vulkanu udržely co nejnižší.

Mezi plánovanými pokročilými fázemi je komprese TurboQuant KV , technika komprese stavu KV (klíč-hodnota), která může pomoci snížit spotřebu paměti a zvýšit rychlost v dlouhých sekvencích, a také implementace kontinuálního dávkování pro zvýšení rychlosti tokenů za sekundu na agregované úrovni s více simultánními streamy.

Ti, kteří se chtějí ponořit hlouběji do kódu, mají k dispozici relativně snadno zvládnutelný základ: zhruba 5 000 řádků Zigu a zhruba 2 000 řádků GLSL, spolu se shadery MSL pro Apple, profilovacími nástroji (--profile, stále se upravuje, aby nezkresloval měření) a podrobným návodem k vývoji ve webové dokumentaci.

Celkově vzato, Zinc vykresluje zajímavý obrázek pro každého s moderní grafickou kartou AMD nebo systémem Apple Silicon, který chce skutečně využít svůj hardware pro lokální LLM, aniž by se uchyloval k ROCm, CUDA nebo náročným běhovým prostředím Pythonu. Jeho kombinace Zig, Vulkan a Metal spolu se sadou shaderů přizpůsobených každé architektuře z něj činí slibnou volbu, pokud máte zájem o nastavení efektivního inferenčního prostředí na vlastním počítači, ať už pro experimentování, obsluhu API kompatibilního s OpenAI nebo pro hluboké pochopení toho, jak vytvořit nízkoúrovňový inferenční engine.