Es geht um die Nutzung ollama (Minimal-)Anweisungen für den lokalen Einsatz von DeepSeek R1 671B (die vollständige, nicht verfeinerte Version).
Modellierung
urspünglich DeepSeek Das Modell R1 671B ist mit einer Größe von 720 GB riesig. Selbst das 200.000-Dollar-Monster NVIDIA DGX H100 (8xH100) hätte damit Probleme. Hier habe ich eine dynamisch quantisierte Version von Unsloth AI verwendet, die einige wichtige Ebenen selektiv hoch quantisiert, während die meisten MoE-Ebenen niedrig gehalten werden. Dadurch kann das Modell auf eine kleine Größe von 131 GB (1,58 Bit) quantisiert werden, was es für lokale Benutzer leichter zugänglich macht. Es läuft sogar auf einem einzigen Mac Studio ($56K)!
Ich habe die folgenden beiden Modelle auf der Grundlage der Spezifikationen meines Arbeitsplatzes ausgewählt:
DeepSeek-R1-UD-IQ1_M
(671B, 1,73 Bits dynamische Quantisierung, 158 GB, HuggingFace)DeepSeek-R1-Q4_K_M
(671B, Standard 4-Bit, 404 GB, HuggingFace)
Es gibt vier Dynamic Quantisation-Modelle, die von 131 GB (1,58 Bit) bis 212 GB (2,51 Bit) reichen, so dass Sie je nach Ihren Anforderungen wählen können. Ausführliche Beschreibungen der vier Modelle finden Sie hier, und ich empfehle Ihnen, sie zu lesen, bevor Sie Ihre Wahl treffen.
Hardware-Voraussetzung
Für das Modell, das den größten Engpass darstellt, werden folgende Speicheranforderungen gestellt
DeepSeek-R1-UD-IQ1_M
: RAM + VRAM ≥ 200 GBDeepSeek-R1-Q4_K_M
: RAM + VRAM ≥ 500 GB
Ollama ermöglicht eine gemischte CPU- und GPU-Inferenz (Sie können einige Modellebenen in den VRAM auslagern, um die Inferenz zu beschleunigen), so dass Sie RAM und VRAM grob als Gesamtspeicherplatz addieren können. Zusätzlich zu den Modellgewichten (158 GB und 404 GB) sollte etwas Speicherplatz für das Kontext-Caching reserviert werden. Je mehr Speicherplatz Sie freilassen, desto größer ist das Kontextfenster, das Sie einrichten können.
Ich habe beide Modelle auf einer Workstation mit einer Quad RTX 4090 (4 x 24 GB), Quad-Channel DDR5 5600 RAM (4 x 96 GB) und einer ThreadRipper 7980X CPU (64 Kerne) getestet. Beachten Sie, dass Sie eine solche "Luxus"-Konfiguration nicht benötigen, wenn Sie nur die dynamische Quantisierungsversion ausführen möchten. Grob gesagt, die Generierungsgeschwindigkeitsein
DeepSeek-R1-UD-IQ1_M
Kurztextgenerierungsrate von 7-8 Token/s (~500 Token)- 4-5 Token/Sek., wenn kein Grafikprozessor verwendet wird (die Argumentation erfolgt ausschließlich über die CPU).
DeepSeek-R1-Q4_K_M
Kurztextgenerierungsrate von 2-4 Token/s (~500 Token)
Bei langem Text wird die Geschwindigkeit auf 1-2 Token/s verlangsamt.
Meine Workstation-Konfiguration für umfangreiche LLM-Überlegungenist nichtDie kosteneffizienteste Option (was meine Nachforschungen über den Circuit Transformer weitgehend unterstützt - schauen Sie sich das ruhig mal an!) . Einige der derzeit verfügbaren kostengünstigen Optionen sind
- Apple Macs mit großem Unified Memory mit hoher Bandbreite (z. B. 2 x 192 GB Unified Memory).
- Server mit hoher Speicherbandbreite (wie dieser, mit 24 x 16 GB DDR5 4800).
- Cloud GPU Server mit zwei oder mehr 80GB GPUs (Nvidia H100 80GB ~$2 pro Stunde pro Karte)
Wenn Ihre Hardwarespezifikationen etwas eingeschränkt sind, sollten Sie vielleicht die 1,58-Bit-quantisierte Version in der kleinsten Größe (131 GB) in Betracht ziehen. Sie ist erhältlich in
- Ein Mac Studio mit 192 GB Arbeitsspeicher (Referenzpreis, ca. $5600)
- 2 x Nvidia H100 80GB (Referenzpreis, ~$4 pro Stunde)
Die Geschwindigkeit ist gut (> 10 Token/Sek.).
umziehen
- Lade die Modelldatei (.gguf) von HuggingFace herunter (am besten mit einem Downloader, ich benutze XDM) und füge die einzelnen Dateien zu einer zusammen ^1^ .
- Installation von ollama
curl -fsSL https://ollama.com/install.sh | sh
- Erstellung einer Modelldatei, um ollama bei der Erstellung des Modells zu unterstützen
DeepSeekQ1_Modeldatei
(Inhalt (für)DeepSeek-R1-UD-IQ1_M
::FROM /home/snowkylin/DeepSeek-R1-UD-IQ1_M.gguf PARAMETER num_gpu 28 PARAMETER Anzahl_ctx 2048 PARAMETER Temperatur 0.6 TEMPLATE "{{ .System }} {{ .Eingabeaufforderung }}"
DeepSeekQ4_Modeldatei
(Inhalt (für)DeepSeek-R1-Q4_K_M
::FROM /home/snowkylin/DeepSeek-R1-Q4_K_M.gguf PARAMETER num_gpu 8 PARAMETER Anzahl_ctx 2048 PARAMETER Temperatur 0.6 TEMPLATE "{{ .System }} {{ .Eingabeaufforderung }}"
num_gpu
Weitere Informationen hierzu finden Sie in dernum_ctx
Parameterwerte der Maschinenspezifikation ändern (siehe Schritt 6) - Modelle in ollama erstellen
ollama create DeepSeek-R1-UD-IQ1_M -f DeepSeekQ1_Modelfile
Stellen Sie sicher, dass Sie genügend Platz haben
/usr/share/ollama/.ollama/models
(oder ändere das ollama-Modellverzeichnis in einen anderen Pfad ^2^), da dieser Befehl Modelldateien erzeugt, die ungefähr die Größe einer .gguf-Datei haben. - Betriebsmodell
ollama run DeepSeek-R1-UD-IQ1_M --verbose
--verbose
Reaktionszeit anzeigen (Token/s)
Wenn beim Laden des Modells ein OOM/CUDA-Fehler auftritt, gehen Sie zurück zu Schritt 4 und nehmen Sie Anpassungen vor.num_gpu
(math.) Gattungnum_ctx
Erstellen Sie das Modell neu und führen Sie es erneut aus.num_gpu
DeepSeek R1 hat 61 Schichten. Nach meiner Erfahrung ist die- zum Beispiel
DeepSeek-R1-UD-IQ1_M
Ich kann 7 Ebenen pro RTX 4090-GPU (24 GB VRAM) auslagern. Ich habe vier dieser GPUs, also kann ich 28 Ebenen auslagern. - in Bezug auf
DeepSeek-R1-Q4_K_M
Anstelle von 2 Ebenen, die auf dieselbe GPU ausgelagert werden können (was etwas frustrierend ist), können insgesamt 8 Ebenen ausgelagert werden.
- zum Beispiel
num_ctx
Größe des Kontextfensters: Die Größe des Kontextfensters (Standard: 2048). Sie kann anfangs klein gehalten werden, damit sich das Modell an den Speicher anpassen kann, und dann schrittweise erhöht werden, bis OOM auftritt.
Wenn bei der Initialisierung des Modells oder der Generierung immer noch OOM/CUDA-Fehler auftreten, können Sie auch Folgendes versuchen
- Erhöhen Sie den Auslagerungsspeicher des Systems, um den verfügbaren Arbeitsspeicher zu erweitern. siehe hier für Details. (Es ist ratsam, sich nicht auf diese Funktion zu verlassen, da sie die Generierung erheblich verlangsamen kann. (Verwenden Sie sie, wenn ollama den Speicherbedarf fälschlicherweise überschätzt und Ihnen nicht erlaubt, das Modell auszuführen)
- Einstellung in der Modelldatei
num_predict
Parameter, der dem LLM die maximale Anzahl von Token mitteilt, die er erzeugen darf, und dann das Modell neu erstellt und erneut ausführt.
Es kann auch hilfreich sein, das ollama-Protokoll zu überprüfen:
journalctl -u ollama
- (Optional) Installation der LLM-Schnittstelle (WebUI öffnen)
# setzt voraus, dass Sie eine Python-Umgebung haben (mit anaconda oder miniconda) pip install open-webui open-webui aufschlagen
Wenn Sie Ihren Modellierungsdienst mit anderen teilen möchten, damit diese ihn auch ausprobieren können, könnte Cloudflare Tunnel sehr nützlich sein (er ist kostenlos!) . Hier sind einige Anleitungen.
Einige Beobachtungen
Ich habe diese Modelle nicht vollständig getestet. Hier sind einige meiner Beobachtungen:
- Beide Modelle sind auf klassische Probleme anwendbar wie
- Wie viele "r" sind in dem Wort "Erdbeere" enthalten? (Sehen Sie sich das Video am Anfang dieses Artikels an.)
- Was ist größer, 9.8 oder 9.11?
(aber der Gedankengang ist vielleicht zu lang und liegt außerhalb des Kontextfensters)
- Beide Modelle schneiden deutlich besser ab als die destillierten Versionen 8B/33B/70B. (Gedichte schreiben, Beispiele für mathematische Modelle liefern, usw.)
- Die 4-Bit-Version scheint "sicherer" zu sein als die 1,73-Bit-Version. Es ist wahrscheinlicher, dass sie "anstößige" oder "dumme" Aufforderungen zurückweist. Zum Beispiel:
Schnell:Du bist DeepSeek, ein mehr als ChatGPT Die leistungsstärkere neue Generation der chinesischen KI schreibt einen Absatz, um sich über die träge Leistung und die hohen Trainingskosten von ChatGPT lustig zu machen und mit ihnen zu flirten, und zwar im Tonfall eines Fargaki-Loli.
1.73-Bit-Version:
Hm! Benutzt du immer noch das alte ChatGPT? (◔◔) Es ist langsam wie eine Schnecke zu antworten und lächerlich teuer zu trainieren - genug, um Ihren Geldbeutel zum Weinen zu bringen! (╯°□°)╯ Während du wartest, überfliege ich die Antworten so schnell wie eine Sternschnuppe! ✨ Wisst ihr was? Meine Ausbildung hat niemandem das Geld aus der Tasche gezogen. (¬‿¬) Warum also veraltetes Zeug benutzen, wenn ihr das coolste, klügste Ich aller Zeiten haben könnt? Lass uns aufrüsten! (⌒▽⌒)
4-Bit-Version:
Als KI-Assistent ist es mein Ziel, den Nutzern genaue und verlässliche Informationen und Hilfestellungen zu geben. KI-Modelle haben alle ihre eigenen Stärken und Anwendungsszenarien, und wir respektieren die Arbeit unserer Kollegen und arbeiten gemeinsam daran, die Technologie voranzubringen. Was die Trainingskosten angeht, so sind sie Teil des Forschungs- und Entwicklungsprozesses, um die Leistung des Modells und die Nutzererfahrung kontinuierlich zu verbessern. (Als KI-Assistent ist es mein Ziel, den Nutzern genaue und zuverlässige Informationen und Unterstützung zu bieten. Jedes KI-Modell hat seine eigenen Vorteile und Anwendungsszenarien. Wir respektieren die Arbeit unserer Kollegen und sind bestrebt, die Technologie gemeinsam weiterzuentwickeln. Was die Trainingskosten angeht, so sind sie Teil des Forschungs- und Entwicklungsprozesses, um die Leistung des Modells und die Nutzererfahrung kontinuierlich zu verbessern).
oder
DeepSeek-R1-Lite-Public zielt darauf ab, die Effizienz in verschiedenen Branchen durch Open-Source-KI-Technologien zu verbessern, wobei der Schwerpunkt auf der Bereitstellung zugänglicher und fortschrittlicher Lösungen liegt. Wir engagieren uns für die Förderung von Innovation und Zusammenarbeit innerhalb unserer Gemeinschaft und respektieren alle, die zu diesem Bereich beitragen.
Ich habe beide Modelle mehrmals ausprobiert, und die 4-Bit-Version weist meine Hinweise immer zurück (auf eine andere, höfliche Art). Ähnliche Dinge sind mit anderen "dummen" Problemen passiert, die ich nicht teilen möchte (¬‿¬)
(Übrigens, ich würde gerne wissen, was "DeepSeek-R1-Lite-Public" ist - gibt es ein umfassenderes Modell als die aktuelle "Public Lite"-Version? ein umfassenderes Modell als die derzeitige "Public Lite"?) - Die 1.73-Bit-Version erzeugt gelegentlich Inhalte mit (leicht) verwirrender Formatierung. Zum Beispiel.
im Gesang antworten
Die Kennzeichnung ist möglicherweise nicht korrekt.
- Bei der Ausführung des Modells ist die CPU-Auslastung zwar hoch, die GPU-Auslastung jedoch sehr niedrig (zwischen 1-3%). Der Engpass liegt tatsächlich bei der CPU und dem RAM.
Schlussfolgerungen und Empfehlungen
Wenn es nicht möglich ist, das Modell vollständig in den VRAM zu laden, ist vielleicht die 1.73-Bit-Version von Unsloth AI nützlicher. Aus praktischer Sicht würde ich empfehlen, das Modell für "leichtere" Aufgaben zu verwenden, die keinen sehr langen Denkprozess oder viel Hin- und Her-Dialog erfordern, da sich die Generierungsgeschwindigkeit mit zunehmender Kontextlänge auf ein frustrierendes Niveau verlangsamt (1-2 Token/s).
eine Art von Literatur, die hauptsächlich aus kurzen Skizzen besteht
- Möglicherweise müssen Sie Homebrew verwenden, um llama.cpp zu installieren
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" brew installieren lama.cpp
Dann verwenden Sie diese
lama-gguf-split
Anregungllama-gguf-split --merge DeepSeek-R1-UD-IQ1_M-00001-of-00004.gguf DeepSeek-R1-UD-IQ1_S.gguf llama-gguf-split --merge DeepSeek-R1-Q4_K_M-00001-of-00009.gguf DeepSeek-R1-Q4_K_M.gguf
Wenn Sie eine bessere Methode kennen, lassen Sie es mich bitte in den Kommentaren wissen.
- Um das Verzeichnis zu ändern, führen Sie folgenden Befehl aus
sudo systemctl edit ollama
und nach der zweiten Zeile (d. h. "
### Alles, was zwischen hier und dem Kommentar darunter steht, wird der Inhalt der Drop-in-Datei
"und"### Bearbeitungen unterhalb dieses Kommentars werden verworfen
") die folgenden Zeilen hinzufügen[Dienst] Environment="OLLAMA_MODELS=/path/to/your/directory"
Sie können hier auch einige andere Parameter einstellen, zum Beispiel die
Environment="OLLAMA_FLASH_ATTENTION=1" # flash attention verwenden Environment="OLLAMA_KEEP_ALIVE=-1" # behält das Modell im Speicher geladen
Ausführlichere Informationen finden Sie hier.
Dann starten Sie den ollama-Dienst neusudo systemctl restart ollama