摘要:北京時間2023年1月9日,Volcano社群v1.7.0版本正式釋出。
本文分享自華為雲社群《Volcano 社群 v1.7.0 版本正式釋出 | 雲原生批次計算》,作者:華為云云原生團隊 。
北京時間2023年1月9日,Volcano社群v1.7.0版本正式釋出。此次版本增加了以下新特性:
Volcano是業界首個雲原生批次計算專案,於2019年6月在上海KubeCon正式開源,並在2020年4月成為CNCF官方專案。2022年4月,Volcano正式晉級為CNCF孵化專案。Volcano社群開源以來,受到眾多開發者、合作伙伴和使用者的認可和支援。截止目前,累計有490+全球開發者向專案貢獻了程式碼。
Pytorch是當下最流行的AI框架之一,已被廣泛應用於計算機視覺,自然語言處理等深度學習領域,並且已有越來越多的使用者開始以容器化的方式在Kubernetes上執行Pytorch來獲得更高資源利用率和並行效率。
本次1.7版本提供了Pytorch Job強化功能外掛,,免去了容器埠、MASTER_ADDR、MASTER_PORT、WORLD_SIZE、RANK環境變數等眾多繁瑣的手動設定環節,讓使用者可以用極簡的方式在Volcano上執行Pytorch Job。
Volcano社群當前提供了TensorFlow、MPI和Pytorch等Job強化功能外掛,幫助使用者更簡潔高效的執行對應的訓練框架和計算作業。
此外,Volcano還提供了Job外掛的擴充套件開發框架,滿足高階使用者針對複雜場景客製化Job外掛的需求。
設計檔案:Pytorch-plugin
https://github.com/volcano-sh/volcano/blob/master/docs/design/distributed-framework-plugins.md
使用者手冊:Pytorch-plugin-user-guide
https://github.com/volcano-sh/volcano/blob/master/docs/user-guide/how_to_use_pytorch_plugin.md
Issue:#2292
https://github.com/volcano-sh/volcano/issues/2292
Ray 是一個用於擴充套件 AI 和 Python 應用程式的統一框架,可以在任何機器、叢集、雲提供商和 Kubernetes 上執行,並具有不斷髮展完善的社群生態。
當前,機器學習工作負載的計算密集度越來越高,單節點開發環境已無法滿足訓練任務在資源上的需求,Ray可以將同一套程式碼從單機執行無縫擴充套件到叢集中執行。Ray是面向通用場景進行的設計,可以高效執行任何型別的工作負載。
該特性實現Volcano和Ray的協同工作,使用Volcano為Ray提供批次排程功能。目前該特性已在KubeRay v0.4(https://github.com/ray-project/kuberay/releases/tag/v0.4.0)版本正式釋出。
使用者手冊:KubeRay-integration-with-Volcano
https://ray-project.github.io/kuberay/guidance/volcano-integration/#kuberay-integration-with-volcano
Issue:
#2429:https://github.com/volcano-sh/volcano/issues/2429#213:https://github.com/ray-project/kuberay/issues/213
在不同的業務場景下,排程器發揮的價值與能力各有不同。比如,在批次計算場景中,Volcano的排程策略和能力更為豐富;通用服務排程場景中,Kubernetes預設排程器的能力更為均衡。但使用者的叢集中通常不會只執行一種型別的任務,在既有批次計算任務執行,又需要排程通用服務的場景下,如何兼顧不同型別任務的排程是一項值得研究的工作。
從1.7版本開始,Volcano提供對Kubernetes 預設排程器完全相容的能力,可用於排程管理長期執行的服務。通過本次功能強化,使用者可以使用 Volcano 統一排程長時間執行的服務和批次處理工作負載。
重點增強項如下:
Volcano的 scheduler 和 webhook 支援多排程器
支援 NodeVolumeLimits 外掛
支援 VolumeZone 外掛
支援 PodTopologySpread 外掛
支援 SelectorSpread外掛
另外,本次版本將對Kubernetes的支援升級到了v1.25。
Issue:
#2394:https://github.com/volcano-sh/volcano/issues/2394
#2510:https://github.com/volcano-sh/volcano/issues/2510
該特性通過交叉編譯實現一鍵化編譯Volcano多架構映象功能,比如,可以在amd64架構機器上,一鍵化編譯amd64和arm64架構的Volcano基礎映象,並上傳至映象倉庫。使用者安裝部署時,會根據自身環境中機器架構自動選擇合適的映象執行,對開發者和使用者更友好。
使用手冊:building-docker-images
https://github.com/volcano-sh/volcano/blob/master/docs/development/development.md
Issue:#2435
https://github.com/volcano-sh/volcano/pull/2435
該特性在佇列狀態資訊中增加已分配資源實時統計功能,通過該功能,使用者可以實時檢視佇列的資源分配情況,方便管理員動態規劃資源,使叢集資源得到最大化利用。Volcano通過佇列的方式對叢集資源進行分配管理,使用Capability欄位來限制每個佇列的資源上限,這是我們進行佇列資源分配的硬約束。當前,在叢集執行過程中,使用者無法清楚的瞭解到佇列中已分配資源和Capability中空閒資源的詳細資訊,有可能會在佇列空閒資源不足時提交大量工作負載,導致作業掛起和autoScaler非預期的觸發叢集擴容,從而增加雲資源的使用成本。通過該特性中新增加的狀態資訊,使用者可以更清晰有效的管理叢集資源,控制使用成本。
Issue:#2571
https://github.com/volcano-sh/volcano/issues/2571
致謝貢
Volcano v1.7.0 版本包含了來自29位貢獻者的數百次程式碼提交,在此對各位貢獻者表示由衷的感謝:
貢獻者 GitHub ID:
Release note:v1.7.0 https://github.com/volcano-sh/volcano/releases/tag/v1.7.0
Branch:release-1.7 https://github.com/volcano-sh/volcano/tree/release-1.7
Volcano雲原生批次計算專案主要用於 AI、巨量資料、基因、渲染等諸多高效能運算場景,對主流通用計算框架均有很好的支援。社群已吸引2.6萬+全球開發者,並獲得2.8k Star和670+ Fork,參與貢獻企業包括華為、AWS、百度、騰訊、京東、小紅書等。目前,Volcano在人工智慧、巨量資料、基因測序等海量資料計算和分析場景已得到快速應用,已完成對Spark、Flink、Tensorflow、PyTorch、Argo、MindSpore、Paddlepaddle 、Kubeflow、MPI、Horovod、mxnet、KubeGene、Ray等眾多主流計算框架的支援,並構建起完善的上下游生態。
Volcano社群技術交流地址
Volcano官網:https://volcano.sh
GitHub: https://github.com/volcano-sh/volcano
每週例會: https://zoom.us/j/91804791393
新增社群小助手k8s2222回覆「Volcano」進入技術交流群