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後、配置時にリネームする。
整理後
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の指示が終わったら、Runボタンを押して動かしてみる。
4090環境だと数十秒程度だった。
とりあえず動いたのでヨシ!
軽く触った限り、指示内容によってはモデル側がDragで意図している内容を読み取れずに変な変化を与えることもままあるようで、そこは改善が待たれる。
これ単体でゲームチェンジャーになるかは「?」だが前後の修正も含めて考えるなら面白い技術な気はする。
なお、実行中は常時15GB程度のVRAMを持っていかれていた。これが通常運転かは私にはわからない。
この記事が気に入ったらサポートをしてみませんか?