HiveD ist ein Planer für Deep-Learning-Workloads.
Als eigenständige Komponente von Microsoft OpenPAI ist HiveD als Kubernetes Scheduler Extender für Multi-Tenant -GPU- Cluster konzipiert. Bei einem mandantenfähigen GPU-Cluster wird davon ausgegangen, dass sich mehrere Mandanten (Teams) denselben GPU-Pool in einem einzelnen physischen Cluster (PC) teilen, und es werden für jeden Mandanten einige Ressourcengarantien bereitgestellt. HiveD modelliert jeden Mandanten als virtuellen Cluster (VC), sodass ein Mandant seinen eigenen VC wie einen privaten Cluster nutzen kann, während er gleichzeitig die freien Ressourcen anderer VCs mit niedrigerer Priorität nutzen kann.
HiveD bietet mehrere wichtige Funktionen für Deep-Learning-Workloads:
Das entscheidende Merkmal, das HiveD auszeichnet, besteht darin, dass es jedem VC eine Ressourcengarantie bietet, nicht nur in Bezug auf die Menge, einen numerischen Wert, sondern auch in Bezug auf die Topologie , eine wichtige Anforderung für GPU-basierte Trainingsjobs. Beispielsweise garantiert ein herkömmlicher Scheduler, dass ein VC 8 GPUs nutzen kann. Allerdings ist die Topologie dieser 8 GPUs nicht bekannt. Es ist möglich, dass ein 8-GPU-Trainingsjob, der innerhalb eines einzelnen Knotens ausgeführt werden muss, nicht zugewiesen werden kann, selbst wenn sein VC noch über 8 freie GPUs verfügt. Dies liegt daran, dass diese 8 kostenlosen GPUs möglicherweise zu mehreren Knoten gehören.
HiveD schützt die Ressourcen von VCs im Hinblick auf cell , einen benutzerdefinierten Ressourcentyp, der sowohl die Menge als auch andere Arten von Informationen wie Topologie und Hardwaretyp kodiert. Im obigen Beispiel kann ein Benutzer den Zelltyp eines 8-GPU-Knotens definieren und dem VC kann eine dieser Zellen zugewiesen werden. Dann stellt HiveD sicher, dass immer ein 8-GPU-Knoten für den VC verfügbar ist , unabhängig von den anderen Arbeitslasten im Cluster.
HiveD ermöglicht flexible Zelldefinitionen für fein abgestimmte Ressourcengarantien. Benutzer können beispielsweise Zellen auf mehreren Topologieebenen (z. B. PCI-e-Switch), für verschiedene Gerätemodelle (z. B. NVIDIA V100 GPU, AMD Radeon MI100 GPU, Cloud TPU v3) oder Netzwerkkonfigurationen (z. B. InfiniBand-Domäne) definieren. . Ein VC kann verschiedene Arten von Zellen haben, und HiveD garantiert alle.
HiveD optimiert die Leistung der Gruppenplanung , einer typischen Planungsanforderung für Deep-Learning-Trainingsjobs, bei der alle Container zugewiesen werden sollten, bevor der Trainingsjob beginnen kann. Mehrere gemeinsam geplante Jobs, die um denselben Ressourcensatz konkurrieren, können zu einer Hungersnot führen, bei der jeder Job nur einen Teil der Ressourcen erhält und auf unbestimmte Zeit warten muss.
HiveD plant alle Container innerhalb eines Jobs auf transaktionale Weise, d. h. alle Anforderungen dieser Container werden als Ganzes gewährt oder abgelehnt, wodurch eine teilweise Ressourcenzuweisung und -verknappung vermieden wird.
HiveD unterstützt mehrere Jobprioritäten . Jobs mit höherer Priorität können Jobs mit niedrigerer Priorität vorrangig ausführen . HiveD führt auch opportunistische Jobs ein, d. h. Jobs mit der niedrigsten Priorität, die nach Möglichkeit die freien Ressourcen anderer VCs nutzen können (ohne die Ressourcengarantien für andere VCs zu brechen).
Mandantenfähigkeit: Virtueller Cluster (VC)
Feinkörnige VC-Ressourcengarantie: Menge, Topologie, Typ, angeheftete VC-Ressource usw.
Flexible Intra-VC-Planung: Topologiebewusstsein, flexible Hardwaretypen, angeheftete VC-Ressourcen, Anpassung der Planungsrichtlinien usw.
Optimierte Ressourcenfragmentierung und weniger Hunger
Prioritäten, Überbeanspruchung mit niedriger Priorität und Inter-/Intra-VC-Preemption
Job (vollständige/teilweise) Gruppenplanung/Vorabbestellung
Fehlertoleranz, schlechte Hardware-Erkennung, arbeitserhaltende Neukonfiguration
Ein Kubernetes-Cluster, Version 1.14.2 oder höher, in der Cloud oder vor Ort.
Konfigurationsplaner
Führen Sie den Scheduler aus
Senden Sie die Arbeitslast an den Scheduler
Benutzerhandbuch
Funktionsdemo
Design
DockerHub
FrameworkController: Ein universeller Kubernetes-Pod-Controller, der HiveD problemlos zum Planen von Jobs nutzen kann.
OpenPAI: Eine Komplettlösung für die KI-Plattform. HiveD wird benutzerfreundlicher, wenn es mit OpenPAI zusammenarbeitet.
Dieses Projekt freut sich über Beiträge und Vorschläge. Für die meisten Beiträge müssen Sie einem Contributor License Agreement (CLA) zustimmen, in dem Sie erklären, dass Sie das Recht haben, uns die Rechte zur Nutzung Ihres Beitrags zu gewähren, und dies auch tatsächlich tun. Weitere Informationen finden Sie unter https://cla.opensource.microsoft.com.
Wenn Sie eine Pull-Anfrage einreichen, ermittelt ein CLA-Bot automatisch, ob Sie eine CLA bereitstellen müssen, und schmückt die PR entsprechend (z. B. Statusprüfung, Kommentar). Folgen Sie einfach den Anweisungen des Bots. Sie müssen dies nur einmal für alle Repos tun, die unsere CLA verwenden.
Dieses Projekt hat den Microsoft Open Source Verhaltenskodex übernommen. Weitere Informationen finden Sie in den FAQ zum Verhaltenskodex oder wenden Sie sich bei weiteren Fragen oder Kommentaren an [email protected].
Bitte zitieren Sie HiveD in Ihren Veröffentlichungen, wenn es Ihrer Forschung hilft:
@inproceedings {hived-osdi2020, author = {Hanyu Zhao and Zhenhua Han and Zhi Yang and Quanlu Zhang and Fan Yang and Lidong Zhou and Mao Yang and Francis C.M. Lau and Yuqi Wang and Yifan Xiong and Bin Wang}, title = {{HiveD}: Sharing a {GPU} Cluster for Deep Learning with Guarantees}, booktitle = {14th {USENIX} Symposium on Operating Systems Design and Implementation ({OSDI} 20)}, year = {2020}, isbn = {978-1-939133-19-9}, pages = {515--532}, url = {https://www.usenix.org/conference/osdi20/presentation/zhao-hanyu}, publisher = {{USENIX} Association}, month = nov, }