Freigeben über


Bereitstellen von Modellen vom HuggingFace Hub auf Azure Machine Learning Online-Endpunkten für Echtzeit-Inferenz

Microsoft arbeitet mit Hugging Face zusammen, um Open-Source-Modelle aus dem Hub „Hugging Face“ nach Azure Machine Learning zu bringen. Hugging Face ist der Autor von Transformers, einer weit verbreiteten Bibliothek zum Erstellen großer Sprachmodelle. Der Modell-Hub von Hugging Face hat Tausende von Open-Source-Modellen. Die Integration mit Azure Machine Learning ermöglicht es Ihnen, Open-Source-Modelle Ihrer Wahl bereitzustellen, um die Rückschlussinfrastruktur in Azure zu schützen und zu skalieren. Sie können Tausende von Transformer-Modellen im Azure Machine Learning-Modellkatalog durchsuchen und Modelle mithilfe des geführten Assistenten problemlos auf verwalteten Onlineendpunkten bereitstellen. Nach der Bereitstellung bietet Ihnen der verwaltete Onlineendpunkt eine sichere REST-API, um Ihr Modell in Echtzeit zu bewerten.

Hinweis

Modelle von Hugging Face unterliegen den Lizenzbedingungen von Drittanbietern, die auf der Detailseite des Hugging Face-Modells verfügbar sind. Es liegt in Ihrer Verantwortung, die Lizenzbedingungen des Modells einzuhalten.

Vorteile der Verwendung von Onlineendpunkten für Echtzeitrückschlüsse

Verwaltete Onlineendpunkte in Azure Machine Learning unterstützen Sie bei der Bereitstellung von schlüsselfertigen Modellen auf Computern mit leistungsstarken CPUs und GPUs in Azure. Verwaltete Online-Endpunkte sorgen für die Bereitstellung, Skalierung, Sicherung und Überwachung Ihrer Modelle und befreien Sie vom Aufwand für die Einrichtung und Verwaltung der zugrunde liegenden Infrastruktur. Die virtuellen Computer werden in Ihrem Namen bereitgestellt, wenn Sie Modelle bereitstellen. Dahinter können mehrere Bereitstellungen stehen und Sie können Datenverkehr zu diesen Bereitstellungen aufteilen oder spiegeln. Mit dem gespiegelten Datenverkehr können Sie neue Versionen von Modellen im Produktionsdatenverkehr testen, ohne sie in Produktionsumgebungen freizugeben. Durch die Aufteilung des Datenverkehrs können Sie den Produktionsdatenverkehr zu neuen Modellversionen schrittweise erhöhen und gleichzeitig die Leistung überwachen. Mit der automatischen Skalierung können Sie Ressourcen basierend auf Workloads dynamisch hoch- oder herunterfahren. Sie können die Skalierung basierend auf Auslastungsmetriken, einem bestimmten Zeitplan oder einer Kombination aus beidem konfigurieren. Ein Beispiel für die Skalierung basierend auf Auslastungsmetriken ist das Hinzufügen von Knoten, wenn die CPU-Auslastung 70 % übersteigt. Ein Beispiel für die zeitplanbasierte Skalierung ist das Hinzufügen von Knoten basierend auf Stoßzeiten.

Bereitstellen von Modellen aus dem Hugging Face-Hub mithilfe von Studio

Öffnen Sie den Modellkatalog in Azure Machine Learning Studio, um ein bereitzustellendes Modell zu finden. Wählen Sie „Alle Filter“ und dann im Abschnitt „Nach Sammlungen filtern“ die Option „HuggingFace“ aus. Wählen Sie die Kachel „Modell“ aus, um die Modellseite zu öffnen.

Bereitstellen des Modells

Wählen Sie die Option „Echtzeitbereitstellung“ aus, um das Dialogfeld für die schnelle Bereitstellung zu öffnen. Verwenden Sie die folgenden Optionen:

  • Wählen Sie die Vorlage für GPU oder CPU aus. CPU-Instanzen-Typen eignen sich gut für Tests, und GPU-Instanzen-Typen bieten eine bessere Leistung in der Produktion. Große Modelle passen nicht in einen CPU-Instanzen-Typ.
  • Wählen Sie den Instanzen-Typ aus. Diese Liste der Instanzen wird auf die Instanzen gefiltert, die vom Modell bereitgestellt werden sollen, ohne dass der Arbeitsspeicher knapp wird.
  • Wählen Sie die Anzahl der Instanzen aus. Eine Instanz reicht zum Testen aus, es wird jedoch empfohlen, zwei oder mehr Instanzen für die Produktion in Betracht zu ziehen.
  • Geben Sie optional einen Endpunkt und einen Bereitstellungsnamen an.
  • Wählen Sie „Bereitstellen“ aus. Sie werden dann zur Endpunktseite geleitet, was einige Sekunden dauern kann. Die Bereitstellung dauert einige Minuten, je nach Modellgröße und Instanzen-Typ.

Hinweis: Wenn Sie die Bereitstellung auf einem vorhandenen Endpunkt durchführen möchten, wählen Sie im Dialogfeld „Schnellbereitstellung“ More options aus, und verwenden Sie den vollständigen Bereitstellungs-Assistenten.

Testen des bereitgestellten Modells

Nach Abschluss der Bereitstellung finden Sie den REST-Endpunkt für das Modell auf der Seite „Endpunkte“, die zum Bewerten des Modells verwendet werden kann. Sie finden Optionen zum Hinzufügen weiterer Bereitstellungen, zum Verwalten des Datenverkehrs und zum Skalieren des Endpunkthubs. Sie verwenden auch die Registerkarte „Test“ auf der Seite „Endpunkt“, um das Modell mit Beispieleingaben zu testen. Beispieleingaben sind auf der Seite „Modell“ verfügbar. Eingabeformat, Parameter und Beispieleingaben finden Sie in der Dokumentation zur Rückschluss-API für den Hugging Face-Hub.

Bereitstellen von Modellen aus dem Hugging Face-Hub mithilfe des Python-SDK

Richten Sie das Python-SDK ein.

Suchen Sie das bereitzustellende Modell.

Durchsuchen Sie den Modellkatalog in Azure Machine Learning Studio, und suchen Sie das Modell, das Sie bereitstellen möchten. Wählen Sie das Modell aus, das Sie bereitstellen möchten. Importieren Sie die erforderlichen Bibliotheken. Die im Katalog angezeigten Modelle werden aus der HuggingFace-Registrierung heraus aufgeführt. Erstellen Sie die model_id mithilfe des Modellnamens, den Sie aus dem Modellkatalog und der HuggingFace-Registrierung kopiert haben. In diesem Beispiel stellen Sie das Modell bert_base_uncased mit der neuesten Version bereit.

from azure.ai.ml import MLClient
from azure.ai.ml.entities import (
    ManagedOnlineEndpoint,
    ManagedOnlineDeployment,
    Model,
    Environment,
    CodeConfiguration,
)
registry_name = "HuggingFace"
model_name = "bert_base_uncased"
model_id = f"azureml://registries/{registry_name}/models/{model_name}/labels/latest"

Bereitstellen des Modells

Erstellen Sie einen Onlineendpunkt. Erstellen Sie als Nächstes die Bereitstellung. Legen Sie schließlich den gesamten Datenverkehr so fest, dass diese Bereitstellung verwendet wird. Sie können den optimalen CPU- oder GPU-instance_type für ein Modell finden, indem Sie das Dialogfeld „Schnellbereitstellung“ auf der Seite „Modell“ im Modellkatalog öffnen. Stellen Sie sicher, dass Sie einen instance_type verwenden, für den Sie über ein Kontingent verfügen.

import time
endpoint_name="hf-ep-" + str(int(time.time())) # endpoint name must be unique per Azure region, hence appending timestamp 
ml_client.begin_create_or_update(ManagedOnlineEndpoint(name=endpoint_name) ).wait()
ml_client.online_deployments.begin_create_or_update(ManagedOnlineDeployment(
    name="demo",
    endpoint_name=endpoint_name,
    model=model_id,
    instance_type="Standard_DS2_v2",
    instance_count=1,
)).wait()
endpoint = ml_client.online_endpoints.get(endpoint_name)
endpoint.traffic = {"demo": 100}
ml_client.begin_create_or_update(endpoint).result()

Testen des bereitgestellten Modells

Erstellen Sie eine Datei mit Eingaben, die zur Bewertung an den Onlineendpunkt übermittelt werden können. Die folgende Beispiel-Codeeingabe ist für den Typ fill-mask, da wir das Modell bert-base-uncased bereitgestellt haben. Eingabeformat, Parameter und Beispieleingaben finden Sie in der Dokumentation zur Rückschluss-API für den Hugging Face-Hub.

import json
scoring_file = "./sample_score.json"
with open(scoring_file, "w") as outfile:
    outfile.write('{"inputs": ["Paris is the [MASK] of France.", "The goal of life is [MASK]."]}')   
response = workspace_ml_client.online_endpoints.invoke(
    endpoint_name=endpoint_name,
    deployment_name="demo",
    request_file=scoring_file,
)
response_json = json.loads(response)
print(json.dumps(response_json, indent=2))

Bereitstellen von Modellen aus dem Hugging Face-Hub mithilfe der CLI

Richten Sie die CLI ein.

Suchen Sie das bereitzustellende Modell.

Durchsuchen Sie den Modellkatalog in Azure Machine Learning Studio, und suchen Sie das Modell, das Sie bereitstellen möchten. Wählen Sie das Modell aus, das Sie bereitstellen möchten. Die im Katalog angezeigten Modelle werden aus der HuggingFace-Registrierung heraus aufgeführt. In diesem Beispiel stellen Sie das Modell bert_base_uncased mit der neuesten Version bereit.

Bereitstellen des Modells

Sie benötigen das model und den instance_type, um das Modell bereitzustellen. Sie können den optimalen CPU- oder GPU-instance_type für ein Modell finden, indem Sie das Dialogfeld „Schnellbereitstellung“ auf der Seite „Modell“ im Modellkatalog öffnen. Stellen Sie sicher, dass Sie einen instance_type verwenden, für den Sie über ein Kontingent verfügen.

Die im Katalog angezeigten Modelle werden aus der HuggingFace-Registrierung heraus aufgeführt. In diesem Beispiel stellen Sie das Modell bert_base_uncased mit der neuesten Version bereit. Das vollqualifizierte Asset model basiert auf dem Modellnamen und die Registrierung ist azureml://registries/HuggingFace/models/bert-base-uncased/labels/latest. Wir erstellen die Datei deploy.yml, die für den Befehl az ml online-deployment create inline verwendet wird.

Erstellen Sie einen Onlineendpunkt. Erstellen Sie als Nächstes die Bereitstellung.

# create endpoint
endpoint_name="hf-ep-"$(date +%s)
model_name="bert-base-uncased"
az ml online-endpoint create --name $endpoint_name 

# create deployment file. 
cat <<EOF > ./deploy.yml
name: demo
model: azureml://registries/HuggingFace/models/$model_name/labels/latest
endpoint_name: $endpoint_name
instance_type: Standard_DS3_v2
instance_count: 1
EOF
az ml online-deployment create --file ./deploy.yml --workspace-name $workspace_name --resource-group $resource_group_name

Testen des bereitgestellten Modells

Erstellen Sie eine Datei mit Eingaben, die zur Bewertung an den Onlineendpunkt übermittelt werden können. Hugging Face als Beispiel-Codeeingabe für den Typ fill-mask für das bereitgestellte Modell des Modells bert-base-uncased. Eingabeformat, Parameter und Beispieleingaben finden Sie in der Dokumentation zur Rückschluss-API für den Hugging Face-Hub.

scoring_file="./sample_score.json"
cat <<EOF > $scoring_file
{
  "inputs": [
    "Paris is the [MASK] of France.",
    "The goal of life is [MASK]."
  ]
}
EOF
az ml online-endpoint invoke --name $endpoint_name --request-file $scoring_file

Beispielcode für Hugging Face-Modell

Unter dem Link finden Sie den Beispielcode für das Hugging Face-Modell für verschiedene Szenarien, einschließlich Tokenklassifizierung, Übersetzung, Fragen und Antworten und Zero-Shot-Klassifizierung.

Problembehandlung: Bereitstellungsfehler und nicht unterstützte Modelle

Der HuggingFace-Hub verfügt über Tausende von Modellen, von denen täglich Hunderte aktualisiert werden. Nur die gängigsten Modelle in der Sammlung werden getestet, während andere mit einem der folgenden Fehler fehlschlagen können.

Geschlossene Modelle

Geschlossene Modelle erfordern, dass Benutzer*innen zustimmen, ihre Kontaktinformationen weiterzugeben und die Geschäftsbedingungen der Modellbesitzer*innen zu akzeptieren, um auf das Modell zuzugreifen. Der Versuch, solche Modelle bereitzustellen, schlägt mit einem KeyError fehl.

Modelle, die Remotecode ausführen müssen

Modelle verwenden in der Regel Code aus dem Transformers-SDK, aber einige Modelle führen Code aus dem Modellrepository aus. Bei diesen Modellen müssen Sie den Parameter trust_remote_code auf True festlegen. Folgen Sie diesem Link, um mehr über die Verwendung von Remotecode zu erfahren. Solche Modelle werden unter Berücksichtigung der Sicherheit nicht unterstützt. Der Versuch, solche Modelle bereitzustellen, schlägt mit dem folgenden Fehler fehl: ValueError: Loading <model> requires you to execute the configuration file in that repo on your local machine. Make sure you have read the code there to avoid malicious use, then set the option trust_remote_code=True to remove this error.

Modelle mit falschen Tokenizern

Falsch angegebene oder fehlende Tokenizer im Modellpaket können zu einem Fehler OSError: Can't load tokenizer for <model> führen.

Fehlende Bibliotheken

Einige Modelle benötigen zusätzliche Python-Bibliotheken. Wenn Sie Modelle lokal ausführen, können Sie fehlende Bibliotheken installieren. Modelle, die spezielle Bibliotheken über die Standard-Transformers-Bibliotheken hinaus benötigen, schlagen mit den Fehlern ModuleNotFoundError oder ImportError fehl.

Der Arbeitsspeicher reicht nicht aus

Wenn die Meldung OutOfQuota: Container terminated due to insufficient memory angezeigt wird, versuchen Sie, einen instance_type mit mehr Arbeitsspeicher zu verwenden.

Häufig gestellte Fragen

Wo werden die Modellgewichtungen gespeichert?

Hugging Face-Modelle befinden sich über die HuggingFace-Registrierung im Azure Machine Learning-Modellkatalog. Hugging Face erstellt und verwaltet diese Registrierung und wird für Azure Machine Learning als Community-Registrierung zur Verfügung gestellt. Die Modellgewichtungen werden nicht in Azure gehostet. Die Gewichtungen werden direkt vom Hugging Face-Hub in die Onlineendpunkte in Ihrem Arbeitsbereich heruntergeladen, wenn diese Modelle bereitgestellt werden. Die HuggingFace-Registrierung in AzureML funktioniert als Katalog, um Modelle aus dem Hugging Face-Hub in Azure Machine Learning zu erkennen und bereitzustellen.

Wie stellt man die Modelle für den Batchrückschluss bereit? Die Bereitstellung dieser Modelle in Batchendpunkten für Batchrückschlüsse wird derzeit nicht unterstützt.

Kann ich Modelle aus der HuggingFace-Registrierung als Eingabe für Aufträge verwenden, damit ich diese Modelle mithilfe des Transformers-SDK optimieren kann? Da die Modellgewichtungen nicht in der HuggingFace-Registrierung gespeichert werden, können Sie nicht auf Modellgewichtungen zugreifen, indem Sie diese Modelle als Eingaben für Aufträge verwenden.

Wie erhalte ich Unterstützung, wenn meine Bereitstellungen fehlschlagen oder die Rückschlüsse nicht wie erwartet funktionieren?HuggingFace ist eine Community-Registrierung, die nicht vom Microsoft-Support abgedeckt wird. Überprüfen Sie die Bereitstellungsprotokolle, und finden Sie heraus, ob das Problem mit der Azure Machine Learning-Plattform oder speziell mit HuggingFace-Transformers zusammenhängt. Wenden Sie sich bei Plattformproblemen an den Microsoft-Support. Beispiel: Die Erstellung eines Onlineendpunkts oder der Authentifizierung bei der Endpunkt-REST-API funktioniert nicht. Verwenden Sie für Transformers-spezifische Probleme das Hugging Face-Forum oder den Hugging Face-Support.

Was ist eine Community-Registrierung? Community-Registrierungen sind Azure Machine Learning-Registrierungen, die von vertrauenswürdigen Azure Machine Learning-Partnern erstellt und für alle Azure Machine Learning-Benutzenden verfügbar sind.

Wo können Benutzende Fragen und Bedenken bezüglich Hugging Face in Azure Machine Learning senden? Übermitteln Sie Ihre Fragen im Azure Machine Learning-Diskussionsforum.

Regionale Verfügbarkeit

Die Hugging Face Collection ist derzeit nur in allen Regionen der öffentlichen Cloud verfügbar.