TensorRTでBatchを指定してみた!
TensorRTで動作するようになったものの、CPUやメモリなどが足を引っ張ってる感のある感じだったので、TensorRTのバッチ処理に挑戦してみました!
といっても、UltralyticsのDiscordで質問して、教えてもらったgithubのコードを参考にいろいろいじってみただけなのですが。
私の環境だと、ちょっとだけスピードアップする感じになりましたが、まぁ一応動いたのでこれで行こうかなー?って思ってます!
ちなみにUltralyticsに相談した際に、参考として教えていただいたコードはこちらです。
最初からこちらのコードをベースに作れば良かったのかも・・・?知らんかったし、しゃあなし。
C++化による処理速度まとめ!
まだ開発中なので今後変わってくる可能性はありますが、だいたい処理速度が見えてきたのでまとめておきます!
(未来の自分のために)
当方環境
CPU:intel 11400F
GPU:Geforce 4070Ti SUPER 16GB
SDR動画 | HDR動画 | 備考 | |
---|---|---|---|
TensorRT | 36FPS | 26FPS | 最初に一度だけONNXからTensorRTの変換が必要。当方環境で5分30秒くらい。 |
DirectML | 18FPS | 15FPS | ONNX-DMLを利用 |
現行版 | 25FPS | 20FPS |
- TensorRTは、NVIDIA Geforce 2060以上で利用可能なものです。
- DirectMLは、DirectX12に対応していれば利用可能です。AMD RADEONでもIntel Arcでも利用できます。
- 動画の読み取り、書き出しは、当方ではNVENC/NVDECを利用していますが、RADEON、ARCでもハードウェアエンコーダが利用されるようにしようと思っています。
- それぞれの処理速度は、あくまで当方環境での結果なので、お持ちのGPUやCPUで速度は変わってきます。
- HDR画質の動画は、フィルターを利用してSDR画質に落としている関係で、速度低下の程度は主にCPU性能が影響してきます。AutoHDRが有効ですという通知がでる場合は動画はHDR画質になっていると思います。
- 使用するGPUメモリ量については、ディスプレイの画面描画を含めて6GBを超えることはなさそうでした。恐らくFF14をしているパソコンであれば全く問題ないと思います。
- TensorRTは、最初に一度、ONNXからTensorRTへの変換が必要になります。個々のPCのGPUにあわせて最適化されるため、個々のPCで1度変換を実施する必要があります。当方環境では5分30秒くらいでした。
現行と比較してTensorRTで30~40%の性能アップが期待できます!
DirectML対応でRADEONでも従来よりはスピードが出るのではないかと予想しています。(RADEON持ってないから評価できないのですが)
次はいよいよUIかなー?