PAI-EAS Spot是基於競價執行個體的一種經濟高效的線上推理服務部署方案,特別適合對成本敏感但能容忍一定程度響應延遲的應用情境。本文為開發人員提供使用PAI-EAS Spot時的最佳實務指南,協助您更有效地利用資源降低成本,同時保持服務的穩定性。
適用情境
-
非關鍵業務:即使偶爾遇到服務中斷也不會造成重大影響的應用。
-
可容錯處理:能夠通過重試機制或其他容錯手段來應對短暫的服務不可用情況。
-
成本最佳化需求高:希望通過採用更加靈活且便宜的計算資源來降低營運成本的企業和個人專案。
Spot服務配置方法
-
登入PAI控制台,在頁面上方選擇目標地區,並在右側選擇目標工作空間,然後單擊進入EAS。
-
在推理服务頁簽,單擊部署服务,然後在自定义模型部署地區,單擊自定义部署。
-
在資源部署模組中,資源類型選擇公共资源,選擇資源規格(推薦使用L或H機型),單擊開啟競價模式,填寫出價。您可以單擊歷史價格曲線,追溯並查看該機型過去48小時內的市場價記錄作為出價參考。
在部署資源地區可添加多行資源規格,分別設定競價開關及出價金額。競價型保留時間長度選擇無確定保護期間。
重要-
出價不等於成交價,市場價才是成交價!出價反映的是客戶願意支付的最高價格。只要市場價格低於客戶的出價,資源就會被保留而不會被釋放。在資源持有期間,客戶的實際支付價格將遵循市場價格,而非出價。
-
非常建議客戶將出價設定為目錄價格的20%。例如,對於8核單卡L20的隨用隨付目錄價為14.4元/小時,目前市場上的Spot價格不會超過目錄價的20%,即2.88元/小時。這樣的策略可以確保客戶在享受價格優惠的同時,穩定使用所需資源。詳情請參見競價執行個體選擇。
-
建議您同時配置常規型執行個體,避免競價執行個體搶佔失敗導致服務部署失敗。
-
-
在服務部署成功後,在EAS服務詳情頁面中可便捷地查閱該機型過去48小時內的價格波動情況,從而對成本變化有更清晰的瞭解和掌握。部署完成後,在服務詳情頁的服務執行個體地區可查看搶佔型執行個體運行狀態,單擊執行個體後右側面板展示執行個體規格價格(¥/時)折線圖,其中藍色實線表示執行個體規格原價,紫色虛線表示可用性區域Spot市場價。
Spot回收和容錯機制
EAS平台側回收機制
當Spot執行個體即將被回收時,EAS預計會在大約5分鐘前收到預警通知。接到通知後,EAS執行個體將開始進行優雅退出,確保從即將回收的執行個體上平穩移出流量,避免服務要求中斷。同時,EAS會自動啟動新的執行個體,新執行個體根據使用者資源配置中指定的機型順序依次嘗試部署。這一流程旨在最小化因執行個體回收帶來的影響,保障客戶業務的順暢運行。
使用者需要配置後付費執行個體常規型資源以防止所有Spot執行個體被佔用情況出現,確保服務的連續性和穩定性。
觸發回收機制後切換回Spot執行個體
當Spot執行個體被回收並觸發上述機制將服務執行個體替換為常規型資源後,如果希望在競價執行個體庫存恢複後再將服務執行個體切換為競價執行個體,請通過“執行個體重建”功能將該執行個體切換為競價執行個體。
通過“執行個體重建”功能釋放執行個體資源並重新建立相同配置執行個體:
在服務執行個體地區,單擊目標執行個體操作列的下拉式功能表,選擇執行個體重建。
使用者配置策略建議
當Spot執行個體即將被回收時,EAS會自動啟動新的執行個體並開始進行優雅退出,為了提升服務的穩定性和可靠性,提升新執行個體拉起的效率,建議客戶使用以下配置策略。
配置多規格執行個體
為了確保服務的穩定性和可靠性,我們建議客戶在配置機型時採取多元化策略,選擇多種不同規格的資源。尤為重要的是,建議客戶在配置列表中包含至少一種常規型資源(即關閉競價開關)作為保底選項。這樣,EAS服務將根據客戶指定的機型順序依次嘗試部署,從而最大限度地確保服務能夠穩定啟動和運行。多執行個體選擇功能多規格執行個體選擇。
在部署資源地區,可添加多種資源規格(最多10種),為每種競價執行個體設定出價(元/小時)。在競價型保留時間長度地區,選擇無確定保護期間或設定執行個體使用1小時。
配置本地目錄記憶體緩衝
為了提升Spot執行個體被回收時,新執行個體啟動時拉模數型檔案的效率,可以通過配置本地目錄記憶體緩衝,利用空閑記憶體將本地目錄中的模型檔案快取到節點記憶體中,新執行個體啟動時將不需要再從掛載的資料集中讀模數型檔案,從而可以縮短新執行個體擴容時讀模數型檔案的時間,防止Spot回收導致服務執行個體停用時間變長。
建議在EAS服務建立過程中開啟記憶體緩衝加速來提升執行個體擴容效率,詳情請參見模型緩衝加速。
在服務功能地區,開啟記憶體緩衝加速開關,開啟後可單擊修改配置調整緩衝參數。
開啟記憶體緩衝加速(cachefs)後的加速效果可參考下表。以Stable Diffusion模型切換情境為例,對比直接從OSS掛載目錄中讀模數型檔案,當開啟記憶體緩衝加速後服務擴容時,新執行個體初始化時模型可直接從服務內其他執行個體記憶體讀取(cachefs遠端命中),降低模型載入耗時。
|
模型 |
模型大小 |
模型載入耗時(s) |
|
|
OSS掛載 |
cachefs遠端命中 |
||
|
anything-v4.5.safetensors |
7.2G |
89.88 |
15.18 |
|
Anything-v5.0-PRT-RE.safetensors |
2.0G |
16.73 |
5.46 |
|
cetusMix_Coda2.safetensors |
3.6G |
24.76 |
7.13 |
|
chilloutmix_NiPrunedFp32Fix.safetensors |
4.0G |
48.79 |
8.47 |
|
CounterfeitV30_v30.safetensors |
4.0G |
64.99 |
7.94 |
|
deliberate_v2.safetensors |
2.0G |
16.33 |
5.55 |
|
DreamShaper_6_NoVae.safetensors |
5.6G |
71.78 |
10.17 |
|
pastelmix-fp32.ckpt |
4.0G |
43.88 |
9.23 |
|
revAnimated_v122.safetensors |
4.0G |
69.38 |
3.20 |
使用企業版ACR
為了提升Spot執行個體被回收時,新執行個體啟動時拉取鏡像的效率,建議使用企業版ACR並開啟鏡像加速的功能,使用加速鏡像部署EAS服務,加速鏡像地址的格式是在普通鏡像URL地址後添加_accelerated尾碼,同時在部署EAS服務時請選擇您企業版ACR執行個體中使用的VPC網路。
使用企業版ACR,並選擇標準版的執行個體規格,建立鏡像倉庫時開啟鏡像加速,從而提升新執行個體擴容效率,詳情請參見鏡像加速。
在鏡像加速選項中選擇完整模式。
搭配彈性擴縮容
在業務負載出現顯著的波峰波穀時,建議開啟水平自動擴縮容功能,可以採用專屬資源群組保底+spot資源彈性+一般資源兜底的方式實現業務平穩拉起並提升性價比。具體配置策略如下:
-
購買一部分的EAS預付費/後付費專屬資源群組來保證服務的承載流量下限,在控制台配置專屬資源群組配置GPU、CPU和記憶體需求保障服務可拉起。
-
開啟EAS弹性资源池配置多種資源規格,按照資源排序優先選擇競價資源,最後為保底資源,這樣可以實現業務波峰時優先彈到庫存充足的spot資源,在spot資源不足時彈到一般資源,保障業務在波峰時既可優先使用性價比資源又可實現業務平穩擴容。
彈性資源集區中配置三種資源規格:ecs.gn8v-8x.48xlarge(競價開啟,出價33元/小時)、ecs.gn8is-8x.32xlarge(競價開啟,出價25元/小時)作為競價資源,ml.gu7i.c8m30.1-gu30(競價關閉)作為保底資源。競價型保留時間長度設定為設定執行個體使用1小時。
-
部署好服務後在服務詳情頁中,根據業務指標開啟水平自動彈性擴縮容,可通過QPS、CPU利用率、GPU利用率和隊列長度等指標進行自動擴縮容,也可自訂指標來進行自動擴縮容。
在自動彈性擴縮容設定彈窗中,配置最小執行個體數和最大執行個體數(例如分別設定為 2 和 10),選擇擴縮容指標並設定閾值(例如 GPU利用率閾值 設定為 60%),單擊開啟。
同時也可根據業務流量跟隨時間變化的波動來開啟定時擴縮容功能。
在定時自動擴縮容設定對話方塊中,單擊添加建立定時任務,配置任務名稱、目標執行個體數和調度周期(支援按星期、天或Cron運算式三種方式設定),並選擇執行時間,系統將自動產生對應的cron運算式(例如
0 0 9 * * *表示每天9時執行)。配置完成後單擊確定。
建立執行個體時,會優先使用專屬資源群組資源,其次按照彈性資源集區的排序依次輪巡可用資源。
-
例如,當專屬資源群組資源已用滿,需要彈到公用資源集區建立多個執行個體時,系統會判斷當前ecs.gn8v-8x.48xlarge庫存足夠建立幾個執行個體,如果資源不夠則判斷ecs.gn8is-8x.32large可建立幾個執行個體,如果都不夠則採用ml.gu7i.c8m30.1-gu30來建立剩餘執行個體。
-
例如,如果需要在專屬資源群組的基礎上彈出來8個執行個體,此時可能出現的情況是,專屬資源群組有2個執行個體,ecs.gn8v-8x.48xlarge有3個執行個體,ecs.gn8is-8x.32large有2個執行個體,ml.gu7i.c8m30.1-gu30有3個執行個體。
EAS彈性配置具體方法可參考如下文檔: