このトピックでは、GPU ノードを搭載した Alibaba Cloud Container Service for Kubernetes (ACK) マネージド Pro クラスターに ComfyUI アプリケーションをデプロイする方法を説明します。ACK にデプロイすることで、ローカル実行時に発生しがちなパフォーマンスのボトルネックや、複雑な環境構築といった課題を解決できます。
前提条件
Kubernetes バージョン 1.22 以降を実行している ACK マネージド Pro クラスター が必要です。また、クラスターには GPU メモリが 16 GB 以上の GPU ノードが含まれている必要があります。
NVIDIA ドライバーのバージョンは 535 以降である必要があります。本トピックの例では、GPU ノードプールに
ack.aliyun.com/nvidia-driver-versionラベルを追加し、値を550.144.03に設定します。
ステップ 1: モデルデータを準備する
この例では、テキストプロンプトから 1 ステップで画像を生成する sdxl-turbo モデルを使用します。以下の手順では、モデルをダウンロードして Object Storage Service (OSS) にアップロードし、永続ストレージとして ACK クラスターに PersistentVolume (PV) と PersistentVolumeClaim (PVC) を作成します。
モデルファイルをダウンロードします。
Git と Git Large File Storage (LFS) 拡張機能をインストールします。
macOS
Git をインストールします。
公式にメンテナンスされている macOS Git インストーラーは、Git の公式サイトから入手できます。
brew install git大きなファイルをプルするために Git LFS 拡張機能をインストールします。
brew install git-lfs
Windows
Git をインストールします。
Git の公式サイトから適切なバージョンをダウンロードしてインストールします。
大きなファイルをプルするために Git LFS 拡張機能をインストールします。Git LFS は Git for Windows に統合されています。最新バージョンをダウンロードして使用してください。
Linux
Git をインストールします。
次のコマンドは、Red Hat ベースの Linux ディストリビューション用です。他のシステムについては、Git の公式サイト をご参照ください。
yum install git大きなファイルをプルするために Git LFS 拡張機能をインストールします。
yum install git-lfs
sdxl-turboモデルをダウンロードします。GIT_LFS_SKIP_SMUDGE=1 git clone https://www.modelscope.cn/AI-ModelScope/sdxl-turbo.git cd sdxl-turbo git lfs pull
ダウンロードした
sdxl-turboフォルダを OSS にアップロードします。ossutil をインストール します。
ossutil は、OSS リソースを管理するためのコマンドラインツールです。
OSS バケットを作成します。
バケットがない場合は、次のコマンドを実行して作成します。
<Your-Bucket-Name>をバケットのグローバルに一意な名前に置き換えてください。ossutil mb oss://<Your-Bucket-Name>バケット内にディレクトリを作成します。
モデルファイルを保存するため、バケット内にsdxl-turboという名前のディレクトリを作成します。ossutil mkdir oss://<Your-Bucket-Name>/sdxl-turboモデルファイルをアップロードします。
モデルをダウンロードしたディレクトリから次のコマンドを実行して、すべてのファイルを先ほど作成した OSS ディレクトリに再帰的にコピーします。ossutil cp -r ./sdxl-turbo oss://<Your-Bucket-Name>/sdxl-turbo
モデルデータ用の PV を作成します。
ACK コンソールにログインし、クラスターの詳細ページに移動します。
左側のナビゲーションウィンドウで、 を選択します。
[永続ボリューム] ページで、[作成] をクリックし、次のパラメーターを設定します。
ストレージタイプ: [OSS] を選択します
ボリューム名:
sdxl-turbo-modelと入力します容量:
20Giと入力しますアクセスモード: [ReadWriteMany] を選択します
アクセス証明書: [Secret の作成] を選択します
オプションパラメーター:
-o umask=022 -o max_stat_cache_size=0 -o allow_otherと入力しますバケット ID: モデルをアップロードしたバケットを選択します。
OSS パス:
/sdxl-turboと入力しますエンドポイント: [インターネットエンドポイント] を選択します
[作成] をクリックします。
PV にバインドする PVC を作成します。
ACK コンソールの左側のナビゲーションウィンドウで、 を選択します。
[永続ボリューム要求] ページで、[作成] をクリックし、次のパラメーターを設定します:
ボリュームタイプ: [OSS] を選択します
名前:
sdxl-turbo-modelと入力します割り当てモード: 既存のボリューム を選択します
既存ボリューム: 先ほど作成した
sdxl-turbo-modelPV を選択します。容量: 20 Gi
[作成] をクリックします。
sdxl-turbo-modelPVC がリストにバインド済みステータスで表示されます。
ステップ 2: ComfyUI アプリケーションを設定する
ACK コンソールにログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、対象クラスターの名前をクリックします。左側のナビゲーションウィンドウで、 を選択します。
[Helm] ページで、[デプロイ] をクリックします。comfyui コンポーネントを見つけ、必要に応じてパラメーターを設定し、[次へ] をクリックします。

[パラメーター] ステップで、
persistenceセクションまでスクロールし、モデルファイル用に作成した PVC を使用するように変更します。他のすべての設定はデフォルトのままにします。persistence: - mountPath: "/app/ComfyUI/models/checkpoints" # モデルのマウントパス annotations: helm.sh/resource-policy: keep persistentVolumeClaim: existingClaim: "sdxl-turbo-model" # 先ほど作成した PVC を使用 accessModes: ReadWriteMany storageClass: oss # ストレージタイプを OSS として指定 size: 20Gi subPath: ""モデルソースを変更:
mountPath: "/app/ComfyUI/models/checkpoints"作成した PVC に変更:
existingClaim: "sdxl-turbo-model"ストレージクラスを変更:
storageClass: oss
ステップ 3: サービスへのアクセスとテスト
kubectlを使用して、ComfyUI サービスをローカルポート 8080 に転送します。ローカルマシンでポート 8080 が使用されていないことを確認してください。ポートフォワーディング接続を維持するために、ターミナルウィンドウを開いたままにしておきます。
kubectl port-forward svc/ack-comfyui 8080:8188期待される出力:
Forwarding from 127.0.0.1:8080 -> 8188 Forwarding from [::1]:8080 -> 8188Web ブラウザーを開き、
http://localhost:8080にアクセスします。sdxl-turbo のサンプルワークフローをダウンロードします。ComfyUI ページで、
Loadをクリックし、ダウンロードしたワークフローファイルを選択します。CLIP Text Encode (Prompt) テキストボックスに、希望するプロンプトを入力します。例:
beautiful landscape scenery glass bottle with a galaxy inside cute fennec fox snow HDR sunsetComfyUI ページで、設定の
Extra OptionsとAuto Queueを有効にします。次に、Queue Promptをクリックして画像を生成します。