見出し画像

512×768を40枚描くのに3分36秒

前回の記事では長々とTensorRT拡張機能のインストール方法を解説しました。
今回は実際にTensorRTエンジンを作成してみます。
拡張機能は日本語化だけをインストールしましたので、メニューの説明は日本語化されているものとして解説します。

設定で「sd_unet」「sd_vae」を表示させる

まず、設定からユーザーインターフェースを開き、「クイック設定」に「sd_unet」「sd_vae」を追加します。

「sd_unet」「sd_vae」を追加

これでcheckpoint(現在のモデル)の隣に「sd_unet」「sd_vae」が表示されます。

「sd_unet」「sd_vae」が表示されるようになった

そしてTensorRTエンジンを作るのですが、本家SD1.5をのエンジンを作っても味気ないので、civitaiからみんな大好き(笑)AbyssOrangeMix3の「AOM3A1B」をダウンロードしてきました。

checkpointを切り替えてDefaultエンジンを作る

TensorRTエンジンを作りたいモデルを選択して、TensorRTタブの「プリセット」をDefaultにして「Export Default Engine」を押すと、SD1.5のデフォルト設定でTensorRTエンジンの作成が始まります。

Defaultプリセット(512×512)の作成

けっこう時間がかかることと、VRAMに負荷がかかるためそれなりに熱くなります。
なんかONNXランタイムエラーが出ているのですが、「これはONNX側のバグではないか?」と言われています。なんだかよくわかりませんが、開発者スレッドでそんな発言が飛び交っていても、pythonのコードも書けない私がわかるわけがありません。

なんか赤でエラーが出ているんですが、これでデフォルトエンジンはできました。

エラーで出てますが作成されました

webUIでもExported Successfullyと出ています。
デフォルトのプロファイルでは「高さ幅は512px以上、最大は768px、プロンプトは最大150」であることがわかります。

最低512px 最大768px 150プロンプトまで

webui-user.batをTensorRT用に書き換える

TensorRTの力を発揮させるため、webui-user.batを編集してCOMMANDLINE_ARGSに--opt-sdp-attention と付け加えてSPDAを有効にします。
--xformersはコメントアウトしました。

--opt-sdp-attentionと書いてSPDAを有効にする

とりあえず描いてみる

幅512,高さ768の2対3でバッチサイズ4にし、40枚描いてみました。
プロンプトは気持ち程度にネガティブを書いて、サンプラーはDPM++ 2M SDE、ステップ数は30です。
モデルをAOM3A1Bを選択し、「SD Unet」をさっき作ったTensorRTエンジンであるン[TRT]を選択します。

1girlと軽くネガティブを書いた

512×768を40枚描くのに3分36秒かかった

40枚描くのにかかった時間は3分36秒でした。これって速いんですかね?
ローカルの場合は使っているGPU次第ですから相対評価しかできないので、速いのかどうかわかりません。
ちなみに私はRTX A4000というちょっと変わったグラフィックカードを使っており、GPUの世代的にはRTX40シリーズの一つ前になります。
このサイズを4枚同時に描けたのは、VRAMを16GB搭載しているから…のはずです。

バッチサイズ4なので4枚ずつ描いて3分36秒でした

AOM3らしい女の子ばかりですね!(笑)

1girlでこれが出てくるさすがAOM3

次回は高解像度にするときの注意などを書いてみます。

この記事が気に入ったらサポートをしてみませんか?