告別 GPU 焦慮,玩轉極致性價比的 CPU 文生圖

作者:壯懷、竹剛

AIGC 中的 Stable Diffusion 文生圖模型是開源流行的跨模態生成模型,用於生成給定文本對應的圖像。但由於衆所周知的原因,GPU 資源出現了一卡難求的現狀,如何通過雲計算快速提升業務規模,降低文生圖的計算成本,以及更好的保護自定義的擴展模型?針對文生圖模型特性和規模化場景,本文提供了一種新的思路,通過雲原生部署方式提供推理服務 API,使用 CPU 矩陣計算能力針對模型進行無侵入優化,以及機密計算的環境的無縫切換,可以有效的替代部分 GPU 推理需求,提供穩定、高效、高性價比且安全的文生圖服務。

通過在 Kubernetes 集羣內添加阿里雲第八代企業級 CPU 實例 g8i,不修改模型本身,通過雲原生化的部署和推理優化,在 CPU 節點上實現秒級響應的成本低廉的文生圖服務。本文介紹如何在 ACK 集羣中快速部署一個使用 CPU 加速的 Stable Diffusion 文生圖示例服務,並且您還可以將這個示例服務無縫遷移到機密虛擬機節點池中,爲您的推理服務提供數據安全保護。

準備環境

在 ACK 集羣內創建一個使用阿里雲第八代企業級實例 g8i 的節點池,確保實例規格的 CPU 大於或等於 16vCPU,可以使用 ecs.g8i.4xlarge,ecs.g8i.8xlarge 或 ecs.g8i.12xlarge 實例規格。(如果你還沒有一個阿里雲 Kubernetes 集羣,請參見創建 Kubernetes 託管版集羣 [ 1] 。)

一步生成文生圖服務

  1. 使用默認參數執行以下命令,在集羣內部署一個使用的 Stable Diffusion XL Turbo 模型。
helm install stable-diffusion-ipex https://aliacs-app-catalog.oss-cn-hangzhou.aliyuncs.com/pre/charts-incubator/stable-diffusion-ipex-0.1.9.tgz
  1. 等待約 10 分鐘,然後執行以下命令檢查 Pod 狀態,確保運行正常。
kubectl get pod |grep stable-diffusion-ipex

預期輸出:

stable-diffusion-ipex-577674874c-lhnlc         1/1     Running   0               11m
stable-diffusion-ipex-webui-85d949d9bd-mcwln   1/1     Running   0               11m

服務部署完成後,對外提供了一個文生圖 API 和 web UI。

測試文生圖服務

  1. 執行以下命令,將 Stable Diffusion XL Turbo 模型服務提供的 web UI 轉發到本地。
kubectl port-forward svc/stable-diffusion-ipex-webui 5001:5001

預期輸出:

Forwarding from 127.0.0.1:5001 -> 5001
Forwarding from [::1]:5001 -> 5001
  1. 在瀏覽器中打開 http://127.0.0.1:5001/ ,訪問 web UI 頁面。

  2. 在這個 web UI 頁面中,您可以點擊【生成圖片】按鈕使用輸入的提示詞生成圖片。

"A panda listening to music with headphones. highly detailed, 8k."
"A dog listening to music with headphones. highly detailed, 8k."
“A robot cat eating spaghetti, digital art, 8k.” 
“A large blob of exploding splashing rainbow paint, with an apple emerging, 8k.”
“An astronaut riding a galloping horse, 8k.”
“A family of raccoons living in a small cabin, tilt shift, arc shot, 8k.”
“A tree walking through the forest, tilt shift, 8k.”
“An octopus attacks New York, 8k.”
“Motorcyclist on a racing track, highly detailed, 8k.”
“Humans building a highway on Mars, cinematic, 8k.”

性能測試

使用不同 ECS g8i 實例規格在 Stable Diffusion XL Turbo 模型中生成 512x512、1024x1024 圖片的耗時信息(單個 batch)。下表結果數據僅爲實驗參考,實際數據可能會因您的操作環境而發生變化。

實例規格 Pod Request/Limit 參數 單次平均耗時 (512x512) 單次平均耗時 (1024x1024)
ecs.g8i.4xlarge(16 vCPU 64 GiB) 14/16 batch: 1step: 4 2.2s 8.8s
ecs.g8i.8xlarge(32 vCPU 128 GiB) 24/32 batch: 1step: 4 1.3s 4.7s
ecs.g8i.12xlarge(48 vCPU 192 GiB) 32/32 batch: 1step: 4 1.1s 3.9s

從推理速度的絕對性能來看,在多 batch 和多步的推理場景下,CPU 的推理速度仍然與 A10 的 GPU 實例有所差距。採用 ecs.g8i.8xlarge 的 CPU 機型、step 爲 30、batch 爲 16 時,圖片生成速度爲 0.14 images/s;採用 A10 的 GPU 實例、step 爲 30,batch 爲 16 時,圖片生成速度爲 0.4 images/s。但從最佳圖像生成質量的推理性能來看,採用 ecs.g8i.8xlarge 的 CPU 機型、step 爲 4、batch 爲 16 時,圖像生成速度爲 1.2 images/s,仍可實現秒級出圖性能。

因此,通過合理運用 CPU 加速策略和文生圖模型推理的最佳實踐,ECS g8i 等第八代 CPU 實例可用於替代 GPU 推理實例,提供穩定、高效、高性價比且安全機密的文生圖服務。

在追求性價比、模型安全 TEE 和大規模資源供給的文生圖推理場景下,建議採用 ecs.g8i.4xlarge 機型運行 stabilityai/sdxl-turbo 及相關的微調模型,以最優性價比的方式提供高質量的文生圖服務。

  • 使用 ecs.g8i.8xlarge 實例代替 ecs.gn7i-c8g1.2xlarge 時,可有效節省約 9% 的成本,並依然保持 1.2 images/s 的圖像生成速度。
  • 使用 ecs.g8i.4xlarge 實例替代 ecs.gn7i-c8g1.2xlarge 時,圖像生成速度降爲 0.5 images/s,但可有效節省超過 53% 的成本。

One more things,更安全的機密推理

使用 ACK 集羣的 TDX 機密虛擬機節點池,通過採用 ECS g8i 實例並結合 AMX + IPEX 技術,能夠有效加速文生圖模型的推理速度,並可以開啓TEE實現對模型推理的安全保護。通過簡單的打標和更新模型部署,可以把模型部署遷移進入內存加密的機密虛擬機環境。

  1. 在 ACK 集羣內創建一個機密計算節點池,參考創建機密虛擬機節點池 [ 2]

  2. 將以下內容保存爲 tdx_values.yaml。說明此處以爲 TDX 機密虛擬機節點池配置了標籤 nodepool-label=tdx-vm-pool 爲例,如果您配置了其他標籤,需替換 nodeSelector 中 nodepool-label 取值。

nodeSelector:
  nodepool-label: tdx-vm-pool
  1. 執行以下命令,將部署的 Stable Diffusion 示例模型遷移到 TDX 機密計算節點池。
helm upgrade stable-diffusion-ipex https://aliacs-app-catalog.oss-cn-hangzhou.aliyuncs.com/pre/charts-incubator/stable-diffusion-ipex-0.1.9.tgz -f tdx_values.yaml

結論

在追求性價比、模型安全和大規模資源供給的文生圖推理場景下,建議採用 ecs.g8i.4xlarge, ecs.g8i.8xlarge,ecs.g8i.12xlarge 機型補充,代替部分 GPU 實例運行 stabilityai/sdxl-turbo 及相關的微調模型,通過合理運用節點池管理,應用和 API 的部署模版 Helm Chart,Intel CPU 加速擴展,以最優性價比的方式提供穩定、高效、安全機密的文生圖服務。

  • 使用 ecs.g8i.8xlarge 實例代替 ecs.gn7i-c8g1.2xlarge 時,可有效節省約 9% 的成本,並依然保持 1.2 images/s 的圖像生成速度。
  • 使用 ecs.g8i.4xlarge 實例替代 ecs.gn7i-c8g1.2xlarge 時,圖像生成速度降爲 0.5 images/s,但可有效節省超過 53% 的成本。

更詳細參考:https://help.aliyun.com/zh/ack/ack-managed-and-ack-dedicated/user-guide/using-tee-cpu-to-accelerate-text2image-inference

相關鏈接:

[1] 創建 Kubernetes 託管版集羣

https://help.aliyun.com/zh/ack/ack-managed-and-ack-dedicated/user-guide/create-an-ack-managed-cluster-2#task-skz-qwk-qfb

[2] 創建機密虛擬機節點池https://help.aliyun.com/zh/ack/ack-managed-and-ack-dedicated/user-guide/create-tdx-confidential-vm-node-pools

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章