Stable Diffusion2.0を試してみる

Stable Diffusion2.0を試してみる

2023年1月29日
知恵
Pocket

Stable Diffusionの3つめの記事になります。

古いバージョンは、以下を参照してください。

Stable Diffusionも試してみる

Stable Diffusionも試してみる

AIによる画像生成めちゃくちゃ熱いですね。 DALL·E 2に続き https:…
zaitakukinmu.com
Stable Diffusion1.5を試してみる

Stable Diffusion1.5を試してみる

すでに一度Stable Diffusionを動作させたことがある方向けになります…
zaitakukinmu.com

colabから始めます。新規のノートブックを作成します。

(colabの無料版だとメモリが足りなくてエラーになり画像生成ができないです)

編集 => ノートブックの設定 からGPUに変更します。

GPUにしていない場合に、こちらのエラーが出ます。

RuntimeError                              Traceback (most recent call last)
<ipython-input-2-cad0eb10b41b> in <module>
      5 
      6 pipe = StableDiffusionPipeline.from_pretrained(model_id, revision='fp16', torch_dtype=torch.float16)
----> 7 pipe = pipe.to('cuda')

5 frames
/usr/local/lib/python3.8/dist-packages/torch/cuda/__init__.py in _lazy_init()
    227         if 'CUDA_MODULE_LOADING' not in os.environ:
    228             os.environ['CUDA_MODULE_LOADING'] = 'LAZY'
--> 229         torch._C._cuda_init()
    230         # Some of the queued calls may reentrantly call _lazy_init();
    231         # we need to just return without initializing in that case.

RuntimeError: No CUDA GPUs are available

以下のコマンドを入力します。

!pip install --upgrade git+https://github.com/huggingface/diffusers.git transformers accelerate scipy

以下が出たら完了です。

Successfully installed accelerate-0.15.0 diffusers-0.13.0.dev0 huggingface-hub-0.12.0 scipy-1.10.0 tokenizers-0.13.2 transformers-4.26.0

以下のコマンドを入力します。

import torch
from diffusers import StableDiffusionPipeline

model_id = 'stabilityai/stable-diffusion-2'
device = "cuda"

pipe = StableDiffusionPipeline.from_pretrained(model_id)
pipe = pipe.to(device)

以前あった、TOKENの入力等は不要になっています。

1.5の時の出力結果と比較していきます。

prompt = "cute cat paly with ball"
image = pipe(prompt)["sample"][0]
image.save(f"cat.png")

無料版だと以下のエラーがでて実行できませんでした。。。。

PRO版にアップグレードしないと厳しそうですね。

---------------------------------------------------------------------------
OutOfMemoryError                          Traceback (most recent call last)
<ipython-input-4-0ca005f4d8df> in <module>
      1 prompt = "cute cat paly with ball"
----> 2 image = pipe(prompt, height=512, width=512)["sample"][0]
      3 image.save(f"cat.png")

13 frames
/usr/local/lib/python3.8/dist-packages/diffusers/models/cross_attention.py in get_attention_scores(self, query, key, attention_mask)
    220             attention_scores = attention_scores.float()
    221 
--> 222         attention_probs = attention_scores.softmax(dim=-1)
    223         attention_probs = attention_probs.to(dtype)
    224 

OutOfMemoryError: CUDA out of memory. Tried to allocate 640.00 MiB (GPU 0; 14.76 GiB total capacity; 12.64 GiB already allocated; 189.88 MiB free; 13.33 GiB reserved in total by PyTorch) If reserved memory is >> allocated memory try setting max_split_size_mb to avoid fragmentation.  See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CONF

Notion AIによるまとめ

  • 「Stable Diffusion 2.0」というアルゴリズムが開発された。
  • このアルゴリズムは、金融市場において重要な役割を果たす。
  • より高速で正確な分析が可能になり、取引の精度が向上する見込みがある。