Refresh

This website www.unite.ai/cs/tensorrt-llm-a-comprehensive-guide-to-optimizing-large-language-model-inference-for-maximum-performance/ is currently offline. Cloudflare's Always Online™ shows a snapshot of this web page from the Internet Archive's Wayback Machine. To check for the live version, click Refresh.

Spojte se s námi

Umělá inteligence

TensorRT-LLM: Komplexní průvodce optimalizací odvození velkého jazykového modelu pro maximální výkon

mm

Zveřejněno

 on

Kvantování TensorRT-LLM NVIDEA, fúze operací, přesnost FP8 a podpora více GPU

Vzhledem k tomu, že poptávka po velkých jazykových modelech (LLM) neustále roste, je zajištění rychlého, efektivního a škálovatelného odvození důležitější než kdy dříve. NVIDIA TensorRT-LLM Kroky k řešení tohoto problému poskytnutím sady výkonných nástrojů a optimalizací speciálně navržených pro odvození LLM. TensorRT-LLM nabízí působivou řadu vylepšení výkonu, jako je kvantizace, fúze jádra, dávkování za letu a podpora více GPU. Tato vylepšení umožňují dosáhnout rychlosti odvození až 8x rychlejší než tradiční metody založené na CPU, což mění způsob, jakým nasazujeme LLM v produkci.

Tento komplexní průvodce prozkoumá všechny aspekty TensorRT-LLM, od jeho architektury a klíčových funkcí až po praktické příklady nasazení modelů. Ať už jste inženýr umělé inteligence, vývojář softwaru nebo výzkumník, tato příručka vám poskytne znalosti, jak využít TensorRT-LLM k optimalizaci odvození LLM na GPU NVIDIA.

Urychlení vyvozování LLM pomocí TensorRT-LLM

TensorRT-LLM přináší dramatické zlepšení výkonu odvození LLM. Podle testů NVIDIA se aplikace založené na TensorRT ukazují až 8x rychleji inferenční rychlosti ve srovnání s platformami pouze s CPU. Jedná se o zásadní pokrok v aplikacích v reálném čase, jako jsou chatboti, systémy doporučení a autonomní systémy, které vyžadují rychlé reakce.

Jak to funguje

TensorRT-LLM urychluje vyvozování optimalizací neuronových sítí během nasazení pomocí technik jako:

  • Kvantizace: Snižuje přesnost vah a aktivací, zmenšuje velikost modelu a zlepšuje rychlost vyvozování.
  • Fúze vrstev a tenzorů: Sloučí operace jako aktivační funkce a násobení matic do jediné operace.
  • Ladění jádra: Vybírá optimální jádra CUDA pro výpočet GPU a zkracuje dobu provádění.

Tyto optimalizace zajistí, že vaše modely LLM budou efektivně fungovat v celé řadě platforem nasazení – od hyperškálových datových center až po vestavěné systémy.

Optimalizace výkonu inference pomocí TensorRT

TensorRT, postavený na paralelním programovacím modelu CUDA společnosti NVIDIA, poskytuje vysoce specializované optimalizace pro odvození GPU NVIDIA. Zefektivněním procesů, jako je kvantizace, ladění jádra a fúze tenzorových operací, zajišťuje TensorRT, že LLM mohou běžet s minimální latencí.

Některé z nejúčinnějších technik zahrnují:

  • Kvantizace: To snižuje numerickou přesnost parametrů modelu při zachování vysoké přesnosti, což efektivně urychluje vyvozování.
  • Tenzorová fúze: Spojením více operací do jednoho jádra CUDA TensorRT minimalizuje paměťovou zátěž a zvyšuje propustnost.
  • Automatické ladění jádra: TensorRT automaticky vybere nejlepší jádro pro každou operaci, čímž optimalizuje odvození pro daný GPU.

Tyto techniky umožňují TensorRT-LLM optimalizovat výkon odvození pro úkoly hlubokého učení, jako je zpracování přirozeného jazyka, motory doporučení a analýza videa v reálném čase.

Zrychlení pracovního zatížení AI pomocí TensorRT

TensorRT urychluje pracovní zátěž hlubokého učení začleněním přesných optimalizací, jako je např INT8 si FP16. Tyto formáty se sníženou přesností umožňují výrazně rychlejší odvození při zachování přesnosti. To je zvláště cenné v aplikacích v reálném čase, kde je kritickým požadavkem nízká latence.

INT8 si FP16 optimalizace jsou zvláště účinné v:

  • Video Streaming: Úlohy zpracování videa založené na AI, jako je detekce objektů, těží z těchto optimalizací, protože zkracují čas potřebný ke zpracování snímků.
  • Systémy doporučení: Urychlením odvození pro modely, které zpracovávají velké množství uživatelských dat, umožňuje TensorRT personalizaci v reálném čase ve velkém měřítku.
  • Zpracování přirozeného jazyka (NLP): TensorRT zvyšuje rychlost úloh NLP, jako je generování textu, překlad a sumarizace, takže jsou vhodné pro aplikace v reálném čase.

Nasazujte, spouštějte a škálujte s NVIDIA Triton

Jakmile bude váš model optimalizován pomocí TensorRT-LLM, můžete jej snadno nasadit, spustit a škálovat pomocí NVIDIA Triton Inference Server. Triton je software s otevřeným zdrojovým kódem, který podporuje dynamické dávkování, sestavy modelů a vysokou propustnost. Poskytuje flexibilní prostředí pro správu modelů AI ve velkém měřítku.

Mezi hlavní funkce patří:

  • Souběžné provedení modelu: Spusťte více modelů současně, čímž se maximalizuje využití GPU.
  • Dynamické dávkování: Kombinuje více požadavků na odvození do jedné dávky, snižuje latenci a zvyšuje propustnost.
  • Streamování audio/video vstupů: Podporuje vstupní toky v aplikacích v reálném čase, jako jsou živé video analýzy nebo služby převodu řeči na text.

Díky tomu je Triton cenným nástrojem pro nasazení modelů optimalizovaných pro TensorRT-LLM v produkčních prostředích a zajišťuje vysokou škálovatelnost a efektivitu.

Základní vlastnosti TensorRT-LLM pro LLM Inference

Open Source Python API

TensorRT-LLM poskytuje vysoce modulární a open-source Python API, což zjednodušuje proces definování, optimalizace a provádění LLM. Rozhraní API umožňuje vývojářům vytvářet vlastní LLM nebo upravovat předpřipravené LLM tak, aby vyhovovaly jejich potřebám, aniž by vyžadovali hluboké znalosti CUDA nebo rámců hlubokého učení.

Dávkování za letu a stránkovaná pozornost

Jednou z výjimečných funkcí TensorRT-LLM je Dávkování za letu, který optimalizuje generování textu zpracováním více požadavků současně. Tato funkce minimalizuje čekací dobu a zlepšuje využití GPU dynamickým dávkováním sekvencí.

Kromě toho, Stránkovaná pozornost zajišťuje, že využití paměti zůstává nízké i při zpracování dlouhých vstupních sekvencí. Namísto přidělování souvislé paměti pro všechny tokeny rozděluje stránkovaná pozornost paměť na „stránky“, které lze znovu dynamicky použít, čímž se zabrání fragmentaci paměti a zvýší se efektivita.

Multi-GPU a Multi-Node Inference

Pro větší modely nebo složitější úlohy podporuje TensorRT-LLM více GPU si víceuzlová inference. Tato schopnost umožňuje distribuci modelových výpočtů mezi několik GPU nebo uzlů, zlepšuje propustnost a zkracuje celkovou dobu odvození.

Podpora FP8

S příchodem FP8 (8bitové s pohyblivou řádovou čárkou), TensorRT-LLM využívá GPU NVIDIA H100 k převodu hmotností modelu do tohoto formátu pro optimalizované odvození. FP8 umožňuje snížit spotřebu paměti a rychlejší výpočet, což je užitečné zejména při nasazení ve velkém měřítku.

Architektura a komponenty TensorRT-LLM

Porozumění architektuře TensorRT-LLM vám pomůže lépe využít jeho schopnosti pro odvození LLM. Pojďme si rozebrat klíčové komponenty:

Definice modelu

TensorRT-LLM umožňuje definovat LLM pomocí jednoduchého Python API. API vytváří a grafická reprezentace modelu, což usnadňuje správu složitých vrstev zapojených do architektur LLM, jako je GPT nebo BERT.

Váhové vázání

Před sestavením modelu musí být váhy (nebo parametry) navázány na síť. Tento krok zajišťuje, že závaží jsou zabudována do enginu TensorRT, což umožňuje rychlé a efektivní odvození. TensorRT-LLM také umožňuje aktualizace hmotnosti po kompilaci, což přidává flexibilitu pro modely, které potřebují časté aktualizace.

Pattern Matching a Fusion

Operace Fusion je další výkonná funkce TensorRT-LLM. Spojením více operací (např. multiplikace matic s aktivačními funkcemi) do jediného jádra CUDA minimalizuje TensorRT režii spojenou s vícenásobným spouštěním jádra. To snižuje přenosy paměti a urychluje odvození.

pluginy

Pro rozšíření schopností TensorRT mohou vývojáři psát Pluginy—vlastní jádra, která provádějí specifické úkoly, jako je optimalizace bloků pozornosti s více hlavami. Například Flash-Attention plugin výrazně zlepšuje výkon vrstev pozornosti LLM.

Referenční hodnoty: Zvýšení výkonu TensorRT-LLM

TensorRT-LLM demonstruje významné zvýšení výkonu pro odvození LLM napříč různými GPU. Zde je srovnání inferenční rychlosti (měřeno v tokenech za sekundu) pomocí TensorRT-LLM napříč různými GPU NVIDIA:

ModelPřesnostDélka vstupu/výstupuH100 (80 GB)A100 (80 GB)L40S FP8
GPTJ 6BFP8128/12834,95511,2066,998
GPTJ 6BFP82048/1282,8001,354747
LLaMA v2 7BFP8128/12816,98510,7256,121
LLaMA v3 8BFP8128/12816,70812,0858,273

Tyto benchmarky ukazují, že TensorRT-LLM přináší podstatné zlepšení výkonu, zejména u delších sekvencí.

Praktické: Instalace a sestavení TensorRT-LLM

Krok 1: Vytvořte prostředí kontejneru

Pro snadné použití poskytuje TensorRT-LLM obrázky Docker pro vytvoření kontrolovaného prostředí pro vytváření a spouštění modelů.

docker build --pull \
             --target devel \
             --file docker/Dockerfile.multi \
             --tag tensorrt_llm/devel:latest .

Krok 2: Spusťte kontejner

Spusťte vývojový kontejner s přístupem k GPU NVIDIA:

docker run --rm -it \
           --ipc=host --ulimit memlock=-1 --ulimit stack=67108864 --gpus=all \
           --volume ${PWD}:/code/tensorrt_llm \
           --workdir /code/tensorrt_llm \
           tensorrt_llm/devel:latest

Krok 3: Sestavte TensorRT-LLM ze zdroje

Uvnitř kontejneru zkompilujte TensorRT-LLM pomocí následujícího příkazu:

python3 ./scripts/build_wheel.py --trt_root /usr/local/tensorrt
pip install ./build/tensorrt_llm*.whl

Tato možnost je zvláště užitečná, když se chcete vyhnout problémům s kompatibilitou souvisejících se závislostmi Pythonu nebo když se zaměřujete na integraci C++ v produkčních systémech. Po dokončení sestavení najdete zkompilované knihovny pro běhové prostředí C++ v cpp/build/tensorrt_llm adresář, připravený pro integraci s vašimi C++ aplikacemi.

Krok 4: Propojte TensorRT-LLM C++ Runtime

Při integraci TensorRT-LLM do vašich projektů C++ zajistěte, aby cesty zahrnutí vašeho projektu směřovaly k cpp/include adresář. Obsahuje stabilní podporované hlavičky API. Knihovny TensorRT-LLM jsou propojeny jako součást vašeho kompilačního procesu C++.

Konfigurace CMake vašeho projektu může například zahrnovat:

include_directories(${TENSORRT_LLM_PATH}/cpp/include)
link_directories(${TENSORRT_LLM_PATH}/cpp/build/tensorrt_llm)
target_link_libraries(your_project tensorrt_llm)

Tato integrace vám umožňuje využít optimalizace TensorRT-LLM ve vašich vlastních projektech C++ a zajistit efektivní odvození i v prostředí s nízkou úrovní nebo s vysokým výkonem.

Pokročilé funkce TensorRT-LLM

TensorRT-LLM je více než jen optimalizační knihovna; obsahuje několik pokročilých funkcí, které pomáhají řešit rozsáhlá nasazení LLM. Níže podrobně prozkoumáme některé z těchto funkcí:

1. Dávkování za letu

Tradiční dávkování zahrnuje čekání, dokud není dávka zcela shromážděna, před zpracováním, což může způsobit zpoždění. Dávkování za letu to změní dynamickým spouštěním odvození dokončených požadavků v rámci dávky, přičemž stále shromažďuje další požadavky. To zlepšuje celkovou propustnost tím, že minimalizuje dobu nečinnosti a zvyšuje využití GPU.

Tato funkce je zvláště cenná v aplikacích v reálném čase, jako jsou chatboti nebo hlasoví asistenti, kde je doba odezvy kritická.

2. Stránkovaná pozornost

Stránkovaná pozornost je technika optimalizace paměti pro zpracování velkých vstupních sekvencí. Namísto požadavku na souvislou paměť pro všechny tokeny v sekvenci (což může vést k fragmentaci paměti), umožňuje Paged Attention modelu rozdělit data mezipaměti klíč–hodnota na „stránky“ paměti. Tyto stránky jsou dynamicky alokovány a uvolňovány podle potřeby, což optimalizuje využití paměti.

Stránkovaná pozornost je kritická pro manipulaci s velkými délkami sekvencí a snížení paměti, zejména v generativních modelech, jako jsou GPT a LLaMA.

3. Vlastní pluginy

TensorRT-LLM umožňuje rozšířit jeho funkčnost o vlastní pluginy. Pluginy jsou uživatelsky definovaná jádra, která umožňují specifické optimalizace nebo operace, které nepokrývá standardní knihovna TensorRT.

Například, Flash-Attention plugin je dobře známé vlastní jádro, které optimalizuje vrstvy pozornosti s více hlavami v modelech založených na Transformeru. Pomocí tohoto pluginu mohou vývojáři dosáhnout podstatného zrychlení výpočtu pozornosti – jedné z nejnáročnějších součástí LLM.

Chcete-li do svého modelu TensorRT-LLM integrovat vlastní plugin, můžete napsat vlastní jádro CUDA a zaregistrovat ho u TensorRT. Plugin bude vyvolán během provádění modelu a poskytne přizpůsobená vylepšení výkonu.

4. FP8 Precision na NVIDIA H100

S Přesnost FP8, TensorRT-LLM využívá nejnovější hardwarové inovace NVIDIA v Architektura násypky H100. FP8 snižuje nároky na paměť LLM ukládáním vah a aktivací v 8bitovém formátu s plovoucí desetinnou čárkou, což vede k rychlejšímu výpočtu bez obětování velké přesnosti. TensorRT-LLM automaticky kompiluje modely tak, aby využívaly optimalizovaná jádra FP8, což dále zrychluje časy odvození.

Díky tomu je TensorRT-LLM ideální volbou pro rozsáhlá nasazení vyžadující špičkový výkon a energetickou účinnost.

Příklad: Nasazení TensorRT-LLM s Triton Inference Server

Pro produkční nasazení, NVIDIA Triton Inference Server poskytuje robustní platformu pro správu modelů v měřítku. V tomto příkladu si ukážeme, jak nasadit model optimalizovaný pro TensorRT-LLM pomocí Tritonu.

Krok 1: Nastavte úložiště modelu

Vytvořte úložiště modelů pro Triton, které bude ukládat vaše soubory modelů TensorRT-LLM. Pokud jste například zkompilovali model GPT2, vaše adresářová struktura může vypadat takto:

mkdir -p model_repository/gpt2/1
cp ./trt_engine/gpt2_fp16.engine model_repository/gpt2/1/

Krok 2: Vytvořte konfigurační soubor Triton

Ve stejné model_repository/gpt2/ adresář, vytvořte konfigurační soubor s názvem config.pbtxt který Tritonovi říká, jak načíst a spustit model. Zde je základní konfigurace pro TensorRT-LLM:

name: "gpt2"
platform: "tensorrt_llm"
max_batch_size: 8
input [
  {
    name: "input_ids"
    data_type: TYPE_INT32
    dims: [-1]
  }
]
output [
  {
    name: "logits"
    data_type: TYPE_FP32
    dims: [-1, -1]
  }
]

Krok 3: Spusťte Triton Server

Pomocí následujícího příkazu Docker spusťte Triton s úložištěm modelu:

docker run --rm --gpus all \
    -v $(pwd)/model_repository:/models \
    nvcr.io/nvidia/tritonserver:23.05-py3 \
    tritonserver --model-repository=/models

Krok 4: Odešlete požadavky na odvození společnosti Triton

Jakmile je Triton server spuštěn, můžete na něj posílat požadavky na odvození pomocí HTTP nebo gRPC. Například pomocí curl poslat žádost:

curl -X POST http://localhost:8000/v2/models/gpt2/infer -d '{
  "inputs": [
    {"name": "input_ids", "shape": [1, 128], "datatype": "INT32", "data": [[101, 234, 1243]]}
  ]
}'

Triton zpracuje požadavek pomocí motoru TensorRT-LLM a vrátí logity jako výstup.

Nejlepší postupy pro optimalizaci odvození LLM pomocí TensorRT-LLM

Chcete-li plně využít sílu TensorRT-LLM, je důležité dodržovat osvědčené postupy během optimalizace modelu i nasazení. Zde je několik klíčových tipů:

1. Profilujte svůj model před optimalizací

Před použitím optimalizací, jako je kvantizace nebo fúze jádra, použijte profilovací nástroje NVIDIA (jako Nsight Systems nebo TensorRT Profiler), abyste porozuměli aktuálním úzkým místům při provádění vašeho modelu. To vám umožní zacílit na konkrétní oblasti pro zlepšení, což vede k efektivnější optimalizaci.

2. Použijte Mixed Precision pro optimální výkon

Při optimalizaci modelů pomocí TensorRT-LLM použijte smíšená přesnost (kombinace FP16 a FP32) nabízí výrazné zrychlení bez větší ztráty přesnosti. Pro nejlepší rovnováhu mezi rychlostí a přesností zvažte použití FP8 tam, kde je k dispozici, zejména na GPU H100.

3. Využijte stránkovanou pozornost pro velké sekvence

U úloh, které zahrnují dlouhé vstupní sekvence, jako je sumarizace dokumentů nebo víceotáčkové konverzace, vždy povolte Stránkovaná pozornost pro optimalizaci využití paměti. To snižuje režii paměti a zabraňuje chybám z nedostatku paměti během odvození.

4. Dolaďte paralelnost pro nastavení s více GPU

Při nasazování LLM přes více GPU nebo uzlů je nezbytné doladit nastavení pro tenzorový paralelismus si rovnoběžnost potrubí aby odpovídaly vaší konkrétní pracovní zátěži. Správná konfigurace těchto režimů může vést k výraznému zlepšení výkonu díky rovnoměrnému rozložení výpočetní zátěže mezi GPU.

Proč investovat do čističky vzduchu?

TensorRT-LLM představuje změnu paradigmatu v optimalizaci a nasazení velkých jazykových modelů. Díky pokročilým funkcím, jako je kvantizace, fúze operací, přesnost FP8 a podpora více GPU, umožňuje TensorRT-LLM LLM běžet rychleji a efektivněji na GPU NVIDIA. Ať už pracujete na chatovacích aplikacích v reálném čase, na systémech doporučení nebo na rozsáhlých jazykových modelech, TensorRT-LLM poskytuje nástroje potřebné k posunutí hranic výkonu.

Tento průvodce vás provede nastavením TensorRT-LLM, optimalizací modelů pomocí jeho Python API, nasazením na Triton Inference Server a aplikací osvědčených postupů pro efektivní odvození. S TensorRT-LLM můžete urychlit pracovní zátěž AI, snížit latenci a dodávat škálovatelná řešení LLM do produkčních prostředí.

Další informace získáte u úředníka Dokumentace TensorRT-LLM si Dokumentace Triton Inference Server.

Posledních pět let jsem strávil ponořením se do fascinujícího světa strojového učení a hlubokého učení. Moje vášeň a odborné znalosti mě vedly k tomu, abych se podílel na více než 50 různých projektech softwarového inženýrství se zvláštním zaměřením na AI/ML. Moje neustálá zvědavost mě také přivedla ke zpracování přirozeného jazyka, což je obor, který bych rád dále prozkoumal.