Jak uruchomić DeepSeek-V4 lokalnie: przewodnik po konfiguracji Pro i Flash
Jak uruchomić DeepSeek-V4 lokalnie: przewodnik po konfiguracji Pro i Flash
DeepSeek-V4 to jedna z najbardziej ambitnych otwartych wersji modeli z wagami od DeepSeek do tej pory. Rodzina obejmuje DeepSeek-V4-Pro, model Mixture-of-Experts (MoE) o 1,6 biliona parametrów z 49 miliardami aktywowanych parametrów, oraz DeepSeek-V4-Flash, mniejszy model MoE o 284 miliardach parametrów z 13 miliardami aktywowanych parametrów. Oba modele obsługują długość kontekstu do jednego miliona tokenów.
To połączenie brzmi ekscytująco, ale rodzi też praktyczne pytanie: czy faktycznie można uruchomić DeepSeek-V4 lokalnie?
Odpowiedź brzmi tak, ale z ważnym zastrzeżeniem. DeepSeek-V4 nie jest modelem na laptopa. Nawet wersja Flash to poważne wdrożenie wielo-GPU. Ten przewodnik przeprowadzi Cię przez lokalną konfigurację, korzystając z oficjalnych repozytoriów modeli DeepSeek na Hugging Face, wyjaśni, jaki sprzęt powinieneś zaplanować, oraz pokaże, jak poprawnie używać oficjalnych plików inferencyjnych i kodujących.
Strony referencyjne modeli:
DeepSeek-V4-Pro vs DeepSeek-V4-Flash
Zanim cokolwiek pobierzesz, wybierz odpowiednią wariantę modelu.
| Model | Całkowita liczba parametrów | Aktywowane parametry | Długość kontekstu | Precyzja | Najlepsze do |
|---|---|---|---|---|---|
| DeepSeek-V4-Flash | 284B | 13B | 1M | mieszana FP4 + FP8 | Szybsze lokalne eksperymenty, tańsze serwowanie, asystenci kodowania, testowanie długiego kontekstu |
| DeepSeek-V4-Pro | 1,6T | 49B | 1M | mieszana FP4 + FP8 | Maksymalna jakość, laboratoria badawcze, duże klastry GPU, poważne zadania rozumowania i agentowe |
Najważniejszą cechą jest to, że DeepSeek-V4 wykorzystuje architekturę Mixture-of-Experts (MoE). Tylko część modelu jest aktywowana dla każdego tokena, co zmniejsza koszty obliczeniowe. Jednak nadal musisz przechowywać i ładować wagi modelu. Oznacza to, że wymagania dotyczące pamięci GPU i przestrzeni dyskowej pozostają bardzo wysokie.
Dla większości deweloperów DeepSeek-V4-Flash jest realistycznym punktem startowym. DeepSeek-V4-Pro lepiej traktować jako wdrożenie na skalę klastra.
Co wyróżnia DeepSeek-V4?
Według karty modelu DeepSeek, seria V4 wprowadza kilka istotnych ulepszeń:
- Hybrydowa architektura uwagi: DeepSeek łączy Compressed Sparse Attention (CSA) i Heavily Compressed Attention (HCA), aby poprawić efektywność przy długim kontekście. W ustawieniu na milion tokenów DeepSeek-V4-Pro podobno używa znacznie mniej pamięci KV cache niż DeepSeek-V3.2.
- Manifold-Constrained Hyper-Connections (mHC): poprawia stabilność bardzo głębokich sieci, zachowując pojemność modelu.
- Optymalizator Muon: DeepSeek używa Muon podczas treningu dla lepszej konwergencji i stabilności.
- Długi kontekst: zarówno Pro, jak i Flash obsługują do 1M tokenów, przy czym DeepSeek zaleca co najmniej 384K kontekstu dla trybu Think Max.
- Wiele trybów rozumowania: DeepSeek-V4 obsługuje style Non-think, Think High i Think Max.
Dla lokalnego wdrożenia najważniejsze praktyczne zmiany to mieszana precyzja FP4/FP8 oraz niestandardowy format kodowania czatu.
Wymagania sprzętowe
DeepSeek-V4 nie jest zaprojektowany dla konsumenckich GPU, takich jak RTX 4090, chyba że planujesz eksperymentować z mocno zmodyfikowanymi kwantyzacjami społecznościowymi w przyszłości. Dla oficjalnych wag planuj sprzęt serwerowy GPU.
Praktyczne planowanie sprzętu
| Zastosowanie | Sugerowany sprzęt | Uwagi |
|---|---|---|
| Testowe wdrożenie DeepSeek-V4-Flash | 4-8 GPU NVIDIA z dużą pamięcią | GPU klasy H100/H200/A100 to praktyczny cel |
| Produkcyjne serwowanie DeepSeek-V4-Flash | 8+ GPU z dużą pamięcią | Więcej GPU pomaga w przepustowości i zadaniach z długim kontekstem |
| Badawcze wdrożenie DeepSeek-V4-Pro | Duży klaster GPU wielowęzłowy | Traktuj to jako infrastrukturę klastrową, nie model na pojedynczą stację roboczą |
| Think Max z długim kontekstem | Dodatkowa pamięć GPU i budżet na KV cache | DeepSeek zaleca co najmniej 384K tokenów kontekstu dla Think Max |
Wymagania dotyczące przestrzeni dyskowej
Przed rozpoczęciem pobierania zaplanuj dużą lokalną przestrzeń dyskową:
- Używaj NVMe SSD kiedy tylko to możliwe.
- Zachowaj dodatkowe miejsce na przekonwertowane wagi.
- Unikaj pobierania bezpośrednio na mały dysk systemowy.
- Spodziewaj się, że model Pro będzie wymagał znacznie więcej miejsca niż Flash.
Bezpieczny układ to:
/data/models/deepseek-v4-flash-hf # oryginalne pliki Hugging Face
/data/models/deepseek-v4-flash-infer # przekonwertowane wagi inferencyjne
/data/cache/huggingface # cache HFJeśli wynajmujesz serwer GPU w chmurze, wybierz instancję z lokalnym NVMe lub dołącz duży wolumen o wysokiej przepustowości. Przy planowaniu wdrożenia VPS możesz porównać serwery GPU lub z dużą pamięcią u dostawców takich jak LightNode, ale upewnij się, że instancja faktycznie ma wymaganą pamięć GPU dla tego typu modelu.
Wymagania programowe
Potrzebujesz środowiska Linux z aktualnymi sterownikami NVIDIA i CUDA.
Zalecana baza:
| Komponent | Zalecenie |
|---|---|
| System operacyjny | Ubuntu 22.04 lub nowszy |
| Python | 3.10+ |
| Sterownik GPU | Aktualny sterownik NVIDIA data center |
| CUDA | Preferowana wersja CUDA 12.x |
| PyTorch | Kompilacja z obsługą CUDA |
| Git LFS | Wymagany do plików modelu |
| Hugging Face CLI | Wymagany do niezawodnego pobierania |
Zainstaluj podstawowe narzędzia:
sudo apt update
sudo apt install -y git git-lfs python3 python3-venv python3-pip
git lfs install
pip install -U huggingface_hubJeśli używasz wirtualnego środowiska Pythona:
python3 -m venv dsv4-env
source dsv4-env/bin/activate
pip install -U pip wheel setuptools
pip install -U huggingface_hub torch transformers safetensorsKrok 1: Pobierz DeepSeek-V4-Flash
Dla większości użytkowników zacznij od Flash:
mkdir -p /data/models
cd /data/models
huggingface-cli download deepseek-ai/DeepSeek-V4-Flash \
--local-dir DeepSeek-V4-Flash \
--local-dir-use-symlinks FalseJeśli chcesz zamiast tego model Pro:
huggingface-cli download deepseek-ai/DeepSeek-V4-Pro \
--local-dir DeepSeek-V4-Pro \
--local-dir-use-symlinks FalseJeśli pobieranie zostanie przerwane, po prostu uruchom tę samą komendę ponownie. Hugging Face wznowi pobieranie.
Krok 2: Sprawdź strukturę oficjalnego repozytorium
Po pobraniu sprawdź folder modelu:
cd /data/models/DeepSeek-V4-Flash
lsKarta modelu wskazuje na dwa ważne foldery:
inference/- oficjalny lokalny kod inferencyjny, w tym skrypty konwersji wag i generacjiencoding/- narzędzia do kodowania promptów i parsowania wyjścia dla DeepSeek-V4
To ważne, ponieważ DeepSeek-V4 nie jest dostarczany z normalnym szablonem czatu w formacie Jinja. Nie powinieneś zakładać, że każdy ogólny wrapper czatu kompatybilny z OpenAI poprawnie sformatuje prompt od razu.
Krok 3: Konwersja wag do oficjalnej inferencji
Oficjalny README inferencji wymaga kroku konwersji przed uruchomieniem generacji.
Z repozytorium modelu:
cd /data/models/DeepSeek-V4-Flash/inference
export HF_CKPT_PATH=/data/models/DeepSeek-V4-Flash
export SAVE_PATH=/data/models/DeepSeek-V4-Flash-infer
export EXPERTS=256
export MP=4
export CONFIG=config.json
python convert.py \
--hf-ckpt-path ${HF_CKPT_PATH} \
--save-path ${SAVE_PATH} \
--n-experts ${EXPERTS} \
--model-parallel ${MP}Uwagi do parametrów:
| Zmienna | Znaczenie |
|---|---|
HF_CKPT_PATH | Ścieżka do oryginalnych plików modelu Hugging Face |
SAVE_PATH | Ścieżka wyjściowa dla przekonwertowanych wag inferencyjnych |
EXPERTS=256 | Liczba ekspertów używanych przez konwersję inferencyjną DeepSeek-V4 |
MP=4 | Rozmiar model parallel; zwykle dopasuj do liczby GPU używanych podczas uruchomienia |
CONFIG | Plik konfiguracyjny modelu używany przez skrypt generacji |
Jeśli używasz więcej GPU, dostosuj MP odpowiednio. Na przykład na węźle 8-GPU:
export MP=8Opcja ekspertów FP8
Oficjalny README inferencji zauważa, że jeśli chcesz używać ekspertów FP8 zamiast FP4, usuń tę linię z config.json:
"expert_dtype": "fp4"Następnie podczas konwersji dodaj --expert-dtype fp8:
python convert.py \
--hf-ckpt-path ${HF_CKPT_PATH} \
--save-path ${SAVE_PATH} \
--n-experts ${EXPERTS} \
--model-parallel ${MP} \
--expert-dtype fp8Dla większości użytkowników zacznij od domyślnej mieszanej konfiguracji FP4/FP8. Zmianę precyzji wprowadzaj dopiero po uzyskaniu działającej bazy.
Krok 4: Uruchom interaktywny czat
Po zakończeniu konwersji uruchom oficjalny skrypt generacji:
cd /data/models/DeepSeek-V4-Flash/inference
export MP=4
export SAVE_PATH=/data/models/DeepSeek-V4-Flash-infer
export CONFIG=config.json
torchrun --nproc-per-node ${MP} generate.py \
--ckpt-path ${SAVE_PATH} \
--config ${CONFIG} \
--interactiveDla wsadowego pliku wejściowego:
torchrun --nproc-per-node ${MP} generate.py \
--ckpt-path ${SAVE_PATH} \
--config ${CONFIG} \
--input-file prompts.txtDla uruchomienia wielowęzłowego:
torchrun \
--nnodes ${NODES} \
--nproc-per-node $((MP / NODES)) \
--node-rank $RANK \
--master-addr $ADDR \
generate.py \
--ckpt-path ${SAVE_PATH} \
--config ${CONFIG} \
--input-file prompts.txtUpewnij się, że każdy węzeł ma dostęp do ścieżki przekonwertowanego checkpointu lub skopiuj przekonwertowane pliki na tę samą ścieżkę na każdej maszynie.
Krok 5: Użyj poprawnych ustawień próbkowania
DeepSeek zaleca następujące parametry próbkowania dla lokalnego wdrożenia:
temperature = 1.0
top_p = 1.0Jeśli Twój skrypt generacji udostępnia je jako flagi CLI, użyj ich bezpośrednio. Jeśli nie, ustaw je w skrypcie lub konfiguracji tam, gdzie definiowane są parametry próbkowania.
Dla trybu Think Max DeepSeek zaleca użycie okna kontekstowego co najmniej:
384K tokenówNie zaczynaj od ogromnego okna kontekstowego podczas pierwszego testu. Zacznij od małego, potwierdź, że model się ładuje i generuje poprawnie, a następnie stopniowo zwiększaj długość kontekstu, monitorując pamięć GPU.
Krok 6: Zrozum kodowanie czatu DeepSeek-V4
DeepSeek-V4 nie zawiera standardowego szablonu czatu Jinja. Zamiast tego repozytorium dostarcza folder encoding/ z narzędziami Pythona.
Podstawowe użycie wygląda tak:
from encoding_dsv4 import encode_messages, parse_message_from_completion_text
messages = [
{"role": "system", "content": "Jesteś pomocnym asystentem."},
{"role": "user", "content": "Ile to jest 2+2?"},
]
prompt = encode_messages(messages, thinking_mode="thinking")
print(prompt)Dla czatu bez myślenia użyj trybu chat:
prompt = encode_messages(messages, thinking_mode="chat")Dla trybu myślenia model używa jawnych delimiterów rozumowania:
<think> ... </think>Parser może konwertować wygenerowany tekst z powrotem na ustrukturyzowane wiadomości asystenta:
completion = "Proste działania arytmetyczne.</think>2 + 2 = 4.<|end▁of▁sentence|>"
parsed = parse_message_from_completion_text(completion, thinking_mode="thinking")
print(parsed)To szczególnie ważne, jeśli chcesz zbudować własny lokalny wrapper API wokół DeepSeek-V4.
Wyjaśnienie trybów rozumowania
DeepSeek-V4 obsługuje trzy praktyczne style rozumowania:
| Tryb | Zachowanie | Zastosowanie |
|---|---|---|
| Non-think | Szybkie bezpośrednie odpowiedzi | Proste pytania i odpowiedzi, streszczanie, rutynowa pomoc w kodowaniu |
| Think High | Rozumowane odpowiedzi z przemyślaną analizą | Debugowanie, planowanie, matematyka, decyzje architektoniczne |
| Think Max | Maksymalny wysiłek rozumowania | Trudne zadania kodowania, workflow agentowe, rozwiązywanie problemów na poziomie badawczym |
Dla lokalnego serwera możesz chcieć udostępnić je jako osobne nazwy modeli, na przykład:
deepseek-v4-flash-chat
deepseek-v4-flash-thinking
deepseek-v4-flash-maxWewnątrz każda ścieżka może używać innego kodowania promptu, limitów kontekstu i parametrów generacji.
Czy można uruchomić DeepSeek-V4 z vLLM lub SGLang?
Na starcie najbezpieczniejszą ścieżką jest oficjalny kod inferencyjny DeepSeek w repozytorium modelu. Ogólne frameworki serwujące mogą wymagać aktualizacji, zanim w pełni obsłużą architekturę DeepSeek-V4, mieszaną precyzję, zachowanie długiego kontekstu i niestandardowe kodowanie.
Praktyczne podejście to:
- Najpierw pomyślnie uruchom oficjalną ścieżkę
inference/generate.py. - Potwierdź jakość wyjścia i formatowanie promptu za pomocą oficjalnych narzędzi
encoding/. - Następnie sprawdź, czy Twój preferowany framework dodał wsparcie dla DeepSeek-V4.
- Migrację do vLLM, SGLang, TensorRT-LLM lub innego frameworka serwującego wykonuj dopiero po potwierdzeniu wsparcia.
To zapobiega typowemu błędowi: model się ładuje, ale jakość czatu jest słaba, bo szablon promptu jest niepoprawny.
Budowa prostego lokalnego wrappera API
Jeśli chcesz mieć lokalny endpoint w stylu OpenAI, możesz opakować oficjalną ścieżkę generacji FastAPI. Dokładna implementacja zależy od integracji generate.py, ale ogólny przebieg to:
- Odbierz kompatybilne z OpenAI
messages. - Przekonwertuj je za pomocą
encoding_dsv4.encode_messages(). - Wyślij zakodowany prompt do silnika inferencyjnego DeepSeek-V4.
- Sparsuj wyjście za pomocą
parse_message_from_completion_text(). - Zwróć odpowiedź JSON kompatybilną z OpenAI.
Pseudo-kod:
from encoding_dsv4 import encode_messages, parse_message_from_completion_text
messages = [
{"role": "system", "content": "Jesteś pomocnym asystentem."},
{"role": "user", "content": "Wyjaśnij w prostych słowach, czym jest KV cache."},
]
prompt = encode_messages(messages, thinking_mode="thinking")
# Wyślij prompt do lokalnego worker'a inferencyjnego DeepSeek-V4
raw_completion = run_deepseek_v4(prompt)
assistant_message = parse_message_from_completion_text(
raw_completion,
thinking_mode="thinking",
)
print(assistant_message["content"])Do produkcji dodaj:
- kolejkowanie żądań
- strumieniowe wyjście
- obsługę timeoutów
- kontrole stanu GPU
- wymuszanie maksymalnego kontekstu
- strukturalne logi
- uwierzytelnianie
Rozwiązywanie problemów
1. CUDA Out of Memory
Zmniejsz obciążenie pamięci przez:
- skrócenie długości kontekstu
- zmniejszenie rozmiaru batcha
- zwiększenie rozmiaru tensor/model parallel
- użycie większej liczby GPU
- rozpoczęcie od DeepSeek-V4-Flash zamiast Pro
Długi kontekst to zwykle pierwsza rzecz do ograniczenia podczas debugowania.
2. Pobieranie nie powiodło się lub zawiesiło
Używaj huggingface-cli download zamiast pobierania przez przeglądarkę. Uruchom tę samą komendę ponownie, aby wznowić.
Możesz też ustawić dedykowany katalog cache:
export HF_HOME=/data/cache/huggingface
export HUGGINGFACE_HUB_CACHE=/data/cache/huggingface/hub3. Model generuje dziwne odpowiedzi czatu
Sprawdź formatowanie promptu. DeepSeek-V4 nie używa standardowego szablonu czatu Jinja. Użyj oficjalnej implementacji encoding/.
4. Uruchomienie wielo-GPU nie działa
Sprawdź, czy PyTorch widzi wszystkie GPU:
python - <<'PY'
import torch
print(torch.cuda.device_count())
for i in range(torch.cuda.device_count()):
print(i, torch.cuda.get_device_name(i))
PYSprawdź też sieć NCCL dla uruchomień wielowęzłowych:
export NCCL_DEBUG=INFO5. Think Max działa zbyt wolno
Think Max jest zaprojektowany, by poświęcać więcej mocy obliczeniowej na trudne rozumowanie. Używaj go tylko do zadań, które to uzasadniają. Do normalnej pracy asystenta zwykle bardziej praktyczne są tryby Non-think lub Think High.
Zalecana strategia wdrożenia
Jeśli wdrażasz DeepSeek-V4 lokalnie po raz pierwszy, postępuj według tego schematu:
- Zacznij od DeepSeek-V4-Flash.
- Używaj oficjalnego kodu inferencyjnego.
- Najpierw testuj na małym kontekście.
- Potwierdź działanie oficjalnego kodowania.
- Stopniowo zwiększaj długość kontekstu.
- Dodaj wrapper API dopiero po ustabilizowaniu generacji lokalnej.
- Rozważ Pro dopiero, gdy masz zasoby GPU na skalę klastra.
Końcowe uwagi
DeepSeek-V4 jest potężny, ale nie jest modelem do swobodnego lokalnego użytku. Wersja Flash to praktyczny punkt wejścia, podczas gdy Pro należy do poważnych środowisk wielo-GPU lub wielowęzłowych. Kluczem do udanej konfiguracji jest przestrzeganie oficjalnego workflow: pobierz repozytorium Hugging Face, przekonwertuj wagi za pomocą dostarczonych narzędzi inferencyjnych, uruchom generację z torchrun i korzystaj z dedykowanych narzędzi kodowania DeepSeek-V4 zamiast zakładać ogólny szablon czatu.
Jeśli chcesz tylko eksperymentować z promptami, hostowana usługa czatu DeepSeek lub trasy API mogą być łatwiejsze. Ale jeśli potrzebujesz prywatności danych, pełnej kontroli, braku opłat za tokeny lub niestandardowej infrastruktury, uruchomienie DeepSeek-V4 lokalnie daje solidną podstawę do budowy prywatnych systemów AI z długim kontekstem.