はじめに
こんにちは これが2本目のブログとなる日高祥矢です。
今回は少し前に公開されたChatGPTと対話しながら画像生成、画像編集を行う「Visual ChatGPT」のVM上での環境構築などについてまとめてみました。
一応動かすことができたので記事を書いてみたんですけど、まだわからないことも多いので勉強していこうと思います。
僕が使ったVMは既に削除していて文章ばっかになってしまいますが、できるだけわかりやすくを心がけるので参考にしていただけたら何よりです。
あと、英語を翻訳している部分があるんですけど日本語おかしくなってたらすいません、、、
コードはGitHubに公開されているものを使用しました。
1.事前準備
事前に行ってもらいたいのはAPIキーの取得です。
APIキーがないとVisual ChatGPTはまず動かせないので必須です。
必須ではあるんですけど取得方法はそんなに難しくないので、この記事では省略させてもらいます。
2.VMの作成
それではVMの作成に移ります。文章だけの説明になってしまうのは申し訳ないです。
VMの作成で大事なのはサイズについてです。
サイズはVisual ChatGPTのどの機能を使用するかによって変わってきます。
GitHubのページの一番下あたりにそれぞれの機能当たりのGPUのメモリ使用量があるので参考にしてください。
またNvidiaのGPUを積んでいるものを選んでください。
そうしないとCUDAを動かすためにかなりめんどくさい過程を踏むことになります(僕はやってないので何とも言えませんが)
あとは自動シャットダウンを忘れないことですね。結構高価なVMになると思うので財布危なくなるかもです。
それ以外はお好みで特に問題ないと思います(バージョンの関係などで自由の範囲は狭くなるかも)
3.VM作成後の準備
VMを作成したらまずドライバのインストールを行います。
これはAzure portal上で行います。
仮想マシンへ移動→設定の拡張機能とアプリケーションからNVIDIA GPU Driver Extensionを作成します。
完了するとVMが再起動されるのでVM上で作業している場合は注意です。
次にAnacondaをインストールします。
これは難しくないと思うので説明は省略させてもらいます。
Anaconda上で以下のコマンドを実行しGitを使えるようにしておいてください。
conda install git
4.Visual ChatGPTの実行
Anacondaで環境を作りターミナルに以下の手順で入力していきます。
# リポジトリのクローン
git clone https://github.com/microsoft/TaskMatrix.git
# ディレクトリの移動
cd TaskMatrix
# 新しい環境の作成
conda create -n visgpt python=3.8
# 新しい環境をアクティブにする
conda activate visgpt
# 環境の準備
pip install -r requirements.txt
pip install git+https://github.com/IDEA-Research/GroundingDINO.git
pip install git+https://github.com/facebookresearch/segment-anything.git
# Linuxユーザの方はこちらを
export OPENAI_API_KEY={取得したAPIキー}
# Windowsユーザの方はこちらを
set OPENAI_API_KEY={取得したAPIキー}
ここまで完了したらいよいよ実行です。使用したい機能やGPUの数などによって以下のコマンドを少し変更して実行してみてください。
# CPUユーザの場合
python visual_chatgpt.py --load ImageCaptioning_cpu,Text2Image_cpu
# GPU1つの場合
python visual_chatgpt.py --load "ImageCaptioning_cuda:0,Text2Image_cuda:0"
# GPU4つの場合
python visual_chatgpt.py --load "Text2Box_cuda:0,Segmenting_cuda:0,
Inpainting_cuda:0,ImageCaptioning_cuda:0,
Text2Image_cuda:1,Image2Canny_cpu,CannyText2Image_cuda:1,
Image2Depth_cpu,DepthText2Image_cuda:1,VisualQuestionAnswering_cuda:2,
InstructPix2Pix_cuda:2,Image2Scribble_cpu,ScribbleText2Image_cuda:2,
SegText2Image_cuda:2,Image2Pose_cpu,PoseText2Image_cuda:2,
Image2Hed_cpu,HedText2Image_cuda:3,Image2Normal_cpu,
NormalText2Image_cuda:3,Image2Line_cpu,LineText2Image_cuda:3"
変更する点はどの機能をどのGPUに割り当てるか、またはどの機能を使わないようにするかですね。
5.発生したエラー
ここからはエラーが出た時に僕が行った対処法について紹介していきます。
エラー名:RuntimeError: CUDA out of memory
このエラーが出たときには主に2つの原因が考えられます。
1つ目はシンプルにGPUのメモリ容量が足りない時です。これはコマンドプロンプトで以下のコマンドを入力することで確認できます。
nvidia-smi
これで確認したときにメモリ容量が足りなさそうなときは機能を減らすかVMのサイズを大きくすることで解決します。
サイズの変更はAzure portal上から行うことができます。
2つ目に考えられる原因はPyTorchとのバージョンの関係性が悪く認識されていないときです。
この時は以下のコマンドをターミナル上で以下を入力して解決することができました。
pip install torch==1.12.1+cu113 torchvision==0.13.1+cu113 torchaudio==0.12.1+cu113 --extra-index-url https://download.pytorch.org/whl/cu113
6.終わりに
Visual ChatGPTを動かしてはみたんですけどなかなか思うような実行結果を出してくれなかったのが正直な感想です。
VMを削除したのもそれが理由の1つです。
記事を書いてから削除するべきだったと後悔しています。
もっとわかりやすい記事が書けるようにこれからも頑張っていきます!