ComfyUI は、Stable Diffusion をベースに構築されたノードベースの AIGC ツールで、短い動画やアニメーションの生成に使用されます。本記事では、Alibaba Cloud Elastic Algorithm Service (EAS) 上で ComfyUI をデプロイして使用する方法について説明します。
事前準備
重要な制限事項と考慮事項
リソースの無駄遣いを避け、一般的なエラーを防ぐために、デプロイ前に以下の制限事項をご確認ください。
デプロイリソース:GU30、A10、または T4 の GPU の使用を推奨します。インスタンスタイプ
ml.gu7i.c16m60.1-gu30は、コストパフォーマンスが非常に高いです。重要各 Elastic Algorithm Service (EAS) インスタンスは、1 つの ComfyUI プロセスのみを実行し、単一の GPU (マシンごとに 1 GPU) のみをサポートします。複数の GPU を使用した並列推論はサポートされていません。複数 GPU のインスタンスタイプ (例:
2*A10) を選択しないでください。これはリソースの無駄遣いとなり、単一タスクのパフォーマンスを向上させません。水平スケーリング:並列処理能力を向上させるには、複数 GPU のインスタンスタイプを選択するのではなく、API 版 を使用して レプリカ数 を増やしてください。
ストレージの準備:カスタムモデルの使用、カスタムノードのインストール、または API 経由でのサービス呼び出しには、まず Object Storage Service (OSS) バケットまたは NAS ファイルシステムを作成する必要があります。詳細については、「Object Storage Service (OSS) クイックスタート」をご参照ください。
EAS は、ComfyUI Manager や Git Clone などのツールを使用してインターネットから直接カスタムノード (プラグイン) をインストールすることをサポートしていません。すべてのカスタムコンテンツは、ストレージボリュームをマウントしてアップロードする必要があります。
デプロイエディション
ユースケースに最も適したエディションを選択してください:
エディション | シナリオ | 呼び出しメソッド | 特徴 | 課金 |
Standard Edition | 単一ユーザーの開発とテスト |
|
| パブリックリソースでのデプロイの場合、使用量に関わらず、インスタンスがプロビジョニングされた瞬間から時間単位で課金されます。 |
API 版 | 高同時実行数の本番環境 | API 呼び出し (非同期) |
| |
WebUI 用クラスター版 | 複数ユーザーのチームおよび教育目的 | WebUI |
動作原理の詳細については、「クラスター版サービスの概要」をご参照ください。 |
課金の詳細については、「Elastic Algorithm Service (EAS) の課金」をご参照ください。
API 呼び出しが同期か非同期かは、EAS キューサービスを使用するかどうかによって決まります:
同期呼び出し:EAS キューサービスをバイパスし、リクエストを直接推論インスタンスに送信します。
非同期呼び出し:EAS キューサービスを使用します。リクエストは入力キューに送信され、結果はサブスクリプションを介してプッシュされます。
ComfyUI には独自の非同期キューイングシステムがあるため、同期呼び出しでも実質的には非同期です。リクエストを送信すると、システムはプロンプト ID を返します。その後、このプロンプト ID を使用してポーリングし、推論結果を取得する必要があります。
サービスのデプロイ
Standard、Cluster、API 版:シナリオベースのモデルデプロイ (より簡単) またはカスタムモデルデプロイ (より多くの機能) を使用できます。
シナリオモデル
PAI コンソールにログインします。ページ上部でリージョンを選択し、目的のワークスペースを選択して Elastic Algorithm Service (EAS) をクリックします。
Elastic Algorithm Service (EAS) ページで、モデルサービスの作成 をクリックします。シナリオベースのモデルデプロイ セクションで、AI 動画生成 - ComfyUI デプロイメント をクリックします。
以下の主要なパラメーターを設定します:
バージョンの選択:詳細については、「デプロイバージョンの選択」をご参照ください。
モデルの構成:独自のモデルを使用したり、カスタムノードをインストールしたり、API 呼び出しを行ったりする必要がある場合に、このパラメーターを設定します。例えば、Object Storage Service (OSS) を使用する場合、バケットとディレクトリを選択します。サービスのデプロイ後、システムは選択した場所に必須の ComfyUI ディレクトリを自動的に作成します。
リソース設定の選択:GPU インスタンスタイプを選択します。GU30、A10、または T4 の GPU の使用を推奨します。インスタンスタイプ
ml.gu7i.c16m60.1-gu30は、コストパフォーマンスが非常に高いです。利用できない場合は、ecs.gn6i-c16g1.4xlargeを選択できます。
デプロイメント をクリックします。約 5 分待ちます。モデルのステータス が 実行中 に変わると、デプロイは完了です。
カスタムモデル
PAI コンソールにログインします。ページ上部でリージョンを選択し、目的のワークスペースを選択して Elastic Algorithm Service (EAS) をクリックします。
[サービスのデプロイ] をクリックします。[カスタムモデルのデプロイ] セクションで、[カスタムデプロイ] をクリックします。
以下の主要なパラメーターを設定します:
デプロイメント方式:イメージデプロイメント を選択し、Web アプリケーションを有効にする チェックボックスをオンにします。
イメージ設定: Alibaba Cloud イメージ リストから、
comfyui:1.9を選択します。このフォーマットでは、x.x は標準版、x.x-api は API 版、x.x-cluster はクラスター版をそれぞれ示します。説明バージョンは頻繁に更新されるため、最新のイメージバージョンを選択することを推奨します。
各バージョンのユースケースの詳細については、「デプロイバージョンの選択」をご参照ください。
ストレージのマウント:独自のモデルを使用したり、カスタムノードをインストールしたり、API 呼び出しを行ったりする必要がある場合は、ストレージマウントを設定します。例えば、Object Storage Service (OSS) を使用する場合、バケットとディレクトリを選択します。サービスのデプロイ後、システムは選択した場所に必須の ComfyUI ディレクトリを自動的に作成します。ストレージスペースが EAS サービスと同じリージョンにあることを確認してください。
Uri:
をクリックして既存の OSS ストレージディレクトリを選択します。例:oss://bucket-test/data-oss/。マウントパス:このパラメーターを
/mnt/dataに設定します。これにより、指定した OSS ディレクトリがコンテナパス/mnt/dataにマウントされます。
コマンドの実行:
イメージバージョンを選択すると、システムが自動的に起動コマンドを入力します。
ストレージマウントを設定した場合、コマンドの実行 に
--data-dirパラメーターを追加し、その値が マウントパス と一致することを確認する必要があります。例:python main.py --listen --port 8000 --data-dir /mnt/data --cache-root /stable-diffusion-cache。
リソースタイプ:パブリックリソース を選択します。
リソースのデプロイメント:GPU インスタンスタイプを選択します。GU30、A10、または T4 の GPU の使用を推奨します。インスタンスタイプ
ml.gu7i.c16m60.1-gu30は、コストパフォーマンスが非常に高いです。利用できない場合は、ecs.gn6i-c16g1.4xlargeを選択できます。
デプロイメント をクリックします。デプロイには約 5 分かかります。モデルのステータス が 実行中 に変わると、デプロイは完了です。
Web UI の使用
Standard Edition とクラスター版は、Web UI 経由でのアクセスを提供します。
Web UI へのアクセス
対象のサービス名をクリックして 概要 ページに移動し、右上隅の Web アプリケーションの表示 をクリックします。
ページの読み込みが遅い、または応答しなくなった場合は、「ページの更新に時間がかかりすぎる、または応答しなくなる」をご参照ください。
テンプレートワークフローの使用
ComfyUI は、一般的なタスクのためのテンプレートを提供しています。
[Wan VACE text-to-video] などのテンプレートを選択します。
説明テンプレートは ComfyUI のイメージバージョンによって異なる場合があります。サンプルのテンプレートが利用できない場合は、別のテンプレートを使用できます。ローカルファイルシステムからワークフローをロードすることもできます。

ワークフローが正常にロードされた後、モデルが見つからないというエラーは無視できます。「このメッセージを再度表示しない」チェックボックスを選択することを推奨します。
パスの変更により、ワークフローを直接実行すると以下のエラーが発生する可能性があります。

まず、[Load models here] セクションで、モデル
wan2.1_vace_14B_fp16.safetensorsとWan21_CausVid_14B_T2V_lora_rank32.safetensorsを再選択します。
ワークフローが正常に実行されると、生成された動画が [Save Video] セクションに表示されます。

カスタムモデルとノードの使用
サービスにストレージボリュームが設定されていることを確認します。カスタムデプロイを使用する場合、コマンドの実行 に
--data-dirパラメーターを追加してディレクトリをマウントする必要があります。詳細については、「方法 2:カスタムモデルのデプロイ」をご参照ください。サービスのデプロイ後、システムはマウントされた OSS または NAS ストレージに以下のディレクトリ構造を自動的に作成します。
data-oss/ ├── custom_nodes/ # ノードファイル (ComfyUI プラグイン) を格納 ├── models/ # モデルファイルを格納 ├── input/ ├── output/ ├── unet/ └── temp/モデルまたはノードファイルをアップロードします。例えば、OSS の場合、コンソールで OSS にファイルをアップロードできます。ラージオブジェクトについては、「OSS にラージオブジェクトをアップロードするにはどうすればよいですか?」をご参照ください。
モデルファイルのアップロード:ノードのソースリポジトリの指示に従い、
modelsディレクトリ以下の対応するサブディレクトリにモデルをアップロードします。例:チェックポイントローダー:モデルを
models/checkpointsにアップロードします。スタイルモデルローダー:モデルを
models/stylesにアップロードします。
ノードファイルのアップロード:カスタムノードをマウントされたストレージボリューム上の
custom_nodesディレクトリにアップロードすることを推奨します。
新しいコンテンツをロードします。
モデル:[PaiCustom] > [Load New Models] をクリックします。それでもモデルが見つからない場合は、[Restart Process] をクリックします。プロセスが正常に再起動した後、ブラウザページをリフレッシュします。
ノード:[Restart Process] をクリックします。プロセスが正常に再起動した後、ブラウザページをリフレッシュします。
ワークフローのエクスポート
Web UI でワークフローをデバッグした後、API 呼び出しで使用するために JSON ファイルとして保存します。

API 呼び出し
API 呼び出しの概要
API 呼び出しをサービスに対して行うことで、ComfyUI をアプリケーションに統合し、AIGC コンテンツの生成を自動化できます。コアプロセスは、ワークフローの JSON 設定を送信し、タスク ID を受け取り、その ID を使用して生成された結果を取得することです。
Standard Edition サービスは同期呼び出しのみをサポートし、オンラインデバッグを提供します。
API 版サービスは非同期呼び出しのみをサポートし、api_prompt パス経由でのみ利用可能です。
前提条件:ComfyUI API 呼び出しのリクエストボディは、ワークフローに依存します。まず、WebUI でワークフローを設定し、ワークフローを JSON ファイルとしてエクスポートします。
結果のダウンロード:生成された画像や動画は、マウントされた output ディレクトリに保存されます。API 呼び出しはファイル名とサブディレクトリ名を返します。OSS の場合、ファイルをダウンロードするには完全なファイルパスを構築する必要があります。詳細については、「Alibaba Cloud SDK を使用して OSS からファイルをダウンロードする」をご参照ください。
API リクエストボディ
リクエストボディの形式は、呼び出しメソッドによって異なります:
同期呼び出しの場合、リクエストボディはワークフローの JSON コンテンツを
promptキー内にラップする必要があります。非同期呼び出しの場合、リクエストボディはワークフローの JSON コンテンツそのものです。
Wan VACE Text to Video ワークフローは時間がかかるため、このセクションではテスト用のサンプルワークフローを提供します。実行には約 3 分かかります。
同期呼び出し
同期呼び出しは、リクエストを直接 Elastic Algorithm Service (EAS) インスタンスに送信します。この方法は、開発、テスト、および低同時実行数のシナリオに適しています。
オンラインデバッグ
オンラインデバッグ機能を使用すると、コードを書かずにコンソールから直接 API 呼び出しをテストできます。ワークフロー設定の迅速な検証や問題のトラブルシューティングに最適です。
Elastic Algorithm Service (EAS) ページで、対象サービスの 操作 列にある オンラインデバッグ をクリックして、オンラインデバッグページに移動します。
コードによる呼び出し
コードから API 呼び出しを行って、ComfyUI をアプリケーションに統合することもできます。プロセスはオンラインデバッグと同じです:まずプロンプト ID を取得し、次に推論結果をクエリします。
非同期呼び出し
非同期呼び出しは、高同時実行数の本番環境に適しています。負荷分散のために EAS キューサービスを使用します。リクエストは送信後すぐに返され、結果キューをサブスクライブすることで結果を取得します。
非同期呼び出しは api_prompt パスのみをサポートします。task_id パラメーターは、リクエストと結果を関連付けるために重要です。各リクエストの task_id に一意の値を割り当てて、キューからの対応する結果と一致させる必要があります。リクエストパスは次のとおりです:
{service_url}/api_prompt?task_id={your_unique_value}
よくある質問
このセクションでは、ComfyUI のデプロイと使用に関する一般的な問題をカテゴリ別に説明します。
デプロイの問題
Q:サービスが「待機中」の状態でスタックしたり、画像を生成できないのはなぜですか?
この問題は通常、リソース仕様が不十分なために発生します。サービスイメージとリソース仕様が正しく設定されていることを確認してください。GU30、A10、または T4 の GPU タイプの使用を推奨します。インスタンスタイプ ml.gu7i.c16m60.1-gu30 は、コスト効率の高いオプションです。
モデルとノードの問題
Q:WebUI に「Missing Model」エラーが表示されます
説明:以下のエラーメッセージが表示されます:

解決策:このエラーは無視できます。このチェックは PAI にデプロイされた ComfyUI には適用されません。実際の問題を特定するには、実行時エラーに依存してください。
[Do not show this message again] を選択するか、[Settings] でモデル検証を無効にすることを推奨します。

Q:アップロードしたモデルが見つかりません
解決策:
[PaiCustom] をクリックし、[Load New Model] を選択します。

それでもモデルが表示されない場合は、[Restart Process] をクリックします。

Q:モデルローダーに「undefined」と表示されます
まず、モデルがモデルローダーで要求されるディレクトリにあることを確認してください。
デプロイ後にモデルをアップロードした場合は、サービスを再起動してください。
Q:ノードが見つかりません
新しいノードをインストールした後、サービスを再起動してください。
ノードがインストールされていない場合は、「サードパーティモデルの使用とノード (ComfyUI プラグイン) のインストール」をご参照ください。
Q:ComfyUI Manager がモデルのダウンロードやノードのインストールに失敗します
EAS にデプロイされた ComfyUI で ComfyUI Manager を使用することは避けてください。インターネットからモデルをダウンロードしたり、GitHub などのプラットフォームからコードをプルする必要があるプラグインをインストールしたりする際に、ネットワーク接続の問題が発生する可能性があります。
代わりに、モデルまたはノードファイルをサービスにマウントされたストレージにアップロードしてください。詳細については、「サードパーティモデルの使用とノード (ComfyUI プラグイン) のインストール」をご参照ください。
Q:利用可能なモデルとノードを表示するにはどうすればよいですか?
モデルファイル:チェックポイントローダーなどの対応する読み込みノードのドロップダウンリストで表示します。
ノード:インストールされているすべての ComfyUI プラグインを表示するには、WebUI を右クリックして [Add Node] を選択します。
実行時の例外
Q:ページがフリーズまたは読み込みが遅い
ページをリフレッシュするか、ブラウザのキャッシュをクリアするか、ブラウザのシークレットモードまたはプライベートモードを使用してください。
ストレージボリュームをマウントしている場合は、
input/、output/、およびtemp/フォルダ内のファイルを削除してください。サービスの再起動を試してください。
Q:ワークフロー実行中にプロセスが再起動する
インスタンスのログに run.sh: line 54: 531285 Killed python -u main_run.py "$@" というメッセージが含まれている場合、メモリ不足 (OOM) エラーを示しています。OOM エラーの後、プロセスは自動的に再起動します。
Q:RuntimeError: CUDA error: out of memory
このエラーは、ビデオメモリ (VRAM) が不足していることを示します。画像モデルを使用している場合は、画像の解像度またはバッチサイズを減らしてください。ビデオモデルの場合は、フレームレートまたは解像度を減らしてください。
Q:API 呼び出しが「url not found」または 404 エラーを返す
API エンドポイント URL が完全であることを確認してください。同期呼び出しの場合、
/promptパスを追加する必要があります。
その他
Q:xFormers の高速化効果
xFormers は、画像と動画の生成時間を大幅に短縮し、ビデオメモリ (VRAM) の使用量を削減する、オープンソースの Transformer ベースの高速化ツールです。
デフォルトでは、ComfyUI のデプロイで xFormers の高速化が有効になっています。高速化の効果はワークフローのサイズに依存します。特に NVIDIA グラフィックスカードでの GPU を多用する呼び出しで、改善がより顕著になります。
次のステップ
ComfyUI サービスをデプロイした後、次のアクションを実行できます:
関連資料
Python パッケージのインストール
コマンドによる方法
サービスにストレージがマウントされていることを確認してください。OSS の Uri が
oss://examplebucket/comfyui/で、マウントパスが/mnt/data/であると仮定します。
.whlファイルをoss://examplebucket/comfyui/models/whlディレクトリにアップロードします。whlフォルダが存在しない場合は作成してください。サービス設定の コマンドの実行 を更新し、その前に
pip install /mnt/data/models/whl/xxx.whlを追加します。このコマンドでは、/mnt/dataは OSS のマウントパスであり、xxx.whl は whl パッケージの名前です。
サービスを再起動します。
ライブラリ設定による方法
サービス詳細ページの右上隅で、更新 をクリックします。

サービスがシナリオベースのデプロイでデプロイされた場合は、カスタムデプロイに切り替えます。

環境コンテキスト セクションの [サードパーティライブラリの設定] で、依存パッケージを設定します。

ページ下部の 更新 ボタンをクリックして、サービスの更新を完了します。
イメージバージョンの更新
サービスに OSS または NAS からストレージがマウントされている場合、カスタムモデルはそのストレージに保存されます。イメージバージョンを更新しても、既存のカスタムモデルには影響しません。
サービス詳細ページの右上隅で、更新 をクリックします。

サービスがシナリオベースのデプロイでデプロイされた場合は、カスタムデプロイに切り替えます。
対応する JSON 設定 セクションで、JSON 構成を編集し、
containersのimageフィールドを更新します。たとえば、図に示すように 1.9 を目的のバージョンに変更します。
[今すぐ更新] をクリックします。
署名付き URL の有効期間の延長
API を呼び出して、指定した有効期間を持つ署名付き Web アクセス URL を取得できます。
DescribeServiceSignedUrl API ページに移動します。
リージョンを選択します。

パラメーターを設定します:
ClusterId (リージョン) と ServiceName:サービスのリージョンと名前を入力します。この情報は EAS サービスの概要ページで確認できます。

Type:ドロップダウンリストから
webviewを選択します。Expire:秒単位の整数値を入力します。最大有効期間は 43,200 秒 (12 時間) です。必要に応じてこの値を設定することを推奨します。
Internal:パブリックアクセスには
falseを、VPC アクセスにはtrueを設定します。
[呼び出しを開始] をクリックします。応答の
SignedUrlが、サービスへのログイン不要の Web アクセス用 URL です。
WebUI のデフォルト言語の変更
WebUI ページで、左下隅の [Settings] ボタンをクリックします。
両方の場所で設定を構成した後、ページをリフレッシュして変更を適用します。
Comfy > Locale:

Language > Locale:

付録
クラスターサービスのアーキテクチャ
以下の図はアーキテクチャを示しています:
複数ユーザーシナリオ向けに設計されたクラスター版サービスは、クライアントとバックエンドの GPU 高速化推論インスタンスを分離するためにプロキシレイヤーを導入しています。
各ユーザーは隔離されたバックエンド環境と作業ディレクトリを持ちますが、バックエンドの GPU 高速化推論インスタンスの共通プールを共有します。
ユーザーが推論リクエストを開始すると、プロキシはプールからアイドル状態のインスタンスを選択してリクエストを処理します。
このタイムシェアリングメカニズムにより、ユーザー環境の隔離が確保され、GPU リソースの利用率が向上し、複数ユーザーシナリオでの推論コストが削減されます。


