メインコンテンツへスキップ
見出し画像

LCM とかいう謎の技術を使って高速生成できるようにする(+拡張機能を作ったよ)

    まずは下の映像をご覧ください

    めっちゃ生成早いね!
    今回はこのような高速生成を可能にするワザの紹介です

    これは LCM-LoRA とかいうまったくよくわからん技術によって低ステップで生成できるようにした結果です
    正直なところ意味はまったくわかりません

    詳しい説明は以下の記事とかにあります(これは LCM 自体の説明だけど)
    なるほどわからん!

    早く使い方を教えろ!

    使い方は簡単で、以下の設定にするだけ!

    • LCM-LoRA (SD1.5 / SDXL) を使う(強度は適当に調整する)

    • 低ステップ数:2 ~ 8ぐらい

    • 低CFG Scale:1 ~ 2ぐらい

    • 適切なサンプラー

      • Eular a か DPM++ 2S a Karras か LCM(たぶんない)

    画像
    こんな感じです

    この設定で生成すると、ある程度品質を保ったまま高速に生成できます
    ※ 正確にはステップ数が低い(=処理が少ない)状態でも十分な品質になる

    注意点として、一部の拡張機能が品質に悪影響を及ぼす場合があります!(CADS とかはオフにした方がいいよ!)
    もっと詳しい使い方は多分誰か書いてるので調べてください!

    調べても見つかんなかったけどな!

    普段使いするなら!

    で、この LoRA を毎回使ってもいいんですが、
    自分はめんどくさいのでモデルにマージしてしまっています

    ☟ blue_pencil-XL に LCM-LoRA をマージしたもの

    するとこのような 1024x1024 の画像が1.5秒ぐらいで生成できました

    画像
    これはどう見てもアルパカですね

    モデルへの LoRA マージはみんな大好き supermerger とかを使いましょう
    (やり方は自分で調べてね!)

    マージ手順はシンプルに Merge to Checkpoint で多分いいと思いますが
    自分はなんとなく以下の手順でやりました

    1. SDXL 1.0 に LCM-LoRA-SDXL をマージ

    2. 自分のモデル に 1 を trainDifference でマージ

    マージ時にいい感じの配合率に調整する必要が多分あります

    マージしてしまえば TensorRT を有効にして使うこともできるので更なる高速化が見込めるぞ!(ほとんどの人はやらないと思うけど)

    こんな早くなってなんか意味あんの?

    面白い使い方としてはリアルタイムお絵描き画像生成とかリアルタイム動画変換とか?

    普通の画像生成用途だと、生成速度が速くなることでトライ&エラーの頻度を上げられるのでより意図通りのものが生成しやすくなる…かも

    また、画像生成機能を提供するサービスでは単純に処理時間が短くなるので超恩恵があります

    自分は Discord サーバーで 画像生成Bot を動かして誰でも使えるようにしていますが、LCM + TensorRT を有効にすることで超快適になりました

    画像
    1024x1024 の画像3枚を10秒以内ぐらいには提供できるように!(RTX 3080使用)

    で、(主に)LCM用の拡張機能を作った

    「生成が1秒ぐらいで終わるなら、プロンプトを変えたら即生成するようにしてしまえ!」

    という気持ちになったので、
    プロンプトを変更したら勝手に生成ボタンが押される拡張機能を作りました

    インストールすると生成ボタンの上にチェックボックスが表示され、オンにするとプロンプトを変更するたびに生成が自動で行われます

    画像
    なんか増える

    ちなみに、ここまでの動画でもこの拡張機能を使っていました

    まあこんな拡張なくても Shift + Enter 押せば生成実行できるけどな!

    まとめ

    LCM は他の高速化手段と違ってモデル自体を加工する(?)みたいな感じなので導入自体はとても簡単かつリスクがありません!

    ので!とりあえず試してみるといいんじゃないかな!

    以上!

    画像
    やってみてくれよな!

    あなたへのおすすめ