見出し画像

Paperspaceで画像を生成毎にGoogle Driveに転送する方法について

以前、rcloneを利用したgoogle driveとの連携について記事を作成しました。前回記事のだと、ZIP化したやつをまとめて送るというものでしたが、今回は「生成毎にpngファイルをgoogle driveに転送する」という方法です。
paperspaceにある、生成画像ファイルは無くなる仕様になっています。

今回のスクリプト作成は、以下のBOBAさんのXでの投稿を見て行うことにしました。

BOBAさんが指摘されている接続速度について、私も非常に感じていた問題だったのですが、そのまま放置していました。

BOBAさんは対策をされている模様なので、そこで刺激を受けて作成してみたという感じです。
tensorboardの接続速度はここ数日は若干改善していますが、paperspaceなので、今後も起きることがあるかと思います。

接続速度の遅延に関して、しばしば出くわす症状は以下

「Save Image」ノードに画像が表示されない


生成が終わってもこのままというやつ
バリエーションは、何個か前の画像が出る

UIからダウンロードするとめちゃくちゃ遅い


これらは、結構困ったりします。例えば比較画像とか見たい場合とか・・・

今回の方法で、これらのストレスはある程度改善するかと思います。

<寄り道的なもの>
今回の記事の本題から外れますが、BOBAさんは以下のカスタムノードを公開されています。プロンプト生成を楽にする方法としての選択肢の一つになるかと思います。
色々自分好みに編集してワイルドカード的に使えるのは良いですね。自分好みのプロンプトがある方には最適な印象でした。
ノードのショートカットが豊富なのも凄いですね。

さて、本題に戻ります。

前提として、前回記事にある、「rclone.conf」の作成が必要です。

必要であれば前回記事を参照してください。

<実行手順>

以下のスクリプトをpaperspaceの任意のディレクトリにアップロードしてください。

セルコマンド
① rcloneをインストールだけする

# rcloneをインストールだけする 
!curl https://rclone.org/install.sh | bash

②パッケージのインストール

!apt-get -qq update
!apt-get install -y -qq cron
!service cron start

③以下のセルコマンドを実行するとOK
適切に設定するもの
 ① rclone.confのパス
自分が配置しているrclone.confのパスを入力してください
 ② 転送元のフォルダディレクトリ 

   ComfyUIの場合
    /notebooks/ComfyUI/output
    /tmp/ComfyUI/output
   Forge classic neoの場合
    /notebooks/sd-webui-forge-classic/output
    /tmp/sd-webui-forge-classic/output 

 ③ 実行スクリプトのパス
img_backup.pyの配置しているパスを
「!python /notebooks/img_backup.py」の部分に適切に反映させる

②実行コマンド

# --- ユーザー設定 (ここを編集してください) ---

# ① rclone.confのパス (元の !cp のコピー元)
RCLONE_CONFIG_PATH = "/notebooks/rclone_backup/rclone.conf"

# ② 転送元のフォルダディレクトリ (元の SRC_DIR [cite: 2])
SOURCE_DIRECTORY = "/tmp/ComfyUI/output"

# ---

print(f"rclone同期スクリプトをフォアグラウンドで起動します...")
print(f"(このセルが実行中の間、同期が継続します)")
print(f"設定ファイル: {RCLONE_CONFIG_PATH}")
print(f"転送元: {SOURCE_DIRECTORY}")
print("-" * 30)

# !python コマンドを直接実行し、セルのフォアグラウンドで動作させる
# これで元の %%bash の while true  と同じ動作になります。
!python /notebooks/img_backup.py {RCLONE_CONFIG_PATH} {SOURCE_DIRECTORY}

このセルコマンドを実行しつつ、画像生成を行うと、Google Driveに以下のようにディレクトリが生成され、画像が保存されます。以下のような感じになります。
ファイル名が長いのは、転送するとoutputフォルダが空になり、新たに生成された画像が同じ名前でpngファイルが生成されるため、そのままだと転送先のファイルを上書きしてしまう対策です。
通常は画像の一覧で見ると思うので気にはならないと思っています。

注意点では、「生成直後にすぐ転送」とはなりません。
5-10秒ぐらいかかる印象です。

これはGoogle DriveのAPIレート制限対策などもあるようなので、おのおので調整する形で良いかと思います。


いいなと思ったら応援しよう!