ist jetzt verfügbar! Lesen Sie über die neuen Funktionen und Fehlerbehebungen vom November.

Modelle feinabstimmen

Das Feinabstimmen von KI-Modellen ist eine gängige Praxis, die es Ihnen ermöglicht, mithilfe Ihres benutzerdefinierten Datensatzes Feinabstimmungs-Aufträge auf einem vortrainierten Modell in einer Computing-Umgebung mit GPUs auszuführen. Das AI Toolkit unterstützt derzeit die Feinabstimmung von SLMs auf lokalen Maschinen mit GPU oder in der Cloud (Azure Container App) mit GPU.

Ein feinabgestimmtes Modell kann lokal heruntergeladen und mit GPUs für Inferenztests verwendet werden, oder es kann für die lokale Ausführung auf CPUs quantisiert werden. Feinabgestimmte Modelle können auch als Remote-Modelle in einer Cloud-Umgebung bereitgestellt werden.

KI-Modelle auf Azure mit dem AI Toolkit für VS Code feinabstimmen (Vorschau)

Das AI Toolkit für VS Code unterstützt jetzt die Bereitstellung einer Azure Container App zur Ausführung der Modell-Feinabstimmung und zum Hosten eines Inferenzendpunkts in der Cloud.

Cloud-Umgebung einrichten

  1. Um die Modell-Feinabstimmung und Inferenz in Ihrer Remote Azure Container Apps-Umgebung auszuführen, stellen Sie sicher, dass Ihr Abonnement über ausreichende GPU-Kapazität verfügt. Reichen Sie ein Supportticket ein, um die erforderliche Kapazität für Ihre Anwendung anzufordern. Weitere Informationen zur GPU-Kapazität

  2. Stellen Sie sicher, dass Sie ein HuggingFace-Konto haben und einen Zugriffstoken generieren, wenn Sie private Datensätze auf HuggingFace verwenden oder Ihr Basismodell eine Zugriffskontrolle benötigt.

  3. Akzeptieren Sie die LIZENZ auf HuggingFace, wenn Sie Mistral oder Llama feinabstimmen.

  4. Remote-Feinabstimmungs- und Inferenz-Feature-Flag im AI Toolkit für VS Code aktivieren

    1. Öffnen Sie die VS Code-Einstellungen, indem Sie Datei -> Einstellungen -> Einstellungen auswählen.
    2. Navigieren Sie zu Erweiterungen und wählen Sie AI Toolkit aus.
    3. Wählen Sie die Option "Ausführen von Feinabstimmung und Inferenz auf Azure Container Apps aktivieren".

    AI Toolkit Settings

    1. Laden Sie VS Code neu, damit die Änderungen wirksam werden.

Ein Feinabstimmungsprojekt erstellen

  1. Führen Sie AI Toolkit: Fokus auf Tools Ansicht in der Befehlspalette aus (⇧⌘P (Windows, Linux Ctrl+Shift+P))
  2. Navigieren Sie zu Feinabstimmung, um auf den Modellkatalog zuzugreifen. Wählen Sie ein Modell für die Feinabstimmung aus. Weisen Sie Ihrem Projekt einen Namen zu und wählen Sie seinen Speicherort auf Ihrem Computer aus. Klicken Sie dann auf die Schaltfläche "Projekt konfigurieren". Panel: Modell auswählen
  3. Projektkonfiguration
    1. Vermeiden Sie die Aktivierung der Option "Lokal feinabstimmen".
    2. Die Olive-Konfigurationseinstellungen werden mit voreingestellten Standardwerten angezeigt. Bitte passen Sie diese Konfigurationen nach Bedarf an und füllen Sie sie aus.
    3. Fahren Sie mit Projekt generieren fort. Diese Phase nutzt WSL und beinhaltet die Einrichtung einer neuen Conda-Umgebung, die für zukünftige Updates mit Dev-Containern vorbereitet ist. Panel: Modell konfigurieren
    4. Wählen Sie "Fenster im Arbeitsbereich neu starten", um Ihr Feinabstimmungsprojekt zu öffnen. Panel: Projekt generieren
Hinweis

Das Projekt funktioniert derzeit entweder lokal oder remote innerhalb des AI Toolkit für VS Code. Wenn Sie während der Projekterstellung "Lokal feinabstimmen" wählen, wird es ausschließlich in WSL ohne Cloud-Ressourcen ausgeführt. Andernfalls ist das Projekt auf die Ausführung in der Remote Azure Container App-Umgebung beschränkt.

Azure-Ressourcen bereitstellen

Um zu beginnen, müssen Sie die Azure-Ressource für die Remote-Feinabstimmung bereitstellen. Suchen Sie über die Befehlspalette und führen Sie AI Toolkit: Azure Container Apps-Auftrag für Feinabstimmung bereitstellen aus. Während dieses Prozesses werden Sie aufgefordert, Ihr Azure-Abonnement und Ihre Ressourcengruppe auszuwählen.

Provision Fine-Tuning

Überwachen Sie den Fortschritt der Bereitstellung über den Link im Ausgabekanal. Bereitstellungsfortschritt

Feinabstimmung ausführen

Um den Remote-Feinabstimmungsauftrag zu starten, führen Sie den Befehl AI Toolkit: Feinabstimmung ausführen in der Befehlspalette aus.

Run Fine-tuning

Die Erweiterung führt dann die folgenden Operationen durch

  1. Synchronisieren Sie Ihren Arbeitsbereich mit Azure Files.

  2. Lösen Sie den Azure Container App-Auftrag mithilfe der in ./infra/fintuning.config.json angegebenen Befehle aus.

QLoRA wird zur Feinabstimmung verwendet, und der Feinabstimmungsprozess erstellt LoRA-Adapter, die das Modell während der Inferenz verwenden kann.

Die Ergebnisse der Feinabstimmung werden in Azure Files gespeichert. Um die Ausgabedateien im Azure Files-Speicher zu durchsuchen, können Sie das Azure-Portal über den im Ausgabefenster angegebenen Link aufrufen. Alternativ können Sie direkt auf das Azure-Portal zugreifen und das Speicherkonto namens STORAGE_ACCOUNT_NAME, wie in ./infra/fintuning.config.json definiert, und die Dateifreigabe namens FILE_SHARE_NAME, wie in ./infra/fintuning.config.json definiert, finden.

file-share

Protokolle anzeigen

Sobald der Feinabstimmungsauftrag gestartet wurde, können Sie auf die System- und Konsolenprotokolle zugreifen, indem Sie das Azure-Portal besuchen.

Alternativ können Sie die Konsolenprotokolle direkt im VSCode-Ausgabefenster anzeigen.

log-button

Hinweis

Der Auftrag kann einige Minuten dauern, bis er initiiert ist. Wenn bereits ein Auftrag ausgeführt wird, kann der aktuelle Auftrag in die Warteschlange gestellt werden, um später zu starten.

Protokolle in Azure anzeigen und abfragen

Nachdem der Feinabstimmungsauftrag ausgelöst wurde, können Sie die Protokolle in Azure anzeigen, indem Sie in der VSCode-Benachrichtigung die Schaltfläche "Protokolle im Azure-Portal öffnen" auswählen.

Oder, wenn Sie das Azure-Portal bereits geöffnet haben, suchen Sie die Auftragsverlauf im Bereich "Ausführungsverlauf" für den Azure Container Apps-Auftrag.

Job Execution History

Es gibt zwei Arten von Protokollen: "Konsole" und "System".

  • Konsolenprotokolle sind Meldungen von Ihrer App, einschließlich stderr- und stdout-Meldungen. Dies sind die Meldungen, die Sie bereits im Abschnitt der Streaming-Protokolle gesehen haben.
  • Systemprotokolle sind Meldungen vom Azure Container Apps-Dienst, einschließlich des Status von ereignisbezogenen Diensten.

Um Ihre Protokolle anzuzeigen und abzufragen, wählen Sie die Schaltfläche "Konsole" aus und navigieren Sie zur Log Analytics-Seite, wo Sie alle Protokolle einsehen und Ihre Abfragen schreiben können.

Job Log Analytics

Weitere Informationen zu Azure Container Apps-Protokollen finden Sie unter Anwendungs-Protokollierung in Azure Container Apps.

Streaming-Protokolle in VSCode anzeigen

Nach der Initiierung des Feinabstimmungsauftrags können Sie die Protokolle auch in Azure anzeigen, indem Sie in der VSCode-Benachrichtigung die Schaltfläche "Streaming-Protokolle in VS Code anzeigen" auswählen.

Oder Sie können den Befehl AI Toolkit: Streaming-Protokolle des laufenden Feinabstimmungsauftrags anzeigen in der Befehlspalette ausführen.

Streaming Log Command

Das Streaming-Protokoll des laufenden Feinabstimmungsauftrags wird im Ausgabefenster angezeigt.

Streaming Log Output

Hinweis

Der Auftrag kann aufgrund unzureichender Ressourcen in die Warteschlange gestellt werden. Wenn das Protokoll nicht angezeigt wird, warten Sie eine Weile und führen Sie dann den Befehl aus, um die Verbindung zum Streaming-Protokoll erneut herzustellen. Das Streaming-Protokoll kann ein Timeout haben und die Verbindung trennen. Es kann jedoch durch erneute Ausführung des Befehls wieder verbunden werden.

Inferenz mit dem feinabgestimmten Modell

Nachdem die Adapter in der Remote-Umgebung trainiert wurden, verwenden Sie eine einfache Gradio-Anwendung, um mit dem Modell zu interagieren.

Fine-tune complete

Azure-Ressourcen bereitstellen

Ähnlich wie beim Feinabstimmungsprozess müssen Sie die Azure-Ressourcen für die Remote-Inferenz einrichten, indem Sie den Befehl AI Toolkit: Azure Container Apps für Inferenz bereitstellen aus der Befehlspalette ausführen. Während dieser Einrichtung werden Sie aufgefordert, Ihr Azure-Abonnement und Ihre Ressourcengruppe auszuwählen.

Provision Inference Resource

Standardmäßig sollten das Abonnement und die Ressourcengruppe für die Inferenz mit denen übereinstimmen, die für die Feinabstimmung verwendet wurden. Die Inferenz verwendet dieselbe Azure Container App-Umgebung und greift auf das Modell und den Modelladapter zu, die in Azure Files gespeichert sind und während des Feinabstimmungsschritts generiert wurden.

Bereitstellung für Inferenz

Wenn Sie den Inferenzcode überarbeiten oder das Inferenzmodell neu laden möchten, führen Sie den Befehl AI Toolkit: Bereitstellung für Inferenz aus. Dies synchronisiert Ihren neuesten Code mit ACA und startet die Replik neu.

Deploy for inference

Nach erfolgreicher Durchführung der Bereitstellung ist das Modell nun bereit für die Evaluierung über diesen Endpunkt. Sie können auf die Inferenz-API zugreifen, indem Sie in der VSCode-Benachrichtigung die Schaltfläche "Zum Inferenzendpunkt wechseln" auswählen. Alternativ finden Sie den Web-API-Endpunkt unter ACA_APP_ENDPOINT in ./infra/inference.config.json und im Ausgabefenster.

App Endpoint

Hinweis

Der Inferenzendpunkt benötigt möglicherweise einige Minuten, um vollständig einsatzbereit zu sein.

Erweiterte Nutzung

Komponenten des Feinabstimmungsprojekts

Ordner Inhalt
infra Enthält alle notwendigen Konfigurationen für Remote-Operationen.
infra/provision/finetuning.parameters.json Enthält Parameter für die Bicep-Vorlagen, die zur Bereitstellung von Azure-Ressourcen für die Feinabstimmung verwendet werden.
infra/provision/finetuning.bicep Enthält Vorlagen für die Bereitstellung von Azure-Ressourcen für die Feinabstimmung.
infra/finetuning.config.json Die Konfigurationsdatei, generiert durch den Befehl AI Toolkit: Azure Container Apps-Auftrag für Feinabstimmung bereitstellen. Sie dient als Eingabe für andere Remote-Befehlspaletten.

Konfigurieren von Geheimnissen für die Feinabstimmung in Azure Container Apps

Azure Container App-Geheimnisse bieten eine sichere Möglichkeit, sensible Daten wie HuggingFace-Token und Weights & Biases API-Schlüssel in Azure Container Apps zu speichern und zu verwalten. Mit der Befehlspalette des AI Toolkit können Sie die Geheimnisse in den bereitgestellten Azure Container App-Auftrag eingeben (wie in ./finetuning.config.json gespeichert). Diese Geheimnisse werden dann als Umgebungsvariablen in allen Containern gesetzt.

Schritte

  1. Geben Sie in der Befehlspalette ein und wählen Sie AI Toolkit: Azure Container Apps-Auftrag-Geheimnis für Feinabstimmung hinzufügen

    Add secret

  2. Geben Sie einen Geheimnisnamen und einen Wert an

    Input secret name

    Input secret

    Wenn Sie beispielsweise private HuggingFace-Datensätze oder Modelle verwenden, die eine Hugging Face-Zugriffskontrolle benötigen, legen Sie Ihr HuggingFace-Token als Umgebungsvariable HF_TOKEN fest, um eine manuelle Anmeldung am Hugging Face Hub zu vermeiden.

Nachdem Sie das Geheimnis eingerichtet haben, können Sie es jetzt in Ihrer Azure Container App verwenden. Das Geheimnis wird in den Umgebungsvariablen Ihrer Container-App gesetzt.

Azure-Ressourcenbereitstellung für Feinabstimmung konfigurieren

Diese Anleitung hilft Ihnen bei der Konfiguration des Befehls AI Toolkit: Azure Container Apps-Auftrag für Feinabstimmung bereitstellen.

Sie finden die Konfigurationsparameter in der Datei ./infra/provision/finetuning.parameters.json. Hier sind die Details

Parameter Beschreibung
defaultCommands Dies ist der Standardbefehl zum Starten eines Feinabstimmungsauftrags. Er kann in ./infra/finetuning.config.json überschrieben werden.
maximumInstanceCount Dieser Parameter legt die maximale Kapazität von GPU-Instanzen fest.
timeout Dies legt das Timeout für den Azure Container App-Feinabstimmungsauftrag in Sekunden fest. Der Standardwert ist 10800, was 3 Stunden entspricht. Wenn der Azure Container App-Auftrag dieses Timeout erreicht, wird der Feinabstimmungsprozess beendet. Standardmäßig werden jedoch Checkpoints gespeichert, sodass der Feinabstimmungsprozess vom letzten Checkpoint fortgesetzt werden kann, anstatt von vorne zu beginnen, wenn er erneut ausgeführt wird.
location Dies ist der Standort, an dem Azure-Ressourcen bereitgestellt werden. Der Standardwert ist derselbe wie der Standort der ausgewählten Ressourcengruppe.
storageAccountName, fileShareName acaEnvironmentName, acaEnvironmentStorageName, acaJobName, acaLogAnalyticsName Diese Parameter werden verwendet, um die Namen der Azure-Ressourcen für die Bereitstellung festzulegen. Sie können einen neuen, unbenutzten Ressourcennamen eingeben, um Ihre eigenen benutzerdefinierten Ressourcennamen zu erstellen, oder Sie können den Namen einer bereits vorhandenen Azure-Ressource eingeben, wenn Sie diese bevorzugen.

Verwendung bestehender Azure-Ressourcen

Wenn Sie über vorhandene Azure-Ressourcen verfügen, die für die Feinabstimmung konfiguriert werden müssen, können Sie deren Namen in der Datei ./infra/provision/finetuning.parameters.json angeben und dann den Befehl AI Toolkit: Azure Container Apps-Auftrag für Feinabstimmung bereitstellen aus der Befehlspalette ausführen. Dies aktualisiert die von Ihnen angegebenen Ressourcen und erstellt fehlende.

Wenn Sie beispielsweise eine vorhandene Azure Container-Umgebung haben, sollte Ihre ./infra/finetuning.parameters.json wie folgt aussehen

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
      ...
      "acaEnvironmentName": {
        "value": "<your-aca-env-name>"
      },
      "acaEnvironmentStorageName": {
        "value": null
      },
      ...
    }
  }

Manuelle Bereitstellung

Wenn Sie die Azure-Ressourcen lieber manuell einrichten möchten, können Sie die bereitgestellten Bicep-Dateien in den Ordnern ./infra/provision verwenden. Wenn Sie alle Azure-Ressourcen bereits ohne die Befehlspalette des AI Toolkit eingerichtet und konfiguriert haben, können Sie einfach die Ressourcennamen in der Datei finetune.config.json eingeben.

Zum Beispiel

{
  "SUBSCRIPTION_ID": "<your-subscription-id>",
  "RESOURCE_GROUP_NAME": "<your-resource-group-name>",
  "STORAGE_ACCOUNT_NAME": "<your-storage-account-name>",
  "FILE_SHARE_NAME": "<your-file-share-name>",
  "ACA_JOB_NAME": "<your-aca-job-name>",
  "COMMANDS": [
    "cd /mount",
    "pip install huggingface-hub==0.22.2",
    "huggingface-cli download <your-model-name> --local-dir ./model-cache/<your-model-name> --local-dir-use-symlinks False",
    "pip install -r ./setup/requirements.txt",
    "python3 ./finetuning/invoke_olive.py && find models/ -print | grep adapter/adapter"
  ]
}

Inferenzkomponenten in der Vorlage enthalten

Ordner Inhalt
infra Enthält alle notwendigen Konfigurationen für Remote-Operationen.
infra/provision/inference.parameters.json Enthält Parameter für die Bicep-Vorlagen, die zur Bereitstellung von Azure-Ressourcen für die Inferenz verwendet werden.
infra/provision/inference.bicep Enthält Vorlagen für die Bereitstellung von Azure-Ressourcen für die Inferenz.
infra/inference.config.json Die Konfigurationsdatei, generiert durch den Befehl AI Toolkit: Azure Container Apps für Inferenz bereitstellen. Sie dient als Eingabe für andere Remote-Befehlspaletten.

Azure-Ressourcenbereitstellung konfigurieren

Diese Anleitung hilft Ihnen bei der Konfiguration des Befehls AI Toolkit: Azure Container Apps für Inferenz bereitstellen.

Sie finden die Konfigurationsparameter in der Datei ./infra/provision/inference.parameters.json. Hier sind die Details

Parameter Beschreibung
defaultCommands Dies sind die Befehle zum Initiieren einer Web-API.
maximumInstanceCount Dieser Parameter legt die maximale Kapazität von GPU-Instanzen fest.
location Dies ist der Standort, an dem Azure-Ressourcen bereitgestellt werden. Der Standardwert ist derselbe wie der Standort der ausgewählten Ressourcengruppe.
storageAccountName, fileShareName acaEnvironmentName, acaEnvironmentStorageName, acaAppName, acaLogAnalyticsName Diese Parameter werden verwendet, um die Namen der Azure-Ressourcen für die Bereitstellung festzulegen. Standardmäßig sind sie mit dem Namen der Feinabstimmungsressource identisch. Sie können einen neuen, unbenutzten Ressourcennamen eingeben, um Ihre eigenen benutzerdefinierten Ressourcennamen zu erstellen, oder Sie können den Namen einer bereits vorhandenen Azure-Ressource eingeben, wenn Sie diese bevorzugen.

Verwendung bestehender Azure-Ressourcen

Standardmäßig verwendet die Inferenzbereitstellung dieselbe Azure Container App-Umgebung, dasselbe Speicherkonto, dieselbe Azure-Dateifreigabe und dieselbe Azure Log Analytics, die für die Feinabstimmung verwendet wurden. Eine separate Azure Container App wird ausschließlich für die Inferenz-API erstellt.

Wenn Sie die Azure-Ressourcen während des Feinabstimmungsschritts angepasst haben oder Ihre eigenen vorhandenen Azure-Ressourcen für die Inferenz verwenden möchten, geben Sie deren Namen in der Datei ./infra/inference.parameters.json an. Führen Sie dann den Befehl AI Toolkit: Azure Container Apps für Inferenz bereitstellen aus der Befehlspalette aus. Dies aktualisiert alle angegebenen Ressourcen und erstellt fehlende.

Wenn Sie beispielsweise eine vorhandene Azure Container-Umgebung haben, sollte Ihre ./infra/finetuning.parameters.json wie folgt aussehen

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
      ...
      "acaEnvironmentName": {
        "value": "<your-aca-env-name>"
      },
      "acaEnvironmentStorageName": {
        "value": null
      },
      ...
    }
  }

Manuelle Bereitstellung

Wenn Sie die Azure-Ressourcen lieber manuell konfigurieren möchten, können Sie die bereitgestellten Bicep-Dateien in den Ordnern ./infra/provision verwenden. Wenn Sie alle Azure-Ressourcen bereits ohne die Befehlspalette des AI Toolkit eingerichtet und konfiguriert haben, können Sie einfach die Ressourcennamen in der Datei inference.config.json eingeben.

Zum Beispiel

{
  "SUBSCRIPTION_ID": "<your-subscription-id>",
  "RESOURCE_GROUP_NAME": "<your-resource-group-name>",
  "STORAGE_ACCOUNT_NAME": "<your-storage-account-name>",
  "FILE_SHARE_NAME": "<your-file-share-name>",
  "ACA_APP_NAME": "<your-aca-name>",
  "ACA_APP_ENDPOINT": "<your-aca-endpoint>"
}

Was Sie gelernt haben

In diesem Artikel haben Sie gelernt, wie Sie

  • Richten Sie das AI Toolkit für VS Code ein, um Feinabstimmung und Inferenz in Azure Container Apps zu unterstützen.
  • Erstellen Sie ein Feinabstimmungsprojekt im AI Toolkit für VS Code.
  • Konfigurieren Sie den Feinabstimmungs-Workflow, einschließlich Datensatz-Auswahl und Trainingsparametern.
  • Führen Sie den Feinabstimmungs-Workflow aus, um ein vortrainiertes Modell an Ihren spezifischen Datensatz anzupassen.
  • Zeigen Sie die Ergebnisse des Feinabstimmungsprozesses an, einschließlich Metriken und Protokolle.
  • Verwenden Sie das Beispiel-Notebook für Modell-Inferenz und Tests.
  • Exportieren und teilen Sie das Feinabstimmungsprojekt mit anderen.
  • Bewerten Sie ein Modell mit verschiedenen Datensätzen oder Trainingsparametern neu.
  • Behandeln Sie fehlgeschlagene Aufträge und passen Sie Konfigurationen für erneute Ausführungen an.
  • Verstehen Sie die unterstützten Modelle und deren Anforderungen für die Feinabstimmung.
  • Verwenden Sie das AI Toolkit für VS Code, um Feinabstimmungsprojekte zu verwalten, einschließlich der Bereitstellung von Azure-Ressourcen, der Ausführung von Feinabstimmungsaufträgen und der Bereitstellung von Modellen für die Inferenz.
© . This site is unofficial and not affiliated with Microsoft.