AI Personal Learning
und praktische Anleitung
Sitzsack Marscode1

SkyPilot: ein Open-Source-Framework für die effiziente Ausführung von KI- und Batch-Aufgaben in jeder Cloud

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. SkyPilot ermöglicht es den Nutzern, Aufgaben in der Cloud bereitzustellen, ohne den Code zu ändern, automatisch die optimalen Ressourcen auszuwählen und Fehlertoleranz zu ermöglichen. 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.

SkyPilot: ein Open-Source-Framework für die effiziente Ausführung von KI- und Batch-Aufgaben in jeder Cloud-1


 

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. Im Folgenden finden Sie eine detaillierte Beschreibung der Installation, Konfiguration und Bedienung der Hauptfunktionen von SkyPilot.

Einbauverfahren

  1. Vorbereitung der Umwelt
    Stellen Sie sicher, dass Python 3.8 oder höher lokal installiert ist und dass Sie über die pip Werkzeuge zur Paketverwaltung. Eine virtuelle Umgebung wird empfohlen, um Abhängigkeitskonflikte zu vermeiden:

    python3 -m venv skypilot_env
    source skypilot_env/bin/activate
  1. Installation von SkyPilot
    passieren (eine Rechnung oder Inspektion etc.) pip Installieren Sie die neueste Version:

    pip install -U "skypilot[all]"
    

    darunter auch [all] Gibt an, dass alle unterstützten Cloud-Abhängigkeiten installiert sind. Wenn nur eine bestimmte Cloud (z. B. AWS) erforderlich ist, ersetzen Sie durch skypilot[aws].

  2. 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 Anmeldeinformationen:aws configureGeben 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.
  3. Überprüfen der Installation
    Führen Sie den folgenden Befehl aus, um zu prüfen, ob die Installation erfolgreich war:

    sky check
    

    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::

resources:
accelerators: A100:1  # 使用 1 个 A100 GPU
num_nodes: 1         # 单节点
workdir: ~/my_project  # 同步本地项目目录
setup: |               # 安装依赖
pip install torch torchvision
run: |                 # 运行任务
python main.py --epochs 10
  • resourcesSpezifizieren Sie die Rechenressourcen, z. B. den Typ und die Anzahl der GPUs.
  • workdirLokaler Codekatalog mit automatischer Synchronisierung mit der Cloud.
  • setup: Vorbereitungsbefehle vor der Ausführung.
  • runBefehl zur Ausführung der Mission.

2. die Einleitung des Mandats

Läuft im Terminal:

sky launch -c my-cluster train.yaml
  • -c my-clusterBenennung 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:

sky status

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::

resources:
accelerators: A100:1
service:
replica: 2          # 2 个副本
ports: 8080         # 服务端口
run: |
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 A100 nicht bei AWS verfügbar ist, 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 resources den Nagel auf den Kopf treffen accelerators 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 my-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.

Darf nicht ohne Genehmigung vervielfältigt werden:Leiter des AI-Austauschkreises " SkyPilot: ein Open-Source-Framework für die effiziente Ausführung von KI- und Batch-Aufgaben in jeder Cloud
de_DEDeutsch