目的
stable-diffusion-3.5-largeを動かそうと思います。
このモデルのサイズは16.5GBあり、動かせるGPUを購入しようとコストが嵩んでしまい少し試してみたいというレベルでは手が出しにくいです。
また、Google Colabの無料版でもVRAMを溢れてしまいました。
そこで、Lambda Cloudを利用して、低コストで動かしたいと思います。
Hugging Faceの準備
stable-diffusion-3.5-largeはStability Community Licenseで公開されています。
このライセンスは、 年間収益が100万ドル(または現地通貨換算)未満の個人または組織に対して、その収益源にかかわらず、コア・モデルの研究、非商用、および商用利用を許可しています。
今回diffusers
ライブラリを利用してモデルを読み込みますが、そのためには事前にHugging Faceでアカウントを作成して、ライセンスに同意、TOKENを発行する必要があります。
ライセンスに同意
アカウントを作成、ログインしてstable-diffusion-3.5-largeを訪れると下記の画像のような入力フォームが現れます。
必要事項を入力して同意してください。
token発行
duffusers
でHugging Faceにログインするためtokenを発行しておきます。
- ユーザーのアイコン画像をクリック
- AccessTokensをクリック
- +Create New Tokenをクリック
- Token TypeをReadとする
- Token Nameを任意の名前に設定
- Create Tokenをクリック
- 表示されたTokenを確認
後からTokenを再度表示することはできないのでわからなくならないように、メモをしておいてください。
Lambda Cloud インスタンス作成
Lambda Cloudのアカウントを作成しておきます。
- Launch instanceをクリック
2. Instance Typeを選択 -> 十分なVRAMサイズとコストを鑑みて選択。タイミングによって選べないインスタンスタイプも多いので注意
3. Regionを選択 -> 任意に選択
4. Filesystemをアタッチするか選択 -> 今回は必要ないので、Don't attach a filesystemを選択
5. SSHを利用して接続する場合は、事前に公開鍵を設定しておき選択(今回は利用しない)
6. Licenceに同意
Jupyterに接続
Launchを実行後数分間はBooting
と表示されているので、Running
になるまで待機します。
任意でサーバー名を設定しておくとよい。
Running
になったら、CLOUD IDEのLaunch
をクリックしてください。
Jupyter Notebookに接続ができます。
モデルの実行
ノートブックで以下のコードを順次実行していきます。
!pip install -U diffusers
!pip install torch transformers huggingface_hub ipywidgets accelerate sentencepiece
from huggingface_hub import login
login(token="【先ほどメモしておいたHugging FaceのTOKENを設定】")
import torch
from diffusers import StableDiffusion3Pipeline
pipe = StableDiffusion3Pipeline.from_pretrained("stabilityai/stable-diffusion-3.5-large", torch_dtype=torch.float16)
pipe = pipe.to("cuda")
image = pipe(
"A capybara holding a sign that reads Hello World",
num_inference_steps=28,
guidance_scale=3.5,
).images[0]
image.show()
image.save("capybara.png")
実行結果
%%time
をセルの1行目に設定すると実行時間を計測できます。
14秒ほどで画像が生成できました。
Lambda CloudのInstanceを削除
- 削除するインスタンスの右端をクリック
- Terminateをクリック
-
erase data on instance
を入力してTerminate instancesをクリック
-
Terminating
が終了して、instanceの表示がなくなることを確認
料金確認
Usageタブを開くと時期とインスタンス毎にコストを確認することができます。
今回は試行錯誤したので40分ほど約110円かかりましたが、実行するだけでしたら15分ぐらい50円でLaunchからTerminateができると思います。