Container Compute Service (ACS) のコンピューティングリソースを使用すると、基盤となるハードウェアの知識や GPU ノードの管理を必要とせずに、すぐに利用を開始できます。ACK はデプロイが簡単で、従量課金に対応しており、費用対効果の高い大規模言語モデル (LLM) の推論に最適です。本トピックでは、ACK の GPU コンピューティングリソースと deepgpu-comfyui プラグインを使用して、Wan2.1 動画生成を高速化する方法について説明します。
背景情報
ComfyUI
ComfyUI は、人気の高い text-to-image モデルである Stable Diffusion を実行およびカスタマイズするための、ノードベースのグラフィカルユーザーインターフェース (GUI) です。ビジュアルワークフローを採用しており、コードを記述することなく、ノードをドラッグアンドドロップするだけで複雑な画像生成パイプラインを構築できます。
Wan モデル
Wan (通義万象) は、Alibaba の通義ラボによって開発された、大規模な AI アートおよび text-to-image (AIGC) モデルです。これは、千問大規模モデルシリーズのビジュアル生成ブランチです。Wan は、中国語のプロンプトをサポートする世界初の AI アートモデルです。マルチモーダル機能を備えており、テキストによる説明、手描きのスケッチ、または画像スタイル転送から高品質のアートワークを生成できます。
前提条件
Container Compute Service (ACS) を初めて使用する場合は、アカウントにデフォルト ロールを割り当てる必要があります。権限付与が完了した後でのみ、ACK は ECS、OSS、NAS、CPFS、SLB などの他のサービスを呼び出し、クラスタを作成し、ログを保存できます。詳細については、「ACK を初めて使用するユーザーのためのクイックスタート」をご参照ください。
-
サポート対象の GPU タイプ:L20 (GN8IS) および G49E。
操作手順
ステップ1:モデルデータの準備
モデルファイルを永続的に保存するために、NAS または OSS ボリュームを作成します。以下の手順では、例として NAS ボリュームを使用します。
永続ボリュームの作成方法の詳細については、「NASファイルシステムをボリュームとして作成する」または「静的にプロビジョニングされたOSSボリュームを使用する」をご参照ください。
-
次のコマンドを実行して、ComfyUI をダウンロードします。
お使いの環境に Git がインストールされていることを確認してください。
git clone https://github.com/comfyanonymous/ComfyUI.git -
以下のコマンドを実行して、必要な 3 つのモデルファイルを ComfyUI の対応するディレクトリにダウンロードします。モデルの詳細については、Wan_2.1_ComfyUI_repackaged プロジェクトをご参照ください。
ダウンロードをスムーズに行うために、ピークパブリック帯域幅を増やす必要がある場合があります。ダウンロードには約 30 分かかります。
-
wan2.1_t2v_14B_fp16.safetensorsファイルcd ComfyUI/models/diffusion_models wget https://modelscope.cn/models/Comfy-Org/Wan_2.1_ComfyUI_repackaged/resolve/master/split_files/diffusion_models/wan2.1_t2v_14B_fp16.safetensors -
wan_2.1_vae.safetensorsファイルcd ComfyUI/models/vae wget https://modelscope.cn/models/Comfy-Org/Wan_2.1_ComfyUI_repackaged/resolve/master/split_files/vae/wan_2.1_vae.safetensors -
umt5_xxl_fp8_e4m3fn_scaled.safetensorsファイルcd ComfyUI/models/text_encoders wget https://modelscope.cn/models/Comfy-Org/Wan_2.1_ComfyUI_repackaged/resolve/master/split_files/text_encoders/umt5_xxl_fp8_e4m3fn_scaled.safetensors
-
-
ComfyUI-deepgpu をダウンロードして解凍します。
cd ComfyUI/custom_nodes wget https://aiacc-inference-public-v2.oss-cn-hangzhou.aliyuncs.com/deepgpu/comfyui/nodes/20240513/ComfyUI-deepgpu.tar.gz tar zxf ComfyUI-deepgpu.tar.gz
ステップ2:ComfyUI サービスのデプロイ
-
ACS コンソールにログインします。左側のナビゲーションペインで、クラスターリスト をクリックします。対象クラスターの名前をクリックします。左側のナビゲーションペインで を選択し、右上隅の YAML のリソースの作成 をクリックします。
-
この例では、マウントされた NAS ボリュームを使用します。次の YAML テンプレートをコピーし、作成 をクリックします。
persistentVolumeClaim.claimNameの値を、お使いの永続ボリューム要求 (PVC) の名前に合わせて変更してください。この例では、コンテナイメージのプル時間を最小限に抑えるために、中国 (北京) (
cn-beijing) リージョンの inference-nv-pytorch 25.07 イメージを使用します。別のリージョンのプライベートイメージを使用する場合は、「使用方法」に従って YAML ファイル内のイメージパスを調整してください。この例で使用されているテストコンテナイメージには、deepgpu-torch および deepgpu-comfyui プラグインがプリインストールされています。これらのプラグインを他のコンテナ環境で使用する必要がある場合は、プリセールスソリューションアーキテクト (PDSA) にお問い合せの上、インストールパッケージを入手してください。
apiVersion: apps/v1 kind: Deployment metadata: labels: app: wanx-deployment name: wanx-deployment-test namespace: default spec: replicas: 1 selector: matchLabels: app: wanx-deployment template: metadata: labels: alibabacloud.com/compute-class: gpu alibabacloud.com/compute-qos: default alibabacloud.com/gpu-model-series: L20 # サポート対象のGPUタイプ:L20 (GN8IS) およびG49E app: wanx-deployment spec: containers: - command: - sh - -c - DEEPGPU_PUB_LS=true python3 /mnt/ComfyUI/main.py --listen 0.0.0.0 --port 7860 image: acs-registry-vpc.cn-beijing.cr.aliyuncs.com/egslingjun/inference-nv-pytorch:25.07-vllm0.9.2-pytorch2.7-cu128-20240714-serverless imagePullPolicy: Always name: main resources: limits: nvidia.com/gpu: "1" cpu: "16" memory: 64Gi requests: nvidia.com/gpu: "1" cpu: "16" memory: 64Gi terminationMessagePath: /dev/termination-log terminationMessagePolicy: File volumeMounts: - mountPath: /dev/shm name: cache-volume - mountPath: /mnt # /mntは、NASボリューム要求がマッピングされるPod内のパスです name: data dnsPolicy: ClusterFirst restartPolicy: Always schedulerName: default-scheduler securityContext: {} terminationGracePeriodSeconds: 30 volumes: - emptyDir: medium: Memory sizeLimit: 500G name: cache-volume - name: data persistentVolumeClaim: claimName: wanx-nas # wanx-nasは、NASボリュームから作成されたボリューム要求です --- apiVersion: v1 kind: Service metadata: name: wanx-test spec: type: LoadBalancer ports: - port: 7860 protocol: TCP targetPort: 7860 selector: app: wanx-deployment -
表示されたダイアログボックスでビューをクリックすると、ワークロード詳細ページに移動します。ログタブをクリックします。次の出力が表示された場合、サービスは正常に開始されています。
Device: cuda:0 NVIDIA L20 : cudaMallocAsync Using pytorch attention Python version: 3.12.7+gc (main, Jan 10 2024, 17:28:43) [GCC 13.3.0] ComfyUI version: 0.3.45 ****** User settings have been changed to be stored on the server instead of browser storage. ****** ****** For multi-user setups add the --multi-user CLI argument to enable multiple user profiles. ****** ComfyUI frontend version: 1.23.4 [Prompt Server] web root: /opt/ac2/lib/python3.12/site-packages/comfyui_frontend_package/static generated new fontManager Import times for custom nodes: 0.0 seconds: /mnt/ComfyUI/custom_nodes/websocket_image_save.py 57.2 seconds: /mnt/ComfyUI/custom_nodes/ComfyUI-deepgpu Context impl SQLiteImpl. Will assume non-transactional DDL. No target revision found. Starting server To see the GUI go to: http://0.0.0.0:7860
ステップ3:プラグインの使用
-
アクセス方法 タブをクリックして、サービスの 外部エンドポイント (
8.xxx.xxx.114:7860など) を取得します。 -
ブラウザーで ComfyUI URL
http://8.xxx.xxx.114:7860/にアクセスします。 ComfyUI インターフェイスで右クリックし、[ノードを追加]、と進むと、プラグインに DeepGPU タイプのノードが含まれていることを確認できます。初めて URL にアクセスする場合、読み込みに最大 5 分かかることがあります。
DeepGPU カテゴリには、[Apply DeepyTorch to diffusion model]、[Apply DeepyTorch to vae model]、[DeepyTorch Sampler to replace XlabsSampler]、[Save Image BASE64 of DeepGPU]、および [Apply Pulid Flux of DeepGPU] の 5 つのノードが含まれています。
ステップ4:サンプルワークフローのテスト
-
wan2.1 DeepyTorch 高速化ワークフローファイルをダウンロードします。
-
画像から動画へのワークフロー
https://aiacc-inference-public-v2.oss-cn-hangzhou.aliyuncs.com/deepgpu/comfyui/wan/workflows/workflow_image_to_video_wan_2.1_deepytorch.json -
テキストから動画へのワークフロー
https://aiacc-inference-public-v2.oss-cn-hangzhou.aliyuncs.com/deepgpu/comfyui/wan/workflows/workflow_text_to_video_wan_deepytorch.json
-
-
この例では、高速化された text-to-video ワークフローを使用します。ComfyUI では、 を選択し、ダウンロードした
workflow_text_to_video_wan_deepytorch.jsonファイルを選択します。 -
ワークフローファイルを開いたら、[拡散モデルに DeepyTorch を適用] > [有効化] を [true] に設定します。これにより、高速化が有効になります。次に、[実行] をクリックし、ビデオが生成されるまで待ちます。
DeepyTorch 高速化ワークフローは、Load Diffusion Model ノードの後に ApplyDeepyTorch ノードを挿入します。
このサンプルワークフローには、次の主要なノード構成が含まれています。[UNet Loader] は
wan2.1_t2v_14B_fp16.safetensorsモデルを使用し、データタイプはdefaultに設定されています。[Load CLIP] ノードはumt5_xxl_fp8_e4m3fn_scaled.safetensorsを使用し、タイプはwanに設定されています。[K-Sampler] は、stepsが 20、cfgが 6.0、samplerがuni_pc、schedulerがsimple、denoisingが 1.00 に設定されています。[Load VAE] ノードはwan_2.1_vae.safetensorsを使用します。[Empty Latent Video (Hunyuan)] ノードは、widthが 832、heightが 480、lengthが 81、batch sizeが 1 に設定されています。[Apply DeepyTorch to diffusion model] ノードのdynamic設定はautoに設定されています。 -
[キュー] ボタンをクリックすると、動画の生成時間を確認し、動画をプレビューできます。
初回のテスト実行には時間がかかる場合があります。最適なパフォーマンスを得るために、ワークフローをさらに 2~3 回実行してください。
キュー パネルには、生成された 3 つの動画クリップのサムネイルが表示され、それぞれの生成に約 630 秒かかります。リンクがノードを接続し、ワークフロー全体でデータを渡します。メイン キャンバスには、完全なテキストから動画へのワークフローノードが表示されます。これには、[UNet Loader] (モデル:
wan2.1_t2v_14B_fp16.safetensors、データタイプ:default)、ポジティブプロンプトとネガティブプロンプト用の [CLIP Text Encode] ノード、[K-Sampler] (steps: 20、cfg: 6.0、sampler:uni_pc、scheduler: simple、denoising: 1.00)、[Load VAE] (wan_2.1_vae.safetensors)、[Empty Latent Video (Hunyuan)] (width: 832、height: 480、length: 81、batch size: 1)、および [Apply DeepyTorch to diffusion model] (enable:true、dynamic:auto) が含まれています。 -
(オプション) 高速化を使用しないシナリオをテストするには、ComfyUI サービスを再起動し、次のワークフローを使用して動画を生成します。
https://aiacc-inference-public-v2.oss-cn-hangzhou.aliyuncs.com/deepgpu/comfyui/wan/workflows/workflow_text_to_video_wan.json