WSL2上のDockerでStable Diffusionを動かす
環境
Inspiron 7577
* Core i5-7300HQ
* GeForce GTX 1060(6GB MAX-Q)
WSLのアップデート
- ここを参考にPowerShellでWSLのアップデートを行う
wsl --update
CUDA on WSLのインストール
sudo apt-key del 7fa2af80 wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-wsl-ubuntu.pin sudo mv cuda-wsl-ubuntu.pin /etc/apt/preferences.d/cuda-repository-pin-600 wget https://developer.download.nvidia.com/compute/cuda/11.7.0/local_installers/cuda-repo-wsl-ubuntu-11-7-local_11.7.0-1_amd64.deb sudo dpkg -i cuda-repo-wsl-ubuntu-11-7-local_11.7.0-1_amd64.deb sudo cp /var/cuda-repo-wsl-ubuntu-11-7-local/*.gpg /usr/share/keyrings/ sudo apt-get update sudo apt-get -y install cuda
sudo apt remove docker-ce docker-ce-cli containerd.io -y distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \ && curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \ && curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | \ sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \ sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list sudo apt-get update sudo apt-get install -y nvidia-docker2 docker-compose-plugin sudo /etc/init.d/docker restart
docker-composeの実行
- docker-composeファイルを作成してup
ここを参考にNVIDIA_VISIBLE_DEVICES=all
をつけておく
version: '3.6' services: cuda: image: nvidia/cuda:11.7.0-devel-rockylinux8 runtime: nvidia environment: - NVIDIA_VISIBLE_DEVICES=all tty: true volumes: - ./src:/src working_dir: /src
yum update yum groupinstall "Development Tools" -y yum install openssl-devel libffi-devel bzip2-devel wget -y wget https://www.python.org/ftp/python/3.10.6/Python-3.10.6.tgz tar xvf Python-3.10.6.tgz cd Python-3.10.6 ./configure --enable-optimizations make altinstall pip3.10 install torch torchvision
python3でGPUが使えるか確認(Trueが帰ってくればOK)
python3.10 >> import torch >> print(torch.cuda.is_available())
pip3.10 install diffusers==0.2.4 transformers scipy ftfy
python3.10 >> import torch >> from diffusers import StableDiffusionPipeline >> pipe = StableDiffusionPipeline.from_pretrained("CompVis/stable-diffusion-v1-4", revision="fp16", torch_dtype=torch.float16, use_auth_token="hf_*****************") >> pipe = pipe.to("cuda") >> prompt = "a photograph of an astronaut riding a horse" >> from torch import autocast >> with autocast("cuda"): >> image = pipe(prompt)["sample"][0] >> image.save(f"image_name.png")
auth_tokenは自前のものを使う
別の画像を作成したい場合は途中から書けばいいらしい
>> prompt="a beautiful mountain landscape" >> from torch import autocast >> with autocast("cuda"): >> image = pipe(prompt)["sample"][0] >> image.save(f"image_name2.png") >> exit()