見出し画像

Windows機へのDragNUWA導入とお試し


何これ

Project NUWAによるDragNUWA(https://github.com/ProjectNUWA/DragNUWA)をWindows環境で動かすまでの試行錯誤の話。
最初Venvで入れようかなと思ったものの、色々面倒そうだったのでサクッと諦めて提供側想定のcondaで入れることに切り替えて動かした(動けばいいのよ動けば)。
なおグラボは4090環境なので動作後の所要時間とかは別の話かもしれない。

condaで導入する

導入に向けた基本的なコマンド(公式からの抜粋)

公式で提供されている導入用のコマンドは以下だが、記載通りの入れ方をしようとするといくつか依存やらの問題が発生した。(多分Linux想定だから)

git clone https://github.com/ProjectNUWA/DragNUWA.git
cd DragNUWA

conda create -n DragNUWA python=3.8
conda activate DragNUWA
pip install -r environment.txt

出力されたエラーと対処内容(動けばいいんだよ動けば)

  • ERROR: No matching distribution found for triton==2.0.0 
    →Windowsはない。無視してよいはずだがenvironments.txtを#でコメントアウトする。

  • ERROR: Double requirement given: pyyaml (from -r environment.txt (line 50)) (already in pyyaml>=6.0.1 (from -r environment.txt (line 21)), name='pyyaml')
    →environments.txtを#でコメントアウトした。他にもいくつかある。

  • Torch周りのエラー
    →Windowsは指定が必要なのでenvironment.txt側から外してコマンド導入した。

  • Deepspeed導入時に以下のエラー
    LINK : fatal error LNK1181: 入力ファイル 'aio.lib' を開けません。
    →Deepspeedの最新はWindows対応がない(はず)。個別にインストールする。

  • FileNotFoundError: [Errno 2] No such file or directory: 'models/drag_nuwa_svd.pth'
    →GoogleDriveに格納されているファイルが4799.pthというファイル名になっているため。DL後、配置時にリネームする。

整理後

black==23.7.0
chardet==5.1.0
clip @ git+https://github.com/openai/CLIP.git
einops>=0.6.1
fairscale>=0.4.13
fire>=0.5.0
fsspec>=2023.6.0
invisible-watermark>=0.2.0
kornia==0.6.9
matplotlib>=3.7.2
natsort>=8.4.0
ninja>=1.11.1
numpy>=1.24.4
omegaconf>=2.3.0
open-clip-torch>=2.20.0
opencv-python==4.6.0.66
pandas>=2.0.3
pillow>=9.5.0
pudb>=2022.1.3
pytorch-lightning==2.0.1
pyyaml>=6.0.1
scipy>=1.10.1
streamlit>=0.73.1
tensorboardx==2.6
timm>=0.9.2
tokenizers==0.12.1
#torch>=2.0.1
torchaudio>=2.0.2
torchdata==0.6.1
torchmetrics>=1.0.1
#torchvision>=0.15.2
tqdm>=4.65.0
transformers==4.19.1
#triton==2.0.0
urllib3<1.27,>=1.25.4
wandb>=0.15.6
webdataset>=0.2.33
wheel>=0.41.0
xformers>=0.0.20
colorlog
deepdish
json_lines
msgpack
configobj
psutil
h5py
imageio
tensorboard
moviepy
#deepspeed
gradio==3.50.2
#pyyaml
#pandas
#einops

適当に直したenvironment.txtの中身

NUWAのPretrained Weightは以下にある。上記の通り、DLして/modelsフォルダ配下に格納する際にファイル名を変更しておく。
https://drive.google.com/file/d/1Z4JOley0SJCb35kFF4PCc6N6P1ftfX4i/view

その上で以下のコマンドを実行して導入する。

#とりあえず持ってくる
git clone https://github.com/ProjectNUWA/DragNUWA.git
cd DragNUWA

#condaをpython3.8で切ってアクティベート
conda create -n DragNUWA python=3.8
conda activate DragNUWA

#torch個別インストール ついでにxformersも
pip install torch==2.0.1+cu118 torchvision==0.15.2+cu118 --index-url https://download.pytorch.org/whl/cu118
pip install --upgrade -r environment.txt
pip install xformers==0.0.20

# DeepSpeedをインストール
 pip install https://github.com/melMass/DeepSpeed/releases/download/v0.12.7/deepspeed-0.12.7+40342055-py3-none-any.whl

実行と結果

以下のコマンドを入れてしばらく待てば、デモ用のgradio画面が立ち上げられる状態になる。

python DragNUWA_demo.py

UploadImageでこんな画像をアップロードして…

適当な画像を用意した

こんなふうにDragを追加する。 Add Dragを選択して画像で起点としたい箇所をクリックするとそこに赤い点が打たれるので、そこから方向を指示するようなイメージのようだ。

こんな感じのDragを入れてみた

Dragの指示が終わったら、Runボタンを押して動かしてみる。
4090環境だと数十秒程度だった。

指示通りには動いていそう。576*320になっている分絵の詳細情報は落ちているが

とりあえず動いたのでヨシ!
軽く触った限り、指示内容によってはモデル側がDragで意図している内容を読み取れずに変な変化を与えることもままあるようで、そこは改善が待たれる。
これ単体でゲームチェンジャーになるかは「?」だが前後の修正も含めて考えるなら面白い技術な気はする。

なお、実行中は常時15GB程度のVRAMを持っていかれていた。これが通常運転かは私にはわからない。


この記事が気に入ったらサポートをしてみませんか?