Zmagasz się z AI lub rozwojem full-stack? Nasi eksperci są tutaj, aby Cię poprowadzić: dostosowane porady, integracja techniczna i nie tylko. Skontaktuj się z nami pod adresem [email protected].

Silniki wnioskowania GenAI: TensorRT-LLM vs vLLM vs Hugging Face TGI vs LMDeploy

Rozwój generatywnej sztucznej inteligencji (GenAI) przekształcił branże, od przetwarzania języka naturalnego po generowanie kreatywnych treści. Jednak skuteczne wdrażanie tych potężnych modeli na dużą skalę pozostaje wyzwaniem.

TensorRT-LLM, vLLM, Hugging Face TGI i LMDeploy

Silniki wnioskowania odgrywają kluczową rolę w optymalizacji wydajności, zmniejszaniu opóźnień i maksymalizacji wykorzystania zasobów. W tym artykule przyjrzymy się czterem wiodącym rozwiązaniom: TensorRT-LLM, vLLM, Hugging Face TGI i LMDeploy.

Każdy z nich wnosi unikalne zalety, niezależnie od tego, czy jest to akcelerowana sprzętowo precyzja NVIDIA, innowacyjne zarządzanie pamięcią vLLM, gotowy do produkcji ekosystem TGI, czy też koncentracja LMDeploy na szybkości i prostocie. Dołącz do nas, gdy porównamy te silniki, aby pomóc Ci znaleźć idealne rozwiązanie dla Twoich obciążeń GenAI.

TensorRT-LLM: Potęga NVIDIA w zakresie zoptymalizowanego wnioskowania

TensorRT-LLM to odpowiedź firmy NVIDIA na potrzeby szybkiego i płynnego działania dużych modeli językowych. Zbudowany na frameworku TensorRT, został zaprojektowany tak, aby wycisnąć każdą kroplę wydajności z procesorów graficznych NVIDIA. Osiąga to dzięki takim sztuczkom jak fuzja warstw, dostosowanie precyzji (FP16, INT8, FP8...) i optymalizacja jądra, która skraca czas obliczeń bez obniżania dokładności modelu.

TensorRT-LLM

Nie chodzi tylko o szybkość. TensorRT-LLM wydajnie obsługuje duże modele, inteligentnie zarządzając pamięcią, dzięki czemu nie zawiesza się w trakcie pracy. Obsługuje również dynamiczne wsadowanie, umożliwiając przetwarzanie wielu żądań jednocześnie bez wyczerpywania pamięci. Jeśli korzystasz już ze sprzętu NVIDIA, to nie ma problemu, ponieważ jest on ściśle powiązany z ich ekosystemem, takim jak CUDA i cuDNN, a nawet integruje się z serwerem wnioskowania NVIDIA Triton i NVIDIA Dynamo.

To powiedziawszy, nie jest to idealne rozwiązanie dla każdego. Konfiguracja może być uciążliwa, jeśli nie czujesz się komfortowo z narzędziami NVIDIA i jest mniej elastyczna, jeśli korzystasz ze sprzętu innego niż NVIDIA. Niemniej jednak, jeśli chodzi o surową moc i optymalizację na układach GPU NVIDIA, trudno ją pokonać.

vLLM: Wnioskowanie o wysokiej przepustowości z PagedAttention

vLLM bardzo dobrze radzi sobie z szybką obsługą dużej liczby zadań wnioskowania. Jest to projekt open-source, który sprawdza się, gdy potrzebna jest wysoka przepustowość bez spowalniania. Sekretnym sosem jest PagedAttention, sztuczka, która zarządza pamięcią znacznie lepiej niż większość. Zamiast ładować wszystko naraz i pochłaniać pamięć RAM, dzieli pamięć podręczną klucz-wartość na fragmenty, pobierając tylko to, co jest potrzebne. Mniej marnotrawstwa, większa szybkość.

vLLM

Jest też bardzo elastyczny. Działa z popularnymi modelami, takimi jak LLaMA lub Mistral, od razu po wyjęciu z pudełka i obsługuje wiele urządzeń, w tym procesory graficzne NVIDIA lub AMD. Otrzymujesz również dynamiczne grupowanie, aby efektywnie grupować żądania, utrzymując płynne działanie potoku. Konfiguracja jest dość prosta, jeśli jesteś przyzwyczajony do Pythona i PyTorch.

Podstawowym ograniczeniem vLLM jest jego względna niedojrzałość na rynku, co oznacza, że może on jeszcze nie oferować kompleksowego zestawu funkcji dostępnego w bardziej ugruntowanych rozwiązaniach. Jednak dla organizacji poszukujących wydajnego rozwiązania, które zapewnia wysoką wydajność wnioskowania, vLLM stanowi doskonały wybór.

Hugging Face TGI: Gotowe do produkcji rozwiązanie do generowania tekstu

Hugging Face TGI (Text Generation Inference) jest przeznaczony dla osób, które chcą uruchomić modele bez bólu głowy. Jest to narzędzie stworzone przez zespół Hugging Face, więc dobrze współpracuje z ich ogromną biblioteką wstępnie wytrenowanych modeli - BERT, GPT i nie tylko. Jest przeznaczony do rzeczywistych zastosowań, takich jak zasilanie chatbotów lub aplikacji, w których generowanie tekstu musi działać szybko i nie ulegać awariom.

Przytulanie Twarzy TGI

TGI radzi sobie z ciężkimi zadaniami dzięki funkcjom takim jak ciągłe wsadowanie, które utrzymuje system zajęty poprzez zamianę nowych żądań po zakończeniu starych. Obsługuje akcelerację GPU i może skalować się w górę, jeśli masz sprzęt. Ponadto ma wbudowane zabezpieczenia - takie jak filtrowanie złych wyników - co jest przydatne w produkcji. Można go wdrożyć za pomocą Dockera w kilku krokach, więc jest stosunkowo łatwy w konfiguracji.

Haczyk? Jest powiązany z ekosystemem Hugging Face, więc jeśli nie jesteś jeszcze w tym świecie, może wydawać się ograniczający. Mimo to, jeśli chodzi o opcję plug-and-play, która jest gotowa do użycia, TGI jest świetnym wyborem.

LMDeploy: Wydajne wdrażanie z doskonałą szybkością dekodowania

LMDeploy to zestaw narzędzi od zespołów MMRazor i MMDeploy, stworzony do kompresji, wdrażania i uruchamiania dużych modeli językowych bez kłopotów. Co go wyróżnia? Ma doskonałą szybkość dekodowania - do 1,8x więcej żądań na sekundę niż vLLM na GPU A100. Dzieje się tak dzięki takim sztuczkom jak trwałe wsadowanie, zablokowane buforowanie KV i zgrabne jądra CUDA, które utrzymują GPU w ruchu.

LMDeploy

Posiada dwa silniki: TurboMind dla maksymalnej wydajności i PyTorch dla łatwiejszego majsterkowania. TurboMind jest tutaj gwiazdą - przepycha 4-bitowe wnioskowanie 2,4x szybciej niż FP16 i z łatwością radzi sobie z dużymi modelami, takimi jak Llama-2 70B. Można również kwantyzować wagi i pamięci podręczne KV, aby zaoszczędzić pamięć bez szkody dla dokładności. Wdrożenie jest również bardzo proste - jedno polecenie konfiguruje serwer na wielu komputerach, jeśli tego potrzebujesz. Ponadto zapamiętuje historię czatu w rozmowach wielorundowych, więc nie marnuje czasu na ponowne wykonywanie starej pracy.

Minusy? TurboMind jest wybredny - nie współpracuje jeszcze z modelami uwagi z przesuwanymi oknami, takimi jak Mistral. A jeśli nie korzystasz z procesorów graficznych NVIDIA, utkniesz z wolniejszym silnikiem PyTorch. Mimo to, jeśli chodzi o szybkość i prostotę na odpowiednim sprzęcie, LMDeploy jest świetnym wyborem.

Porównanie wydajności: Opóźnienie, przepustowość i skalowalność

Przeanalizujmy, jak te silniki radzą sobie z opóźnieniami (jak szybko kończy się jedno żądanie), przepustowością (ile żądań mogą pozyskać) i skalowalnością (jak dobrze radzą sobie z większymi obciążeniami lub większą ilością sprzętu).

TensorRT-LLM wyróżnia się pod względem opóźnień, jeśli posiadasz procesory graficzne NVIDIA. Jest on wysoce zoptymalizowany pod kątem sprzętu NVIDIA, więc pojedyncze żądania kończą się szybko: poniżej 50 ms dla większości modeli na A100. Przepustowość jest również doskonała, zwłaszcza w przypadku dynamicznego wsadowania. Benchmarki przeprowadzone przez BentoML pokazują, że silnik ten osiąga 700 tokenów na sekundę przy 100 jednoczesnych użytkownikach dla Llama 3 70B Q4 na A100 80GB GPU. TensorRT-LLM osiąga dobre wyniki w scenariuszach z długimi danymi wejściowymi i dużą liczbą żądań, oferując dobrą przepustowość. Skalowalność na wielu GPU jest obsługiwana od razu po wyjęciu z pudełka z doskonałą wydajnością.

vLLM ma również dobrą przepustowość, szczególnie w obciążeniach wymagających dekodowania, z wysoką przepustowością i niskimi opóźnieniami po ostatnich aktualizacjach. Benchmarki przeprowadzone przez BentoML pokazują, że silnik ten osiąga 600-650 tokenów na sekundę przy 100 jednoczesnych użytkownikach dla Llama 3 70B Q4 na GPU A100 80GB. Opóźnienia są dobre, ale nie tak dobre jak w przypadku TensorRT-LLM: około 60-80 ms dla pojedynczych przebiegów. Dobrze skaluje się na różnych GPU, nawet mieszając marki, ale jest mniej dopracowany w przypadku dużych konfiguracji.

Hugging Face TGI działa podobnie do vLLM, zapewniając równowagę między wydajnością a łatwością użytkowania. Opóźnienia są przyzwoite: 50-70 ms na dobrym GPU. Benchmarki przeprowadzone przez BentoML pokazują, że silnik ten osiąga 600-650 tokenów na sekundę przy 100 jednoczesnych użytkownikach dla Llama 3 70B Q4 na GPU A100 80GB. Został on zbudowany z myślą o skalowaniu do produkcji, więc płynnie obsługuje większą liczbę użytkowników lub maszyn, zwłaszcza z Dockerem.

LMDeploy wygrywa pod względem szybkości dekodowania. Wyróżnia się szybkością generowania tokenów, zwłaszcza w przypadku mniejszych modeli, i ma niski czas do pierwszego tokena (TTFT) w przypadku skwantyfikowanych dużych modeli. Opóźnienie jest niskie: 40-60 ms. Przepustowość jest doskonała. Benchmarki przeprowadzone przez BentoML pokazują, że silnik ten osiąga 700 tokenów na sekundę przy 100 jednoczesnych użytkownikach dla Llama 3 70B Q4 na GPU A100 80GB. Skalowanie jest łatwe dzięki konfiguracji serwerowej, ale w celu uzyskania najlepszych wyników mocno opiera się na procesorach graficznych NVIDIA; tryb PyTorch pozostaje w tyle.

Konkluzja: TensorRT-LLM i LMDeploy przodują pod względem szybkości. Wybór zależy od posiadanego sprzętu i liczby obsługiwanych żądań.

Możliwości kwantyzacji

Kwantyzacja zmniejsza precyzję modelu, aby zmniejszyć zużycie pamięci i przyspieszyć wnioskowanie, co jest ważne w środowiskach o ograniczonych zasobach. Oto jak działa każdy silnik:

TensorRT-LLM obsługuje FP8, FP4, INT4 z aktywną kwantyzacją wag (AWQ) oraz INT8 ze SmoothQuant, oferując solidne opcje optymalizacji wydajności GPU NVIDIA.

vLLM zapewnia elastyczność dzięki GPTQ, AWQ, INT4, INT8 i FP8, dostosowując się do różnych potrzeb sprzętowych i precyzji.

Hugging Face TGI integruje bitsandbytes dla 8-bitowej i 4-bitowej kwantyzacji oraz GPT-Q dla kwantyzacji wagowej, odpowiedniej do wdrożeń produkcyjnych.

LMDeploy oferuje 4-bitową kwantyzację AWQ, 8-bitową kwantyzację i kwantyzację online pamięci podręcznej INT8/INT4 KV, zwiększając wydajność dużych modeli na ograniczonym sprzęcie.

Kompatybilność sprzętowa

Wsparcie sprzętowe określa, gdzie można wdrożyć te silniki, wpływając na skalowalność i wydajność:

TensorRT-LLM jest dostępny wyłącznie dla NVIDIA CUDA, wykorzystując akceleratory GPU w celu uzyskania wysokiej wydajności.

vLLM obsługuje NVIDIA CUDA, AMD ROCm, AWS Neuron i CPU, oferując szeroką kompatybilność dla różnych konfiguracji.

Hugging Face TGI współpracuje z NVIDIA CUDA, AMD ROCm, Intel Gaudi i AWS Inferentia, zapewniając elastyczność dla różnych środowisk sprzętowych.

LMDeploy jest zoptymalizowany pod kątem NVIDIA CUDA, zapewniając najwyższą wydajność na procesorach graficznych NVIDIA, ale z ograniczoną obsługą innych platform.

Łatwość użytkowania

Proces konfiguracji i integracji może mieć wpływ na harmonogram rozwoju. Oto jak radzą sobie poszczególne silniki:

TensorRT-LLM wymaga konwertowania punktów kontrolnych, budowania silnika TensorRT i konfigurowania parametrów, co sprawia, że jest to trudne i czasochłonne dla inżynierów.

vLLM jest przyjazny dla użytkownika dzięki kompleksowej dokumentacji, łatwej instalacji i płynnej integracji biblioteki Python.

Hugging Face TGI korzysta z ekosystemu Hugging Face, oferując gotowe obrazy Docker i szczegółową dokumentację do szybkiego wdrożenia.

LMDeploy oferuje prostą konfigurację z jednym poleceniem do uruchomienia serwera i interfejsami API Python do dostosowywania, równoważąc łatwość z elastycznością.

Wnioski

Wybór odpowiedniego silnika zależy od przypadku użycia, sprzętu i umiejętności.

TensorRT-LLM to silnik wnioskowania, który sprawdzi się, jeśli uruchamiasz duże modele na układach GPU NVIDIA i potrzebujesz każdej uncji szybkości (pomyśl o aplikacjach o niskim opóźnieniu, takich jak chatboty w czasie rzeczywistym lub asystenci AI, w których odpowiedzi muszą być generowane w milisekundach). Jest to idealne rozwiązanie dla firm, które są już głęboko zakorzenione w świecie NVIDIA, ale może być przesadą, jeśli szukasz prostoty.

vLLM to świetny kompromis między szybkością i prostotą. Sprawdza się bardzo dobrze w przypadku startupów lub badaczy, którzy chcą czegoś elastycznego i szybkiego w konfiguracji.

Hugging Face TGI jest odpowiednikiem vLLM pod względem szybkości i prostoty. Jest łatwy do wdrożenia, skaluje się płynnie i łączy się z hubem modelowym Hugging Face, więc jest idealny dla zespołów, które chcą rozwiązania bez zbędnych komplikacji.

LMDeploy błyszczy pod względem wydajności, podobnie jak TensorRT-LLM. Nadaje się dla użytkowników z układami GPU NVIDIA, którzy chcą prostej konfiguracji i najwyższej wydajności, ale jest mniej przydatny, jeśli modele nie współpracują z TurboMind.

Jeśli nie możesz lub nie chcesz samodzielnie wdrażać własnego modelu GenAI, możesz skorzystać z NLP Cloud i wykorzystać szybkie generatywne modele AI na dużą skalę w produkcji. Wypróbuj szybkie wnioskowanie w NLP Cloud już teraz!

Jeśli masz pytania dotyczące silników wnioskowania w ogóle, nie wahaj się nas zapytać, zawsze chętnie doradzimy!

Julien
CTO w NLP Cloud