ハードウェアトランスコードと動画AIを同時に実行するとCPUが飽和する原因は何ですか?

エヴァ・ウォン は テクニカルライター であり ZimaSpaceの常駐ティンカーでもあります。 生涯のオタクであり、 ホームラボとオープンソースソフトウェアに情熱を持っています。彼女は複雑な技術的概念をわかりやすく、 実践的なガイドに翻訳することを専門としています。エヴァはセルフホスティングは楽しくあるべきで、怖がるものではないと信じています。彼女のチュートリアルを通じて、コミュニティが ハードウェアのセットアップを解明する手助けをしています。初めてのNAS構築からDockerコンテナの習得まで。

CPUの飽和は、ハードウェアトランスコードと動画AIが、ホスト側のデコード支援、フレーム準備、メモリコピー、音声処理、スケジューリング処理を依然として共有するために発生します。

カメラAIやメディア解析を開始すると、ホームサーバーではハードウェアエンコーダーが稼働しているように見えても、CPU使用率が100%に達することがあります。コーデックブロックは、対応するデコードまたはエンコード処理を高速化するだけで、パイプライン全体を高速化するわけではありません。デマルチプレクス、非対応プロファイル、スケーリング、色空間変換、フレームのダウンロード、物体検出の前処理、トラッキング、音声、字幕、ネットワーク、ストレージは、すべて同じコアとメモリ帯域幅を奪い合う可能性があります。

部分的なハードウェアオフロードでは、CPU処理が大幅に残る

メディアパスでは、コンテナの解析、動画のデコード、フレームのフィルタリング、出力のエンコード、音声処理、トランスポートパケットの書き込みが行われます。ハードウェア対応の範囲が、特定のコーデック、ビット深度、解像度、フィルターに限られる場合があり、非対応のステージはソフトウェア処理にフォールバックします。

部分的なトランスコードオフロードの概要では、対応するデコードおよびエンコードのパスと、CPUにフォールバックする可能性があるフィルターやプロファイルが区別されています。典型的な兆候は、ハードウェアエンジンが稼働している一方で、フィルター、音声、字幕、またはフォールバックデコード用のソフトウェアスレッドも動作している状態です。

ハードウェアトランスコードのバッジが表示されても、エンドツーエンドのオフロードが行われている証拠にはなりません。AIだけを飽和の原因と判断する前に、ステージごとのコーデックとフィルターの選択を確認してください。この違いは、後の家庭内テストでも確認できます。

動画AIはデコード、コピー、前処理を追加する

物体検出では、モデルの入力形式に合ったフレームを選択する必要があります。推論自体がアクセラレーター上で実行されている場合でも、システムは別のストリームをデコードし、GPUからCPUへサーフェスをコピーし、リサイズ、正規化、色変換、テンソルのバッチ処理、結果のトラッキングを行うことがあります。

コンピュータービジョンの前処理の概要では、コンピュータービジョンの推論に先立って、リサイズ、正規化、色変換などの変換が必要になる理由を説明しています。モデル自体がアクセラレーター上で実行されていても、これらのステージによってホストCPUに負荷がかかることがあります。自動化を続ける前に、中間結果を検証可能な状態にしておく必要があります。

AIのフレームレートを下げるとCPU使用率が低下し、推論デバイスの使用率がほぼ変わらない場合は、前処理またはトラッキングが主な原因である可能性が高くなります。コーデックプロファイルを変更した後にのみCPU使用率が下がる場合は、デコードのフォールバックがより有力です。この境界は、現実的な運用条件で個別に測定する必要があります。

共有メモリ帯域幅とスケジューリングが競合を増幅する

統合GPU、コーデックエンジン、CPUコア、AIアクセラレーターは、システムRAMを共有することがあります。同時に行われるフレームコピーや大きなサーフェスによって、キャッシュミスやメモリ負荷が増加し、多数のワーカースレッドによってコンテキストスイッチやキュー競合が発生します。

コーデックアクセラレーション対応の一覧から、アクセラレーションの対応状況が、コーデック、プロファイル、ビット深度、ハードウェア世代によって異なることが分かります。形式や転送が一致しない場合、処理がCPUと共有メモリに戻されることがあります。複数のソースが限られたコンテキストを奪い合うと、その実際の影響が現れます。

障害の境界は、同じ時間帯に無関係なスキャン、サムネイル生成、ストレージ暗号化によってCPU使用率が高くなることです。CPU総使用率だけを見るのではなく、プロセスごとのスレッドとパイプラインの各ステージを関連付けて確認してください。この依存関係は、最終的なインターフェースでも明示したままにする必要があります。

ステージごとのCPU使用率とサーフェスコピーをプロファイルする

固定したメディアとカメラ映像を再生しながら、デマルチプレクス、デコードエンジン、ソフトウェアフォールバック、フィルターグラフ、スケーリング、色空間変換、サーフェスコピー、エンコード、音声、字幕、AIフレームレート、前処理、推論、トラッキング、メモリ帯域幅、実行キュー、ストレージ、プロセスごとのCPU使用率を記録します。

CPUボトルネックのテストを使用して、CPU、メモリ、ネットワーク、ストレージの制限を分類します。ソース映像を変更せずに、トランスコードのみ、AIのみ、両方を同時に実行する場合、ゼロコピーのパス、AIフレームレートを下げた場合をテストしてください。そのため、結果は元の証拠と照合する必要があります。

同時実行時だけ増加するステージを修正します。対応形式を一致させ、重複するデコードとコピーを避け、前処理ワーカー数を制限するか、ワークロードをスケジュールしてください。非対応のフィルター1つによってソフトウェアフォールバックが発生している場合、より高速なCPUを購入するのは時期尚早です。

テック&AIハブ

もっと読む

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.