Wymagania: Wcześniej wdrożyłem model deepseek-r1:32b z Ollamą, który jest bardzo wygodny i szybki, odpowiedni do szybkiego wdrożenia osobistego. Jeśli to środowisko produkcyjne dla przedsiębiorstwa, jak powinno być wdrażane? Zazwyczaj do wdrażania używa się vllm i sglang, a ten artykuł wykorzystuje vLLM do wdrożenia modelu DeepSeek-R1.
Ollama vs. vLLM
Różnice są następujące:
| Wymiary kontrastu | Ollama | vLLM | | Pozycjonowanie rdzenia | Lekkie narzędzia lokalizacyjne dla indywidualnych programistów i eksperymentów na małą skalę | Ramy wnioskowania na poziomie produkcyjnym, skupiające się na scenariuszach na poziomie przedsiębiorstwa z dużą współbieżnością i niskim opóźnieniem | | Wymagania sprzętowe | Obsługuje CPU i GPU, mała ilość pamięci (domyślnie używa modelu kwantyzacji) | Trzeba polegać na kartach graficznych NVIDIA, które mają duże zużycie pamięci | | Wsparcie modeli | Wbudowana biblioteka modeli pre-trenowanych (obsługuje modele 1700+), automatyczne pobieranie wersji ilościowych (głównie int4) | Ręczne pobranie oryginalnego pliku modelu (np. format HuggingFace) obsługuje szerszy zakres modeli | | Trudność wdrożenia | Instalacja za pomocą jednego przycisku i użycie od razu po wyjęciu z pudełka bez konieczności stosowania podstaw programistycznych | Wymagane są środowisko Python i sterownik CUDA, a także wymagane jest doświadczenie techniczne | | Charakterystyka wydajności | Prędkość pojedynczej inferencji jest szybka, ale zdolność przetwarzania współbieżności jest słaba | Wysoka przepustowość, wsparcie dla dynamicznego przetwarzania wsadowego oraz tysiące jednoczesnych żądań | | Zarządzanie zasobami | Elastyczne dostosowywanie wykorzystania zasobów i automatyczne zwalnianie pamięci wideo podczas bezczynności | Zajmowanie pamięci wideo jest stałe, a zasoby muszą być zarezerwowane, aby poradzić sobie z szczytowymi obciążeniami |
Krótkie wprowadzenie do vLLM
vLLM to szybka i łatwa w użyciu biblioteka wnioskowania i usług LLM.
vLLM z nowymi algorytmami redefiniuje najnowszy poziom technologiczny usług LLM: . W porównaniu do HuggingFace Transformers, oferuje do 24 razy większą przepustowość bez żadnych zmian architektury modelu. Zmniejszając hashrate o połowę i zwiększając przepustowość dziesięciokrotnie, badanie porównało przepustowość vLLM z najpopularniejszą biblioteką LLM, HuggingFace Transformers (HF), oraz poprzednią metodą HuggingFace Text Generation Inference (TGI) z przepustowością SOTA. Ponadto badanie podzieliło konfigurację eksperymentalną na dwa typy: LLaMA-7B z GPU NVIDIA A10G jako sprzętem; Druga to LLaMA-13B, z graficzną kartą NVIDIA A100 (40GB) na sprzęcie. Pobierali próbki długości wejść/wyjścia z zestawu danych ShareGPT. Wyniki wykazały, że przepustowość vLLM była 24 razy wyższa niż HF i 3,5 razy wyższa niż TGI.
Dokumentacja vLLM:Logowanie do linku jest widoczne. Adres kodu źródłowego:Logowanie do linku jest widoczne. Testowanie wydajności:Logowanie do linku jest widoczne.
Nie musisz rozumieć obrazu, krowa jest skończona!
Przygotowanie środowiskowe
Kupiłem usługi aplikacji wysokiej wydajności Tencent Cloud i skonfigurowałem je w następujący sposób:
Ubuntu 20.04 Konfiguracja środowiska: Ubuntu 20.04, sterownik 525.105.17, Python 3.8, CUDA 12.0, cuDNN 8 Typ mocy obliczeniowej: Dwukartowy GPU podstawowy - 2*16GB+ | 16+TFlops SP | CPU - 16 rdzeni | RAM - 64GB
Instaluj Conda
Stwórz środowisko pythona za pomocą Conda, wklej skrypt bezpośrednio:
Wdrożenie DeepSeek-R1 za pomocą vLLM
Stwórz środowisko pythona za pomocą conda za pomocą następującego polecenia:
Zainstaluj vllm i modelscope za pomocą następujących poleceń:
Pobierz model DeepSeek-R1 za pomocą modelscope za pomocą następującego polecenia:
Odniesienie:Logowanie do linku jest widoczne.
Rozpocznij model deepseek za pomocą VLLM za pomocą następującego polecenia:
Jeśli natkniesz się na "Bfloat16", jest obsługiwany tylko na GPU o wydajności obliczeniowej co najmniej 8.0. Twoja karta graficzna Tesla T4 ma wydajność obliczeniową 7.5. Możesz zamiast tego użyć float16, ustawiając w CLI flagę 'dtype', na przykład: --dtype=half." Uwaga, po prostu dodaj parametry zgodnie z ostrzeżeniem.
Uwaga:
- --ustawienia rozmiaru tensora równoległego i liczby GPU
- --GPU-Memory-Utilization kontroluje procent wykorzystanej pamięci
- --served-model-name Nazwa modelu używana w API
- --wyłączy-log-requests wyłącza żądania logowania
Dokumentacja instalacji GPU Linux vLLM:Logowanie do linku jest widoczne. Parametry silnika:Logowanie do linku jest widoczne.
Sprawdź status GPU, jak pokazano poniżej:
Użyj testów listonosza
Przeglądarka otwarta:http://ip:8000/ Dokumentacja interfejsu:http://ip:8000/docs
Wezwanie listonosza, jak pokazano na poniższym obrazku:
Benchmarking
Pobierz kod testowy za pomocą następującego polecenia:
Polecenie jest wykonywane w następujący sposób:
Wynik: Przepustowość: 2,45 żądań/s, 1569,60 tokenów łącznie, 1255,68 tokenów wyjściowych/s
(Koniec) |