PAI-EAS Spot是基于競價實例的一種經濟高效的在線推理服務部署方案,特別適合對成本敏感但能容忍一定程度響應延遲的應用場景。本文為開發者提供使用PAI-EAS Spot時的最佳實踐指南,幫助您更有效地利用資源降低成本,同時保持服務的穩定性。
適用場景
非關鍵業務:即使偶爾遇到服務中斷也不會造成重大影響的應用。
可容錯處理:能夠通過重試機制或其他容錯手段來應對短暫的服務不可用情況。
成本優化需求高:希望通過采用更加靈活且便宜的計算資源來降低運營成本的企業和個人項目。
Spot服務配置方法
登錄PAI控制臺,在頁面上方選擇目標地域,并在右側選擇目標工作空間,然后單擊進入EAS。
在模型在線服務(EAS)頁面,單擊部署服務,在自定義模型部署區域,單擊自定義部署。
在資源部署模塊中,資源類型選擇公共資源,選擇資源規格(推薦使用L或H機型),單擊打開競價模式,填寫出價。您可以單擊歷史價格曲線,追溯并查看該機型過去48小時內的市場價記錄作為出價參考。
重要出價不等于成交價,市場價才是成交價!出價反映的是客戶愿意支付的最高價格。只要市場價格低于客戶的出價,資源就會被保留而不會被釋放。在資源持有期間,客戶的實際支付價格將遵循市場價格,而非出價。
非常建議客戶將出價設定為目錄價格的20%。例如,對于8核單卡L20的按量付費目錄價為14.4元/小時,目前市場上的Spot價格不會超過目錄價的20%,即2.88元/小時。這樣的策略可以確保客戶在享受價格優惠的同時,穩定使用所需資源。詳情請參見競價實例選擇。
建議您同時配置常規型實例,避免競價實例搶占失敗導致服務部署失敗。
在服務部署成功后,在EAS服務詳情頁面中可便捷地查閱該機型過去48小時內的價格波動情況,從而對成本變化有更清晰的了解和掌握。
Spot回收和容錯機制
EAS平臺側回收機制
當Spot實例即將被回收時,EAS預計會在大約5分鐘前收到預警通知。接到通知后,EAS實例將開始進行優雅退出,確保從即將回收的實例上平穩移出流量,避免服務請求中斷。同時,EAS會自動啟動新的實例,新實例根據用戶資源配置中指定的機型順序依次嘗試部署。這一流程旨在最小化因實例回收帶來的影響,保障客戶業務的順暢運行。
用戶需要配置后付費實例常規型資源以防止所有Spot實例被占用情況出現,確保服務的連續性和穩定性。
觸發回收機制后切換回Spot實例
當Spot實例被回收并觸發上述機制將服務實例替換為常規型資源后,如果希望在競價實例庫存恢復后再將服務實例切換為競價實例,請通過“實例重建”功能將該實例切換為競價實例。
通過“實例重建”功能釋放實例資源并重新創建相同配置實例:
用戶配置策略建議
當Spot實例即將被回收時,EAS會自動啟動新的實例并開始進行優雅退出,為了提升服務的穩定性和可靠性,提升新實例拉起的效率,建議客戶使用以下配置策略。
配置多規格實例
為了確保服務的穩定性和可靠性,我們建議客戶在配置機型時采取多元化策略,選擇多種不同規格的資源。尤為重要的是,建議客戶在配置列表中包含至少一種常規型資源(即關閉競價開關)作為保底選項。這樣,EAS服務將根據客戶指定的機型順序依次嘗試部署,從而最大限度地確保服務能夠穩定啟動和運行。多實例選擇功能多規格實例選擇。
配置本地目錄內存緩存
為了提升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,并選擇標準版的實例規格,創建鏡像倉庫時開啟鏡像加速,從而提升新實例擴容效率,詳情請參見鏡像加速。
EAS自定義部署時的鏡像配置如圖:
購買ACR標準版的實例規格:
創建鏡像倉庫時打開鏡像加速:
搭配彈性擴縮容
在業務負載出現顯著的波峰波谷時,建議開啟水平自動擴縮容功能,可以采用專屬資源組保底+spot資源彈性+常規資源兜底的方式實現業務平穩拉起并提升性價比。具體配置策略如下:
購買一部分的EAS預付費/后付費專屬資源組來保證服務的承載流量下限,在控制臺配置專屬資源組配置GPU、CPU和內存需求保障服務可拉起。
開啟EAS彈性資源池配置多種資源規格,按照資源排序優先選擇競價資源,最后為保底資源,這樣可以實現業務波峰時優先彈到庫存充足的spot資源,在spot資源不足時彈到常規資源,保障業務在波峰時既可優先使用性價比資源又可實現業務平穩擴容。
部署好服務后在服務詳情頁中,根據業務指標開啟水平自動彈性擴縮容,可通過QPS、CPU利用率、GPU利用率和隊列長度等指標進行自動擴縮容,也可自定義指標來進行自動擴縮容。
同時也可根據業務流量跟隨時間變化的波動來開啟定時擴縮容功能。
創建實例時,會優先使用專屬資源組資源,其次按照彈性資源池的排序依次輪巡可用資源。
例如,當專屬資源組資源已用滿,需要彈到公共資源池創建多個實例時,系統會判斷當前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彈性配置具體方法可參考如下文檔: