Umělá inteligence

PowerInfer: Rychlý velký jazykový model se spotřebitelským GPU

mm

Vzhledem ke svým výjimečným schopnostem vytvářet obsah jsou Generativní Velké Jazykové Modely nyní v čele revoluce umělé inteligence, s probíhajícími úsilími o zlepšení jejich generativních schopností. Nicméně, navzdory rychlým pokrokům, tyto modely vyžadují podstatnou výpočetní sílu a zdroje. To je do značné míry způsobeno tím, že se skládají z hundred miliard parametrů. Kromě toho, aby fungovaly hladce, generativní modely umělé inteligence spoléhají na tisíce GPU, což vede k významným provozním nákladům. Vysoké provozní nároky jsou klíčovým důvodem, proč generativní modely umělé inteligence nejsou dosud účinně nasazeny na osobních zařízeních.

V tomto článku budeme diskutovat o PowerInfer, vysoce rychlém inference engine pro standardní počítače poháněné jediným spotřebitelským GPU. Rámec PowerInfer se snaží využít vysokou lokalitu inherentní v inference LLM, charakterizovanou power-law distribucí neuronových aktivací. To znamená, že v každém okamžiku je malá podmnožina “horkých” neuronů konzistentně aktivních napříč vstupy, zatímco zbytek, označovaný jako “studené” neurony, se aktivuje na základě konkrétních vstupů nebo požadavků. Tento přístup umožňuje rámcu PowerInfer snížit výpočetní sílu potřebnou pro generativní umělou inteligenci k produkci požadovaných výstupů.

Budeme se zabývat rámcem PowerInfer podrobněji, zkoumající jeho metodologii, pipeline a praktické výsledky aplikace. Začneme.

PowerInfer: Rychlý Velký Jazykový Model se Spotřebitelským GPU

Generativní Velké Jazykové Modely, jako je ChatGPT a DALL-E, jsou známé pro sofistikované generativní a přirozené jazykové zpracování úkolu. Vzhledem ke svým vysokým výpočetním požadavkům jsou tyto modely obvykle nasazeny v datových centrech s pokročilými GPU. Potřeba takové vysoké výpočetní síly omezuje jejich nasazení na datová centra, zdůrazňující nutnost nasazení velkých jazykových modelů na více přístupných místních platformách, jako jsou osobní počítače.

Zvýšení dostupnosti velkých jazykových modelů by mohlo snížit náklady na inference a generování obsahu, zlepšit ochranu dat a umožnit přizpůsobení modelu. Kromě toho, zatímco nasazení v datových centrech prioritizuje vysoký průtok, místní nasazení LLM by se mohlo zaměřit na nízkou latenci kvůli menším velikostem dávek.

Nicméně, nasazení těchto modelů na místních zařízeních představuje významné výzvy kvůli jejich podstatným paměťovým požadavkům. Velké jazykové modely, fungující jako autoregresivní transforméry, generují text token po token, přičemž každý token vyžaduje přístup k celému modelu, skládajícímu se z hundred miliard parametrů. To vyžaduje mnoho high-end GPU pro generování výstupu s nízkou latencí. Kromě toho, místní nasazení obvykle zpracovávají jednotlivé požadavky sekvenčně, omezující potenciál pro paralelní zpracování.

Pro řešení komplexních paměťových požadavků rámcu generativní umělé inteligence, existující řešení využívají metody, jako je model offloading a komprese. Techniky, jako je destilace, prořezávání a kvantizace, snižují velikost modelu, ale jsou stále příliš velké pro standardní GPU v osobních počítačích. Model offloading, který rozděluje model na Transformer Layer mezi CPU a GPU, umožňuje distribuované zpracování vrstev napříč CPU a GPU pamětí. Nicméně, tato metoda je omezena pomalou PCIe interkonekcí a omezenými výpočetními schopnostmi CPU, vedoucími k vysoké inference latenci.

Rámec PowerInfer předpokládá, že nesoulad mezi charakteristikami inference LLM a strukturou hardwaru je primární příčinou paměťových problémů v inference LLM. Ideálně by se data, která jsou přístupná častěji, měla uložit v high-bandwidth, omezené kapacitě GPU, zatímco méně často přístupná data by se měla uložit v low-bandwidth, vysoké kapacitě CPU. Nicméně, velká objem parametrů každého inference LLM iterace činí pracovní sadu příliš velkou pro jediné GPU, vedoucí k neefektivnímu využití lokalizace.

Proces inference v velkých jazykových modelech demonstruje vysokou lokalizaci, přičemž každá iterace aktivuje omezený počet neuronů. Rámec PowerInfer se snaží využít tuto lokalizaci tím, že spravuje malý počet horkých neuronů pomocí GPU, zatímco CPU zpracovává studené neurony. Předem vybírá a předem načítá horké neurony do GPU a identifikuje aktivované neurony během runtime. Tento přístup minimalizuje nákladné PCIe datové přenosy, umožňující GPU a CPU nezávisle zpracovávat své přiřazené neurony.

Nicméně, nasazení LLM na místních zařízeních čelí překážkám. Online prediktory, které jsou zásadní pro identifikaci aktivovaných neuronů, spotřebují podstatnou GPU paměť. Rámec PowerInfer využívá adaptivní metodu pro konstrukci malých prediktorů pro vrstvy s vyšší aktivací skewness a sparsity, zachovávající přesnost, zatímco snižuje velikost. Kromě toho, rámce LLM vyžadují specializované sparse operátory. Rámec PowerInfer využívá neuron-aware sparse operátory, které přímo komunikují s neurony, eliminující potřebu konverze do dense formátu během runtime.

Nakonec, optimální umístění aktivovaných neuronů mezi CPU a GPU je obtížné. Rámec PowerInfer využívá offline fázi pro vytvoření neuron placement policy, měřící dopad každého neuronu na výsledky inference LLM a rámcuje jej jako integer lineární problém.

Architektura a Metodologie

Následující obrázek vysvětluje architekturu rámcu PowerInfer, skládající se z offline a online komponent v pipeline.

Díky variaci pozorované v lokalizačních vlastnostech mezi různými velkými jazykovými modely, offline komponent profiluje aktivaci sparsity rámcu LLM, umožňující mu rozlišit mezi horkými a studenými neurony. Na druhé straně, v offline fázi, dvě typy neuronů jsou načteny inference engine do obou CPU a GPU, sloužící tak LLM požadavkům během runtime s nízkou latencí.

Offline Fáze: Policy Solver a LLM Profiler

V offline fázi, LLM profiler komponent využívá požadavky odvozené z obecného datasetu ke sběru aktivace dat z inference procesu. V prvním kroku, monitoruje aktivaci neuronů napříč všemi vrstvami v rámcu a postupuje k využití policy solver komponenty pro kategorizaci neuronů jako buď horké nebo studené. Primárním cílem policy solveru je přiřadit neurony aktivované častěji k GPU vrstvám, zatímco zbytek je přiřazen k CPU vrstvám. Ve druhém kroku, policy solver komponenta využívá neuron impact metriky a hardwarové specifikace k vyvážení pracovní zátěže mezi vrstvami a maximalizuje impact metriku GPU pro neurony pomocí integer lineárního programování.

Online Fáze: Neuron Aware LLM Inference Engine

Jakmile je offline fáze provedena úspěšně, rámec postupuje k provedení online fáze. Ve třetím kroku procesu, online engine přiřazuje horké a studené neurony k jejich příslušným zpracovacím jednotkám před zpracováním uživatelských požadavků, v závislosti na výstupu offline policy solveru. Během runtime a ve čtvrtém kroku, online engine spravuje GPU-CPU výpočty vytvořením CPU a GPU executorů, které jsou vlákny běžícími na CPU straně. Engine poté předpovídá aktivované neurony a postupuje k přeskočení neaktivovaných neuronů. Aktivované neurony jsou poté předem načteny do GPU pro zpracování. Mezitím, CPU vypočítává a přenáší výsledky pro své neurony k integraci s GPU. Online engine je schopen se zaměřit na jednotlivé neurony řádky a sloupce uvnitř matic, protože využívá sparse neuron-aware operátory na CPU i na GPU.

Adaptivní Sparsity Prediktory

Primární koncept za snížením výpočetních zátěží online inference engine v rámcu PowerInfer spočívá v tom, že zpracovává pouze neurony, které předpovídá jako aktivované. Tradičně, uvnitř každé Transformer vrstvy, rámec využívá dva různé prediktory k předpovědi aktivace neuronů v MLP a self-attention blocích, v důsledku čehož je inference výpočet omezen na neurony předpovězené jako aktivované. Nicméně, je obtížné navrhnout efektivní prediktory pro místní nasazení, protože omezené množství zdrojů činí obtížným vyvážit velikost modelu a předpovědní přesnost. Tyto prediktory jsou nasazeny rámcem často k předpovědi aktivovaných neuronů, a musí být uloženy v GPU pro umožnění rychlejšího přístupu. Nicméně, rámce obecně nasazují velký počet prediktorů, které obsazují podstatnou paměť, dokonce i tu, která je potřebná pro uložení LLM parametrů.

Kromě toho, velikost prediktorů je obecně určena dvěma faktory: Interní Skewness a Sparsity LLM vrstev.

Pro optimalizaci těchto faktorů, rámec PowerInfer využívá iterativní tréninkovou metodu pro každý prediktor v Transformer vrstvě bez pevné velikosti. V prvním kroku této tréninkové metody, velikost základního modelu je stanovena na základě sparsity profilu modelu, a velikost modelu je upravována iterativně s ohledem na interní aktivaci skewness, aby se zachovala přesnost.

Neuron Placement a Management

Jak je uvedeno dříve, zatímco offline policy solver komponenta určuje neuron placement policy, online inference engine komponenta načítá model do GPU a CPU paměti podle vygenerované politiky. Pro každou vrstvu, která může nebo nemusí mít více než jednu váhu matic, rámec PowerInfer přiřazuje každý neuron buď k CPU nebo k GPU na základě toho, zda je neuron horký-aktivovaný. Zajištění přesného výpočtu segmentovaných neuronů v určené sekvenci je zásadní pro přesné výsledky. Pro řešení tohoto problému, rámec PowerInfer generuje dvě neuronové tabulky: jednu umístěnou v GPU a jednu v CPU paměti, přičemž každá tabulka koreluje jednotlivé neurony s jejich původní pozicí v matici.

Neuron Aware Operator

Vzhledem k aktivaci sparsity pozorované u velkých jazykových modelů, neaktivní neurony a jejich váhy mohou být přeskočeny maticovými operacemi, vytvářející tak potřebu využití sparse operátorů. Místo využití sparse operátorů, které mají několik omezení, rámec PowerInfer využívá neuron-aware operátory, které přímo komunikují s neurony, eliminující potřebu konverze do dense formátu během runtime. Neuron-aware operátory se liší od tradičních sparse operátorů, protože se zaměřují na jednotlivé řádky a sloupce uvnitř jedné matice, spíše než na celou matici.

Neuron Placement Policy

Pro využití výpočetních schopností CPU a GPU, offline komponenta v rámcu PowerInfer generuje umístění politiku, která řídí rámec při přiřazování neuronů buď k CPU nebo k GPU vrstvám. Policy solver generuje tuto politiku a řídí umístění neuronů uvnitř každé vrstvy, což pomáhá při určování výpočetní zátěže pro jednotlivé zpracovacích jednotek. Při generování umístění politiky, policy solver komponenta zvažuje různé faktory, včetně aktivace frekvence pro každý neuron, komunikace overhead a výpočetní schopnosti, jako jsou šířky pásma a velikost paměti každého zpracovatele.

Výsledky a Implementace

Pro demonstraci obecných schopností rámcu PowerInfer napříč zařízeními s různými hardwarovými konfiguracemi, experimenty jsou provedeny na dvou různých osobních počítačích: jeden vybavený procesorem Intel i9-13900K, NVIDIA RTX 4090 GPU a 192 GB host paměti, zatímco druhý funguje s procesorem Intel i7-12700K, NVIDIA RTX 2080Ti GPU a 64 GB host paměti.

Konečné výkony rámcu PowerInfer jsou porovnány proti llama.cpp s velikostí dávky 1 a výchozími nasazeními nastaveními. Rámec poté vzorkuje podněty z ChatGPT a Alpaca datasetů, s ohledem na variabilitu délky pozorovanou v reálných dialogových vstupech a výstupech. Následující obrázek demonstruje generování rychlostí pro různé modely.

Jak je vidět, rámec PowerInfer generuje 8,32 tokenů za sekundu a dosahuje až 16 tokenů generovaných za sekundu, čímž výrazně překonává rámec llama.cpp. Kromě toho, jak se zvyšuje počet výstupních tokenů, výkon rámcu PowerInfer se také zlepšuje, protože fáze generování významně ovlivňuje celkovou dobu inference.

Kromě toho, jak je vidět na výše uvedeném obrázku, rámec PowerInfer překonává rámec llama.cpp na nízkoúrovňových PC s maximální generovací rychlostí 7 tokenů za sekundu a průměrnou generovací rychlostí 5 tokenů za sekundu.

Výše uvedený obrázek demonstruje distribuci neuronových zátěží mezi GPU a CPU pro oba rámce. Jak je vidět, rámec PowerInfer významně zvyšuje podíl neuronové zátěže GPU, z 20 na 70 %.

Výše uvedený obrázek porovnává výkon obou rámců na dvou PC s různými specifikacemi. Jak je vidět, rámec PowerInfer konzistentně dosahuje vysoké rychlosti generování výstupních tokenů ve srovnání s rámcem llama.cpp.

Závěrečné myšlenky

V tomto článku jsme diskutovali o PowerInfer, vysoce rychlém inference engine pro standardní počítače poháněné jediným spotřebitelským GPU. Rámec PowerInfer se snaží využít vysokou lokalitu inherentní v inference LLM, charakterizovanou power-law distribucí neuronových aktivací. Rámec PowerInfer je rychlý interference systém navržen pro velké jazykové modely, který využívá adaptivní prediktory a neuron-aware operátory k aktivaci neuronů a výpočetní sparsity.

Inženýr z povolání, spisovatel ze srdce. Kunal je technický spisovatel s hlubokou láskou a porozuměním pro AI a ML, který se věnuje zjednodušování složitých konceptů v těchto oblastech prostřednictvím svých přitažlivých a informačních dokumentací.