見出し画像

AmazonSageMakerStudioLabで動かすComfyUIにお気に入りのモデルを追加したい!

AmazonSageMakerStudioLab上で動いているComfyUIにモデルファイルを追加する方法が分からなくてちょっと困っていたのですが、Copilotさんにノートブックを作ってもらったのでご紹介します。

A1111では「CivitAI Browser+」という便利な拡張機能があったんですけど、ComfyUIではヨクワカランかったので、頼れる相棒のCopilotさんに訊いてみたんです。

そして出来上がったノートブックのセルがコレ。


[ python ]  初期設定セル

import os
import requests
from urllib.parse import urlparse, parse_qs

civitai_api_key = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"  # Your Civitai API Key

ここでモデルをダウンロードするときに必要となる「Civitai API Key」を
[ civitai_api_key ] にセットします。


[ python ] モデルダウンロードセル

# ===== モデル設定 =====
model_url = "https://civitai.com/api/download/models/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
model_name = "civitaiDLmodelSD15"     # ← 取得できない場合のモデル名(拡張子は自動付与。通常は指定不要。)

# ===== 保存先設定 =====
save_dir = "/home/studio-lab-user/ComfyUI/models/checkpoints"
os.makedirs(save_dir, exist_ok=True)

# ===== ヘッダー(APIキー認証) =====
headers = {"Authorization": f"Bearer {civitai_api_key}"}

# ===== ダウンロード処理 =====
try:
    print(f"Downloading from Civitai...\nURL: {model_url}")
    with requests.get(model_url, headers=headers, stream=True) as response:
        response.raise_for_status()

        # Content-Disposition からファイル名取得(あれば)
        disp = response.headers.get("Content-Disposition", "")
        filename = None
        if "filename=" in disp:
            # filename="xxx.safetensors" の形を想定
            filename = disp.split("filename=")[-1].strip().strip('"')

        # Content-Type などから拡張子推定(fallback)
        if not filename:
            # URLのクエリから format=SafeTensor を見て safetensors 拡張子を採用
            qs = parse_qs(urlparse(model_url).query)
            ext = "safetensors" if qs.get("format", [""])[0].lower().startswith("safe") else "bin"
            filename = f"{model_name}.{ext}"

        save_path = os.path.join(save_dir, filename)
        print(f"Saving as: {save_path}")

        # ストリーミング書き込み
        with open(save_path, "wb") as f:
            for chunk in response.iter_content(chunk_size=1024 * 1024):  # 1MB チャンク
                if chunk:
                    f.write(chunk)

    # 成功表示と一覧
    print("✅ Download completed!")
    print("📂 Files in directory:")
    for f in os.listdir(save_dir):
        print(" -", f)

except Exception as e:
    print(f"❌ An error occurred: {e}")

モデルのダウンロードURLを [ model_url ] にセットして準備完了!
この2つのセルを順番に実行することで、モデルファイルをダウンロードすることができます。


【 初期設定セルの解説 】

初期設定セルにセットしている「Civitai API Key」ですが、これを持っていないとダウンロードできないモデルがあります。「Civitai API Key」不要のモデルもありますが、持っておいた方がなにかと便利です。

ちなみに「Civitai API Key」の取得は、Civitaiにログインしてから
右上にあるアカウントのアイコンをクリックしてプルダウンメニューを表示
⇒ 一番下の歯車(Account Settings)アイコンをクリック

歯車アイコンをクリック

左側に開いたページの下の方にある青いボタン [ + Add API key ] をクリックすることで取得できます。

[ + Add API key ] をクリック

この「Civitai API Key」は取得したときに表示されるだけで後から確認することができないので、メモ帳にでもコピペしておけばOK。
※コピペしなかったり何処に書いたか忘れたりした場合は、新たに取得しなおしましょう。

なお、Civitaiアカウント登録も「Civitai API Key」取得も無料ですのでご安心を。
※Civitaiアカウント登録する際は、後々何か起こっても困らないように捨てアド使用を推奨します。


【 モデルダウンロードセルの解説 】

CivitaiからComfyUIに読み込ませたいモデルを見つけたら、ダウンロード用URLを取得します。

そのモデルのページの左上あたりにある青いボタン [ ↓ Download ( x.xx GB) ] で右クリック
⇒ 開いたメニューの「リンクのアドレスをコピー」をクリックします。

[ ↓ Download ( x.xx GB) ] を右クリック ⇒ リンクのアドレスをコピー

セルの [ model_url ] に丸ごと(https://~)貼り付けます。

これでComfyUIに導入完了です!
ComfyUIが起動中の場合は再起動して、ダウンロードしたモデルが読み込まれたことを確認してください。


実は、まだまだComfyUI初心者なので、A1111の拡張機能のようにブラウザベースでダウンロードできることを私が知らないだけかも…。
教えてエロい人。

【 関連記事 】

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

本地 那史 こんな記事でもよろしければ応援お願いします!もっと文音を可愛くして見せます!そして、その過程で得た知見を世に送り出していきます。