在 Azure CycleCloud 中使用現成 VM
Azure CycleCloud 支援在 nodearray 中部署 Spot VM ,以大幅降低叢集的作業成本。
警告
現成 VM 不適用於所有工作負載和叢集類型。 它們不提供可用性或容量的 SLA。 這些實例是「優先」或「低優先順序」實例,Azure 網狀架構可能會收回以管理容量,並在現成價格變更時收回。
設定 Spot 的 Nodearray
若要啟用 nodearray 的 Spot,只要在 區段上 [[nodearray]]
設定 Interruptible
為 true 即可。
CycleCloud 允許叢集指定 MaxPrice
Spot 實例的 。 由於現成價格可能會定期調整,而且區域和 SKU 之間可能會有顯著差異,因此 可 MaxPrice
讓使用者控制在 $/小時) 中願意支付 VM 的價格上限 (。 根據預設,CycleCloud 會在未指定時設定 MaxPrice=-1
,這表示「不要根據現成價格收回」。使用此設定時,實例只會因為容量需求或其他平台層級決策的變更而收回。
如需現成執行個體變數定價的詳細資訊,請參閱 現成定價 。
對於大部分的 HPC 應用程式而言, MaxPrice=-1
是很好的預設選擇。 不過,如果 nodearray 支援跨一系列 VM SKU 進行 多重選取自動 調整,則 MaxPrice
也可能自訂為在多重選取清單中建立較低價格 SKU 的喜好設定。
[cluster demo]
[[nodearray execute]]
Interruptible = true
MaxPrice = 0.2
如需完整詳細資料,請參閱叢集範本指南中的Spot 虛擬機器。
現成 VM 收回
CycleCloud 會透過 [已排程的事件 ] 功能來監視現成收回。 偵測到現成先占事件時,VM 會通知 CycleCloud,且實例會移至「正在等待收回」狀態。
常見問題集
搭配 CycleCloud 使用 Spot 具有 HPC 工作負載和 CycleCloud 自動調整特有的一些考慮。
何時應該考慮使用 Spot?
- 您的個別作業是否相對短?
- 良好的經驗規則是,在一小時內執行的作業可能適合 Spot 實例,因為如果實例被收回,則相對少的向前進度將會遺失。
- 排程器會自動重試/重新佇列主機上失敗的作業嗎?
- 如果主機在執行期間收回主機,您的作業是否安全可重新執行?
- 一般而言,現成實例最適合用於無狀態工作負載。
- 執行成本是否比完成時間更重要?
- Spot 通常非常適合在內部部署中排程低優先順序或後端填滿佇列的工作負載。
- 這是 Spot 可能適用于簡短 MPI 作業的其中一種情況。
何時應該避免使用 Spot?
- 例如,如果您的作業緊密結合 HPC 作業 (,則 MPI 作業) 可能不適合 Spot。
- 如果您的作業很重要且/或完成期限,則一般優先順序實例可能更適合,因為收回和重試可能會延長完成的時間。
- 不過,這可能是將叢集設定為使用一般優先順序和 Spot 實例混合的絕佳機會,以確保在嘗試藉由新增 Spot 實例來降低執行時間和成本時,達到期限。
- 如果您的作業無法安全地重新執行,則應該避免 Spot。
- 例如,如果您的作業在執行期間修改資料庫,則自動重新執行作業可能會造成錯誤或不正確結果。
- 如果您的作業執行時間很長,則 Spot 可能不適合。
- 對於長時間的程式而言,現成收回和貨幣的機會和重試的時間成本都會增加。
- 不過,這是可能需要依案例測量的情況。
收回/先占
如需 Azure 中的 現成收回 詳細資料,請參閱現成收回原則。
問。 CycleCloud 可以追蹤現成實例收回/先占嗎?
A. 是。 Spot 收回事件會在 [叢集 UI] 頁面中產生事件記錄檔通知。
問。 使用者如何收到收回通知?
A. 收回 CycleCloud 節點之後,使用者就會在 CycleCloud UI 的事件記錄檔中看到叢集的記錄訊息。 使用者也可以在收回現成實例之後,透過 Azure EventGrid 註冊從 CycleCloud 接收事件。
- 使用者可以在收回前 30 秒檢查電腦上是否有收回通知。 如需如何註冊事件的詳細資訊,請參閱 排程事件 。
- 一般而言,收回應該視為類似于在內部部署電腦上提取外掛程式,而且應該以相同的方式處理。
- 重要 事件處理常式 不應該認可 Spot 收回事件,因為如果已認可,Cyclecloud 事件處理常式可能不會收到事件。
問。 收回的頻率為何?
A. 收回率是高度變動的,而且主要取決於整個區域的需求變更。
問。 為何會收回實例?
A. 現成 VM 不保證可用性,而且可以隨時收回。 如需詳細資訊 ,請參閱 Spot VM 檔 。 如果 nodearray 已設定 MaxPrice
,則如果現成價格高於 MaxPrice
,則會收回實例。 這通常 很少見 ,因為現成價格會非常慢地移動。 以下是 可能會 觸發收回的一些案例:
- 隨著一般優先順序 VM 的需求增加,現成容量減少。
- 平台層級事件,例如計劃性硬體維護。
我的工作流程受到收回的影響為何?
問。 收回 Spot 實例時,我的作業會發生什麼情況?
A. 除非作業經過編碼來處理 30 秒收回通知並適當地處理,否則節點只會終止,而且作業失敗 (,而且希望重新嘗試) 。
問。 節點是否從叢集中刪除?
A. 是,節點將會在 CycleCloud UI 中清除。 在支援的排程器中,節點也會在排程器中清除。
問。 作業是否必須重新執行?
A. 一般而言,排程器的工作是重新嘗試/重新執行收回的作業。 不過,許多作業類別無法容忍重新嘗試 (,例如,當部分資料執行) 時寫入永續性儲存體。 這些作業可能不適合在 Spot 實例上執行。
問。 我是否可以混合使用 Spot 和隨選/一般優先順序 VM?
A. 是。 您可以使用個別的 Spot (Interruptible
) 和非 Spot nodearray 來建立現成和一般優先順序的混合。 使用混合的實例類型通常需要根據使用者所選擇的需求和排程器做出一些設定決策。 以下是幾個常見的組態:
- 將 Spot 和 Regular-Priority VM 分成排程器中的個別佇列。
- 此設定可讓提交者輕鬆地以適當 VM 類型的作業為目標
- 使用 Spot 和 Regular-Priority 實例建立單一大型資源集區。
- 此組態對於使用少量一般優先順序實例的可高度調整工作負載很有用,以確保向前進度和大量 Spot 可降低成本和執行時間。
問。 我可以變更 CycleCloud nodearrays 的 現成收回原則 嗎?
A. 是。 您可以直接在 nodearray 上設定 EvictionPolicy
屬性,將原則變更為 Delete
或 Deallocate
(預設值: Delete
) 。
不過,這目前僅適用于適當處理解除配置的自訂自動調整程式。 目前的 Azure CycleCloud 自動調整程式預期收回時會刪除 Spot 實例。
CycleCloud 中現成收回的排程器支援
如需排程器之 CycleCloud 實作的詳細資訊,請參閱排程器專屬指南。
問。 我的排程器自動調整程式如何處理現成收回?
A. 內建/支援的排程器的所有自動調整程式 (HTCondor、GridEngine、PBS Professional、Slurm、LSF) 嘗試正常處理 Spot 收回。 一般而言,收回的實例將會從排程器中移除,而且如果容量需求高於收回之後的新可用容量,則自動調整程式將會取代實例。
應該建置自訂自動調整程式,以預期現成收回或一般電腦失敗,並正常處理它們。
問。 我應該預期在收回實例上執行的作業會發生什麼事?
A. 這主要是由使用者在提交作業時設定。 某些排程器,例如 GridEngine,也允許每個佇列設定預設動作。 根據預設,除了 HTCondor 之外,所有內建 CycleCloud 排程器部署都會設定為在收回或意外終止其執行節點時,將作業標示為失敗。 此行為是設計方式,因為只有使用者可以知道其作業是否可安全地重試。