Deepseek lokal auf der CPU betreiben - mit 768GB RAM!

  • 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. 8o

    Tests ohne NUMA:

    Hyper-ThreadingLM Studio unsloth Deepseek-V3_Q4_K_M, 410GB in RAM
    On2,16 Token/s bei 80 Threads
    On2,33 Token/s bei 64 Threads
    On2,29 Token/s bei 40 Threads
    Off2,63 Token/s bei 40 Threads
    Off2,74 Token/s bei 32 Threads
    Off2,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-ThreadingLM Studio unsloth Deepseek-V3_Q4_K_M, 410GB in RAM
    Off1,92 Token/s bei 40 Threads
    On1,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. :topmodel:

    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.

    Come to the dark side, we have cookies!

    Edited 14 times, last by RaVeNsClaw (March 15, 2025 at 8:40 PM).

  • Achtung bei NUMA: Das muß nicht nur das Betriebssystem unterstützen, sondern explizit auch die Anwendersoftware, also in deinem Fall DeepSeek selber. Dafür gibt es unter Microsoft Windows eine entsprechende Erweiterung der Kernel32 API mit der entsprechenden Funktionalität für threading Code. Unter Linux wird das aktuell über die libnuma.so gemacht, die man in sein Programm reinlinken und analog zu Windows deren Funktionen benutzen muß. Unter Windows entfällt nur das Linken einer zusätzlichen Bibliothek, weil Microsoft das in's "Herz" des Betriebssystems eingebaut hat.

    Aber der Programmierer muß sich leider darum kümmern, anders geht's nicht. Das System erahnt bedauerlicherweise nicht magisch von selbst welche Daten zu welchen Threads gehören.

    1-6000-banner-88x31-jpg

    Stolzer Besitzer eines 3dfx Voodoo5 6000 AGP Prototypen:

    • 3dfx Voodoo5 6000 AGP HiNT Rev.A-3700

    [//wp.xin.at] - No RISC, no fun!

    QotY: Girls Love, BEST Love; 2018 - Lo and behold, for it is the third Coming; The third great Year of Yuri, citric as it may be! Edit: 2019 wasn't too bad either... Edit: 2020... holy crap, we're on a roll here~♡! Edit: 2024, finally last year's dry spell is over!

    Quote Bier.jpg@IRC 2020: "Je schlimmer der Fetisch, desto besser!"

  • Huh? Ich meinte nur, weil da oben DeepSeek Benchmarks stehen?! Also dachte ich es geht um ein DeepSeek LLM Modell?

    1-6000-banner-88x31-jpg

    Stolzer Besitzer eines 3dfx Voodoo5 6000 AGP Prototypen:

    • 3dfx Voodoo5 6000 AGP HiNT Rev.A-3700

    [//wp.xin.at] - No RISC, no fun!

    QotY: Girls Love, BEST Love; 2018 - Lo and behold, for it is the third Coming; The third great Year of Yuri, citric as it may be! Edit: 2019 wasn't too bad either... Edit: 2020... holy crap, we're on a roll here~♡! Edit: 2024, finally last year's dry spell is over!

    Quote Bier.jpg@IRC 2020: "Je schlimmer der Fetisch, desto besser!"

  • Query: "Please write a poem about graphic cards from 3dfx."
    Ja, da ist ein Rechtschreibfehler drin. Das habe ich erst zu spät bemerkt. 8o

    Und wo kann ich jetzt die Gedichte lesen? :gadget:

    :)

    Ich werde mich von keinem einzzzigen Prozzzessor trennen.
    Jedoch lockt es mich beinahe, ihn Dir zu überlassen, nur um zu sehen, wie er Dich in den Wahnsinn treibt :evil:

    Meine Begehren

  • Sorry für den schlechten Zustand des ersten Posts. Wenn man einen neuen Thread erstellt, dann werden m.W. keine Entwürfe gespeichert.
    Daher hab ich das gestern mit den paar ersten Erkenntnissen eingestellt, wie es war.
    Ich werde das alles richtig überarbeiten wenn echte Erkenntnisse vorliegen.

    @GAT:
    LLM Modelle wie Deepseek sind einfach nur Modell Dateien. Quasi ein Neuronales Netz, abgespeichert in eine Datei.
    LM Studio ist nur eine von vielen Softwares, über die man solche Modelle auf CPU oder GPU laufen lassen kann.
    Da gibt es alleine in LM Studio schon ganz viele Varianten, so etwas zu tun:
    - Schnell: Modell in VRAM, GPU berechnet.
    - Mittel: Modell in RAM und es werden immer Pages in den VRAM verschoben, GPU berechnet.
    - Langsam: Modell in RAM, CPU berechnet.

    Come to the dark side, we have cookies!

  • Ah ok, alles klar. Danke für die Info.

    1-6000-banner-88x31-jpg

    Stolzer Besitzer eines 3dfx Voodoo5 6000 AGP Prototypen:

    • 3dfx Voodoo5 6000 AGP HiNT Rev.A-3700

    [//wp.xin.at] - No RISC, no fun!

    QotY: Girls Love, BEST Love; 2018 - Lo and behold, for it is the third Coming; The third great Year of Yuri, citric as it may be! Edit: 2019 wasn't too bad either... Edit: 2020... holy crap, we're on a roll here~♡! Edit: 2024, finally last year's dry spell is over!

    Quote Bier.jpg@IRC 2020: "Je schlimmer der Fetisch, desto besser!"

  • Query: "Please write a poem about graphic cards from 3dfx."
    Ja, da ist ein Rechtschreibfehler drin. Das habe ich erst zu spät bemerkt. 8o

    Und wo kann ich jetzt die Gedichte lesen? :gadget:

    :)


    Hier ein Beispiel. Ich habe das jetzt nicht ausgewält, das war der letzte Durchlauf mit dem Q4 quantisierten modell. 313 Token, 114 Sekunden:

    Display Spoiler

    Ode to the Voodoo Line

    In silicon halls where legends reside,
    Lies the spirit of 3Dfx's pride.
    A pioneer bold in the digital age,
    Their Voodoo line turned the gaming stage.

    Oh, Glide API, your magic was clear,
    With textures and shadows so vivid, near.
    The first to bring 3D to life,
    In a pixelated world rife with strife.

    Voodoo Graphics, the trailblazer's call,
    A revolution for one and all.
    From Quake II’s depths to Tomb Raider’s climb,
    You rendered worlds in their prime.

    Then Voodoo2 came, twice as strong,
    With SLI, where dual hearts belong.
    Two cards paired in a symphony sweet,
    For gamers, it was pure retreat.

    Voodoo3 and 5 followed the path,
    Pushing boundaries, stirring wrath.
    Yet in their wake, a legacy grew,
    A foundation for what we now construe.

    Though time has passed, and names have faded,
    The echoes of Voodoo still cascaded.
    For every frame, every light you cast,
    In gaming’s heart, your memory will last.

    So here’s to 3Dfx, a toast to the past,
    To the graphics cards that forever will last.
    Voodoo lives on in whispers and lore,
    A legend of tech we’ll always adore.

    Come to the dark side, we have cookies!

  • Teilweise ein klein bissl holprig, teilweise aber auch schon ganz schön nice!

    1-6000-banner-88x31-jpg

    Stolzer Besitzer eines 3dfx Voodoo5 6000 AGP Prototypen:

    • 3dfx Voodoo5 6000 AGP HiNT Rev.A-3700

    [//wp.xin.at] - No RISC, no fun!

    QotY: Girls Love, BEST Love; 2018 - Lo and behold, for it is the third Coming; The third great Year of Yuri, citric as it may be! Edit: 2019 wasn't too bad either... Edit: 2020... holy crap, we're on a roll here~♡! Edit: 2024, finally last year's dry spell is over!

    Quote Bier.jpg@IRC 2020: "Je schlimmer der Fetisch, desto besser!"

  • Danke! :thumbup:

    Und jetzt noch eine Audioversion davon quasi wie eine literarische Lesung zum Entspannen nach einem langen, harten Arbeitstag. :)

    Ich werde mich von keinem einzzzigen Prozzzessor trennen.
    Jedoch lockt es mich beinahe, ihn Dir zu überlassen, nur um zu sehen, wie er Dich in den Wahnsinn treibt :evil:

    Meine Begehren

  • Danke! :thumbup:

    Und jetzt noch eine Audioversion davon quasi wie eine literarische Lesung zum Entspannen nach einem langen, harten Arbeitstag. :)

    Ode to the Voodoo Line.zip

    Pw.: voodooalert

    Mit XTTS Webui lokal in etwa 15 Sekunden auf einer RTX4060 generiert. Ohne RVC, einfach wie es aus der KI raus gefallen ist.
    Ich habe aber ein paar Versuche gebraucht, da die KI gerne Sätze weglässt. ;)

    Come to the dark side, we have cookies!

    Edited 3 times, last by RaVeNsClaw (February 20, 2025 at 6:30 PM).

  • Das volle Deepseek V3 Q8 Modell mit 700GB läuft nun auf dem Rechner! 8):thumbup:
    Ich erreiche 2,08 Token/s und bin damit nur 24% langsamer, als bei dem 377GB Modell.



    Ich habe im ersten Post einiges ergänzt. Mehr wird folgen.

    Come to the dark side, we have cookies!

    Edited once, last by RaVeNsClaw (February 20, 2025 at 10:55 PM).

  • Kannst du mal Goliath: https://huggingface.co/TheBloke/goliath-120b-GGUF auf der Kiste testen?

    Ich habe das volle Q8 Modell (125.12 GB) getestet. Es werden 134 GB RAM belegt.
    Wegen der neuen Version (0.3.12) von LM Studio verliere ich allerdings durch die Bank über 50% an Performance. :(
    Ichs ehe auch keine einfache Möglichkeit, ein Downgrade durchzuführen.
    Da alle paar Tage eine neue Version erscheint, warte ich erst einmal ab.

    Die Performance ist daher mit 0,72 Token/s bei 32 Threads in LM Studio 0.3.12 sehr schlecht.

    Das ist aber ein ziemlich altes Modell. Die Kontextgröße ist auf 4096 Tokens begrenzt.
    Man muss das Q8 Modell zudem selbst aus den Parts zusammensetzen. Dabei ist allerdings die Anleitung in der Readme falsch.

    Damit funktioniert es
    Code
    COPY /B goliath-120b.Q8_0.gguf-split-a + goliath-120b.Q8_0.gguf-split-b + goliath-120b.Q8_0.gguf-split-c goliath-120b.Q8_0.gguf

    Come to the dark side, we have cookies!

  • Hmmh? Das erstaunt mich! hatte nach dem 2T/S bei Deepseek doch deutlich mehr erwartet. Goliath ist bisher mit eins der Modelle die mir am besten gefallen.

    Allerdings gibt es 2 challenges, welche bisher kein Model bei mir wirklich gut geschafft hat. PCI-X sauber zu beschreiben. Und die Quest einfach mal BOFH zu sein. :D

    Du solltest echt mal auf llama.cpp wechseln. Der eingebaute llama-server rennt sauber, und kommt mit NUMA zurecht.

  • Werde ich machen!
    In letzter Zeit ist nur so viel anderes gewesen, dass ich keine Zeit dazu gefunden habe.
    Vorallem will ich schauen, ob sich die 4x AVX512 Einheiten der CPUs nutzen lassen.

    Come to the dark side, we have cookies!

  • Wer sagt, dass man 786 GB Ram braucht um DeepSeek nutzen zu können?

    Hier mit 128GB Ram auf meinem Epyc und 2 Intel Optane SSDs als SWAP!

    1x 240 GB und
    1x 480 GB

    Ich habe das Token Popup noch mal reinkopiert.

    Es sieht für mich so aus, als würde der Linux Kernel noch nicht zwei SWAP Disks Optimal zusammen nutzen. Das Load Balancing scheint mir noch etwas suboptimal zu sein.

    Es ist zu lahm für eine Unterhaltung, aber wenn man es über Nacht laufen lässt, sollte man hiermit eine Gute und Günstige Option aufbauen können.

    2x Intel Optane 480 gb, einen kleinen 8 oder 16 Kerner und los. Ich denke mal das ganze sollte recht günstig machbar sein. Optane für 200-400 Euro, je nachdem wie viel glück man bei Ebay hat. Und eine alte Platform liegt bestimmt noch im Keller. Evlt kann man ja sogar eine normale NVME nehmen?

    Ihr könnt nur bestimmt eine normale NVME verdammt schnell Totschreiben:

  • Bedenkt, das ihr auch für so etwas eure SSDs dann killen könnt:

    ich bin bei etwa 1.1 t/m bzw ein Token alle 52.7 Sekunden.