lambdalabsを使ってcomfyuiを立ててみる
lambdalabsを使ってcomfyuiを立ててみる
(本記事は、生成AI Advent Calendar 2024の8日目の記事です)
現状の課題
元々、お古のM1 Macbook Proを酔狂でホームサーバー化して運用して(遊んで)いた
cuda使えなくてもpytorchベースのものであればcuda->mpsにすればだいたい動く
同様にcomfyuiもそのmacbookサーバーで動かして画像生成して運用して(遊んで)いた
画像生成はできるがアニメーション作る系のワークフローを動かすとVRAMのOOME(Out of Memory)で落ちることが多発
元々生成できるとは言っても遅いかつ4090などのgpuを自前で買うのは高い
というわけで、こいつをlambdalabsで建てたgpuインスタンスに載せ替えてOOMEしないようにしてみる
結果
$0.7/hourのA10でも元々の環境(=ローカルサーバー)と変わらず手元のmacのブラウザでアクセスして8倍高速化かつ安定して生成できるようになった
(結局、VRAMとしてはそんなに変わってない。VRAMのOOMEだと思ってたけどRAMのOOMEだったかも?🤔 というか調べると実際はメモリの問題じゃないとか色々出てくるけどようわからん)
以下、OOMEになった全く同じワークフローでの生成時間比較
before
RuntimeError: MPS backend out of memory (MPS allocated: 10.67 GB, other allocations: 7.23 GB, max allowed: 18.13 GB). Tried to allocate 480.00 MB on private pool. Use PYTORCH_MPS_HIGH_WATERMARK_RATIO=0.0 to disable upper limit for memory allocations (may cause system failure).
Prompt executed in 705.28 seconds
after
Prompt executed in 93.55 seconds
comfyui起動時の表示比較
before
Total VRAM 16384 MB, total RAM 16384 MB
after
Total VRAM 22503 MB, total RAM 227496 MB
参考にした海外記事だとsshトンネル使ってるがtailscaleが便利なので今回はtailscaleを使う
そもそもlambdalabsとは
gpu付きのec2みたいなやつ。storageのマウントも簡単。安い
手順
1. アカウント作成
2. ssh公開鍵の登録
sshコマンド打つローカルマシンのssh公開鍵を登録
だいたい~/.ssh/id_rsa.pub
とか~/.ssh/id_ed25519.pub
とかの名前であるはず
暗号化方式はrsa
でもed25519
でも可
3. インスタンス作成
Launch instanceを押下
好きなgpuインスタンスを押下
初回は好きなリージョンを押下。次回以降はストレージと同じリージョンを選択
初回はCreate New Filesystemを押下。comfyui
と指定すると、/home/ubuntu/comfyui
にマウントされる
あらかじめ登録しておいたsshキーを選択しLaunch instanceを押下
ちょっと待つ
3. sshログイン
しばらくするとSSH LOGIN
のところにコマンドが表示される
ターミナルにコピペしてsshできることを確認
4. ローカルで動かしてるcomfyuiの中身をgpuインスタンスにコピー
アップロード効率考えてzipにしておく
cd /path/to/comfyui
zip -r ComfyUI.zip ComfyUI
scpでアップロード
scp ComfyUI.zip ubuntu@{your-ip-address}:/home/ubuntu/
unzipしてstorageに移動させる
cd /home/ubuntu
unzip ComfyUI.zip
mv ComfyUI/* /home/ubuntu/comfyui/
5. pip install
gpuインスタンス一度消しても、次回以降毎回pip install
しなくていいようにvenv使う
venv使うと使うとレポジトリ配下(=マウントしたstorage)に依存がインストールされる
cd /home/ubuntu/comfyui
python -m venv comfyui_venv
source comfyui_venv/bin/activate
pip install -r requirements.txt
6. comfyui起動
動かしてみる
python main.py --listen
カスタムノードに必要なパッケージがなくてエラーがでるので都度pip install
する
7. ブラウザからアクセスできるように
お家vpnを簡単に作れる(=社内からだけアクセス可能な社内サーバーが簡単に建てられる)のでtailscaleがおすすめ
が、sshトンネルでも可
sshトンネルでのやり方は参考記事を参照のこと
ssh元のマシンにtailscale入れとく
brew install tailscale
tailscale起動してログイン
(ここは色々な記事があるので割愛)
Add device
Linux serverを選択
Generate scriptを押して出てきたcurlコマンドをgpuインスタンスにsshしてから打つ
lambda-labs-comfyuiみたいな名前をつけておけば、tailscaleのネットワーク内のホストマシンからであればどこからでも
http://lambda-labs-comfyui:8188
で接続できるようになる
元々ローカルで起動してたcomfyui(http://localhost:8188
)のワークフローをダウンロードして、新しく建てたcomfyui(http://labmda-labs-comfyui:8188
)にアップロード
と言ってもブラウザにドラッグ&ドロップするだけ
before
after
うまく生成できなかったりしたのが安定して生成できるように👏
(と言ってもワークフローとしてのチューニングは今後めちゃ必要ですが🥲)
終わりに
本当はlambdalabsのstorage使わず、smbでローカルmacのディレクトリをgpuインスタンスのubuntuにマウントしたかったけど、mac->macは上手くいってもmac->ubuntuは上手くいかず調べても未解決問題っぽいので泣く泣くscpでアップロードする方式に変更した
以上。
参考
以下はsshトンネルを使用
Discussion