AIニュース最前線
最新ニュースAI日報Hacker日報週報動画AIツールトレンド企業

AIニュース最前線

世界中のAI最新情報を日本語で毎時更新

最新ニュース日報トレンド企業プレミアムRSS
© 2026 ainew.jp特定商取引法に基づく表記
ニュース一覧元記事を開く
NVIDIA Developer Blog·2026年4月21日 08:01·約21分で読める

NVIDIA Jetson上で大規模モデルを動作させるためのメモリ効率最適化

#Jetson#メモリ最適化#エッジAI#オープンソースLLM#ロボティクス
TL;DR

NVIDIAはJetsonプラットフォーム上で大規模モデルを実行するためのメモリ最適化手法を公開し、オープンソース生成AIの物理世界への展開を促進している。

AI深層分析2026年4月21日 09:01
4
重要/ 5段階
深度40%
4
関連度30%
4
実用性20%
5
革新性10%
3

キーポイント

1

エッジAIへの展開トレンド

オープンソース生成AIモデルがデータセンターからロボットや自律機械などの物理マシンへ移行する潮流を受け、Jetsonでの実装需要が高まっている。

2

メモリ効率の最適化

大規模モデルをJetsonの限られたVRAM/RAMで動作させるため、メモリ管理やモデル圧縮技術の適用が必須となる。

3

開発者向け実装ガイド

NVIDIAは公式ブログで具体的な最適化手法やツールチェーンを提供し、開発者のデプロイ負荷を軽減する。

影響分析・編集コメントを表示

影響分析

エッジデバイスにおける大規模モデルのローカル実行は、クラウド依存からの脱却と低レイテンシ実現を可能にする。NVIDIAが公式にメモリ最適化手法を提供することで、開発者の実装負荷が軽減され、ロボティクスや自律走行などの物理世界へのAI適用が加速する。これにより、分散型エッジAIアーキテクチャの標準化が進むと予想される。

編集コメント

エッジAI市場においてメモリ最適化は実装の成否を分ける核心技術であり、NVIDIA公式の知見は即座にプロダクション環境で活用できる実用的な価値を持つ。

NVIDIA Jetson上でより大きなモデルを実行するためのメモリ効率の最大化

オープンソースの生成AIモデルの急増は、データセンターを超えて物理世界で動作するマシンへと拡大している。開発者はこれらのモデルをエッジ(edge)にデプロイすることに意欲的で、物理AIエージェントや自律型ロボットが重労働タスクを自動化することを可能にしている。

主要な課題の一つは、メモリが限られたエッジデバイス上で数十億パラメータのモデルを効率的に実行することである。メモリ供給の制約が続く中、コスト上昇により、開発者はより少ないリソースでより多くのことを達成することに注力している。

NVIDIA Jetsonプラットフォームは、人気のあるオープンモデルをサポートしつつ、エッジでの強力なランタイムパフォーマンスとメモリ最適化を提供する。エッジ開発者にとって、メモリフットプリント(memory footprint)はシステムが動作するかどうかを決定する。クラウド環境とは異なり、エッジデバイスは厳格なメモリ制限の下で動作し、CPUとGPUが限られたリソースを共有する。

非効率なメモリ使用は、ボトルネックの発生、レイテンシ(latency)の急増、またはシステム障害を引き起こす可能性がある。一方、現代のエッジアプリケーションは検出、追跡、セグメンテーション(segmentation)など複数のパイプラインを同時に実行することが多く、電力と熱の制約下で安定したリアルタイムパフォーマンスを実現するには、効率的なメモリ管理が不可欠である。

メモリ使用量の最適化は明確な利点をもたらす。開発者はオーバーヘッドを削減しコンカレンシー(concurrency)を増やすことで、同じハードウェア上でパフォーマンスを向上させることができる。これにより、大規模言語モデル(LLMs)、マルチカメラシステム、センサーフュージョンなどのより複雑なワークロードの実行も可能になる。さらに、より小さなメモリ構成に収まることでシステムコストを削減し、ボトルネックを最小化してGPU利用率を最大化することで効率性(ワットあたりのパフォーマンス)も向上する。

本ブログでは、リソースが限られたエッジシステム上でパフォーマンス、効率性、そして機能を最大化するための最適化戦略を探る。

エッジAIソフトウェアスタック

エッジデバイスのランタイムソフトウェアスタックについてさらに深く掘り下げてみよう。これは完全なメモリ最適化の網羅的なガイドではないが、アイデアを刺激し、開発者が自身のスタックを改善する新たな方法を見出すための参照フレームワークである。メモリ削減の成果は、NVIDIAチームが達成した内容を示している。経験豊富なユーザーはより高い効率性を達成できるかもしれないが、他のユーザーはこの例を起点として、NVIDIA JetsonおよびNVIDIA IGXプラットフォーム上でリソースをより効果的に活用するための出発点とできるだろう。

本ブログでは、Jetson BSP(Board Support Package)とNVIDIA JetPackからなる基盤層から始め、推論パイプライン、推論フレームワーク、量子化(quantization)技術へと進む5つの主要レイヤーを探る。各レイヤーを順を追って詳しく見ていこう。

図1. NVIDIAハードウェアプラットフォームにおける典型的なエッジAIソフトウェアスタック

基盤層:ボードサポートパッケージ(BSP)とソフトウェアスタック

NVIDIA Jetson Board Support Package(BSP)とNVIDIA JetPackレイヤーは、ハードウェアとインターフェースするソフトウェアスタックの基盤を形成します。これにはLinuxカーネル、デバイスドライバー、ファームウェア、および計算・マルチメディア・高速I/Oを可能にするコンポーネントを含むJetPack SDKが含まれます。このレイヤーはGPU、CPU、メモリ、周辺機器といったハードウェアの複雑さを抽象化し、上位層のサービスやアプリケーションに対して安定かつ最適化された基盤を提供します。

このレイヤーでは、未使用のサービスを無効化し、予約されたcarveout(メモリ確保領域)を回収することでメモリ節約を実現できます。これらの最適化はオーバーヘッドを削減し、コア機能に影響を与えることなく、アプリケーションのワークロード用にDRAMを解放します。以下のセクションでは、これらの最適化を有効にする主要な技術について解説します。

BSPおよびJetPackレイヤーの最適化ガイドラインは、Jetson Orin NXおよびJetson Orin Nanoで動作します。

Knobs(最適化スイッチ)Memory that may be reclaimed(回収可能なメモリ量)Instructions(コマンド)
Disabling the graphical desktop, including display and UI-related services.(グラフィカルデスクトップの無効化、ディスプレイおよびUI関連サービスを含む)Up to 865 MB(最大865MB)sudo systemctl set-default multi-user.target
Disabling networking, connectivity, and non-essential journaling services.(ネットワーク、接続性、および必須でないジャーナリングサービスの無効化)Up to 32 MB(最大32MB)sudo systemctl disable

Table 1. Memory optimization knobs at the BSP and JetPack levels(表1. BSPおよびJetPackレベルでのメモリ最適化スイッチ)

NVIDIA Jetson Orin NXにおけるcarveout(メモリ確保領域)は、カーネルおよびユーザー空間の最適化と合わせて、システム全体の効率向上における重要な領域です。以下のセクションでは、これらのレイヤーを最適化する実用的な技術について探ります。

carveout(メモリ確保領域)の最適化

NVIDIA Jetson Orin NXおよびNVIDIA Jetson Orin Nanoにおけるcarveout(メモリ確保領域)は、起動時に特定のハードウェアエンジン、ファームウェア、リアルタイムサブシステム用に確保された物理メモリです。これらはLinuxやNVIDIA CUDAアプリケーションからはアクセスできず、オンチップマイクロコントローラおよびアクセラレータによって使用されます。これらは専用メモリプールとして機能し、分離、セキュリティ、決定論的な動作を保証します。パイプラインやアプリケーションの要件に応じて、一部のcarveoutを無効化してメモリ使用量をさらに最適化できます。

Carveout(領域名)When to disable(無効化するタイミング)How to disable(無効化方法)Reclaimed dram size(回収可能なDRAMサイズ)
CARVEOUT_DCE_TSECWhen display isn’t needed(ディスプレイが必要ない場合)Refer to note 1 and re-flash(注記1を参照し、リフラッシュ)1 MB
CARVEOUT_DCE(該当なし)(該当なし)32 MB
CARVEOUT_DISP_EARLY_BOOT_FB(該当なし)(該当なし)34 MB
CARVEOUT_TSEC_DCE(該当なし)(該当なし)1 MB
CARVEOUT_CAMERA_TASKLISTWhen camera isn’t needed(カメラが必要ない場合)Refer to note 2 and re-flash(注記2を参照し、リフラッシュ)32 MB
CARVEOUT_RCE(該当なし)(該当なし)1 MB

Table 2. Memory optimization knobs for various carveouts(表2. 各種carveoutのメモリ最適化スイッチ)

注記1:以下の例は、ディスプレイが必要ない場合にユーザーがメモリ最適化をどのように行うかを示しています。コードスニペットを Linux_for_Tegra/bootloader/generic/BCT/tegra234-mb1-bct-misc-p3767-0000.dts の /misc/carveout/ ノード内に追加してください。

`// ディスプレイ関連のメモリ確保領域(キャラウト)

aux_info@CARVEOUT_BPMP_DCE {

pref_base = ;

size = ; // 0MB

alignment = ; // 0MB

};

aux_info@CARVEOUT_DCE_TSEC {

pref_base = ;

size = ; // 0MB

alignment = ; // 0MB

};

aux_info@CARVEOUT_DCE {

pref_base = ;

size = ; // 0MB

alignment = ; // 0MB

};

aux_info@CARVEOUT_DISP_EARLY_BOOT_FB {

pref_base = ;

size = ; // 0MB

alignment = ; // 0MB

};

aux_info@CARVEOUT_TSEC_DCE {

pref_base = ;

size = ; // 0MB

alignment = ; // 0MB

};`

Linux_for_Tegra/bootloader/tegra234-mb2-bct-common.dtsi の /mb2-misc/auxp_controls@3/ ノードの内容を以下のように更新してください:

`/* DCEクラスターの制御フィールド。 */

auxp_controls@3 {

enable_init = ;

enable_fw_load = ;

enable_unhalt = ;

reset_vector = ;};`

Linux_for_Tegra/bootloader/tegra234-mb2-bct-common.dtsi から /mb2-misc/auxp_ast_config@6 および /mb2-misc/auxp_ast_config@7 ノード全体を削除してください。

デバイスツリーコンパイラ(dtcツール)を使用してカーネルのデバイスツリーバイナリ(DTB)をデバイスツリーソース(DTS)にデコンパイルし、/display@13800000 ノードのステータスを disabled に設定してから、DTSを再コンパイルしてカーネルDTBを作成してください:

`display@13800000 {

status = "disabled";

};`

注記2:以下の例は、カメラが必要ない場合にユーザーがメモリ最適化を行う方法を示しています。Linux_for_Tegra/bootloader/generic/BCT/tegra234-mb1-bct-misc-p3767-0000.dts の /misc/carveout/ ノード内に以下のコードスニペットを追加してください:

`aux_info@CARVEOUT_CAMERA_TASKLIST {

pref_base = ;

size = ; // 0MB

alignment = ; // 0MB

};

aux_info@CARVEOUT_RCE {

pref_base = ;

size = ; // 0MB

alignment = ; // 0MB

};`

Linux_for_Tegra/bootloader/tegra234-mb2-bct-common.dtsi の /mb2-misc/auxp_controls@2/ ノードの内容を以下のように更新してください:

`/* RCEクラスターの制御フィールド。 */

auxp_controls@2 {

enable_init = ;

enable_fw_load = ;

enable_unhalt = ;

};`

カーネル側の最適化

Jetson Orin、Orin NX、およびOrin Nanoプラットフォームは、NVIDIA固有のInput/Output Memory Management Unit(IOMMU)を使用して、周辺機器のDirect Memory Access(DMA)アドレス変換を処理し、物理アドレスに関係なくデバイスがシステムメモリにアクセスできるようにしています。

Linux Software I/O Translation Lookaside Buffer(SWIOTLB)は、ハードウェアIOMMUを持たないシステムや、32ビットDMAに限定された周辺機器を搭載したシステムのワークアラウンドです。OrinにはDMAアドレスを再マッピングする堅牢なハードウェアIOMMUが搭載されているため、SWIOTLBは一般的に冗長です。

SWIOTLB tuning(チューニング)

SWIOTLBを必要とする特定のユースケースや非標準の周辺機器がある場合、またはカーネルログにDMA関連の問題が示されている場合は、ブート引数を使用して予約サイズを調整できます。

swiotlb=パラメータは、I/O TLBスラブの数(各2 KB)を定義します:

Total size (bytes) = swiotlb_value × 2,048

Example(例)(4 MB buffer):

4 MB ÷ 2 KB = 2,048 slabs(スラブ)

Kernel command(カーネルコマンド): swiotlb=2048

User space side optimizations(ユーザー空間側の最適化)

Jetsonにおける総アプリケーションメモリには、次のものが含まれます:

プロセスとシステムサービスによって使用されるCPUメモリ。

CUDA、マルチメディアバッファ、アクセラレータによって使用されるHardware(NvMap)メモリ。

両者は同じ物理メモリプールを共有するため、一方を最適化すれば他方も利益を得ます。

Reduce CPU memory usage(CPUメモリ使用量の削減)

まず、最も多くのCPUメモリを消費するプロセスを特定することから始めます。GUIやオーディオコンポーネントなどのバックグラウンドサービスは大量のメモリを使用する可能性があり、本番環境では不要な場合があります。

CPUメモリ使用量の測定 procrank を使用してメモリ使用量を分析します:

出力はPSS(Proportional Set Size:比例セットサイズ)でソートされており、実際の物理メモリ使用量を反映しています。

結果に基づいて最適化し、プロセスを特定する

gnome-shell or Xorg (GUI)(gnome-shell または Xorg(GUI))

pulseaudio

Unused python3 processes(未使用のpython3プロセス)

これらは本番環境では不要な場合が多く、メモリを解放するために無効にできます。ヘッドレスデプロイメントでは、GUIサービスを無効にすることで大幅なシステムメモリを解放できます。

Figure 2. Memory saved by disabling GUI-related services in the user space(図2. ユーザー空間でのGUI関連サービスの無効化により節約されたメモリ)

Analyze and measure hardware memory usage(ハードウェアメモリ使用量の分析と測定)

CPUメモリに加え、GPUおよびマルチメディアの割り当てが利用可能なメモリに影響を与える場合があります。

$ sudo cat /sys/kernel/debug/nvmap/iovmm/clients

*This shows memory usage across processes using NvMap (e.g., CUDA, video pipelines).(*これは、NvMapを使用するプロセス全体のメモリ使用量を示します(例:CUDA、ビデオパイプライン)。)

Optimize hardware memory(ハードウェアメモリの最適化)

大きなGPUまたはバッファ割り当てを使用するプロセスを特定します。CPU最適化と同様に、GUIパイプライン(gnome-shell、Xorg)などのサービスは不要なハードウェアメモリを消費する場合があります。これらの割り当てを削減することで、AIワークロードにより多くのメモリを解放できます。

Figure 3. Identifying processes in the user space that consume large GPU or buffer allocation memory(図3. 大きなGPUまたはバッファ割り当てメモリを消費するユーザー空間内のプロセスの特定)

Inferencing pipeline(推論パイプライン)

このレイヤーは、前処理、推論(inference)、後処理を通じたエンドツーエンドのデータフローを管理し、実行可能な出力を生成します。NVIDIA DeepStream などのフレームワークは、動画やセンサー入力などのストリーミングデータに対して、高性能なGPUアクセラレーテッドパイプラインを提供します。これらはデコード、バッチ処理、推論、追跡、分析を統合されたワークフローで処理し、スケーラブルな処理を実現します。このレイヤーは複雑さを抽象化し、データ移動と計算リソースの活用を最適化することで、効率的で本番環境対応のAIアプリケーションを実現します。

設定と実装の選択を通じて、メモリフットプリントを削減しパフォーマンスを向上させるために推論パイプラインを最適化する方法をご覧ください。DeepStream を例に示していますが、これらの原則はフレームワークやアプリケーション全体に広く適用可能です。

調整ノブ(Knob):回収可能なメモリ

コンテナ vs ベアメタル:最大 70 MB

Python から C++ への切り替え:最大 84 MB

パイプライン設定の微調整:**Tiler/OSD の無効化、FakeSink の使用:最大 258 MB

合計:412 MB

表3. DeepStream 形式の推論パイプラインでメモリフットプリントを削減するのに役立つ調整ノブ(Knobs)**

DeepStream 形式の推論パイプラインにおいて、Tiler/OSD を無効化し FakeSink を使用すると、可視化には必要だがヘッドレス環境や本番デプロイメントでは不要な表示ステージが削除されます。これによりメモリが節約され、GPU 負荷が軽減され、スループットが向上します。

推論(Inference)フレームワーク

LLM 向けの推論サービングフレームワークレイヤーは、本番環境での大規模言語モデルの効率的なデプロイとスケーリングに焦点を当てており、vLLM、SGLang、Llama.cpp などのフレームワークがこの分野をリードしています。これらのフレームワークは、連続バッチ処理(continuous batching)、KV キャッシュ管理、効率的なメモリ活用などの手法を通じて推論を最適化し、スループットの最大化とレイテンシーの削減を実現します。

vLLM はページドアテンション機構(paged attention mechanism)により、高スループットサービングで優れたパフォーマンスを発揮します。

SGLang は柔軟でプログラム可能な推論ワークフローを実現します。

Llama.cpp と NVIDIA TensorRT Edge-LLM は、リソース制約の厳しい環境におけるメモリ効率の高い実行のために最適化されています。

これらのフレームワークは、エッジでのローカルデプロイ時に LLM を確実にサービングするために必要なインフラストラクチャを提供します。

モデル量子化(Model Quantization)

モデル量子化は、重み(weights)と活性化値(activations)を低精度データ型で表現することで、AI モデルのメモリフットプリントを削減し推論を加速するために用いられる主要な技術です。

量子化は、対象となるユースケースの明確な精度とパフォーマンス要件によって駆動されるべきです。量子化スキームを選択する前に、以下を定義してください:

許容される最小のモデル品質またはタスク精度。

目標とするスループットとレイテンシー。

デプロイメントの制約条件、特に利用可能な GPU メモリ。

これらの要件が確定したら、推奨されるアプローチは、低精度の量子化オプションを段階的に評価することです。最高精度のベースラインから始め、モデルが要求される品質閾値を満たさなくなるまで、サポートされている量子化フォーマットを下方向に確認していきます。選択する量子化のポイントは、ユースケースの精度要件を満たす最低精度であるべきです。これにより、通常、最大のメモリ節約と効率性が得られるためです。

図4. Llama.cpp上でのQwen3 4BのINT4対BF16ベンチマーク(Jetson Orin NX 16 GB)、メモリとスループットの向上を強調

低ビット量子化が許容できない性能低下をもたらす場合、量子化認識蒸留(Quantization-Aware Distillation, QAD)などの回復技術を用いて、失われた精度を復元してください。これらの手法は、デプロイメント要件を満たしつつより積極的な量子化を可能にするのに十分なモデル品質を、しばしば復元できます。

量子化レベルを選択したら、ターゲットデプロイメントの実行時メモリを最適化してください。vLLMの構成パラメータ、特にGPUメモリ利用率についてスキャンを実行し、目標パフォーマンスを維持するための最小限のメモリフットプリントを見つけてください。これにより、スループットとレイテンシの目標に向けた効率的で適切なサイズのデプロイメントが保証されます。

FP16やFP8などのフォーマットは精度とパフォーマンスのバランスを取っており、FP8はより高いスループットのために次第に使用されています。W4A16のようなより積極的なスキームは、許容できる精度を維持しつつメモリと帯域幅の要件を削減します。NVIDIA NVFP4は、ハードウェアフレンドリーな4ビット演算により効率をさらに向上させます。これらアプローチを組み合わせることで、大規模モデルやリソース制約のあるシステムに対して、より高速でコスト効果の高い推論が可能になります。サポートはJetsonプラットフォームによって異なります—詳細についてはNVIDIA Jetson製品カタログを参照してください。

調整可能なメモリ回収量の注記:Qwen3 8Bのモデル量子化をFP16からW4A16へ変換で約10 GB、Qwen3 8B。モデル量子化をBF16からINT4へ変換で約5.6 GB、Qwen3 4B。表4. モデル量子化における回収メモリ

含まれて最適化される5層ソフトウェアスタックのコンポーネントに応じて、高精度と機能の同等性を維持したまま、最大10〜12 GBのメモリ節約が可能です。

専用アクセラレータを用いたエッジでの推論の分離

Jetsonプラットフォームには、CPUやGPUから専用ワークロードをオフロードすることで効率を向上させる複数の非GPUアクセラレータが含まれています。これらには、カメラ処理用のイメージ信号プロセッサ(Image Signal Processor, ISP)、ビデオエンコード/デコード用のNVENC/NVDEC、ビジョンタスク用のNVIDIA Programmable Vision Accelerator(PVA)が含まれます。

NVIDIA cuPVA SDK は現在、Early Access(早期アクセス)の段階にあります。その機能について詳しく知りたい方は、お問い合わせください。

複数のレイヤー全体での潜在的な節約効果:

レイヤーと潜在的な節約量:BSP & OS services(BSPおよびOSサービス)で約1,025 MB、Pipeline optimization(パイプライン最適化)で約412 MB、Inferencing frameworks and model quantization(推論フレームワークおよびモデル量子化)で5〜10 GB。Table 5. Memory reclaimed at various levels in the software stack(表5. ソフトウェアスタックの各段階で回収されたメモリ)

重要なポイントとして挙げられるのは、適切な量子化精度(quantization precision)の選択です。

NVFP4、INT4、W4A16 といったフォーマットは、多くの LLM(大規模言語モデル)ワークロードにおいて高い精度を維持しつつ、メモリおよびストレージの必要量を大幅に削減します。

リアルユースケース:Reachy Mini Jetson Mini Assistant

これらのメモリ最適化の影響を示すため、8 GB の unified memory(統一メモリ)を備え、クラウドへの依存がない Jetson Orin Nano 上で動作するオンデバイス型会話AIロボット「Reachy Mini Jetson Assistant」を検討してください。

このアシスタントは、以下のマルチモーダル AI パイプラインを並行して実行します。視覚理解のために Llama.cpp 経由で提供され、4-bit(Q4_K_M GGUF)に量子化された vision-language model(Cosmos-Reason2-2B)、音声認識用の faster-whisper (small.en)、テキスト読み上げ用の Kokoro TTS です。これらはすべて、Reachy Mini robot SDK およびライブ Web ダッシュボードと並行して動作します。

スタック全体の最適化(ディスプレイマネージャーの無効化、headless 実行、重い Python フレームワークではなく Llama.cpp を介して VLM(Vision-Language Model)を提供、4-bit 量子化された Cosmos Reason2 2B の使用、最適化されたランタイムの選択:STT(Speech-to-Text)には CTranslate2、TTS および VAD には ONNX Runtime)により、フルパイプラインを単一の Orin Nano 8 GB システム上で動作させることができます。

より広く言えば、4-bit 量子化を Llama.cpp や TensorRT-Edge-LLM といった効率的な推論ランタイム(inference runtimes)と組み合わせることで、このメモリ予算内で最大約10Bパラメータの LLM および最大約4Bパラメータの VLM を含む幅広いモデルの利用が可能になります。テスト済みモデルの全リストは、Jetson AI Lab Models ページおよび NVIDIA Developer Forum で確認できます。

はじめに

次世代の Orin NX Edge AI プラットフォームについて詳しく学ぶ。

JetPack と DeepStream をインストールする。

NVIDIA Jetson Forum で、あなたのストーリーおよびこの投稿がどのように役立ったかを共有してください。

原文を表示

The boom in open source generative AI models is pushing beyond data centers into machines operating in the physical world. Developers are eager to deploy these models at the edge, enabling physical AI agents and autonomous robots to automate heavy-duty tasks.

A key challenge is efficiently running multi-billion-parameter models on edge devices with limited memory. With ongoing constraints on memory supply and rising costs, developers are focused on achieving more with less.

The NVIDIA Jetson platform supports popular open models while delivering strong runtime performance and memory optimization at the edge. For edge developers, memory footprint determines whether a system functions. Unlike cloud environments, edge devices operate under strict memory limits, with CPU and GPU sharing constrained resources.

Inefficient memory use can lead to bottlenecks, latency spikes, or system failure. Meanwhile, modern edge applications often run multiple pipelines—such as detection, tracking, and segmentation—making efficient memory management critical for stable, real-time performance under power and thermal constraints.

Optimizing memory usage provides clear benefits. Developers can improve performance on the same hardware by reducing overhead and increasing concurrency, while enabling more complex workloads like LLMs, multi-camera systems, and sensor fusion. It also reduces system cost by fitting into smaller memory configurations and improves efficiency (performance per watt) by minimizing bottlenecks and maximizing GPU utilization.

This blog explores optimization strategies to help developers maximize performance, efficiency, and capability on resource-constrained edge systems.

Edge AI software stack

Let’s dive deeper into the runtime software stack for edge devices. This isn’t an exhaustive guide to full-memory optimization, but a reference framework to spark ideas and help developers identify new ways to improve their stacks. The memory savings show what NVIDIA teams achieved. Experienced users may reach higher efficiencies, while others can use these examples as a starting point to better use resources on NVIDIA Jetson and NVIDIA IGX platforms.

This blog explores five key layers—starting from the foundation with Jetson BSP and NVIDIA JetPack, and moving up through the inference pipeline, inference frameworks, and quantization techniques. Let’s dive into each layer step by step.

Figure 1. Typical edge AI software stack on an NVIDIA hardware platform

Foundation layers: Board support package and software stack

The NVIDIA Jetson Board Support Package (BSP) and NVIDIA JetPack layer form the foundation of the software stack, interfacing with hardware. It includes the Linux kernel, device drivers, firmware, and the JetPack SDK with components that enable compute, multimedia, and accelerated I/O. This layer abstracts hardware complexity—GPUs, CPUs, memory, and peripherals—providing a stable, optimized base for higher-level services and applications.

At this layer, memory savings can be achieved by disabling unused services and reclaiming reserved carveout regions. These optimizations reduce overhead and free DRAM for application workloads without affecting core functionality. The following sections highlight key techniques to enable these optimizations.

The BSP and JetPack layer optimization guidelines work for Jetson Orin NX and Jetson Orin Nano.

KnobsMemory that may be reclaimedInstructionsDisabling the graphical desktop, including display and UI-related services.Up to 865 MBsudo systemctl set-default multi-user.targetDisabling networking, connectivity, and non-essential journaling services.Up to 32 MBsudo systemctl disable <service-name>Table 1. Memory optimization knobs at the BSP and JetPack levels

Carveout regions on NVIDIA Jetson Orin NX, along with kernel- and user-space optimizations, are key areas for improving overall system efficiency. The following sections explore practical techniques for optimizing these layers.

Carveout optimization

Carveout regions in NVIDIA Jetson Orin NX and NVIDIA Jetson Orin Nano are reserved physical memory set aside at boot for specific hardware engines, firmware, and real-time subsystems. They aren’t accessible to Linux or NVIDIA CUDA applications and are used by on-chip microcontrollers and accelerators. These act as dedicated memory pools to ensure isolation, security, and deterministic behavior. Depending on your pipeline and application needs, some carveouts can be disabled to further optimize memory usage.

CarveoutWhen to disableHow to disableReclaimed dram sizeCARVEOUT_DCE_TSECWhen display isn’t neededRefer to note 1  and re-flash1 MBCARVEOUT_DCE32 MBCARVEOUT_DISP_EARLY_BOOT_FB34 MBCARVEOUT_TSEC_DCE1 MBCARVEOUT_CAMERA_TASKLISTWhen camera isn’t neededRefer to note 2  and re-flash32 MBCARVEOUT_RCE1 MBTable 2. Memory optimization knobs for various carveouts

Note 1: The following example shows how a user can make memory optimization when display isn’t required. Add the code snippet inside /misc/carveout/ node of Linux_for_Tegra/bootloader/generic/BCT/tegra234-mb1-bct-misc-p3767-0000.dts

// Display-related carveouts                         aux_info@CARVEOUT_BPMP_DCE {                               pref_base = <0x0 0x0>;                               size = <0x0 0x0>; // 0MB                               alignment = <0x0 0x0>; // 0MB                       };                       aux_info@CARVEOUT_DCE_TSEC {                               pref_base = <0x0 0x0>;                               size = <0x0 0x0>; // 0MB                               alignment = <0x0 0x0>; // 0MB                       };                       aux_info@CARVEOUT_DCE {                               pref_base = <0x0 0x0>;                               size = <0x0 0x0>; // 0MB                               alignment = <0x0 0x0>; // 0MB                       };                       aux_info@CARVEOUT_DISP_EARLY_BOOT_FB {                               pref_base = <0x0 0x0>;                               size = <0x0 0x0>; // 0MB                               alignment = <0x0 0x0>; // 0MB                       };                       aux_info@CARVEOUT_TSEC_DCE {                               pref_base = <0x0 0x0>;                               size = <0x0 0x0>; // 0MB                               alignment = <0x0 0x0>; // 0MB                       };

Update /mb2-misc/auxp_controls@3/ node’s content of Linux_for_Tegra/bootloader/tegra234-mb2-bct-common.dtsi to:

/* Control fields for DCE cluster. */        auxp_controls@3 {        enable_init = <0>;        enable_fw_load = <0>;        enable_unhalt = <0>;        reset_vector = <0x40000000>;};

Remove entire /mb2-misc/auxp_ast_config@6 and /mb2-misc/auxp_ast_config@7 nodes of Linux_for_Tegra/bootloader/tegra234-mb2-bct-common.dtsi

Use the dtc tool to decompile the kernel dtb to dts, mark the status of /display@13800000 node as disabled, then re-compile the dts to kernel dtb:

display@13800000 {                              status = "disabled";                        };

Note 2: The following example shows how a user can make memory optimization when a camera isn’t needed. Add the code snippet inside /misc/carveout/ node of Linux_for_Tegra/bootloader/generic/BCT/tegra234-mb1-bct-misc-p3767-0000.dts:

aux_info@CARVEOUT_CAMERA_TASKLIST {                            pref_base = <0x0 0x0>;                            size = <0x0 0x0>; // 0MB                            alignment = <0x0 0x0>; // 0MB                    };                    aux_info@CARVEOUT_RCE {                            pref_base = <0x0 0x0>;                            size = <0x0 0x0>; // 0MB                            alignment = <0x0 0x0>; // 0MB                    };

Update /mb2-misc/auxp_controls@2/ node’s content of Linux_for_Tegra/bootloader/tegra234-mb2-bct-common.dtsi to:

/* Control fields for RCE cluster. */                    auxp_controls@2 {                        enable_init = <0>;                           enable_fw_load = <0>;                        enable_unhalt = <0>;                      };

Kernel-side optimization

Jetson Orin, Orin NX, and Orin Nano platforms use an NVIDIA-specific Input/Output Memory Management Unit (IOMMU) to handle Direct Memory Access (DMA) address translation for peripherals, enabling devices to access system memory regardless of physical address.

The Linux Software I/O Translation Lookaside Buffer (SWIOTLB) is a workaround for systems without a hardware IOMMU or with peripherals limited to 32-bit DMA. Since Orin includes a robust hardware IOMMU that remaps DMA addresses, SWIOTLB is generally redundant.

SWIOTLB tuning

For specific use cases or non-standard peripherals requiring SWIOTLB—or when kernel logs indicate DMA issues—the reservation size can be adjusted using boot arguments.

The swiotlb= parameter defines the number of I/O TLB slabs (each 2 KB):

   Total size (bytes) = swiotlb_value × 2,048

Example (4 MB buffer):

4 MB ÷ 2 KB = 2,048 slabs

Kernel command: swiotlb=2048

User space side optimizations

On Jetson, total application memory includes:

CPU memory used by processes and system services.

Hardware (NvMap) memory used by CUDA, multimedia buffers, and accelerators.

Both share the same physical memory pool, optimizing one benefits the other.

Reduce CPU memory usage

Start by identifying processes that consume the most CPU memory. Background services—such as GUI or audio components—can use significant memory and may be unnecessary in production.

Measure CPU memory usageUse procrank to analyze memory usage:

The output is sorted by PSS (Proportional Set Size), reflecting actual physical memory usage.

Optimize based on findings and identify processes

gnome-shell or Xorg (GUI)

pulseaudio

Unused python3 processes

These are often unnecessary in production and can be disabled to reclaim memory. In headless deployments, disabling GUI services can free significant system memory.

Figure 2. Memory saved by disabling GUI-related services in the user space

Analyze and measure hardware memory usage

In addition to CPU memory, GPU and multimedia allocations can impact available memory.

$ sudo cat /sys/kernel/debug/nvmap/iovmm/clients

*This shows memory usage across processes using NvMap (e.g., CUDA, video pipelines).

Optimize hardware memory

Identify processes using large GPU or buffer allocations. As with CPU optimization, services like GUI pipelines (gnome-shell, Xorg) may consume unnecessary hardware memory. Reducing these allocations frees up more memory for AI workloads.

Figure 3. Identifying processes in the user space that consume large GPU or buffer allocation memory

Inferencing pipeline

This layer manages the end-to-end data flow through preprocessing, inference, and postprocessing to produce actionable outputs. Frameworks like NVIDIA DeepStream provide a high-performance, GPU-accelerated pipeline for streaming data such as video and sensor inputs. They handle decoding, batching, inference, tracking, and analytics in a streamlined workflow, enabling scalable processing. This layer abstracts complexity and optimizes data movement and compute utilization for efficient, production-ready AI applications.

Learn how to optimize the inferencing pipeline to reduce memory footprint and improve performance through configuration and implementation choices. While shown with DeepStream, these principles apply broadly across frameworks and applications.

KnobMemory that may be reclaimedContainer vs BareMetalUp to 70 MBSwitching from Python to C++Up to 84 MBTweaking pipeline configuration:Disable Tiler/OSDUse FakeSinkUp to 258 MBTotal412 MBTable 3. Knobs that help reduce memory footprint in the DeepStream-style inference pipelineIn a DeepStream-style inference pipeline, disabling Tiler/OSD and using FakeSink removes display stages needed for visualization but unnecessary in headless or production deployments. This saves memory, reduces GPU load, and improves throughput.

Inferencing frameworks

The inference-serving framework layer for LLMs focuses on efficiently deploying and scaling large language models in production, with frameworks like vLLM, SGLang, and Llama.cpp leading this space. These frameworks optimize inference through techniques such as continuous batching, KV cache management, and efficient memory utilization to maximize throughput and reduce latency.

vLLM excels in high-throughput serving with its paged attention mechanism.

SGLang enables flexible and programmable inference workflows.

Llama.cpp and NVIDIA TensorRT Edge-LLM are optimized for memory-efficient execution in resource-constrained environments.

These frameworks provide the infrastructure needed to serve LLMs reliably when deploying locally at the edge.

Model quantization

Model quantization is a key technique used for reducing the memory footprint and accelerating inference of AI models by representing weights and activations with lower-precision data types.

Quantization should be driven by explicit accuracy and performance requirements for the target use case. Before selecting a quantization scheme, define:

The minimum acceptable model quality or task accuracy.

The target throughput and latency.

The deployment constraints, especially available GPU memory.

With these requirements locked down, the recommended approach is to progressively evaluate lower-precision quantization options. Start from the highest-accuracy baseline and move downward through supported quantization formats until the model no longer meets the required quality threshold. The selected quantization point should be the lowest precision that still satisfies the use-case accuracy requirement, since that typically provides the best memory savings and efficiency.

Figure 4. INT4 vs. BF16 benchmark for Qwen3 4B on Llama.cpp (Jetson Orin NX 16 GB), highlighting memory and throughput gains

If lower-bit quantization introduces unacceptable degradation, use recovery techniques such as quantization-aware distillation (QAD) to recover lost accuracy. These methods can often restore enough model quality to enable more aggressive quantization while still meeting deployment requirements.

Once the quantization level is chosen, optimize runtime memory for the target deployment. Perform a sweep across vLLM configuration parameters—especially GPU memory utilization—to find the minimum memory footprint to sustain target performance. This ensures an efficient, right-sized deployment for throughput and latency goals.

Formats like FP16 and FP8 balance accuracy and performance, with FP8 increasingly used for higher throughput. More aggressive schemes, like W4A16, reduce memory and bandwidth needs while maintaining acceptable accuracy. NVIDIA NVFP4 further improves efficiency with hardware-friendly 4-bit computation. Together, these approaches enable faster, cost-effective inference for large models and resource-constrained systems. Support varies across Jetson platforms—refer to the NVIDIA Jetson product catalog for details.

KnobMemory that may be reclaimedNotesModel quantization on Qwen3 8B from FP16 to W4A16~10 GBQwen3 8BModel quantization on Qwen3 4B from BF16 to INT4~5.6 GBQwen3 4BTable 4. Memory reclaimed in model quantization

Depending on the components of the five-layer software stack that are included and optimized, memory savings of up to 10–12 GB are possible while maintaining high accuracy and feature parity.

Disaggregating inference at the edge with specialized accelerators

Jetson platforms include several non-GPU accelerators that improve efficiency by offloading specialized workloads from the CPU and GPU. These include an image signal processor (ISP) for camera processing, NVENC/NVDEC for video encoding/decoding, and the NVIDIA Programmable Vision Accelerator (PVA) for vision tasks.

The PVA, available from Jetson Orin NX to Jetson Thor, is well-suited for always-on, low-power vision workloads—such as sentry mode, motion detection, object tracking, and feature extraction—where continuous GPU use would be inefficient. By offloading these tasks, the PVA reduces latency and frees GPU resources for more complex inference or parallel workloads, improving overall performance and power efficiency in edge deployments.

The NVIDIA cuPVA SDK is currently in Early Access. If you’re interested in exploring its capabilities, reach out for more information.

Possible savings across multiple layers:

LayerPotential SavingsBSP & OS services~1,025 MBPipeline optimization~ 412 MBInferencing frameworks and model quantization~ 5 to 10 GBTable 5. Memory reclaimed at various levels in the software stack

If there’s one key takeaway, it’s to use the right quantization precision.

Formats like NVFP4, INT4, and W4A16 significantly reduce memory and storage needs while maintaining strong accuracy for many LLM workloads.

Real use-case: Reachy Mini Jetson Mini Assistant

To show the impact of these memory optimizations, consider the Reachy Mini Jetson Assistant, an on-device conversational AI robot running on the Jetson Orin Nano with 8 GB of unified memory and no cloud dependency.

The assistant runs a multimodal AI pipeline concurrently, including: a vision-language model (Cosmos-Reason2-2B) quantized to 4-bit (Q4_K_M GGUF) and served via Llama.cpp for visual understanding; faster-whisper (small.en) for speech recognition; and Kokoro TTS for text-to-speech—all alongside the Reachy Mini robot SDK and a live web dashboard.

With stack-wide optimizations—disabling the display manager, running headless, serving the VLM via Llama.cpp instead of heavier Python frameworks, using 4-bit quantized Cosmos Reason2 2B, and selecting optimized runtimes (CTranslate2 for STT, ONNX Runtime for TTS and VAD)—the full pipeline runs on a single Orin Nano 8 GB system.

More broadly, combining 4-bit quantization with efficient inference runtimes, like Llama.cpp and TensorRT-Edge-LLM, makes a wide range of models accessible within this memory budget with LLMs up to ~10B parameters and VLMs up to ~4B parameters. The full list of tested models is available on the Jetson AI Lab Models page and NVIDIA Developer Forum.

Get started

Learn more about the next-generation Orin NX Edge AI platform.

Install JetPack and DeepStream.

Share your story and how this post helped you on the NVIDIA Jetson Forum.

この記事をシェア

関連記事

Simon Willison Blog★42026年4月3日 03:28

Gemma 4:バイト単位で最も能力の高いオープンモデル

Google DeepMindが、2B、4B、31Bサイズの3つの視覚対応推論LLMと、26B-A4BのMixture-of-Expertsモデル、計4つのApache 2.0ライセンスのオープンモデルを発表した。同社は「パラメータあたりの知能レベルが前例ない」と強調し、小型で有用なモデルの開発が現在の研究の最重要分野の一つであることを示している。

The Decoder★42026年4月3日 03:06

GoogleのGemma 4が初めてApache 2.0ライセンスで利用可能に

Googleが最も高性能なオープンモデルファミリー「Gemma 4」をリリースした。4つの新モデルはスマートフォンからワークステーションまで幅広く動作し、初めて完全にオープンなApache 2.0ライセンスで提供される。

NVIDIA Developer Blog★42026年3月24日 05:24

NVIDIA IGX Thorが産業・医療・ロボティクスのエッジAIアプリケーションを強化

NVIDIAがIGX Thorプラットフォームを発表し、産業・医療・ロボティクス分野で高性能AIを活用して作業効率や人間と機械の相互作用を向上させるエッジAIアプリケーションを強化する。

ニュース一覧に戻る元記事を読む