2024/12/5、ADetailerなどでYOLO系のモデルを使用すると不正と認識され、ランタイムへのアクセスがブロックされる現象が発生しました(詳細はこちら)。
ADetailerなどを使用する際は、念のためUltralyticsをv8.3.40にダウングレードすることを推奨します。
Colabについて
Google Colaboratory、通称Colabで行える機械学習向けのサービス。クラウド上にローカル同等の環境を構築して画像生成を試みます。
colab以外にはPaperspace(Paperspace版導入を参照)やRunpodなどが利用されています。
- メリット
- 新PCやグラボを買うより遥かに安上がり。約1100円で70時間分の稼働権を得られる。
- Googleアカウントと課金手段があればすぐにはじめられる。
- googleドライブとの接続が容易。ドライブにあるデータ(モデルやloraなど)がそのまま利用できる。
- 持っているPCのスペックに左右されない。もちろんグラボなしでもOK。ノートPCでも利用可能。
- SDWebUIに限らずComfyUIやfooocusなども利用可。学習も可能なのでLora作成もできる。
- 他の画像生成サービスとは異なり、ローカル環境そのものを体験できる。PC購入前の試用にも最適。
- colabで使えるGPUはVRAMが大きい(最小でも15GB以上)。学習のときだけcolabを使う人もいる。
- 新PCやグラボを買うより遥かに安上がり。約1100円で70時間分の稼働権を得られる。
- デメリット
- 低額とはいえ基本的に課金は必須。
- 生成回数ではなく接続時間で課金額が決まる。目的を定めず接続してボーっとしていると利用可能時間がどんどん減少する。
- 一般的な生成AI(NovelAIなど)は生成回数で料金が決まる。料金が時間制なのはcolabの大きな特徴。
- クラウドを利用する以上安定した回線は必要不可欠。ちょくちょく切断が発生する回線だとかなりのストレスになる。
- アクセス切断のたびに全データが抹消される。接続のたびにインストールが必要なので起動まで毎回5分から10分程度かかる。この待ち時間中も課金される。
- 生成した画像も切断と同時にすべて吹っ飛ぶので、欲しい画像はあらかじめ保存しておく必要がある。
- SDWebUIなどは基本的にPC環境での稼働を前提として作られているので、クラウド環境では作動しない機能がある。
- WebUIのバージョン、pytorchやgradioなどの依存関係、colabライブラリーの頻繁な更新など、クラウド上の環境の変化に左右されやすい。
- 昨日までは動作してたのに今朝から突然エラーが出て動かない・・・などのトラブルがしばしば発生する。
- またcolab規約で禁止されている部分で画像生成で使用する場合下記は特に注意が必要だと思われます。
・複数アカウントの使用による、アクセスまたはリソース使用量の制限の回避
・ディープフェイクの作成- エロ画像規定はColabでエロ画像生成して大丈夫なの?参照
基本情報
- 詳細な情報は公式ページを参照してください→Colab公式の課金案内
- 都度課金と月額課金のどちらかを選べる。まずは都度課金してみて、定期的に利用するようなら月額課金に移行すればいいと思う。
- 月額課金してすぐに解約手続きをすると、課金日から1か月後まで月額課金者扱いとなりその後自動解約される。もらったCUはちゃんと90日間有効。T4でハイメモリを使いたい人はやってもいいかも。
- 契約満了まで課金コース変更ができなくなるデメリットもある。
- 月額課金してすぐに解約手続きをすると、課金日から1か月後まで月額課金者扱いとなりその後自動解約される。もらったCUはちゃんと90日間有効。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,179 | 100CU | 通常のみ |
¥5,767 | 500CU | ||
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を選ぶとよい。
- SD1.5ならT4で十分。SDXLでもHires. fixを使わないならT4+ハイメモリも選択肢に入るが、L4の生成速度を体感するとT4には戻りづらい。
- A100は「Loraを作りたい」「マージモデルを作りたい」「FLUX.1を本格運用したい」「AI動画生成をしたい」など高い負荷がかかる明確な使用目的がある人向け。
12000円弱(1000CU)払えばVRAM40GBのGPUを月120時間程度稼働できると考えると、一概にコスパが悪いとは言い切れない(VRAM40GB超のグラボは最低でも70万以上はする)。
- ハイメモリを選ぶとシステムRAM容量が拡大する。メモリと生成速度は特に関係ない(ハイメモリにしても生成速度は上がらない)。SDXLはノーマルメモリだとUIが落ちることがあるのでハイメモリが安定する。
- ノーマルメモリでFLUX.1を使うと生成完了時にシステムRAM負荷が跳ね上がり、仕上げの段階でUIが落ちて結果的に生成失敗になりました。FLUX.1はハイメモリ必須と考えてよさそうです。
- SD1.5でもControlNetを複数適用するなど負荷の高い行為をするとUIが落ちる。この場合もハイメモリにすれば解決する。
- ColabのGPUごとの生成速度はこちら
- 下表の生成速度はpngを基準にしています。FLUX.1はdevのタイムです。
- 2024年11月現在では、T4・L4・A100の3つのGPUから選択できる。スペックが高いほどCUがガンガン削れるので注意。CPUとTPUは選ばないでね。
GPU | VRAM | CUDA コア数 | 生成速度 | 消費CU (CU/h) | メモ |
---|---|---|---|---|---|
T4 | 15GB | 2560 | 1.5: 100% XL: 100% FLUX: 100% | 1.44*1 1.66*2 | SD1.5向け。100CUで一か月70時間ほど稼働させられる。 VRAMの恩恵でSDXLも出力できるが少々時間がかかり、 さらにL4よりコスパで劣るため連続生成には不向き。 |
L4 | 24GB | 7424 | 1.5: 180% XL: 199% FLUX: 244% | 2.4 | SDXL・FLUX.1を使いたいならこちら。 SD1.5でもT4の生成速度が遅いと感じたら切り替えるのもあり。 2024年10月1日から消費CUが激減してT4以上のコスパになり、 11月21日にはさらに下がって当初の半分になった。 100CUで40時間以上稼働でき、学習のコスパもそこそこ。 |
A100 | 40GB | 6912 | 1.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を選んでください(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を選んでください(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
コピペしたら、一行目の「!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を使用する場合、クオリティタグとして
と入力してもう一度画像を出してみましょう。1girlとだけ入力した先ほどの結果とはクオリティがけた違いに変わるはずです(Animagineのクオリティタグについての解説はこちら)。プロンプト →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]
WebUIをカスタマイズする
先ほど、一部を除いてと言いました。
拡張機能やモデル、VAE、学習データ等入れるときは通常の1111と比べて若干面倒ではあります。
これは、colabがアクセス切断と同時に全データを削除するためです。
通常とは全く異なるやり方で諸々入れる事になるので、よく読んで進めてください。
- 拡張機能をインストールしたい→こちら
- モデル・VAE・学習データ(Loraなど)を追加したい
拡張機能をインストールしておく
拡張機能導入についてです。これを見ながら入れてもいいのですが、一回起動することに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に用意している場合は、上記最小構成のモデルダウンロード部分のコードを省略できます。
Stable Diffusion Web UIには多くのオプション機能が存在しており、活用次第でかなり便利になります。→詳しくは「webui-user.bat」を編集する参照。
そこで、①driveにデータを用意しておき、②driveとcolabをリンクして、③colabからdriveに保存したデータの場所を指定すれば、drive上のファイルを直接利用することができます。
こちらのページも参照してください→Colab1111でGoogleドライブからモデルを読み込む- メリット:データのダウンロードが必要最小限になるので起動が速くなる。面倒なコード実行・ファイル操作を省略できる
- デメリット:データが多いとgoogleドライブの空き容量を食いつぶす(課金すれば容量拡張可能)
①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
このように、引数を追加したい場合は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 --ckpt-dir /content/drive/MyDrive/model
- モデルとLoraの場所を指定する場合
!python launch.py --share --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と同じ使い方です。
生成した画像を保存する
colabは接続を切ると出力画像を含め全データが抹消されます。
欲しい画像はあらかじめ保存しておきましょう。
一枚一枚保存してもいいのですが、ここではgoogleドライブに直接保存する方法と、colab上に出力された画像をまとめてダウンロードする2通りの方法を紹介します。
画像を直接ドライブに出力する
- まずはcolabどトライブをリンクさせます。
下記のコードをコピペして実行します。from google.colab import drive drive.mount('/content/drive')
- 次はドライブに画像出力用のフォルダを作ります。
ドライブ直下に「outputs」フォルダを作り、その中に「images」「grids」2つのフォルダを作ります。
(本来はさらにtex2img・img2img・Extrasに分けて保存されるのですが、作成が面倒だと思うので細分化していません。)
そしてSDWebUIのSettingsタブのイメージ保存ディレクトリをすべて
に書き換えます(tex2img・img2img・Extrasの3か所すべて)。/content/drive/MyDrive/outputs/images
同様にグリッド保存ディレクトリをすべて
に書き換えます(tex2img・img2imgの2か所)。/content/drive/MyDrive/outputs/grids
- Apply settingsを押して設定を確定し、念のためにUIを再起動して生成してみましょう。ドライブに直接出力されているはずです。
これでcolabを切断しても画像がドライブに残るようになりました。 - ドライブ上にNSFW画像を直接出力するのはリスクが高いです。
「Colabでエロ画像生成して大丈夫なの?」の記述や筆者の肌感覚からして、colab上の画像よりドライブ上の画像のほうがアウト判定を食らいやすい気がします。
二次元えっち画像や実写ロリ系画像のドライブ出力は避けたほうが無難でしょう。
下記を参考にcolabから直接ダウンロードする方法も検討してみてください。
まとめて画像のダウンロードする方法
基本は右下にある「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
を一番下に置いておくとよい。
(モデルやVAEなどの引数を追加した場合はそれも忘れずに!)
このコードは、Stable diffusionを起動するためのコマンドである。
これを置いといておけば、生成途中になんかあった時でもコードを停止してこのコマンドを実行すれば良いだろう。
※重大なバグが出たときは、ランタイム自体を再起動することになるかもしれません。
おまけ2・拡張機能がインストールできない/アンインストールできない。
クラウドを使う以上「--share」の引数を使って外部アクセスを可能にする必要があります。
しかし、ローカルPC上から外部アクセスを許可すると悪意を持った人間からの外部アクセスも許してしまいます。
その結果おかしな拡張機能を勝手にインストールされ、PCがトロイの木馬型スパイウェアに感染させられるなど、セキュリティのリスクがあります。
そこで、--share有効時はUI上から拡張機能をインストール(アンインストールも)できないように安全ロックがかかっているのです。
上記で紹介したようにノートブック上の記述から直接拡張機能をインストールすることはできるので、基本的にはこの方法を使ってください。
一応、引数に「--enable-insecure-extension-access」を付け足すと安全ロックが外れ、WebUI上からも拡張機能をインストールできるようになります。
ただ、--shareを使う以上、常に外部から侵入されるリスクと隣り合わせなのでおすすめはできません。
クラウドとはいえ予想外のトラブルに巻き込まれる恐れがあるので、安全ロック解除は慎重に行ってください。
おまけ3・グラボごとの生成速度と高速化
- 「クラウドを利用する」ことの特性上、通信ラグや回線混雑の影響を非常に受けやすいです。時間帯によって生成スピードが安定しない場合があります。
- ボトルネックをすこしでも減らすために考えられる手段は以下の通りです。とにかくデータ量を減らしましょう。
- 生成画像・グリッド画像・プレビュー画像を全てjpgにする
- SDXL以上の高解像度なら効果的です。WebUIの設定画面で画像の拡張子を変更できます(デフォルトではすべてpng)。そこそこの生成速度アップが期待できます。webpでも構いません。
- jpgでもWebUIのPNG infoでメタデータは参照できました。こだわりがなければ常時jpg設定でもいいかもしれません。
- 少なくともライブプレビューとグリッド画像はjpgがおすすめです。pngのグリッド画像はサイズがとても大きいので・・・
- ライブプレビューを切る
- 気持ち速くなるかな程度でそれほど目立った効果はありませんでした。ライブプレビューはオンにしておき生成スキップを活用した方がいい気がします。
- (i2mの場合)画像を小さくリサイズする/拡張子をjpgに変更する
- 転送データ量が減少し速度アップが期待できます。
- ngrokを使う
- Forgeを使う
- 生成画像・グリッド画像・プレビュー画像を全てjpgにする
- 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-png | T4-jpg | L4-png | L4-jpg | A100-png | A100-jpg | |
---|---|---|---|---|---|---|
SDXL(1024・15step・5枚) | 111.0sec | 96.6sec | 55.7sec | 49.5sec | 25.9sec | 20.8sec |
SD1.5(512・28step・10枚) | 65.7sec | 63.7sec | 36.5sec | 33.8sec | 25.2sec | 22.8sec |
- FLUX.1のタイムも計測してみました。Forgeを使用しています。
- dev-bnb-nf4を20step、schnell-bnb-nf4を4stepでそれぞれ4枚で計測しました。
- 起動直後やモデル切り替え直後の1枚目の生成は、モデル読み込みのため時間がかかります。
- 速度計測はモデルのロード時間を除外して行いました。
- A100が傑出した結果を残していますが、devだとL4ですらパワー的に厳しいようでpngとjpgの差がXLより縮みました。
- 特にT4は生成速度が転送速度を下回ったらしく、pngとjpgで差がつかないという結果になりました。
T4-png | T4-jpg | L4-png | L4-jpg | A100-png | A100-jpg | |
---|---|---|---|---|---|---|
dev-bnb-nf4(20step4枚) | 397.3sec | 398.7sec | 162.9sec | 160.4sec | 45.7sec | 41.9sec |
schnell-bnb-nf4(4step4枚) | 95.3sec | 86.8sec | 38.6sec | 34.4sec | 13.3sec | 9.3sec |
おまけ4・モデル等のダウンロードを高速化する
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に戻してください。
おまけ5・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等のストレージサービスも似たような感じです。
おまけ6・起動の度に設定が初期化されるのがめんどくさい。設定引き継げない?
毎回サンプラーを指定し直したり、いちいちクオリティタグを入力したりするのは面倒ですよね。
WebUIの設定情報はstable-diffusion-webuiフォルダ内のconfig.jsonとui-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も引き継げます。プロンプトを複数使い分けたい人におすすめです。
おまけ7・昨日まで動いていたノートブックが急に動かなくなった!/急に画像が生成できなくなった!
colabユーザーあるあるです。
colabのライブラリーが告知なく更新される(しかも割と頻繁に)ので、動作環境が変わりノートブックが正常動作しなくなることが原因です。
また、WebUI自体のバージョンアップが原因になることもあります。
こうなった場合、解決には専門的な知識が必要になります。
突如ノートブックが動作しないORエラーを吐くようになった場合、基本的にはノートブック作者が対応してくれるのを待つ以外にありません。
出力されたエラーコードをChatGPTに投げつけると解決策を伝授してくれるかもしれません。
それでもpython及びcolabの記法、それとpytorchのバージョンや依存関係に関する最低限の知識は必要です。
おまけ8・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
Forgeの生成タイムも計測してみました。計測条件は前述のタイム表と同じです。
T4・L4ならおおむね1.4倍くらい高速化することが確認できました。
T4-png | T4-jpg | L4-png | L4-jpg | A100-png | A100-jpg | |
---|---|---|---|---|---|---|
SDXL(1024・15step・5枚) | 79.3sec | 72.7sec | 40.1sec | 34.2sec | 15.5sec | 9.8sec |
SD1.5(512・28step・10枚) | 48.4sec | 47.3sec | 24.1sec | 20.9sec | 14.2sec | 11.3sec |
指摘・更新するべき箇所や助言など
- 「Stable Diffusion」を無料枠の禁止と説明していますが、名称が不正確です。実際に禁止されて警告や切断の扱いとなるのは、Stable Diffusion web UI やComfyUIまたはその派生物のように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
- とりあえず応急処置してみました(画像生成は確認できました)。昨日までは問題なく動いてたんですが急に環境が変わって動かなくなったようです。 -- 2024-10-27 (日) 19:19:11
- L4思ってたより速いな。4070s買おうと思ってたけど月5800円でほぼ使い放題だしもうこれでいい気がしてきた -- 2024-11-13 (水) 21:46:32
- 研究でかなり重宝してるから他のクラウドサービスにみんな行ってくれないかなぁ -- 2024-11-30 (土) 02:24:50
(Tips)