Úvod: Proč se TensorRT-LLM vyplatí vyzkoušet o víkendu
Pokud jste někdy viděli, jak GPU sedí na 60% využití, zatímco váš LLM se plazí, víte, že ve výkonu zbývá rezerva. TensorRT-LLM tuto rezervu promění v propustnost: fúzovaná jádra, stránkovaná pozornost, kvantizace a optimalizace na úrovni grafu, které snižují latenci a zvyšují počet tokenů za sekundu. V tomto praktickém průvodci projdeme celý proces – od instalace přes sestavení enginu až po obsluhu – abyste mohli s jistotou nasadit rychlejší a levnější inference na grafických procesorech NVIDIA.
Tento tutoriál je napsán praktickým stylem zaměřeným na řešení. Použijeme strukturu založenou na otázkách s kopírovatelnými příkazy, běžnými úskalími a rozhodovacími body pro FP16 vs INT8, dávkování a strategie KV cache. Tam, kde to bude vhodné, se také odkážeme na oficiální zdroje pro hlubší ponor.
Co se naučíte
- Jak nastavit prostředí pro TensorRT-LLM
- Jak připravit model (z Hugging Face nebo checkpointů) pro sestavení enginu
- Jak sestavit FP16/INT8 enginy a vyladit výkon
- Jak spustit inference prostřednictvím Python/C++ a HTTP obsluhy
- Jak provádět benchmarky, dávkovat a ladit
Pro koho je to určeno
- ML inženýři nasazující LLM na grafických procesorech NVIDIA
- Odborníci optimalizující náklady/latenci v produkci
- Tvůrci přecházející z PyTorch Transformers na vysoce optimalizovanou inferenci
- Co je TensorRT-LLM a kdy byste jej měli použít?
TensorRT-LLM je inferenční stack, který kompiluje Transformer modely do vysoce optimalizovaných GPU „enginů“. Ve srovnání se surovým PyTorchem nebo obecnými runtime, obvykle získáte:
- Vyšší propustnost při velkých velikostech batchů
- Lepší efektivitu paměti s stránkovanou KV cache a kvantizací
Použijte jej, pokud běžíte na grafických procesorech NVIDIA a záleží vám na produkčním výkonu. Je to zvláště cenné pro LLM pouze pro dekodéry (např. Llama, Mistral, Phi, BLOOM) a scénáře jako chatboty, RAG a vysoce QPS API služby.
- Předpoklady a nastavení prostředí
Základní požadavky
- NVIDIA GPU s nedávnou výpočetní schopností (např. Ampere, Ada, Hopper)
- Odpovídající verze CUDA a TensorRT, plus příslušné ovladače
- Python 3.8+ a nástroje pro sestavení, pokud kompilujete ze zdrojového kódu
Poznámka k verzování: Před instalací vždy zkontrolujte oficiální matici podpory TensorRT a poznámky k vydání, abyste zjistili kompatibilní verze CUDA/TensorRT a funkce.
Možnosti rychlého spuštění
- Kontejnerizované: Použijte kontejnery NVIDIA s předinstalovaným CUDA/TensorRT – nejrychlejší způsob, jak se vyhnout nesouladu verzí.
- Nativní instalace: Postupujte podle oficiálního rychlého startu pro základní TensorRT a poté na něj vrstvěte TensorRT-LLM.
- Příprava modelu (Hugging Face → TensorRT-LLM)
Běžné zdroje
- Hugging Face: Llama/Mistral/BLOOM varianty
- Lokální checkpointy: Vlastní fine-tunes
Kontrolní seznam přípravy
- Potvrďte, že architektura modelu je podporována TensorRT-LLM.
- Stáhněte váhy modelu a tokenizer.
- V případě potřeby převeďte safetensors na očekávané formáty nebo exportujte do ONNX pomocí skriptů projektu.
Tip: Oficiální rychlý start často obsahuje skripty pro získávání modelů a převod do správné mezilehlé formy. Pro průvodce ve stylu tutoriálu s příkladem BLOOM se podívejte na průvodce společnosti Dell o převodu Hugging Face LLM na TensorRT-LLM.
- Sestavení enginu TensorRT-LLM (srdce workflow)
Koncepty, které byste měli znát
- Engine: Kompilovaný, hardwarově optimalizovaný artefakt, který načítáte pro inferenci.
- Přesnost: FP16/BF16 pro silný základ; INT8 nebo FP8 pro vyšší propustnost, pokud se zachová přesnost.
- KV cache: Stránkovaná KV cache snižuje fragmentaci paměti a zvyšuje výkon s dlouhým kontextem.
Kroky na vysoké úrovni
- Definujte konfiguraci sestavení: maximální batch, délky sekvencí, přesnost, kvantizace a architektura GPU.
- Ukažte na své modelové checkpointy a tokenizer.
- Zkompilujte engine pro cílový GPU (GPU).
Reference: Sestavení enginů s oficiálními dokumenty a konfiguracemi. Pokud plánujete obsluhovat prostřednictvím Hugging Face Text Generation Inference (TGI), podívejte se na poznámky TRT-LLM backendu o předkompilování enginů pro každou architekturu GPU a konfiguraci.
Rozhodovací strom pro začátečníky
- První sestavení: FP16, střední maximální délka sekvence (např. 4K–8K), mírný batch (např. 4–8). Ověřte správnost.
- Škálování: Povolte stránkovanou KV cache. Zvyšte maximální velikosti batch/beam. Experimentujte s FP8 nebo INT8.
- Produkce: Připněte konfigurace, které splňují latenci/QPS SLO; vytvořte samostatné enginy pro každý scénář (krátké výzvy vs. dlouhý kontext).
- Spuštění inference: Python, C++ a HTTP
Máte tři běžné cesty:
- Python: Rychlé prototypování, ideální pro pipelines a notebooks.
- C++: Maximální výkon, integrace do nativních služeb.
- HTTP Serving: Použijte TGI s TRT-LLM backendem nebo příklady obsluhy runtime pro škálovatelné nasazení.
Hugging Face TGI backend
- Předkompilujte enginy pro vaše přesné nastavení GPU/přesnosti.
- Spusťte TGI s TRT-LLM backendem a nasměrujte jej na adresář enginu.
- Odesílejte požadavky prostřednictvím /generate nebo tras kompatibilních s openai a škálujte s replikami.
- Ladění výkonu, které skutečně posouvá hranice
Kde začít
- Přesnost: FP16 je váš spolehlivý základ. INT8/FP8 mohou dále snížit latenci, ale ověřte kvalitu.
- Dávkování: Dynamické dávkování a slučování požadavků dramaticky zvyšují propustnost; měřte latenci ocasu.
- Stránkovaná KV Cache: Nezbytná pro dlouhé výzvy a streamování; snižuje tlak na paměť.
- Maximální délky: Větší maximální délky sekvencí zvyšují velikost enginu a mohou snížit takt; sestavte enginy vhodné pro daný účel.
Praktické tipy
- Proveďte benchmark s realistickými výzvami: změřte fáze prefill vs decode odděleně.
- Na propustnosti tokenizeru záleží: proveďte ji na GPU, pokud to váš framework podporuje.
- Sledujte CUDA grafy/fúzovaná jádra: snižují režii CPU a latenci spouštění jádra.
- Pro více GPU: Upřednostňujte tensor parallel nebo pipeline parallel podle velikosti vašeho modelu a požadavků na latenci.
- Benchmarking: Dokažte výhru
Kontrolní seznam
- Tokeny/sek (propustnost) při cílových velikostech batchů
- Čas do prvního tokenu (TTFT) a latence typu end-to-end na požadavek
- Využití GPU a paměťový prostor pod špičkovým QPS
- Přesnost: BLEU/perplexity nebo vyhodnocení specifické pro daný úkol, pokud kvantizujete
Používejte konzistentní semínka a sady výzev napříč baseline (PyTorch vs TensorRT-LLM) k ověření správnosti a rozdílů.
- Neshodné verze: Slaďte verze CUDA, ovladačů a TensorRT podle oficiální matice podpory.
- Engine je neplatný pro zařízení: Znovu sestavte enginy specificky pro vaši architekturu GPU.
- OOM během sestavování: Snižte maximální délku sekvence nebo batch; povolte stránkovanou KV; zvažte kvantizaci.
- Pokles přesnosti s INT8: Kalibrujte na datech reprezentativních pro doménu; vyzkoušejte kvantizaci per-tensor a ověřte citlivost po vrstvách.
- Pomalé TTFT navzdory vysoké propustnosti: Vylaďte stránkovanou KV cache, povolte CUDA grafy a zkontrolujte úzká hrdla tokenizeru.
- Příklad workflow: od Hugging Face modelu do produkce
Scénář: Chcete chatovací model s nízkou latencí na A100.
- Vyberte model: 7B–13B Llama/Mistral varianta.
- Připravte: Stáhněte váhy a tokenizer; ověřte, zda je architektura podporována.
- První engine: FP16, maximální vstup 4K, maximální výstup 1K, batch 4; stránkovaná KV zapnuta.
- Ověřte: Porovnejte výstupy s vaším PyTorch baseline.
- Optimalizujte: Vyzkoušejte INT8 nebo FP8; změřte TTFT a propustnost. Zvyšte batch pro serverový režim.
- Obsluhujte: Použijte TGI TRT-LLM backend; škálujte repliky za load balancerem; přidejte streamování.
- Plánování nákladů a kapacity
- Propustnost na GPU: Změřte tokeny/sek při vašem cílovém kontextu. Použijte to k výpočtu kapacity QPS.
- Cena za 1M tokenů: S rychlejším dekódováním a vyšším využitím batch obvykle TRT-LLM snižuje náklady na token.
- Enginy správné velikosti: Sestavte samostatné enginy pro krátké a dlouhé formuláře, abyste minimalizovali plýtvání prostorem.
- Časté dotazy uvnitř průvodce
Otázka: Potřebuji znovu sestavit enginy pro každý typ GPU?
Odpověď: Ano. Enginy jsou specifické pro hardware. Sestavte pro každou architekturu GPU, na které budete nasazovat.
Otázka: Jak moc INT8 ovlivňuje kvalitu?
Odpověď: Záleží na modelu a úkolu. S dobrými kalibračními daty si mnoho modelů zachovává téměř FP16 kvalitu a zároveň poskytuje podstatné zrychlení.
Otázka: Mohu spustit dlouhé kontexty (např. 32K)?
Odpověď: Ano, ale pečlivě plánujte paměť. Použijte stránkovanou KV cache a vylaďte velikosti bloků; Všimněte si, že delší kontexty zvyšují stopu enginu a náklady na dekódování.
Otázka: Je TGI nutné?
Odpověď: Ne. Můžete spustit Python/C++ přímo. TGI je pohodlné pro produkční HTTP API s automatickým škálováním a protokolováním.
Stojí za zmínku pro urychlení pracovního postupu
Pokud často iterujete na výzvách, porovnáváte výstupy napříč enginy nebo dokumentujete experimenty, postranní AI asistent, který podporuje rychlé opakování, provádění bloků kódu a webové úryvky, může urychlit váš cyklus. Mimochodem, Sider.AI nabízí desktopové prostředí vyladěné pro inženýry – užitečné pro zachycování benchmarků, testování výzev a uspořádání poznámek při optimalizaci vaší TensorRT-LLM pipeline. Kontrolní seznam dalších kroků
- Přečtěte si oficiální rychlý start k ověření vašeho prostředí.
- Potvrďte kompatibilitu CUDA/TensorRT v matici podpory.
- Postupujte podle průvodce sestavením enginu a nejprve vyberte FP16.
- Pokud obsluhujete prostřednictvím TGI, předkompilujte enginy a nakonfigurujte TRT-LLM backend.
- Volitelně si prohlédněte průvodce ve stylu tutoriálu pro Hugging Face modely, jako je BLOOM.
Klíčové poznatky
- TensorRT-LLM zkompiluje váš Transformer do GPU-nativního enginu pro maximální propustnost a nižší latenci.
- Začněte s FP16, povolte stránkovanou KV cache a měřte. Poté prozkoumejte INT8/FP8 pro větší rychlost.
- Enginy jsou specifické pro GPU a konfiguraci; sestavujte pro každý cíl nasazení.
- Pro produkci spárujte enginy s robustní obslužnou vrstvou (např. TGI) a monitorujte TTFT, propustnost a kvalitu.
FAQ
Q1: Jak správně nainstalovat a nastavit TensorRT-LLM?
Použijte kontejner s odpovídajícími verzemi CUDA/TensorRT nebo postupujte podle oficiálního rychlého startu a matice podpory, abyste se vyhnuli posunu verzí. Před kompilací enginů ověřte ovladače GPU a nástroje pro sestavení.
Q2: Jak používat TensorRT-LLM s Hugging Face modely?
Stáhněte model a tokenizer, potvrďte podporu a v případě potřeby proveďte převod před sestavením enginu. Pokud obsluhujete pomocí TGI, zkompilujte enginy pro vaše GPU a nasměrujte backend do adresáře enginu.
Q3: Mám si vybrat FP16, FP8 nebo INT8 pro TensorRT-LLM?
Začněte s FP16 pro stabilitu, poté vyzkoušejte FP8/INT8 pro zvýšení propustnosti. Po kvantizaci vždy ověřte přesnost úkolu.
Q4: Mohu obsluhovat TensorRT-LLM přes HTTP?
Ano. Můžete použít Python/C++ přímo nebo obsluhovat prostřednictvím TRT-LLM backendu Hugging Face TGI pro škálovatelné, produkční API s streamováním.
Q5: Jaká jsou běžná úzká hrdla výkonu při používání TensorRT-LLM?
Režie tokenizeru, suboptimální dávkování a nedostatek stránkované KV cache jsou běžné problémy. Vylaďte velikosti batchů, povolte CUDA grafy a monitorujte TTFT versus celkový počet tokenů za sekundu.