Imagicをローカルマシンで実行する
環境
WSL2 ubuntu 20.04
jupyter-lab 3.4.8
CUDA 11.7
RTX3090
jupyterlabをインストールするとWSLのlocalhostにたったjupyterのサーバーのWeb UIにWindowsからアクセスできる code:zsh
pip install jupyterlab
上のnotebookはcolab前提なのでいろんなトラブルがあったが、すべて潰した結果ローカルで動かすことができた
notebookをこうすればいい
課題
この環境でも学習に10分程度かかるので、いろんなシチュエーションをたくさん出すにはひと工夫必要
ローカルにすでにあるモデルを使うにはどう指定すれば?
--.icon
ローカル版の様々なトラブル
huggingfaceにログインできない
code:zsh
# これはRTX3090環境ではエラーになる
# なので迂回策の方をや...40分!?うそやろ...
# If precompiled wheels don't work, install it with the following command. It will take around 40 minutes to compile.
# コンパイルエラー
RuntimeError:
The detected CUDA version (11.7) mismatches the version that was used to compile
PyTorch (10.2). Please make sure to use the same CUDA versions.
installedなPythorchは1.12.1+cu102なのに、エラー原因の10.2はどこからきたの?
Pytorchをアップデートしてみる
code:zsh
# jupyterで実行できなかったのでこうする
print(torch.__version__) # 1.12.1+cu102になった。kernel rebootが必要?
# でも今回は進んでいる様子...
# できた
OUTPUT_DIRの工夫が必要
こんな感じにしておく
code:py.diff
# google driveはつかわない
- save_to_gdrive = True #@param {type:"boolean"} + save_to_gdrive = False #@param {type:"boolean"} # pathをProject rootにしておく
- OUTPUT_DIR = "/content/" + OUTPUT_DIR
+ import os
+ OUTPUT_DIR = os.getcwd() + "/content/" + OUTPUT_DIR
学習に失敗する
code:zsh
!accelerate launch train_imagic.py \
--pretrained_model_name_or_path=$MODEL_NAME \
--output_dir=$OUTPUT_DIR \
--input_image=$INPUT_IMAGE \
--target_text="{TARGET_TEXT}" \
--seed=3434554 \
--resolution=512 \
--mixed_precision="fp16" \
--use_8bit_adam \
--gradient_accumulation_steps=1 \
--emb_learning_rate=1e-3 \
--learning_rate=1e-6 \
--emb_train_steps=500 \
--max_train_steps=1000
# ...
AttributeError: 'NoneType' object has no attribute 'cuDeviceGetCount'
code:diff
!accelerate launch train_imagic.py \
--pretrained_model_name_or_path=$MODEL_NAME \
--output_dir=$OUTPUT_DIR \
--input_image=$INPUT_IMAGE \
--target_text="{TARGET_TEXT}" \
--seed=3434554 \
--resolution=512 \
--mixed_precision="fp16" \
- --use_8bit_adam \
--gradient_accumulation_steps=1 \
--emb_learning_rate=1e-3 \
--learning_rate=1e-6 \
--emb_train_steps=500 \
--max_train_steps=1000
なぜかこれで進むようになった
optimizing embeddingは500itあり、RTX3090で2.77it/s code:Zsh
Convert weights to ckpt to use in web UIs like AUTOMATIC1111
code:zsh
!python convert_diffusers_to_original_stable_diffusion.py --model_path $OUTPUT_DIR --checkpoint_path $ckpt_path $half_arg
code:zsh
ModuleNotFoundError: No module named 'torch'
どうやら%pip list と!pipは結果が違うらしい
!はシェル実行
%はmagic function
なんなんだ...わからん
すべての %pip コマンドはノートブックの先頭に配置する必要があります。 環境を変更する %pip コマンドの後に、ノートブックの状態がリセットされます。 ノートブックで Python メソッドまたは変数を作成し、それよりも後のセルで %pip コマンドを使用すると、メソッドまたは変数は失われます。
%pip を使用してコア Python パッケージ (IPython など) をアップグレード、変更、またはアンインストールすると、一部の機能が期待どおりに動作しなくなる場合があります。 たとえば、IPython 7.21 以上は、Databricks Runtime 8.1 以下と互換性がありません。 このような問題が発生した場合は、環境をリセットしてください。リセットするには、ノートブックをデタッチしてもう一度アタッチするか、クラスターを再起動します。
%pipの方いいという意見もある
もしかして、!pythonしているpython(=systemのpython)とjupyter nodeのpythonは異なるの?
Since you are using an Ampere GPU you would need to use CUDA >=11.0 and the 10.2 runtime won’t even work.
Make sure to use the PyTorch binaries with CUDA 11 and try to rebuild.