🧪 Neue Tutorials in Arbeit — vom Roboterarm bis zum Sensor
Zum Inhalt springen

Speichereffizienz — Modelle in 8 GB ausführen ​

Auf dem Orin Nano Super Kit sind die 8 GB Unified Memory eine harte Grenze für alles: das Betriebssystem, den Desktop, die Dienste und das Modell selbst. Die dokumentierten Hebel kommen in drei Ebenen — Plattform, Modell und Messung —, und diese Seite vermerkt, wo eine Technik nur für ein größeres Modul dokumentiert ist.

Das 8-GB-Budget in klaren Zahlen ​

  • Nach Firmware- und Kernel-Reservierungen sind rund 7,6 GB der 8 GB nutzbar — das Budget, das NVIDIAs Speichereffizienz-Blog für alle seine „verfügbarer Speicher“-Angaben verwendet.
  • CPU-Speicher und GPU-Speicher (CUDA, Multimedia-Puffer) stammen aus dem selben physischen Pool; das Reduzieren des einen hilft dem anderen.
  • Die Vorzeige-Demo des Blogs — eine VLM-Pipeline mit 2B Parametern — läuft bei 4,5 / 7,6 GB (~60 %).

Hebel 1 — Plattformebene: was das Betriebssystem und die Dienste belegen ​

Die folgenden Einsparungen stammen aus NVIDIAs Speichereffizienz-Blog.

HebelDokumentierte EinsparungWie
Grafischen Desktop deaktivieren (Headless)Bis zu 865 MBsudo systemctl set-default multi-user.target
Netzwerk- und Journaling-Dienste deaktivierenBis zu 32 MBsudo systemctl disable <service-name>
Display- und Kamera-CarveoutsEtwa 100 MB insgesamtBSP-Device-Tree-Anpassung, dann neu flashen
SWIOTLB-ReservierungEtwa 4 MBKernel-Argument swiotlb=2048, nur wenn DMA-Probleme auftreten
DeepStream-artige PipelineBis zu 412 MBContainer zu Bare Metal (70 MB); Python zu C++ (84 MB); Tiler/OSD deaktivieren und FakeSink verwenden (258 MB) — siehe DeepStream
Wahl des Inferenz-FrameworksVermeiden Sie >2,7 GB OverheadSchlanke Runtimes (C++-Runtime, llama.cpp); ein schwereres Framework kann allein bei der Initialisierung über 2,7 GB hinzufügen

Juxi-Hinweis: Carveout-Anpassungen sind BSP-Quellcodeänderungen: Sie erfordern ein erneutes Flashen und sparen wenig. Ändern Sie jeweils nur eine Sache und behalten Sie ein funktionierendes Flash-Abbild — siehe Flashen & Updates.

Swap ist keine Einsparung, sondern ein Überdruckventil. Das RAM-Optimierungs-Tutorial des Anbieters ersetzt ZRAM durch eine 16 GB große Swap-Datei auf NVMe (sudo systemctl disable nvzramconfig zuerst); NVIDIAs 8-GB-Demo ging von rund 2 GB Swap-Nutzung zu Spitzenzeiten aus.

Nach dem Stoppen eines Servers den Cache freigeben ​

Die Speichernutzung kann hoch bleiben, nachdem Sie einen vLLM- oder SGLang-Server oder einen Docker-Container gestoppt haben (bekanntes Problem 5661165 in L4T r39.2.1). NVIDIAs Befehl:

bash
sudo sh -c "sync; echo 3 > /proc/sys/vm/drop_caches"

Dieselbe Abhilfe gilt, wenn einem Edge-LLM-Engine-Build der Speicher ausgeht: sudo sysctl -w vm.drop_caches=3 plus kleinere Build-Limits (Anbieter-Tutorial).

Leistungsmodi ändern Taktraten, nicht die Kapazität ​

LeistungsmodusModus-IDCPU-Max.-TaktGPU-Max.-TaktSpeicher-Max.-Takt
15W01497,6 MHz612 MHz2133 MHz
25W (Standard)11344 MHz918 MHz3199 MHz
MAXN_SUPER21728 MHz1020 MHz3199 MHz

Die obigen Takt-Maxima stammen aus NVIDIAs Tabellen zu Leistungsaufnahme und Performance für r39.2. Leistungsmodi ändern die Taktfrequenzen, nicht die Speichergröße — ein Modell, das nicht passt, passt auch in einem schnelleren Modus nicht. Umschalten mit sudo nvpmodel -q (auflisten) und sudo nvpmodel -m <mode_id>; MAXN_SUPER erfordert die Super-Flash-Konfiguration und ist experimentell (laut diesen Tabellen). Wenn 25W oder MAXN SUPER fehlt, siehe Fehlerbehebung.

Achtung: Eine übermäßig große CUDA-Speicherallokation kann das Gerät neu starten (bekanntes Problem 5699079 in L4T r39.2.1). Die Empfehlung in denselben Release Notes: Stellen Sie sicher, dass CUDA und andere Anwendungen nicht mehr Speicher anfordern, als physisch verfügbar ist, und starten Sie CUDA-Prozesse mit höheren OOM-Scores, damit Systemprozesse nicht beendet werden.

Hebel 2 — Modellebene: was das Modell und sein Cache belegen ​

Quantisierung ist der größte einzelne Hebel ​

Orin führt nur FP16-, INT8- und INT4-Engines aus; FP8 und FP4 laufen nicht auf Orin (Thor-/Blackwell-Klasse). Verwenden Sie für TensorRT Edge-LLM INT4 AWQ- oder INT4 GPTQ-Checkpoints, vermeiden Sie INT8 GPTQ und wählen Sie niemals FP8-, MXFP8-, FP4- oder NVFP4-Checkpoints. Siehe Lokale LLM-Inferenz.

NVIDIA-eigene Zahlen: Qwen3 8B von FP16 auf W4A16 holt rund 10 GB zurück; Qwen3 4B von BF16 auf INT4 holt rund 5,6 GB zurück. NVIDIAs Diagramm für den 4B-Fall trägt die Beschriftung „Jetson Orin NX 16 GB“ — ein größeres Modul; betrachten Sie die Zahlen daher als Referenz, nicht als Zusage für 8 GB.

Mit 4-Bit-Quantisierung und einer effizienten Runtime liegt NVIDIAs dokumentierter Rahmen für dieses Budget bei LLMs bis ~10B Parameter und VLMs bis ~4B Parameter.

Was NVIDIA tatsächlich auf 8 GB benchmarkt ​

TensorRT Edge-LLM veröffentlicht Orin-Nano-8-GB-Zeilen für Modelle von 0,6B bis 2B Parametern (Qwen3- und Qwen3.5-Familien); 2B ist das größte Modell, das NVIDIA auf diesem Modul benchmarkt. Ein 4B-INT4-AWQ-Walkthrough existiert als Anbieter-Tutorial (rund 2 GB Gewichte), aber es sind keine offiziellen 4B-Zahlen veröffentlicht.

Speicherbedarf beim Engine-Build (TensorRT Edge-LLM) ​

  • --externalize-weights int4_ffn (dense) oder --externalize-weights int4_ffn int4_moe (MoE) reduziert den Speicherbedarf beim Engine-Build auf Orin-Geräten mit wenig Systemspeicher.
  • Auf Orin Nano abgestimmte Limits aus dem Anbieter-Tutorial: llm_build --maxBatchSize 1 --maxInputLen 512 --maxKVCacheCapacity 1024. Wenn dem Build weiterhin der Speicher ausgeht, geben Sie zuerst Systemspeicher frei und reduzieren Sie weiter, zum Beispiel --maxInputLen 256 --maxKVCacheCapacity 512. Engines werden auf dem Gerät gebaut und sind nicht zwischen Modulen übertragbar.

KV-Cache: Dimensionierung und Wiederverwendung ​

Der KV-Cache wächst mit Kontextlänge, Batch-Größe und Parallelität; er ist Teil des Speicherbudgets, kein Nachgedanke.

  • Build-Limits begrenzen ihn: --maxInputLen und --maxKVCacheCapacity; die Orin-Nano-Benchmark-Builds verwendeten maxInputLen 2048 und maxKVCacheCapacity 2200, Batch 1.
  • Die KV-Cache-Wiederverwendung ist eine dokumentierte Runtime-Fähigkeit von Edge-LLM: ein prozesslokaler, inhaltsadressierter Cache für wiederholte Eingabe-Präfixe, sodass Prefill-Zustand aus Dokumenten, vorherigen Turns, generierten Fortsetzungen und wiederholten Bild-Präfixen wiederverwendet statt neu berechnet wird.
  • Eine Modelldatei, die passt, kann trotzdem scheitern: Ein Community-Bericht zeigt 7,4 GB und 16 GB große GGUF-Dateien, die auf einem 8-GB-Board mit einem KV-Cache-Allokationsfehler scheitern — rechnen Sie KV-Cache und Runtime-Overhead hinzu, wenn Sie prüfen, ob es passt.
  • Vokabularreduktion (die Generierung wird auf eine aufgabenbezogene Token-Teilmenge beschränkt) und Visual-Token-Pruning (DART) (duplizierte Bild-Tokens werden vor dem Prefill verworfen) sind dokumentierte Edge-LLM-Funktionsseiten. Der visuelle Engine-Build kennt zusätzlich Bild-Token-Limits: --minImageTokens, --maxImageTokens, --maxImageTokensPerImage.

Wichtig: Der FP8-KV-Cache — die Einsparung von ~50 % KV-Cache-Speicher — erfordert SM89 oder neuer (Ada Lovelace und höher). Orin ist SM87, daher ist er auf diesem Kit nicht verfügbar. Verwenden Sie FP16-KV-Cache.

Ein Vorher/Nachher von NVIDIA selbst ​

NVIDIAs 8-GB-Fallstudie (Speichereffizienz-Blog, Tabelle 7): Headless-Modus statt des vollen GNOME-Desktops (1,8 GB → 1,1 GB) plus ein 4-Bit-GGUF-VLM (Q4_K_M, 6,6 GB → 2,2 GB). Die Pipeline lief zuvor nicht auf dem Orin Nano 8 GB (allein das VLM belegte 87 % des RAM) und läuft jetzt bei 4,5 / 7,6 GB (~60 %) — über 5,1 GB gespart. Die Spalte „Vorher“ bezieht sich auf Orin NX 16 GB: Dieselben Optimierungen verlagerten den Workload auf das 8-GB-Kit.

Hebel 3 — Messebene: sehen, wohin der Speicher fließt ​

WerkzeugZeigtHinweis
sudo tegrastatsCPU, GPU, Speicher, Temperatur, LeistungsaufnahmeDas Dev-Kit-Benutzerhandbuch: nvidia-smi ist auf Jetson nicht das primäre Überwachungswerkzeug
nvidia-smi dmonGPU-AuslastungLaut Release-Notes-Eintrag 5406663; die GPU-Auslastung in der Jetson Power GUI „wird noch bewertet“
free -hDie Betriebssystem-Sicht auf den SpeicherSagt Ihnen nicht, was ein GPU-Workload allozieren kann
procrankPhysischer Speicher pro Prozess (PSS)git clone https://github.com/csimmonds/procrank_linux.git, cd procrank_linux/, make, sudo ./procrank
nvmap clientsProzesse, die GPU-/Multimedia-Puffer haltensudo cat /sys/kernel/debug/nvmap/iovmm/clients

„Freier Speicher“ ist nicht das Budget ​

free -h zeigt die offene Systemsicht; GPU-Allokationen stammen aus demselben Pool, werden aber getrennt verbucht. In einem Community-Bericht über ein 8-GB-Board schlug cudaMalloc für den KV-Cache fehl, während free -h noch 5,7 GiB als „frei“ anzeigte [Einstufung B, Community-Bericht]. Beurteilen Sie den Fit am Budget von ~7,6 GB, nicht an „frei“.

Vorgehen ​

  1. Bestätigen Sie zuerst die Plattform-Grundlagen — System überprüfen.
  2. Zeichnen Sie eine Baseline auf: Speicher im Leerlauf, dann unter Last (tegrastats).
  3. Ändern Sie einen Hebel, messen Sie erneut. Wenn sich nichts bewegt hat, nehmen Sie die Änderung zurück.

Wo Sie beginnen sollten ​

Nach der dokumentierten Größe des Erfolgs:

  1. Runtime und Quantisierung — die größte Ebene in NVIDIAs Zusammenfassung (etwa 5–10 GB für Inferenz-Frameworks und Modellquantisierung, laut Tabelle 5 des Blogs).
  2. Headless — bis zu ~865 MB, ein einziger Befehl.
  3. Pipeline-Tuning — bis zu ~412 MB (DeepStream-artig).
  4. Swap auf NVMe — Druckentlastung, keine Einsparung.
  5. Carveouts und SWIOTLB — etwa 100 MB und 4 MB, plus erneutes Flashen. Zuletzt.

Wenn ein Modell immer noch nicht passt, ist das Modell das Problem, nicht die Einstellungen: Gehen Sie kleiner, quantisieren Sie stärker, kürzen Sie den Kontext oder reduzieren Sie den Batch — siehe Lokale LLM-Inferenz und die FAQ.

Quellen ​

Status: Entwurf, Überprüfung durch cheny ausstehend. Basiert auf der offiziellen NVIDIA-Dokumentation zum angegebenen Datum; noch nicht von Juxi Technology auf physischer Hardware verifiziert.


NVIDIA® und Jetson™ sind Marken der NVIDIA Corporation. Diese Seite wird von Juxi Technology veröffentlicht und ist keine Veröffentlichung von NVIDIA.