見出し画像

新版Forgeのインストールコマンド:一時ディレクトリ用@paperspace (2024/7)

ようやくForgeの本家のアップデートが始まりましたね。
この記事を公開した時点では、まだ安定板にあと一息の所です。
「新版Forge」として記載しています。gradioのバージョンが4になったのが大きいらしいですが、その凄さについては素人からすると分からないですが、今後への期待が膨らみますね。

さて、今回は、以前記事にしたComfyUIのインストールコマンドに近い感じでForgeのインストールを行いました。

そのため、今回はあらかじめインスタンスにファイルをアップロードした上でコマンドの実行を行う必要があります

また、pytorch2.3のコンテナを使用していますので、他のものでは未確認です。
※最近はComfyUIを中心に触っていることもあり、今回の記事のコマンドは定期的にアップデートするかは不明ですので、ご了承ください。

参考までに今回のコマンドの生成のために行ったことを記載しておきます。
①ForgeのGithubにあるrequirementsのバージョンを確認し、バージョンを指定しない場合と比較した。
⇒ 重複している項目で異なるものが見られた(さらに変わっているので以下の表は参考)

上記の内容を踏まえ、requirementsの内容を追記した。

以下がrequirements.txtの内容

GitPython
Pillow
accelerate
blendmodes
clean-fid
diskcache
einops
facexlib
fastapi==0.104.1
gradio==4.40.0
httpcore
inflection
jsonmerge
kornia
lark
numpy
omegaconf
open-clip-torch
piexif
psutil
pytorch_lightning
resize-right
safetensors
scikit-image>=0.19
spandrel==0.3.4
spandrel-extra-arches
tomesd
torch
torchdiffeq
torchsde
transformers==4.44.0
httpx
pillow-avif-plugin==1.4.3
basicsr
diffusers==0.29.2
gradio_rangeslider==0.0.6

torchvision
torchaudio
requests
xformers
openai-clip
insightface

これをテキストファイルに保存し、「requirements」と名前を付けて保存し、アップロードする。
※今後、アップデートで変更されたら、requirementsを確認し、バージョンを変えることで対応可能と期待。

行ったこと②
環境のインストール用のパイソンコマンドの作成
ComfyUIで記載された内容を環境構築だけに焦点を当て修正(まだ必要でないものもあるかも)
これを「DependenceInstall.py」として、アップロードする。

import os
from IPython.display import clear_output
from subprocess import call

def Deps(force_reinstall):
    os.chdir('/notebooks')
    call("pip install -r /notebooks/requirements.txt", shell=True, stdout=open('/dev/null', 'w'))
    call("pip install --root-user-action=ignore --no-deps -q accelerate==0.12.0", shell=True, stdout=open('/dev/null', 'w'))
    call("pip uninstall -qq deepspeed -y", shell=True, stdout=open('/dev/null', 'w'))
    os.environ['TORCH_HOME'] = '/tmp/cache/torch'
    os.environ['PYTHONWARNINGS'] = 'ignore'
    os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'
    call("sed -i 's@text = _formatwarnmsg(msg)@text =\"\"@g' /usr/lib/python3.11/warnings.py", shell=True)
    os.chdir('/notebooks')
    clear_output()
    done()

def done():
    import ipywidgets as widgets
    done = widgets.Button(
        description='Done!',
        disabled=True,
        button_style='success',
        tooltip='',
        icon='check'
    )
    display(done)

上記の準備が終わったら、以下のコマンドを実行すれば起動する。
上のをコピペすると以下のエラーになりました。
GPTに聞くと、非表示の文字が含まれているようです。特定のエディタでコピー&ペーストする際に、こういった非表示の文字が挿入されることがあります。とのこと。テキストエディタで行ったのが良くなかったのかと思われます。

Notebookの配置状況はこんな感じになる。
ipnbがらみの話は別記事に記載。

※番号を振っていますが、起動前にモデルのダウンロードするのが良いと思います。

①環境構築コマンド:エラーが少し出るも問題ないと思われる

# Install the dependencies
import requests, os, importlib
force_reinstall = False

# Set to true only if you want to install the dependencies again.

#-------------------
import DependenceInstall
from DependenceInstall import *;

Deps(force_reinstall)

②インストールコマンド

# /tmpディレクトリに移動します
%cd /tmp

# 既存のディレクトリを削除します
!rm -rf /tmp/stable-diffusion-webui-forge

# リポジトリをクローンします
!git clone https://github.com/lllyasviel/stable-diffusion-webui-forge.git

③起動コマンド

# /tmp/stable-diffusion-webuiディレクトリに移動してlaunch.pyを実行
!cd /tmp/stable-diffusion-webui-forge && python3 launch.py --enable-insecure-extension-access --share --gradio-queue --disable-xformers --pin-shared-memory --cuda-malloc

④モデルのインストール
ここは、これまでのforgeと同じ。以下はDiffuserからのダウンロードの方法を参照(python3に修正する必要あり、setup内も)

# Jupyter Notebook

# Hugging FaceのURLとローカルパスを指定
base_url = "https://huggingface.co/John6666/pony-realism-v21main-sdxl/resolve/main"
base_path = " /tmp/stable-diffusion-webui-reForge/models/Stable-diffusion/pony-realism-v21main-sdxl"

# /notebooks/setup_comfyui.py を実行
!python3 /notebooks/setup_comfyui.py {base_url} {base_path}

⑤コントロールネット

# コントロールネットip-adapter
!cd /tmp/stable-diffusion-webui-forge/models/ControlNet && \
wget -nc https://huggingface.co/lllyasviel/sd_control_collection/resolve/main/ip-adapter_xl.pth?download=true -O ip-adapter_xl.pth

# コントロールネットmistoline
!cd /tmp/stable-diffusion-webui-forge/models/ControlNet && \
wget -nc https://huggingface.co/TheMistoAI/MistoLine/resolve/main/mistoLine_fp16.safetensors?download=true -O mistoLine_fp16.safetensors

# コントロールネットDEPTH
!cd /tmp/stable-diffusion-webui-forge/models/ControlNet && \
wget -nc https://huggingface.co/lllyasviel/sd_control_collection/resolve/main/diffusers_xl_depth_full.safetensors?download=true -O diffusers_xl_depth_full.safetensors

⑥拡張機能のインストール:デフォルトであるので、そんなにいらない

# sd-webui-prevent-artifactのインストール
%cd /tmp/stable-diffusion-webui-forge/extensions
!git clone https://github.com/hako-mikan/sd-webui-prevent-artifact

問題なく立ち上がった。

※FP8コマンドは設定画面ではなく、右上にあります。楽になりましたね。

Pytorch 2.4にしても起動します。
コンテナがらみについては過去記事を参照してください。


いいなと思ったら応援しよう!