<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>メモリ帯域 on Physical AI Hub</title>
    <link>https://physicalaihub.net/tags/%E3%83%A1%E3%83%A2%E3%83%AA%E5%B8%AF%E5%9F%9F/</link>
    <description>Recent content in メモリ帯域 on Physical AI Hub</description>
    <generator>Hugo</generator>
    <language>ja-jp</language>
    <lastBuildDate>Tue, 05 May 2026 00:55:40 +0900</lastBuildDate>
    <atom:link href="https://physicalaihub.net/tags/%E3%83%A1%E3%83%A2%E3%83%AA%E5%B8%AF%E5%9F%9F/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Jetsonの推論性能を決める量子化・メモリ・電力の最適化手順</title>
      <link>https://physicalaihub.net/posts/jetson-on-device-inference-optimization/</link>
      <pubDate>Tue, 05 May 2026 00:55:40 +0900</pubDate>
      <guid>https://physicalaihub.net/posts/jetson-on-device-inference-optimization/</guid>
      <description>&lt;p&gt;量子化や高クロック化は、設定を変えるだけで結果が決まるわけではありません。実機で何を測るかが、最初の分岐になります。&lt;/p&gt;&#xA;&lt;h2 id=&#34;先に結論&#34;&gt;先に結論&lt;/h2&gt;&#xA;&lt;p&gt;Jetsonの推論最適化は、一般的な速度倍率を当てはめず、実機でモデル単体とエンドツーエンドの両方を計測して決めます。まず入力形状を固定し、FP16・バッチ1を基準にします。その後、INT8の精度とレイテンシ、バッチサイズ、メモリ転送と同期、CUDA Graph、電力モードを一項目ずつ比較します。&lt;/p&gt;&#xA;&lt;p&gt;INT8はメモリ使用量や推論時間を削減できる可能性がありますが、常にFP16より高速になるわけではありません。ロボット制御のように応答時間を優先するなら小さいバッチ、高スループット処理なら大きいバッチを候補にします。最終判断では、レイテンシ、スループット、精度、ピークメモリ、消費電力、温度、連続稼働時の安定性を同時に確認します。&lt;/p&gt;&#xA;&lt;h2 id=&#34;なぜ実機計測が必要か&#34;&gt;なぜ実機計測が必要か&lt;/h2&gt;&#xA;&lt;p&gt;TensorRTの性能は、精度モードだけでなく、レイヤー実装、workspace、選択されたtactic、入出力形状、データ変換の組み合わせで決まります。対象Jetsonの世代、JetPack、TensorRT、CUDAの組み合わせによって、INT8演算子の対応やTensor Coreの利用可否も異なります。したがって、モデルの種類だけから最適設定を決めることはできません。&lt;/p&gt;&#xA;&lt;p&gt;JetsonではCPUとGPUが物理メモリを共有します。離散GPUのようなPCIe転送だけでなく、共有DRAMの帯域競合、キャッシュ、バッファの再配置、同期も性能に影響します。モデル単体のベンチマークが良くても、カメラ取得、前処理、後処理を含めると別の場所がボトルネックになる場合があります。&lt;/p&gt;&#xA;&lt;h2 id=&#34;用語と仕組み&#34;&gt;用語と仕組み&lt;/h2&gt;&#xA;&lt;p&gt;FP32、FP16、INT8は、計算やテンソルを表す精度の選択肢です。低精度化によって、条件によっては演算量やテンソルのメモリ使用量を減らせます。INT8では、キャリブレーションでスケールを推定する方式と、モデルにQ/DQノードを含めて量子化を明示する方式があります。いずれも量子化後のモデル精度を評価しなければなりません。&lt;/p&gt;&#xA;&lt;p&gt;バッチサイズは一度に処理する入力数です。大きくするとGPU利用効率やスループットが向上する可能性がある一方、1リクエストあたりの待ち時間、キューイング遅延、メモリ使用量が増えます。リアルタイム制御ではバッチ1または小さいバッチ、まとめ処理では大きいバッチを比較します。&lt;/p&gt;&#xA;&lt;p&gt;入力形状が一定なら固定形状のエンジンを優先します。可変形状が必要な場合は、TensorRTのoptimization profileに最小・最適・最大形状を設定し、実際に使う形状ごとに測定します。&lt;/p&gt;&#xA;&lt;h2 id=&#34;メモリ転送と実行制御&#34;&gt;メモリ転送と実行制御&lt;/h2&gt;&#xA;&lt;p&gt;基本的な流れは、入力取得、前処理、TensorRT推論、後処理、出力受け渡しです。前処理から後処理までのテンソルをGPU側に保持し、バッファを再利用できれば、毎フレームのCPU・GPU間コピーや不要な形式変換を減らせます。ただし、Jetsonではゼロコピーや共有バッファが常に最速とは限りません。アクセスパターンと同期コストを実測します。&lt;/p&gt;&#xA;&lt;p&gt;ホストとデバイス間の移動が必要なら、ページロックされたホストメモリ、非同期コピー、CUDA streamを候補にします。コピーと前処理、またはコピーと推論を重ね合わせられるかを確認します。Nsight Systemsでは、CPU処理、CUDA API、メモリ転送、カーネル、同期を同じタイムラインで確認できます。&lt;/p&gt;&#xA;&lt;p&gt;入力形状、バッファアドレス、実行経路が安定した反復推論では、TensorRTのCUDA Graphも候補です。実行シーケンスを再利用して、カーネル起動や実行制御のオーバーヘッドを削減できる可能性があります。動的形状や実行時に変化するアドレスがある場合は、適用条件を確認します。&lt;/p&gt;&#xA;&lt;figure class=&#34;mermaid-figure&#34;&gt;&#xA;    &lt;pre class=&#34;mermaid&#34; role=&#34;img&#34; aria-label=&#34;実機で条件を固定し、モデル単体とエンドツーエンドを測定したうえで、量子化、バッチ、メモリ転送、CUDA Graph、電力設定を一項目ずつ評価する流れ。&#34;&gt;flowchart LR&#xA;  A[&#34;条件を固定\nJetson型番・JetPack・TensorRT・CUDA\n入力形状・評価データ・電力設定&#34;] --&gt; B[&#34;FP16・バッチ1を基準測定&#34;]&#xA;  B --&gt; C[&#34;モデル単体を測定&#34;]&#xA;  B --&gt; D[&#34;エンドツーエンドを測定&#34;]&#xA;  C --&gt; E[&#34;INT8を構築・精度検証&#34;]&#xA;  D --&gt; E&#xA;  E --&gt; F[&#34;バッチサイズを比較\nレイテンシ・スループット・キューイング遅延・ピークメモリ&#34;]&#xA;  F --&gt; G[&#34;転送と同期をプロファイリング\nCPU・CUDA API・コピー・カーネル・同期&#34;]&#xA;  G --&gt; H[&#34;バッファ再利用・非同期化・GPU側保持を評価&#34;]&#xA;  H --&gt; I[&#34;条件が合えばCUDA Graphを評価&#34;]&#xA;  I --&gt; J[&#34;電力モードとクロック設定を比較&#34;]&#xA;  J --&gt; K[&#34;総合判断\nレイテンシ・精度・メモリ・電力・温度・連続稼働時の安定性&#34;]&#xA;  K --&gt; L{&#34;目標要件を満たすか&#34;}&#xA;  L -- &#34;いいえ&#34; --&gt; F&#xA;  L -- &#34;はい&#34; --&gt; M[&#34;設定と測定結果を記録&#34;]&lt;/pre&gt;&lt;figcaption&gt;実機で条件を固定し、モデル単体とエンドツーエンドを測定したうえで、量子化、バッチ、メモリ転送、CUDA Graph、電力設定を一項目ずつ評価する流れ。&lt;/figcaption&gt;&lt;/figure&gt;&lt;h2 id=&#34;再現性のある評価手順&#34;&gt;再現性のある評価手順&lt;/h2&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;条件を固定する&lt;/strong&gt;：Jetson型番、JetPack、TensorRT、CUDA、入力形状、評価データ、電力設定を記録します。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;基準を測る&lt;/strong&gt;：FP16・バッチ1を、trtexecなどでモデル単体として測定し、続いて前処理・推論・後処理を含むエンドツーエンドで測ります。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;INT8を検証する&lt;/strong&gt;：キャリブレーションまたはQ/DQ方式で構築し、精度、レイテンシ、変換処理、対応演算子を確認します。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;バッチを比較する&lt;/strong&gt;：バッチ1、小さいバッチ、大きいバッチを、レイテンシ、スループット、キューイング遅延、ピークメモリで比較します。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;転送と同期を調べる&lt;/strong&gt;：GPU側テンソル保持、非同期化、stream、共有バッファ、必要に応じてCUDA Graphを一つずつ比較します。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;電力と連続稼働を測る&lt;/strong&gt;：nvpmodelの電力モードとjetson_clocksのクロック設定を比較し、温度やサーマルスロットリングも確認します。&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h2 id=&#34;選択肢の比較&#34;&gt;選択肢の比較&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;選択肢&lt;/th&gt;&#xA;          &lt;th&gt;向いている要件&lt;/th&gt;&#xA;          &lt;th&gt;利点&lt;/th&gt;&#xA;          &lt;th&gt;注意点&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;FP16&lt;/td&gt;&#xA;          &lt;td&gt;基準測定、低レイテンシ&lt;/td&gt;&#xA;          &lt;td&gt;比較の出発点にしやすい&lt;/td&gt;&#xA;          &lt;td&gt;INT8よりメモリや計算量が大きい場合がある&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;INT8&lt;/td&gt;&#xA;          &lt;td&gt;メモリ制約、速度・省電力の改善&lt;/td&gt;&#xA;          &lt;td&gt;低精度化の効果を期待できる&lt;/td&gt;&#xA;          &lt;td&gt;精度、演算子対応、再量子化を検証する&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;バッチ1・小バッチ&lt;/td&gt;&#xA;          &lt;td&gt;制御、カメラ入力&lt;/td&gt;&#xA;          &lt;td&gt;待ち時間とキューイングを抑えやすい&lt;/td&gt;&#xA;          &lt;td&gt;スループットが伸びない可能性がある&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;大きいバッチ&lt;/td&gt;&#xA;          &lt;td&gt;まとめ処理、分析&lt;/td&gt;&#xA;          &lt;td&gt;GPU利用効率とスループットに有利な可能性&lt;/td&gt;&#xA;          &lt;td&gt;レイテンシとピークメモリが増える&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;固定形状&lt;/td&gt;&#xA;          &lt;td&gt;入力サイズが一定&lt;/td&gt;&#xA;          &lt;td&gt;条件を限定して測定しやすい&lt;/td&gt;&#xA;          &lt;td&gt;可変入力には向かない&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;動的形状&lt;/td&gt;&#xA;          &lt;td&gt;入力サイズが変化&lt;/td&gt;&#xA;          &lt;td&gt;複数形状を扱える&lt;/td&gt;&#xA;          &lt;td&gt;profileごとの性能測定が必要&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;GPU側保持・非同期化&lt;/td&gt;&#xA;          &lt;td&gt;前処理から後処理までGPUを使う構成&lt;/td&gt;&#xA;          &lt;td&gt;コピーや同期を減らせる可能性&lt;/td&gt;&#xA;          &lt;td&gt;共有バッファの同期を確認する&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;低電力モード&lt;/td&gt;&#xA;          &lt;td&gt;バッテリー、温度、連続稼働重視&lt;/td&gt;&#xA;          &lt;td&gt;電力と熱を抑える候補になる&lt;/td&gt;&#xA;          &lt;td&gt;目標レイテンシを満たすか測る&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;制約と判断基準&#34;&gt;制約と判断基準&lt;/h2&gt;&#xA;&lt;p&gt;「INT8なら必ず高速」「バッチを増やせば必ず高性能」と決めつけてはいけません。対象演算子のINT8対応、Tensor Coreの利用可否、再量子化や入出力変換、TensorRT tacticによって結果は変わります。固定形状と動的形状の差、ゼロコピーの効果、CUDA Graphの改善幅も、モデルと実装によって異なります。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
