Hallo zusammen!
Angeregt durch dieses Video bei der c't möchte ich die Deepseek V3 und R1 Modelle auf einem lokalen PC auf der CPU laufen lassen.
Ich fange mit einer 377GB Quantisierten Version an und probiere dann die volle 712GB Version.
Da es Interesse an dem Thema gibt, will ich hier meine Erfahrungen teilen.
Ich werde diesen Post ständig erweitern, so stay tuned.
Hardware:
HP Z6 G4 von 2018 mit:
- 768GB RAM (12x DDR4 2666 LRDIMM)
- 2x Xeon Gold 6138, 40 Kerne, 80 Threads, 2,0 - 3,7 GHz, Skylake Architektur
Anmerkung:
Mein System hat zwei CPU Sockel, an denen jeweils 384GB RAM hängen. Wenn die eine CPU an die Daten der anderen will, dann gibt das einen Bottleneck.
Das Sytem ist also NICHT optimal für so einen Einsatz.
LM Studio:
Diese ersten Tests habe ich auf einem normalen Windows 11 Pro mit LM Studio durchgeführt.
Man muss nichts weiteres installieren und die Modelle kann man in der Software direkt von Hugging Face downloaden.
Vergleich von CPU und GPU
Mit einem 11 GB großen LLM erreiche ich auf meiner Geforce RTX3090 48,2 Token/s.
Auf den CPUs schaffe ich unter identischen Rahmenbedingungen bei optimalen Einstellungen 7,76 Token/s (32 Threads, HT und NUMA Ausgeschaltet).
In LM Studio liefern die CPUs also etwa 37% der Leistung einer RTX3090. Das ist überraschend viel!
Es wird sicher auch mit den jeweils 6 Speicherkanälen pro CPU zusammenhängen.
Tests zu NUMA und Hyper-Threading (HT) in LM Studio
Tests mit unsloth Deepseek-V3_Q4_K_M, 377GB auf Festplatte, 410GB in RAM
Query: "Please write a poem about graphic cards from 3dfx."
Ja, da ist ein Rechtschreibfehler drin. Das habe ich erst zu spät bemerkt. ![]()
Tests ohne NUMA:
| Hyper-Threading | LM Studio unsloth Deepseek-V3_Q4_K_M, 410GB in RAM |
| On | 2,16 Token/s bei 80 Threads |
| On | 2,33 Token/s bei 64 Threads |
| On | 2,29 Token/s bei 40 Threads |
| Off | 2,63 Token/s bei 40 Threads |
| Off | 2,74 Token/s bei 32 Threads |
| Off | 2,62 Token/s bei 24 Threads |
Mehr Performance ohne HT:
LM Studio wählt automatisch eine Anzahl von CPU Threads, die man aber überschreiben kann.
- Die Geschwindigkeit steigt nicht linear mit der Anzahl der Threads, auch wenn tatsächlich immer alle Threads ausgelastet werden.
- HT reduziert die Leistung. Da wurde schlecht optimiert.
Tests mit NUMA:
| Hyper-Threading | LM Studio unsloth Deepseek-V3_Q4_K_M, 410GB in RAM |
| Off | 1,92 Token/s bei 40 Threads |
| On | 1,61 Token/s bei 40 Threads |
NUMA Problem:
Wenn bei meinem Dual Socket System NUMA aktiv ist, dann fängt die Lastverteilung an zu spinnen. Sie wechselt laufend zwischen den Threads.
Auch die automatische Thread Auswahl reduziert sich von 24 auf 15. Ich kann über den Schieber nur noch 20 und nicht mehr 32 auswählen.
LM Studio hat scheinbar einige Probleme bei mehreren CPU Sockeln.
Optimale Anzahl an CPU Threads
Die folgenden Tests wurden mit ausgeschaltetem HT und NUMA durchgeführt.
Jeder Test wurde 3 mal wiederholt und der Mittelwert gebildet:![]()
![]()
Man kann erkennen, dass die Größe des LLM Modells keinen wirklichen Einfluss auf die Abhängigkeit von Threadanzahl und Token/s haben.
Man muss dazu aber sagen, dass die CPUs mit 40 Kernen bei 32 Threads dennoch 93% - 100% ausgelastet sind. Es passiert also noch einiges im Hintergrund:![]()
Es ist zu beachten, dass mein System mit 2 Sockeln und 40 Threads sich anders verhält, wie andere Systeme mit anderen Konfigurationen.
Nehmt einfach ein kleines LLM Modell und testet es aus!
Test des echten Deepseek V3 Modells mit 700GB
Query: "Please write a poem about graphics cards from 3dfx."
Ich musste alle Sicherheits-Features ausschalten, weil das Modell 91% des Speichers belegt.
Ich habe also nur 68GB RAM übrig! ![]()
Mit NUMA und HT ausgeschaltet bei 32 Threads:
--> Im Schnitt von 3 Durchläufen erreiche ich 2,08 Token/s
Im Task-Manager sieht das so aus:![]()
(Zwischen-) Ergebnis:
Insgesamt bin ich positiv überrascht, wie performant so große Modelle auf den alten CPUs laufen (2,08 T/s).
Im Video der c't erreichten sie 3,6 T/s, bei 1,5 TB RAM und 2x 128 Kern Epics.
Dort hätte also entweder durch Optimierung noch viel gewonnen werden können, oder die Geschwindigkeit ist mehr durch Speicherdurchsatz begrenzt?
Die Abnahme der Geschwindigkeit mit wachsender Größe des Modells ist weit kleiner als ich erwartet hatte.
Etwa ein 66% Geschwindigkeitsverlust bei einem 3400% größerem Modell. ![]()
Erkenntnisse:
--> 768GB RAM reichen für die echten Deepseek V3 und R1 Modelle aus!
--> Für bessere Performance sollte man HT im BIOS deaktivieren.
--> Bei Dual Socket NUMA im BIOS deaktivieren!
--> Mehr Threads bedeutet nicht mehr Performance!
--> Es wäre sicher besser, ein System mit einem CPU Sockel zu verwenden.