Allgemeine Einführung
SkyPilot ist ein Open-Source-Framework, das vom Sky Computing Lab an der University of California, Berkeley, initiiert wurde und Benutzern helfen soll, KI- und Stapelverarbeitungsaufgaben auf jeder Cloud-Infrastruktur effizient auszuführen. SkyPilot unterstützt mehr als 14 Cloud-Dienste (einschließlich AWS, GCP, Azure usw.) und Kubernetes und bietet eine einheitliche Ausführungsschnittstelle, erhebliche Kosteneinsparungen und eine hohe GPU-Verfügbarkeit. Es wird über eine einfache YAML- oder Python-API konfiguriert, mit der Benutzer Aufgaben in der Cloud bereitstellen können, ohne den Code zu ändern, wobei automatisch die optimalen Ressourcen ausgewählt und Fehlertoleranz aktiviert werden. Mit SkyPilot können Benutzer Aufgaben in der Cloud bereitstellen, ohne den Code zu ändern, wobei automatisch die optimalen Ressourcen ausgewählt und Fehlertoleranz ermöglicht wird. Seit seiner Veröffentlichung im Jahr 2022 hat das Projekt über 1 Million Downloads und mehr als 7.000 Sterne auf GitHub erhalten und wird häufig für das Training von Machine-Learning-Modellen, die Abstimmung von Hyperparametern und in der Bioinformatik eingesetzt.
Funktionsliste
- Multi-cloud-EinsatzUnterstützt die Ausführung von Aufgaben in mehr als 14 Clouds wie AWS, GCP, Azure und Kubernetes und vermeidet so die Bindung an einen einzelnen Cloud-Anbieter.
- KostenoptimierungAutomatisches Auswählen der günstigsten Cloud-Region oder -Instanz (z. B. On-Demand- oder Spot-Instanzen), wodurch Kosteneinsparungen von bis zu 3-6,5x erzielt werden können.
- GPU/TPU-UnterstützungNahtlose Planung und Verwaltung von GPU- (z. B. NVIDIA A100) und TPU-Ressourcen zur Verbesserung der Berechnungseffizienz.
- Automatische StörungsbeseitigungAutomatisches Umschalten auf andere Clouds oder Regionen, wenn die Kapazität nicht ausreicht oder ein Vorkaufsrecht besteht, um sicherzustellen, dass Aufgaben nicht unterbrochen werden.
- Code- und DatensynchronisierungAutomatisches Synchronisieren von lokalem Code und Daten mit dem Cloud-Cluster zur Vereinfachung des Bereitstellungsprozesses.
- Verwaltung von AufgabenwarteschlangenUnterstützt massiv gleichzeitige Aufgaben (z.B. 2000+ Jobs) für Szenarien wie Hyper-Parameter-Tuning.
- Bereitstellung von Diensten (SkyServe)Bietet HTTPS-Unterstützung und Lastausgleichsrichtlinien für die einfache Bereitstellung von KI-Modelldiensten.
- Unterstützung für reservierte InstanzenIntegration von lokalen Ressourcen wie AWS Capacity Blocks, GCP Dynamic Workload Scheduler und anderen.
Hilfe verwenden
SkyPilot ist für Entwickler, Forscher und Geschäftsanwender einfach zu installieren und zu verwenden. Nachfolgend finden Sie eine detaillierte Beschreibung der Installation, Konfiguration und Bedienung der Hauptfunktionen von SkyPilot.
Ablauf der Installation
- Vorbereitung der Umwelt
Stellen Sie sicher, dass Python 3.8 oder höher lokal installiert ist und dass Sie über diepip
Werkzeuge zur Paketverwaltung. Eine virtuelle Umgebung wird empfohlen, um Abhängigkeitskonflikte zu vermeiden:python3 -m venv skypilot_env Quelle skypilot_env/bin/activate
- Installation von SkyPilot
passieren (eine Rechnung oder Inspektion etc.)pip
Installieren Sie die neueste Version:pip install -U "skypilot[all]"
darunter auch
[alle]
Gibt an, dass alle unterstützten Cloud-Abhängigkeiten installiert sind. Wenn nur eine bestimmte Cloud (z. B. AWS) erforderlich ist, ersetzen Sie durchskypilot[aws]
. - Cloud-Authentifizierung
Konfigurieren Sie die Anmeldedaten für die Zielwolke. Nehmen Sie AWS als Beispiel:- Installieren Sie die AWS CLI:
pip install awscli
- Konfigurieren Sie die Anmeldedaten:
aws konfigurieren
Geben Sie den Zugangsschlüssel und den geheimen Schlüssel ein.
Für andere Clouds (z. B. GCP, Azure) lesen Sie bitte die offizielle Dokumentation, um eine ähnliche Konfiguration durchzuführen.
- Installieren Sie die AWS CLI:
- Überprüfen der Installation
Führen Sie den folgenden Befehl aus, um zu prüfen, ob die Installation erfolgreich war:Himmelskontrolle
Die Ausgabe zeigt den Status der aktivierten Cloud-Dienste an.
Hauptfunktionen
1. die Erstellung von Einsatzprofilen
SkyPilot verwendet YAML-Dateien zur Definition von Aufgaben. Um z. B. ein PyTorch-Modell zu trainieren, erstellen Sie eine train.yaml
::
Ressourcen: A100:1
Beschleuniger: A100:1 # mit 1 A100 GPU
num_nodes: 1 # Einzelknoten
workdir: ~/my_project # Synchronisierung des lokalen Projektverzeichnisses
setup: | # install dependencies
pip install torch torchvision
run: | # run task
python main.py --epochs 10
Ressourcen
Spezifizieren Sie die Rechenressourcen, z. B. den Typ und die Anzahl der GPUs.workdir
Lokaler Codekatalog mit automatischer Synchronisierung mit der Cloud.Einrichtung
: Vorbereitungsbefehle vor der Ausführung.laufen.
Befehl zur Ausführung der Mission.
2. die Einleitung des Mandats
Läuft im Terminal:
sky launch -c my-cluster train.yaml
-c mein-cluster
Benennung von Clustern für eine einfache spätere Verwaltung.- SkyPilot wählt automatisch die optimale Cloud-Ressource aus und startet die Aufgabe.
3. den Status des Mandats zu überprüfen
Überprüfen Sie den Status des Clusters:
Himmelsstatus
Zeigt alle laufenden Cluster und deren Ressourcenverbrauch an.
4) Kostenoptimierung und Spot-Beispiele
Nutzen Sie Spot-Instanzen, um Kosten zu senken:
sky launch -c my-spot-cluster train.yaml --use-spot
SkyPilot verwaltet automatisch Ausfälle von Spot-Instanzen und setzt Aufgaben fort.
5. die Bereitstellungsdienste (SkyServe)
Als Beispiel für den Einsatz eines LLaMA-Modells erstellen Sie die serve.yaml
::
Ressourcen.
Beschleuniger: A100:1
Dienst: Replikat: 2 # 2 Replikate
Replikat: 2 # 2 Replikate
Anschlüsse: 8080 #-Dienstanschluss
Ausführen: || Ausführen: | Ausführen
python serve.py --model llama
Starten Sie den Dienst:
sky serve up serve.yaml -n llama-service
Greifen Sie auf den generierten HTTPS-Endpunkt zu, um den Dienst zu nutzen.
6. umfangreiche gleichzeitige Missionen
Führen Sie mehr als 2000 Aufgaben aus (z. B. die Abstimmung von Hyperparametern):
sky jobs launch -c my-jobs train.yaml --num-jobs 2000
SkyPilot weist automatisch Ressourcen zu und verwaltet Warteschlangen.
Ausgewählte Funktionen
Multi-Cloud-Vermittlung
Wenn AWS nicht über A100 verfügt, geben Sie eine andere Cloud an:
sky launch -c my-cluster train.yaml --cloud gcp
Oder lassen Sie SkyPilot automatisch die günstigste Wolke auswählen:
sky launch -c my-cluster train.yaml --cloud cheapest
GPU-Planung
Verfügbare GPU-Ressourcen anzeigen:
sky show-gpus
Dynamische Anpassung an die Nachfrage Ressourcen
den Nagel auf den Kopf treffen Beschleuniger
Parameter.
Protokollierung und Fehlersuche
Anzeigen von Aufgabenprotokollen in Echtzeit:
sky logs my-cluster
Aktivieren Sie den Debug-Modus:
export SKYPILOT_DEBUG=1
sky launch -c mein-cluster train.yaml
caveat
- Sicherheit der AusweiseSicherstellen, dass die Datei mit den Cloud-Anmeldeinformationen (z. B.
~/.aws
), um Undichtigkeiten zu vermeiden. - Freigabe von RessourcenManuelles Herunterfahren des Clusters, wenn die Aufgabe abgeschlossen ist:
Sky down my-cluster
- Unterstützung der DokumentationFür fortgeschrittene Anwendungen lesen Sie bitte die offizielle SkyPilot-Dokumentation.
Mit diesen Schritten können Benutzer schnell mit SkyPilot arbeiten und KI- und Batch-Aufgaben effizient ausführen.