Freigeben über


Bereitstellen von Modellen vom HuggingFace-Hub auf Azure Machine Learning-Onlineendpunkten für Echtzeitrückschlüsse

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.

Note

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. Sie können über mehrere Bereitstellungen verfügen und den Datenverkehr auf diese Bereitstellungen aufteilen oder den Datenverkehr 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 beiden 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 navigiert, 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.

Geschlossene Modelle

Gated-Modelle sind Modelle, für die Sie vor der Verwendung die Genehmigung des Modellautors einholen müssen. Verwendung:

  1. Ein read- oder fine-grained-Token für Hugging Face
  2. Anfordern des Zugriffs über die Seite des Modells auf Hugging Face
  3. Erstellen Sie eine benutzerdefinierte Schlüsselverbindung mit dem Namen HuggingFaceTokenConnection und dem Schlüssel HF_TOKEN, wobei der Wert Ihr Hugging Face Token ist, das als geheim gekennzeichnet ist.
  4. Erstellen eines Endpunkts mit enforce_access_to_default_secret_stores festgelegt auf enabled
  5. Bereitstellen des Modells mithilfe des neu erstellten Endpunkts

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, um weitere Bereitstellungen hinzuzufügen, Datenverkehr zu verwalten und den Endpunkthub zu skalieren. 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. Sie finden Eingabeformat, Parameter und Beispieleingaben in der Dokumentation zur Hugging Face Hub-Ableitungs-API.

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,
)

ml_client = MLClient(
    credential=DefaultAzureCredential(),
    subscription_id="<your-subscription-id>",
    resource_group_name="<your-resource-group>",
    workspace_name="<your-workspace-name>"
)


registry_name = "HuggingFace"
model_name = "bert_base_uncased"
model_version = "25"
model_id = f"azureml://registries/{registry_name}/models/{model_name}/versions/{model_version}"

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. Das Codebeispiel in diesem Abschnitt ermöglicht eine Eingabe für den Typ fill-mask, da wir das Modell bert-base-uncased bereitgestellt haben. Sie finden Eingabeformat, Parameter und Beispieleingaben in der Dokumentation zur Hugging Face Hub-Ableitungs-API.

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. Die vollqualifizierte model Objekt-ID basierend auf dem Modellnamen und der Registrierung lautet 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"
model_version="25"
az ml online-endpoint create --name $endpoint_name 

# create deployment file. 
cat <<EOF > ./deploy.yml
name: demo
model: azureml://registries/HuggingFace/models/$model_name/versions/$model_version
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. Sie finden Eingabeformat, Parameter und Beispieleingaben in der Dokumentation zur Hugging Face Hub-Ableitungs-API.

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. Wenn Sie versuchen, solche Modelle bereitzustellen, ohne die oben aufgeführten Schritte ordnungsgemäß auszuführen, kommt es zu einem Fehler KeyError.

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 aus Sicherheitsgründen 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 zusätzliche Bibliotheken benötigen, die über die Standard-Transformer-Bibliotheken hinausgehen, scheitern mit einem ModuleNotFoundError- oder ImportError-Fehler.

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. HuggingFace Die Registrierung in Azure Machine Learning funktioniert als Katalog, um HuggingFace-Hubmodelle in Azure Machine Learning zu ermitteln und bereitzustellen.

Welche Modelle werden unterstützt?

Hugging Face-Modelle, die die folgenden Kriterien erfüllen, werden in Azure unterstützt:

  • Muss über die Tags Transformers, Diffusers oder Sentence-Transformers im Hugging Face Hub verfügen
  • Hat eine unterstützte Aufgabe wie chat-completion, image-to-task oder embeddings
  • Modellgewichtungen sind im Safetensors-Format angegeben, und das Modell erfordert trust_remote_code nicht.

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 Transformators SDK optimieren kann? Da die Gewichtungen des Modells nicht in der HuggingFace Registrierung gespeichert sind, können Sie nicht auf Modellgewichtungen zugreifen, indem Sie diese Modelle als Eingaben für Aufträge verwenden.

Wie erhalte ich Support, wenn meine Bereitstellungen fehlschlagen oder rückschlüsse nicht wie erwartet funktionieren?HuggingFace ist eine Communityregistrierung, 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 an den Microsoft-Support bei Plattformproblemen, wie zum Beispiel Schwierigkeiten beim Erstellen eines Onlineendpunkts oder bei der Authentifizierung an der REST-API des Endpunkts. Erstellen Sie für Transformatoren spezifische Probleme ein Problem auf GitHub, verwenden Sie das HuggingFace-Forum, oder verwenden Sie die HuggingFace-Unterstützung.

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.

Wohin können Benutzende Fragen und Bedenken bezüglich Hugging Face in Azure Machine Learning senden? Übermitteln Sie Ihre Fragen im Azure Machine Learning-Diskussionsforum, oder öffnen Sie ein GitHub-Issue.

Regionale Verfügbarkeit

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