Colab版導入

Last-modified: 2024-11-22 (金) 14:59:38

Colabについて

  • ローカル環境での画像生成が流行し始めた当初から、"かなりのGPUパワーが必要だから、クラウドGPUを活用できないか"と模索されていた。そんな中、Colabの使いやすさが着目され、クラウド利用者の定番になった。
    • Colab以外だとPaperspaceも使われている。あくまで体感だけど7割以上の人がColab利用、2割くらいの人ががPaperspace利用、残りがその他のクラウドサービス開拓といった印象。Paperspaceについては他のとしあきが独立項目を立ててくれたのでそちらを参照→Paperspace版導入
  • Google Colaboratory、通称Colabで行える機械学習向けのサービス。クラウド上にローカル同等の環境を構築してユーザーが操作する。SDWubUIのほかにComfyUIやfooocusなどもインストールできる。
  • Colab自体は基本無料だけど、Stable diffusion web UIの利用は課金必須。元々は無料だったが、ColabでStable diffusion web UIを走らせる人があまりにも増えたため無料枠から追放されたらしい。そもそもColabは開発者向けサービスだからしょうがないね。
    • (コメントでいただいた情報によれば)UIを通して画像生成するツールが課金対象であり、Stable diffusion自体や画像生成・学習そのものが無料禁止されたわけではない模様。diffuserssd-scriptsなどの利用は無料枠でも可能とのこと。
      • 別の情報によれば、トンネリング(gradioなどで外部からポートにアクセスすること)が無料枠NG判定の基準ともいわれているが、どちらが正しいのかは不明。
    • 枚数やデータ量で料金が決まるNovelAI等の一般的な画像生成サービスとは異なり、接続時間に応じて料金が決まるのが特徴。1000枚生成しようが10枚生成しようが接続時間が同じなら料金も同じ。
  • PCのスペックが低い。GPUがNvidiaでは無い。等スレのとしと同じような設定が使える場所で戦いたい!という人向け。ちょっと画像生成を試してみたいという人にもオススメ。グラボ購入の参考にも。課金必須とはいえ、新品グラボを買うよりははるかに出費が少なく済む。実は学習もできるので、VRAMがカツカツなとっしーにも。
    • とはいえクラウドサービスゆえの問題点も多く、あまり小回りが利かない。資金に余裕があるなら新品PCを買ってローカル入れたほうがいい。
  • 使用にはGoogleアカウントが必要です。できればGoogleDriveの容量も空いていたほうがいいです(Driveも課金すれば容量増やせる)。
  • colabの特徴として、アクセスを切断すると全データが抹消されます。ネカフェのPCのようなものです。そのため、アクセスの度にWebUIをインストールする必要があります(そのため、起動まで毎回5分前後かかります)。生成した画像も(driveに出力する設定にしていない限り)すべて消滅します。欲しい画像は小まめに保存しましょう。

またcolab規約で禁止されている部分で画像生成で使用する場合下記は特に注意が必要だと思われます。
・複数アカウントの使用による、アクセスまたはリソース使用量の制限の回避
・ディープフェイクの作成
エロ画像規定はColabでエロ画像生成して大丈夫なの?参照

基本情報

  • 詳細な情報は公式ページを参照してください→Colab公式の課金案内
  • 都度課金と月額課金のどちらかを選べる。まずは都度課金してみて、定期的に利用するようなら月額課金に移行すればいいと思う。
    • 月額課金してすぐに解約手続きをすると、課金日から1か月後まで月額課金者扱いとなりその後自動解約される。T4でハイメモリを使いたい人はやってもいいかも。
      • 契約満了まで課金コース変更ができなくなるデメリットもある。
  • "コンピューティングユニット(CU)"を購入し、利用時間・使うGPUスペックに応じてそれを消費する。CUの有効期間は90日。
    • 月額課金、特にPro+にするとバックグラウンドで稼働させられたりA100を優先的に利用できたりいろいろ特典がある(が、普通にStable diffusion web UIを動かすだけならProか都度課金で十分)
    • T4でSDXL・FLUX.1を使うなら月額課金にした方が有用(ハイメモリが必要になるので)。

(2024/11/22現在の情報です)

コース価格貰えるCU数T4のメモリ
Pay As You Go
(都度課金)
¥1,179100CU通常のみ
¥5,767500CU
Colab Pro¥1,179/月100CU/月通常または
ハイメモリ
Colab Pro+¥5,767/月500CU/月

(※Colab Enterpriseっていう企業向けのコースもあるけど割愛)

  • Colabノートブック画面から左上の「ランタイム」>「ランタイムのタイプを変更」で使うGPUを選べる。月額課金者はT4のメモリをハイメモリにするかどうかも選べる。
    • 2024年11月現在では、T4・L4・A100の3つのGPUから選択できる。スペックが高いほどCUがガンガン削れるので注意。CPUとTPUは選ばないでね。
      • 生成速度と消費CUのバランス面ではL4が最強。SDXL・FLUX.1の場合はL4を選ぶとよい。FLUX.1を本格的に運用したい人はA100を検討する余地あり。
      • SD1.5ならT4で十分。SDXLでもHires. fixを使わないならT4+ハイメモリも選択肢に入るが、L4の生成速度を体感するとT4には戻りづらい。
    • ハイメモリを選ぶとシステムRAM容量が拡大する。メモリと生成速度は特に関係ない(ハイメモリにしても生成速度は上がらない)。SDXLはノーマルメモリだとUIが落ちることがあるのでハイメモリが安定する。
      • ノーマルメモリでFLUX.1を使うと生成完了時にシステムRAM負荷が跳ね上がり、仕上げの段階でUIが落ちて結果的に生成失敗になりました。FLUX.1はハイメモリ必須と考えてよさそうです。
      • SD1.5でもControlNetを複数適用するなど負荷の高い行為をするとUIが落ちる。この場合もハイメモリにすれば解決する。
    • ColabのGPUごとの生成速度はこちら
      • 下表の生成速度はpngを基準にしています。FLUX.1はdevのタイムです。
GPUVRAMCUDA
コア数
生成速度消費CU
(CU/h)
メモ
T415GB25601.5:
100%
XL:
100%
FLUX:
100%
1.44
(通常)
SD1.5向け。100CUで一か月70時間ほど稼働させられる。
VRAMの恩恵でSDXLも出力できるが少々時間がかかり、
さらにL4よりコスパで劣るため連続生成には不向き。
L424GB74241.5:
180%
XL:
199%
FLUX:
244%
2.4SDXL・FLUX.1を使いたいならこちら。
SD1.5でもT4の生成速度が遅いと感じたら切り替えるのもあり。
2024年10月1日から消費CUが激減してT4以上のコスパになり、
11月21日にはさらに下がって当初の半分になった。
100CUで40時間以上稼働でき、学習のコスパもそこそこ。
A10040GB69121.5:
261%
XL:
429%
FLUX:
869%
8.47特大VRAMを活かして学習で無双。
FLUX.1でも圧倒的な強さを見せる。
開発者には需要が多いらしく、繋がりにくいことも。
以前よりはマシだが、それでもSD系でのコスパは非常に低く、
悩んでいると見る見るうちにCUが減っていくので注意。

使い方

  • Colabはpythonで書かれたコードで動かします。このコードが書かれたものをノートブックと言います。
  • Stable diffusionを動かすノートブックを探してきて、それを自分のGoogleドライブにコピーして実行。これが基本になります。
    • ノートブックは様々な作者が公開しています。感謝の祈りを捧げながら使わせてもらいましょう。だいたいGithubに置かれています(拡張子が.ipynbならノートブックです)。
    • Stable deffusion系以外にも、ComfyUIやFooocusなどのノートブックもあります。使いたい人は探してみてください。Lora学習用のノートブックもあります。
    • 長期間更新されていないノートブックは、環境変化に対応できず動かないOR動いてもエラーしか出ない可能性があるので気をつけてください。
      • それなりの頻度で更新されていたりIssuesで利用者とやり取りしている作者であれば、ノートブックが現環境に対応しており不具合が出た時にも早めに対応してもらえる可能性が高いです。

既存のノートブックを使ってWebUIを体験

Stable Diffusion Web UIに関しては、''作者のページでいくつかの導入用ノートブックが紹介されています。こちらのページのGoogle Colabの項を参照してください。
※既にエラーで画像生成できなくなっているノートブックもあるようです。
以下では、TheLastBenを例にノートブックの使い方を解説します(2024/08/12動作確認済)。
SDXLを使用する場合、driveの空き容量が最低でも7GBは必要です。
エラーやdriveの容量不足に悩んでいる方は、下記の「必要最小限構成のノートブックでWebUIを体験」も試してみてください。

  • 導入前の下準備
    自分のgoogleドライブ内にモデルを入れるフォルダを新規作成します。
    ここではわかりやすく「SDmodels」というフォルダを作ることにしましょう。
    あらかじめ使いたいモデルをダウンロードしてこのフォルダに入れておくと導入の手順がスムーズになります。
    試しにAnimagineのv3.1をダウンロードしてみましょう。hugging faceのページからanimagine-xl-3.1.safetensorsをダウンロードします。
    ダウンロードが完了したら、そのモデルをgoogleドライブの「SDmodels」にアップロードします。
    (ファイルサイズが大きいので少し時間がかかります。2回目以降はこの作業は不要です。)
  • 導入用ノートブックをコピーする
    AUTOMATIC1111のgit hubページmaintained by TheLastBenと紹介されているものをクリックします。
    左上のメニューからファイル>ドライブにコピーを保存と選択して自分のgoogleドライブに導入用ノートをコピーします。
    メニューが表示されていないときは、右上の「V」をクリックして格納されているメニューを表示させてください。
    以降の手順は自分のドライブにコピーしたノートブックにて行います。
    コピーしたノートブックをブックマークしておくと2回目以降アクセスしやすいでしょう。
  • まずはじめに
    ノートブック画面から左上の「ランタイム」>「ランタイムのタイプを変更」でT4かL4を選んでください。
    デフォルトだとCPUになっています。そのまま進めると詰みます。
  • 導入用ノートブックの実行
    最初に実行するときだけ記入が必要な欄があります。
    2回目からは上から順番に▶を押すだけです。
    CUをもっていないと途中で手詰まりになるので注意してください!
  • Connect Google Drive
    googleドライブに接続します。左上の▶を押して実行します。
    基本的に何も書き換える必要はありません。Shared_Driveの欄も空白でかまいません。
    しばらく待つとGoogleドライブに接続するか確認のポップアップが出るので、Googleドライブに接続>許可とクリックします。
    このとき自分のスマホにアクティビティの確認がgoogleから送られてくることがあります。操作内容に心当たりがあると返しておきましょう。
  • Install/Update AUTOMATIC1111 repo
    Stable Diffusion web uiのインストールまたは更新を行います。
    基本的に何も書き換える必要はありません。左上の▶を押して実行します。
  • Requirements
    書き換える欄はありません。左上の▶を押して実行します。
  • Model Download/Load
    今回はSDXLモデルを用意したので、SDXLを選択します。
    最初に実行するときだけ記入の必要があります。
    Path_to_MODELの横の欄にモデルを入れてあるフォルダのパスを記入します。
    先程「SDmodels」というフォルダを作ったはずなので
    /content/gdrive/MyDrive/SDmodels/
    と指定しておきます。違う場所や名前でフォルダを作った場合は適宜それに合わせてください。
    記入が終わったら左上の▶を押して実行します。
  • Download LoRA
    基本的に何も書き換える必要はありません。左上の▶を押して実行します。
  • ControlNet
    基本的に何も書き換える必要はありません。左上の▶を押して実行します。
  • Start Stable-Diffusion
    基本的に何も書き換える必要はありません。
    もしgradioliveが不安定ならNgrok_tokenを利用しましょう。
    Ngrokにアカウントを作り、Your Authtokenから自身のAuthtokenをコピーします(このAuthtokenは他人には絶対知られてはいけません)
    コピーしたAuthtokenをNgrok_tokenの横の欄にペーストします。
    記入した内容は保存されるため2回目以降はAuthtokenをコピーしてくる必要はありません。
    USERとPasswordを利用すると少しセキュリティが向上するので、使いたい人は適当な名前とパスワードを設定してください。
    左上の▶を押して実行します。
    しばらく(5分から10分程度)待つとRunning URLが表示されるのでクリックします。
  • 立ち上げ完了
    Running URLをクリックしてstable diffusion web uiが表示されたら立ち上げ完了です。
    USERとPasswordを設定した人はweb uiアクセス前に記入欄が出ます。
    Ngrokを利用している人は接続確認が出るのでvisitを選択します。
    とりあえずプロンプト欄に1girlと記入して、1024x1024サイズで1枚出力してみましょう。

ノートブックに記入した内容は自動保存されるので2回目からは上から順に▶を押して実行していくだけです。
自動で上から順番に実行していってくれるので、次の▶を押すのに完了を待つ必要はありません。
ただし急いでクリックしすぎてgoogleドライブに接続する確認のポップアップを消さないようにだけ気をつけてください。
ちなみに、左上のメニューの「ランタイム」から「すべてのセルを実行」をクリックすると、自動で上から下まで順番にセルが実行され、1つ1つクリックする必要がなくなります。

  • 立ち上げ中にバグってしまったら
    画面上部のメニューからランタイム>ランタイムを接続解除して削除と選択します。
    接続解除後、再接続して最初の▶から順に実行をやり直してください。
  • モデルやLoRAの利用
    モデルファイルは最初に作った「SDmodels」フォルダに入れてください。
    違う場所や名前でモデル用フォルダを作った場合はそこに入れてください。
    LoRAを入れるフォルダは導入用ノートブックが自動で作成します。
    初回起動後はgoogleドライブに「sd」というフォルダが自動作成されているはずです。生成した画像もここの「outputs」フォルダに保存されています。
    自分のgoogleドライブの中のsd/stable-diffusion-webui/models/Loraの中に使いたいLoRAファイルを入れてください。
    Loraフォルダの中にさらにフォルダを作って、その中にLoRAを入れても認識してくれます。
    ただし別フォルダであったとしても、Loraフォルダ全体で同じ名前のLoRAが複数存在してはいけません。

必要最小限構成のノートブックでWebUIを体験

ここまで、既存のノートブックを使用する方法を紹介しましたが、ノートブックを自作する方法もあります。自作と言っても、基本的にはコードをコピペするだけです。
最低限の記法を知っておけば、拡張機能をはじめとして自分好みにカスタマイズできます(詳細は下記参照)。
以下では、コード知識がなくても使える必要最小限構成のコードを紹介します。これをコードとしてコピペすればStable diffusion web UIを体験できます。
CUをもっていないと途中で手詰まりになるので注意してください!
https://colab.research.google.com/ にアクセスし、左上の「ファイル」を押して「ノートブックを新規作成」を押す。
 ※この時点でノートブックがGoogle driveに保存されます。Google driveの中の「Colab Notebooks」というフォルダの中に生成されています。次回以降はコピペ作業なしでdriveから起動できます。
左上に「Untitled0.ipynb」と名前があるので、必要に応じて名前を変えましょう。

初期起動の場合は、CPUで処理するモードになっています。
必ず「ランタイム」>「ランタイムのタイプを変更」でT4かL4を選んでください。
デフォルトだとCPUになっています。そのまま進めると詰みます。

そして、以下のコードをコピペしてください。例としてAnimagine XL v3.1を使います。

!pip3 install torch==2.1.2 torchvision==0.16.2 torchaudio==2.1.2 --index-url https://download.pytorch.org/whl/cu121
!git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui
%cd /content/stable-diffusion-webui
!wget https://huggingface.co/cagliostrolab/animagine-xl-3.1/resolve/main/animagine-xl-3.1.safetensors -O /content/stable-diffusion-webui/models/Stable-diffusion/animagine-xl-3.1.safetensors
!python launch.py --share --no-half-vae

コピペしたら、一行目の「!pip3 install~」の横に白丸に三角のボタンがあるのでそこを押してください。
起動までに数分かかるので待ちましょう(だいたい5分から10分程度です)。

このような表示が出たら起動完了しました。
Running on public URL: https:000000000000000000.gradio.live
 ※0のところは例です。本来なら、英数字が色々混ざってるURLです。
準備ができたら、リンクをクリックしてください。

起動したら、左上のStable Diffusion checkpointをanimagine-xl-3.1.safetensorsにしてください。
そしてプロンプト1girlと記入して、1024x1024サイズで1枚画像を生成してみましょう。無事に生成できれば成功です。
あとは一部を除いて通常の1111と同じ使い方です。
お疲れ様でした。

コードについての簡単な解説
  • 1行目
    環境設定です。Colab上でStable Diffusion Web UIを動かせるようにPyTorchをインストールします。
  • 2~3行目
    Stable Diffusion Web UI本体をgithubからcolabにダウンロードしディレクトリ指定をします。本体のインストールだと思ってください。
  • 4行目
    モデルのダウンロードです。サンプルとしてAnimagine XL v3.1を指定しました。
    事前にdriveにモデルを用意している方はこの4行目のコードを省略できます。詳しくはこちら
  • 5行目
    起動コードです。うしろに --shereなどのコマンドがありますが詳細はこちらを見てください。
あれ?思ったより画像のクオリティ低いなと思った人へ
  • 高品質な画像を求める場合は、クオリティタグの使用やembedding・Loraの活用、controlnetの導入などが考えられます。これらは通常のローカルと共通です。
    • colabでもローカルでも画像の品質は同じです。colabだから画像の質が悪いということはありません。試行錯誤しながら品質を追求しましょう。
    • 百発百中で高品質画像を出す術はありません。複数枚生成して最も高品質なものを選ぶのが常套です(それゆえ生成速度が重視されます)。
    • Animagine XL v3.1を使用する場合、クオリティタグとして
      プロンプト
      →masterpiece, best quality, very aesthetic, absurdres, 1girl
      ネガティブプロンプト
      →nsfw, lowres, (bad), text, error, fewer, extra, missing, worst quality, jpeg artifacts, low quality, watermark, unfinished, displeasing, oldest, early, chromatic aberration, signature, extra digits, artistic error, username, scan, [abstract]
      と入力してもう一度画像を出してみましょう。1girlとだけ入力した先ほどの結果とはクオリティがけた違いに変わるはずです(Animagineのクオリティタグについての解説はこちら)。

WebUIをカスタマイズする

先ほど、一部を除いてと言いました。
拡張機能やモデル、VAE、学習データ等入れるときは通常の1111と比べて若干面倒ではあります。
これは、colabがアクセス切断と同時に全データを削除するためです。
通常とは全く異なるやり方で諸々入れる事になるので、よく読んで進めてください。

  • 拡張機能をインストールしたい→こちら
  • モデル・VAE・学習データ(Loraなど)を追加したい
    • GoogleDriveの空き容量に余裕があり、WebUIの起動を速くしたい人→こちら
    • GoogleDriveの空き容量に余裕がない

拡張機能をインストールしておく

拡張機能導入についてです。これを見ながら入れてもいいのですが、一回起動することにExtensionを開いてダウンロードするのはめんどくさいと思います。
どうせならモデルデータダウンロードと一緒にに拡張機能入れればよくね?
というわけでその導入の仕方を解説していきます。
今回の使用拡張機能は、Booru tag autocompletionを例に使って導入していきます。
先ほどのコードの

%cd /content/stable-diffusion-webui
「ここ」
!wget https://huggingface.co/cagliostrolab/animagine-xl-3.1/resolve/main/animagine-xl-3.1.safetensors -O /content/stable-diffusion-webui/models/Stable-diffusion/animagine-xl-3.1.safetensors

「ここ」って示してるところにコードを入力(コピペ)していきたいと思います。
まず改行して、下のコードを入力してください。

!git clone https://github.com/DominikDoom/a1111-sd-webui-tagcomplete /content/stable-diffusion-webui/extensions/a1111-sd-webui-tagcomplete

これであとは起動するだけです。
基本、拡張機能入れるときはこれを覚えておけばいいです。

!git clone 「githubにある導入したい拡張機能のリンク」 /content/stable-diffusion-webui/extensions/「拡張機能の名前」

driveに保存してあるモデル・VAE・学習データをそのまま利用する

  • 起動時にモデル等が置いてあるパスを指定すれば、driveに保存されたファイルを直接利用することができ、アクセスの度にダウンロードする必要がなくなります。
    あらかじめモデルをdriveに用意している場合は、上記最小構成のモデルダウンロード部分のコードを省略できます。
    こちらのページも参照してください→Colab1111でGoogleドライブからモデルを読み込む
    • メリット:データのダウンロードが必要最小限になるので起動が速くなる。面倒なコード実行・ファイル操作を省略できる
    • デメリット:データが多いとgoogleドライブの空き容量を食いつぶす(課金すれば容量拡張可能)

まず、先ほど紹介したstable diffusion起動コードを見てみましょう。

!python launch.py --share --no-half-vae

このコードは2つの意味に分かれています。

  • !python launch.py→stable diffusionの実行ファイル。これで本体を起動させている。
  • --share --no-half-vae→実行にあたっての引数(オプション)指定。(shareでgradioへのアクセスを、no-half-vaeでVAEを16ビットフロートに切り替えないようそれぞれ指定している)
    実はStable Diffusion Web UIには多くのオプション機能が存在しており、活用次第でかなり便利になります。→詳しくは「webui-user.bat」を編集する参照。
    そこで、①driveにデータを用意しておき、②driveとcolabをリンクして、③colabからdriveに保存したデータの場所を指定すれば、drive上のファイルを直接利用することができます。

①driveにデータを用意しておく
まずGoogle driveにデータを用意しておきましょう。
モデル・VAE・Lora・embeddingなどなど・・・
モデルはモデルのフォルダ、VAEはVAEのフォルダにまとめて置いてください。
フォルダ名は半角英数字にした方が無難です。スペース・日本語・全角英数字を使うとトラブルの原因になるかもしれません。

②driveとcolabをリンクさせる
まずこのコードをコピーして実行します。

from google.colab import drive
drive.mount('/content/drive')

実行すると、driveにマウントする許可を求めるメッセージが出ます。許可をして、次のページで自分のgoogleアカウントを選択しましょう。
しばらくするとマウントが完了し、colab上からdriveの全ファイルが認識可能になります。

③引数でファイルの場所を指定する
まず、driveのパスについて確認しましょう。
colab画面の左側にいくつかアイコン(メニュー)があります、その中のフォルダの形をしたアイコンをクリックしましょう。
すると、colab上のファイルが表示されます。driveマウントが成功していれば「drive」というフォルダもあるはずです。
このdriveフォルダを展開し、目当てのファイルを置いたフォルダを探してください。
フォルダが見つかったら、右側の縦に点が3つ並んでいるマークをクリック(もしくは当該フォルダを右クリック)し、「パスをコピー」を選択します。
これで、driveのパスの準備ができました。参考までに、マイドライブ直下に「model」というフォルダを作成した場合、以下のようなパスになっているはずです。

/content/drive/MyDrive/model

では、もう一度stable diffusionの起動コードを見てみましょう。

!python launch.py --share --no-half-vae

このように、引数を追加したい場合はlaunchi.pyの後ろに半角スペース+--引数、半角スペース+--引数と記入していきます。
フォルダを指定する引数を以下に例示します。必要な分だけ使ってください。初めての方はまずモデルだけで試してみましょう。HNなども指定できますがここでは割愛します

  • モデル→--ckpt-dir /content/drive/MyDrive/〇〇(モデルを置いたフォルダのパス)
  • VAE→--vae-dir /content/drive/MyDrive/〇〇(VAEを置いたフォルダのパス)
  • embeddings→--embeddings-dir /content/drive/MyDrive/〇〇(Easynegativeなどを置いたフォルダのパス)
  • Lora→---lora-dir /content/drive/MyDrive/〇〇(スレで配布されたLoraを置いたフォルダのパス)

例えば以下のようになります。これを流用する場合、パスは適宜追加改変してください。

  • モデルの場所だけ指定する場合
    !python launch.py --share --no-half-vae --ckpt-dir /content/drive/MyDrive/model
  • モデルとLoraの場所を指定する場合
    !python launch.py --share --no-half-vae --ckpt-dir /content/drive/MyDrive/model --lora-dir /content/drive/MyDrive/Lora

しばらくして表示されたgradioのURLをクリックし、driveに置いてあるモデルが反映されていれば成功です!(表示されない場合、モデルやVAEの横にある更新ボタンを押してみてください)
モデルのdrive指定に成功した場合、最小構成のモデルダウンロード部分のコードを省略できます。起動がちょっと速くなるよ!やったねたえちゃん!

モデルとVAEをダウンロードして使う

あらかじめデータをdriveに用意せず、モデルとVAEをアクセスの度にダウンロードして使う方法についてです。
driveの容量に不安がある場合はこの方法を使うことになると思います。
Huggingfaceにあるモデル、VAEは(Civitaiに比べて)簡単に落とせます。

先ほどの最小構成コードの4行目を見てみましょう。

!wget https://huggingface.co/cagliostrolab/animagine-xl-3.1/resolve/main/animagine-xl-3.1.safetensors -O /content/stable-diffusion-webui/models/Stable-diffusion/animagine-xl-3.1.safetensors

このように

!wget 「ダウンロードしたいファイルのURL」 -O 「colab上の保存場所」/「使用モデルの名前」.「拡張子」

でダウンロードできます。半角スペースも忘れずに!
複数ファイルをダウンロードしたいときはその分行数を追加してください。
モデルに限らずVAE・Lora等も同じ要領でダウンロードできます。
その場合、「colab上の保存場所」の書き換えも忘れないように注意してください(モデルのフォルダにLoraを置いても無意味なので)。

学習データをダウンロードして使う

あらかじめdriveにデータを用意せず、学習データをダウンロードして使う方法についてです。
当然、driveにアップロードするのが一番ラクなのですが、空き容量次第ではこの方法を使うことになります。
「CivitaiにあるやつをColabで使いたい」や、「スレにあったLoraを使ってみたい!」等、という人もいると思います。
Huggingfaceのアカウントを持ってない人は作ってください。Huggingfaceを使用します。
まず使いたい学習データをダウンロードしてきます。
そしたらHuggingfaceに行って、自分のアイコンのマークを押して、「+New Model」を押してください。
次のページに進んだら、Model nameのところに好きな名前を入力します。
そして、Licenseは一番下にある「Other」にしてください。(意味がないと思うけど一応)
この時、下にあるPublicやPrivateを変更しないでください。(デフォはPublic)
名前を決めたら、下にある「Create model」を押してください。
次のページに移動したら、「Model card」の隣にある、「Files and versions」を選択してください。
そしたら右にある「Add file」を押して、「Uplode files」を押してください。
Drag files/folders…ってとこがあるのでそこにアップロードしたい学習データをいれてください。
入れたら、「Commit changes to main」を押してください。アップロードの処理が始まります。
できたら、後はモデルデータと同じようにしていくだけです。が、学習データを使うにまだコードをいじらないといけません。
Loraを例とします。
モデルデータとLoraを同時にダウンロードする時、Loraではエラーが出てしまいます。
原因は、Loraの指定されたディレクトリがないからです。
Loraのディレクトリが作り始めるのはコードの一番下にある、

!python launch.py --share --xformers --no-half-vae

が、初めて動作して作られるものなんです。
それの回避策として、先にフォルダを作りましょう。
Loraを例としますが、HN・DB・TIを扱うときはこちらで状況に応じてフォルダ名を変えてください。

!mkdir /content/stable-diffusion-webui/models/Lora/

これを、Loraのダウンロードの前に配置してください。
そうするとエラーが出ずにそのまま進めます。
あとは通常の1111と同じ使い方です。

まとめて画像のダウンロードする方法

基本は右下にある「Save」を押せば一枚ずつ画像がダウンロードできるようになってますが、たまに全て作った絵をまとめてダウンロードしたい方もいると思います。
そのために、まとめてダウンロードする方法を2つ教えします。
その1、Google driveを経由してダウンロード(これが一番おすすめ)
めっちゃ爆速。他の方法のダウンロードと比べてなんじゃこりゃってなるくらいのやつ。
この方法を使うときは、Google driveの容量がたくさん空いていることを確認してください。
まず、左上の「+コード」を押してこのコードを入力してください。

from google.colab import drive
drive.mount('/content/drive')

このコマンドは、自分のアカウントをColabにマウントさせるコマンドです。
コマンドを実行したら、「このノートブックに Google ドライブのファイルへのアクセスを許可しますか?」と出てくると思います。そしたら、「Google driveに接続」を押してください。
新しいウィンドウがでて、アカウント選択の欄が出ると思います。
枠の中にあるアカウントを選択してください。
「Google Drive for desktop が Google アカウントへのアクセスをリクエストしています」と出ると思います。
下にスクロールして、「許可」を押してください。
そして、

Mounted at /content/drive

と、出ると思います。
こちらの文字が出たらマウント成功です。
次に、また左上の「+コード」を押してこのコードを入力してください。

!zip -r /content/AI.zip /content/stable-diffusion-webui/outputs/txt2img-images/
!cp /content/AI.zip /content/drive/MyDrive/AI.zip

こちらのコマンドは作った絵をZIPファイルにして、そのZIPファイルをGoogle driveにアップロードするコマンドです。
実行したら何も表示が出ずに完了すると思いますが、それで大丈夫です。そして、Googlw driveのページを開いてください。
この時、「AI.zip」があれば成功です。もし、なかった人は何回かウェブページを更新してみてください。
※たくさん生成すれば、アップロードに時間かかるかもです。気長に待ちましょう。
あとはダウンロードして終わりです。
※どえっっっっなイラストを生成した人へ
一番下に書いてありますが、Google driveにどえっっっっなイラストをあげるとやばいです。(詳しくは一番下に)
なので、ダウンロードしたら直ぐに消しましょう。ごみ箱からもね。
その2、Colabから直接ダウンロード(非推奨)
こちらは、Google driveの容量の空きがないよ!って人向けです。
ただ、めちゃくちゃダウンロード時間が長いです。
おま環にもよりますが自分は、119枚の109MBで10分でした。参考程度に。
まず、左上の「+コード」を押してこのコードを入力してください。

!zip -r /content/AI.zip /content/stable-diffusion-webui/outputs/txt2img-images/

こちらのコマンドは作った絵をZIPファイルにするコマンドです。
ZIPファイルにできたら、左にあるフォルダのマークを押してください。
そしたら、「AI.zip]というファイルがあると思います。
そのファイルを選択して、右クリックしてください。
ダウンロードの欄があると思うのでクリックして、気長に待ちましょう。
ダウンロードができたら成功です。

蛇足だぞ俺

from google.colab import files
files.download("/content/AI.zip")

このコマンドでzipにしたファイルをダウンロードすることもできる。
プログレスバーと進捗%も出るが上記方法と所要時間は変わらない多分。
zip化コマンドとダウンロードコマンドを合体させたらワンタッチになるかもしれないが最近Colabで触ってないからわかんないぞ俺。

生成・保存が終わったら

生成し終わったら、Colabでの動作を止めないと裏で少し動いてしまう。(まぁ10~20分くらいすれば自動で止まるけれども。)
そのために止めておく方法を載せておく。
まず、現在動かしているコードを止める。そして、上のタスクバーにある、「ランタイム」を押してください。
そして、「ランタイムを接続解除して削除」を押してください。
そしてポップアップ…?みたいなのが出てきて、「リセットしてもよろしいですか?」
とでるので、「はい」を押す。
注意・ランタイムを削除すると、作ってきたイラストのデータがぶっ飛んでしまうので、保存していない人は保存をしておこう。

おまけ1・動作中にバグってしまったら

もし動作中にバグってしまったとき、ある程度はプログラムの再起動で治る。
システムRAMやGPURAMの限界を突破してUIが落ちちゃったときも再起動すれば仕切り直せる。
だた、バグったときいつも「ランタイムの切断」をして再起動していると時間がかかってしまう。
そんな時、新しく「+コード」を押して

!python launch.py --share --no-half-vae

を一番下に置いておくとよい。
(モデルやVAEなどの引数を追加した場合はそれも忘れずに!)
このコードは、Stable diffusionを起動するためのコマンドである。
これを置いといておけば、生成途中になんかあった時でもコードを停止してこのコマンドを実行すれば良いだろう。
※重大なバグが出たときは、ランタイム自体を再起動することになるかもしれません。

おまけ2・グラボごとの生成速度と高速化

  • 「クラウドを利用する」ことの特性上、通信ラグや回線混雑の影響を非常に受けやすいです。時間帯によって生成スピードが安定しない場合があります。
    • 画像生成の流れは通常のローカルと同じなのですが、命令送信と結果受信にgradioを通す点が異なります。そのためgradioliveの転送速度がボトルネックになります(クラウド上のグラボ自体の生成能力は一定です)。「生成は終わってるのになかなか画像が表示されない」といった悲しい事態がちょくちょくあります。特にデータ量の大きい高解像度画像で発生しやすいです。
    • 同様のことはi2mでも発生します。命令だけでなく元画像も一緒に送信するためです。i2mの元画像のファイルサイズにも気を遣う必要があります。
  • ボトルネックをすこしでも減らすために考えられる手段は以下の通りです。とにかくデータ量を減らしましょう。
    • 生成画像・グリッド画像・プレビュー画像を全てjpgにする
      • SDXL以上の高解像度なら効果的です。WebUIの設定画面で画像の拡張子を変更できます(デフォルトではすべてpng)。そこそこの生成速度アップが期待できます。webpでも構いません。
      • jpgでもWebUIのPNG infoでメタデータは参照できました。こだわりがなければ常時jpg設定でもいいかもしれません。
      • 少なくともライブプレビューとグリッド画像はjpgがおすすめです。特にpngのグリッド画像はサイズが大きいので・・・
    • ライブプレビューを切る
      • 気持ち速くなるかな程度でそれほど目立った効果はありませんでした。ライブプレビューはオンにしておき生成スキップを活用した方がいい気がします。
    • (i2mの場合)画像を小さくリサイズする/拡張子をjpgに変更する
      • 転送データ量が減少し速度アップが期待できます。
    • ngrokを使う
      • 平常時はgradioと速度差はほとんどないのですが、gradioが重いときや落ちたときの代替手段になります。起動コードの引数で利用可能になります。無料会員は毎月のデータ量に上限があるそうです。
    • Forgeを使う
      • 一番タイムが縮むのがこれです。ローカル同様にcolabでもForgeのほうが生成速度は速いです。一部の基本機能や拡張機能が使えなくなるデメリットはありますが・・・
      • Forgeでの生成速度はこちら
  • T4・L4・A100それぞれの画像生成速度を計測しました。SDWebUI(not forge)・gradioliveを使用し、ほかの設定はリンク先と同様です。
    • 「T4はRTXでいうと○○に相当」のような比較は上記の理由から困難です。生成時間のストレス体感や使い勝手の参考程度にどうぞ。
    • 生成画像・グリッド画像・プレビュー画像全てをpngで出力したタイムとjpgにしたタイムの両方を記載します。

家庭用グラボと比較する場合は、やかもち先生の下記記事を参照してください。
【Stable Diffusion】AIイラストにおすすめなグラボをガチで検証【GPU別の生成速度】 | ちもろぐ
値をお借りしたグラフ(SD1.5 512): 512×512:ハローアスカベンチマーク
値をお借りしたグラフ(SDXL 1024): 1024×1024:トキ(ネイティブ高解像度イラスト)

T4-pngT4-jpgL4-pngL4-jpgA100-pngA100-jpg
SDXL(1024・15step・5枚)111.0sec96.6sec55.7sec49.5sec25.9sec20.8sec
SD1.5(512・28step・10枚)65.7sec63.7sec36.5sec33.8sec25.2sec22.8sec
  • FLUX.1のタイムも計測してみました。Forgeを使用しています。
    • dev-bnb-nf4を20step、schnell-bnb-nf4を4stepでそれぞれ4枚で計測しました。
      • VAEでae使用・サンプラーはEuler・解像度896x1152・gradioliveで他はForgeのデフォルト設定のままです。
      • 条件が違いすぎるので上記のSD1.5・SDXLと単純比較はしないでください。
    • 起動直後やモデル切り替え直後の1枚目の生成は、モデル読み込みのため時間がかかります。
      • 速度計測はモデルのロード時間を除外して行いました。
    • A100が傑出した結果を残していますが、devだとL4ですらパワー的に厳しいようでpngとjpgの差がXLより縮みました。
      • 特にT4は生成速度が転送速度を下回ったらしく、pngとjpgで差がつかないという結果になりました。
T4-pngT4-jpgL4-pngL4-jpgA100-pngA100-jpg
dev-bnb-nf4(20step4枚)397.3sec398.7sec162.9sec160.4sec45.7sec41.9sec
schnell-bnb-nf4(4step4枚)95.3sec86.8sec38.6sec34.4sec13.3sec9.3sec

おまけ3・モデル等のダウンロードを高速化する

SD1.5時代はモデルは2GB程度だったのですが、SDXLやFLUX.1・SD3.5と進化するにつれてモデルのファイルサイズも巨大化してきました。
すべてdriveに置ければそれが一番いいのですが、容量の関係でそれが難しい人も多いでしょう(無課金だと15GBが上限)。
そこで最小構成コードを例にaria2でモデルのダウンロードを高速化してみたいと思います。

!wget https://huggingface.co/cagliostrolab/animagine-xl-3.1/resolve/main/animagine-xl-3.1.safetensors -O /content/stable-diffusion-webui/models/Stable-diffusion/animagine-xl-3.1.safetensors

これを

!apt -y install -qq aria2
!aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/cagliostrolab/animagine-xl-3.1/resolve/main/animagine-xl-3.1.safetensors -d /content/stable-diffusion-webui/models/Stable-diffusion -o animagine-xl-3.1.safetensors

と書き換えてください。
aria2は簡単に言えば分割ダウンロード技術です。上記のコードはモデルを16分割してダウンロードするものです。
ちゃんと動作すれば!wgetに比べて速くダウンロードが完了します。
複数モデルを使いたい場合は

!apt -y install -qq aria2
!aria2c --console-log-level=error -c -x 16 -s 16 -k 1M 「モデル1のURL」 -d 「モデル置き場」 -o 「モデル1.拡張子」
!aria2c --console-log-level=error -c -x 16 -s 16 -k 1M 「モデル2のURL」 -d 「モデル置き場」 -o 「モデル2.拡張子」
!aria2c --console-log-level=error -c -x 16 -s 16 -k 1M 「モデル3のURL」 -d 「モデル置き場」 -o 「モデル3.拡張子」

このように追加していってください。「!apt -y install -qq aria2」は繰り返し不要です。
すべてのファイルに適用できる(はず)ですが、Loraなどの数百MB程度のファイルならスピードアップの恩恵は少ないので!wgetのままでも大丈夫です。
うまくダウンロードできないなどトラブルが発生したら!wgetに戻してください。

おまけ4・Colabでエロ画像生成して大丈夫なの?

一応Google Colaboratoryではエロ画像にまつわる制限は明示されていません。
新しく書いた人からの補足
「上に関して。自分がColab上でどえっっっっなのをたくさん作って3時間続けて触ってたけど、ColabでのBANとかはなかったです。」
「安心だな!と思ってる人がいると思いますが、あくまでも個人での行動なのでそこは気を付けてください。

ただしGoogleドライブを利用する場合は別です。
Googleドライブの規約でエロ画像に関する項目だと下記が主に該当します。
※創作物つまり二次絵でも引っかかります。
※尚、GoogleフォトやGmail等ストレージ保存系もほぼ同じ規約です。

「児童の性的虐待と搾取」
児童の搾取や虐待にあたるコンテンツは、アップロードしたり、共有したりしないでください。
これには、児童の性的虐待のすべての画像(漫画も含む)や、児童を性的に表現したすべてのコンテンツが含まれます。
「同意のない露骨な画像」
個人的なヌードや、性的に露骨もしくは露骨ではなくても性的なものを連想させる画像または動画を、本人の同意なしに保存、配信しないでください。
「未成年者の未承諾の画像」
未成年者の画像を、その子どもの親、保護者、または法定代理人による明示的な同意なしに保存または配信しないでください。

特に日本の二次元イラスト・アニメ・ゲームのキャラクターは、あちらでは幼いキャラと見られることが多く「児童の性的虐待と搾取」と判定されることがあるようです。
これらはGoogleドライブ上に存在した時点でアウト判定をくらいます。
グロ関係も規制があります
「暴力、流血」
衝撃を与えることや世間を騒がせること、冒涜を主な目的とした、実在する人物または動物に関する暴力的または残虐なコンテンツを保存、配信することは許可されません。
※これらの各種規制はAIによる自動システムによるスキャンでオート判定されます。
※規制対象に引っかかったファイルは自動的に削除orアクセス禁止措置を受けます。(勿論最悪垢BANです)
またGoogleドライブと同期しなくても、Google Colaboratoryのデータは動作中Googleのcolabサーバー上に保存されています。
colab動作AUTOMATIC1111で生成された画像も初期設定なら全保存されているのでGoogleの各種スキャンを受ける可能性があります。
一切保存しないようにセットしても結局はGoogleのサーバー動作なので対象になっている可能性があります。
新しく書いた人より
上にも書いたけど、Colabにどえっっっっなのを置いても大丈夫だった。
何が言いたいかというと、「Colabはある程度は大丈夫だった。」
ということです。
※ーーーに関しては、自分の思い込みなので文字間違っていたら消しといてください。

Googleに限らず性的コンテンツの規制はAppleやMicrosoft等のストレージサービスも似たような感じです。

おまけ5・起動の度に設定が初期化されるのがめんどくさい。設定引き継げない?

毎回サンプラーを指定し直したり、いちいちクオリティタグを入力したりするのは面倒ですよね。
WebUIの設定情報はstable-diffusion-webuiフォルダ内のconfig.jsonui-config.jsonに保存されています。接続を切断する前にこれらを保存しておけば、次回以降起動時にこの2ファイルをcolabに放り込んで前回の設定を復活させることが可能です。
まずWebUIを起動して好きな設定にしたら、colabではなくWebUIだけを再起動します。その状態でconfig.jsonとui-config.jsonをダウンロードします。そして次回起動時にcolab内のstable-diffusion-webuiフォルダに上記2ファイルをアップロードすれば完了です。
ui-config.jsonをメモ帳で編集すると、起動時のプロンプト・生成サイズ・バッチ数・CFGスケールなどを指定できます。あらかじめクオリティタグなどを記入しておくと便利です。
ちなみに、config.jsonとui-config.jsonをドライブに保存しておき、driveにマウントした上でWebUIの起動コードの直上に

!cp /content/drive/MyDrive/config.json  /content/stable-diffusion-webui/
!cp /content/drive/MyDrive/ui-config.json  /content/stable-diffusion-webui/

の2行を挿入すると、起動時に自動で設定ファイルが読み込まれるようになります。とても便利なのでcolabを常用する方は活用していただきたいです。
同じ要領でstyles.csvを追加すればstyleも引き継げます。プロンプトを複数使い分けたい人におすすめです。

おまけ6・昨日まで動いていたノートブックが急に動かなくなった!/急に画像が生成できなくなった!

colabユーザーあるあるです。
colabのライブラリーが告知なく更新される(しかも割と頻繁に)ので、動作環境が変わりノートブックが正常動作しなくなることが原因です。
また、WebUI自体のバージョンアップが原因になることもあります。
こうなった場合、解決には専門的な知識が必要になります。
突如ノートブックが動作しないORエラーを吐くようになった場合、基本的にはノートブック作者が対応してくれるのを待つ以外にありません

出力されたエラーコードをChatGPTに投げつけると解決策を伝授してくれるかもしれません。
それでもpython及びcolabの記法、それとpytorchのバージョンや依存関係に関する最低限の知識は必要です。

おまけ7・Forge版も動くの?

動きます。colabにおいても通常版より生成が速くなることが確認できました。
一部拡張機能が使えないなど問題はありますが、生成時間を短縮したい人・FLUX.1を試してみたい人にはおすすめです。
Forge用の最小構成コードを置いておくので、興味のある方は試してみてください。
Forgeは通常のSDWebUIとはディレクトリ名が変わるので注意してください。モデルダウンロードや拡張機能導入のコードもForge用に書き換える必要があります。

!pip install torch==2.3.1 torchvision==0.18.1 torchaudio==2.3.1 --index-url https://download.pytorch.org/whl/cu121
!git clone https://github.com/lllyasviel/stable-diffusion-webui-forge
%cd /content/stable-diffusion-webui-forge
!wget https://huggingface.co/cagliostrolab/animagine-xl-3.1/resolve/main/animagine-xl-3.1.safetensors -O /content/stable-diffusion-webui-forge/models/Stable-diffusion/animagine-xl-3.1.safetensors
!python launch.py --share --no-half-vae

Forgeの生成タイムも計測してみました。計測条件は前述のタイム表と同じです。
T4・L4ならおおむね1.4倍くらい高速化することが確認できました。

T4-pngT4-jpgL4-pngL4-jpgA100-pngA100-jpg
SDXL(1024・15step・5枚)79.3sec72.7sec40.1sec34.2sec15.5sec9.8sec
SD1.5(512・28step・10枚)48.4sec47.3sec24.1sec20.9sec14.2sec11.3sec

指摘・更新するべき箇所や助言など

  • 導入用ノートブックでcolabのランタイムの接続解除は「Start Stable-Diffusion」の「▶」ボタンを押して切る以外に方法はないのでしょうか? -- 2023-05-15 (月) 15:44:31
    • メニューのランタイムのところにセッションの管理っていう項目があってそこから切断することもできます -- 2023-05-28 (日) 14:01:17
  • 「Stable Diffusion」を無料枠の禁止と説明していますが、名称が不正確です。実際に禁止されて警告や切断の扱いとなるのは、Stable Diffusion web UIComfyUIまたはその派生物のようにUIを持ったStable Diffusionで、Diffusersやsd-scriptsのようなUIを持たないStable Diffuionの画像生成や学習は依然自由に行えます。これはノートブック上での操作が規約表現上の「インタラクティブなコンピューティング」にあたるため、問題ない行為であるのではないかと解釈しています。 -- 2023-12-20 (水) 23:05:59
  • CoLabはBANされにくいんじゃなくて規約違反データチェック頻度が低いんだと思う。外部公開できないし数時間で消えるし。ただ、BAN基準自体は同じだろうし、稀なチェックが1分後に来てBANされるかもしれないし、BANされたらそのGoogleアカウントは連携ログイン含めて全滅なので、エロ・グロ・巨乳ではない女性の画像の生成はやめたほうが無難かと。使いたいなら規約は守ろう。 -- 2024-03-05 (火) 20:31:12
    • エロ画像作れない画像生成なんて楽しいのかよ!!という向きもあろうが、うーん、まあ、まあまあ楽しいのである。エロ系が他のところで解消されてる前提になっちゃうけど。 -- 2024-03-05 (火) 20:31:53
  • 「必要最小限構成のノートブックでWebUIを体験」を試そうと思っただけど動かんくね? -- 2024-10-27 (日) 18:17:18
    • とりあえず応急処置してみました(画像生成は確認できました)。昨日までは問題なく動いてたんですが急に環境が変わって動かなくなったようです。 -- 2024-10-27 (日) 19:19:11
      • 自分だけかと思って悩んでました!。迅速な対応ありがとうございます。 -- 2024-10-27 (日) 19:26:29
      • どうやらgradioのバージョン変更が今回動かなくなった原因のようです(4.43.2>5.4.0)。fastapiはなくても大丈夫だったので削除しました。これで当面は大丈夫なはず・・・ -- 2024-10-27 (日) 21:09:02
      • ありがとう! -- 2024-10-28 (月) 19:09:36
  • L4思ってたより速いな。4070s買おうと思ってたけど月5800円でほぼ使い放題だしもうこれでいい気がしてきた -- 2024-11-13 (水) 21:46:32

(Tips)

  • 既存コメントの先頭にあるラジオボタンをONにすると、そのコメントの下にぶら下げ返信する形になる(ツリー構造)。
  • コメントの文中で↵ボタン(下の画像参照)を押すと「&br;」の文字列が挿入される。これは送信後に改行として機能するので、文章の整形に役立つ。
    br.png

短縮URL生成