Delen via


Modellen van HuggingFace-hub implementeren in online-eindpunten van Azure Machine Learning voor realtime deductie

Microsoft werkt samen met Hugging Face om open source-modellen van Hugging Face Hub naar Azure Machine Learning te brengen. Hugging Face is de maker van Transformers, een veelgebruikte bibliotheek voor het bouwen van grote taalmodellen. Het Hugging Face-model met duizenden open source-modellen. Met de integratie met Azure Machine Learning kunt u opensource-modellen van uw keuze implementeren om een veilige en schaalbare deductie-infrastructuur in Azure te beveiligen. U kunt met gemak zoeken vanuit duizenden transformatormodellen in de Azure Machine Learning-modelcatalogus en modellen implementeren op een beheerd online-eindpunt via de begeleide wizard. Zodra het beheerde online-eindpunt is geïmplementeerd, beschikt u over een beveiligde REST API om uw model in realtime te beoordelen.

Notitie

Modellen van Hugging Face zijn onderhevig aan licentievoorwaarden van derden die beschikbaar zijn op de pagina details van het Hugging Face-model. Het is uw verantwoordelijkheid om te voldoen aan de licentievoorwaarden van het model.

Voordelen van het gebruik van online-eindpunten voor realtime deductie

Beheerde online-eindpunten in Azure Machine Learning helpen u modellen op krachtige CPU- en GPU-machines in Azure op een kant-en-klare manier te implementeren. Beheerde online-eindpunten zorgen voor het leveren, schalen, beveiligen en bewaken van uw modellen, waardoor u geen last meer hebt van de overhead van het instellen en beheren van de onderliggende infrastructuur. De virtuele machines worden namens u ingericht wanneer u modellen implementeert. U kunt meerdere implementaties achter en verkeer splitsen of verkeer spiegelen naar die implementaties. Mirror-verkeer helpt u bij het testen van nieuwe versies van modellen voor productieverkeer zonder dat ze productieomgevingen worden vrijgegeven. Door verkeer te splitsen, kunt u het productieverkeer geleidelijk verhogen naar nieuwe modelversies terwijl de prestaties worden waargenomen. Met automatisch schalen kunt u resources dynamisch omhoog of omlaag schalen op basis van workloads. U kunt schalen configureren op basis van metrische gegevens over gebruik, een specifiek schema of een combinatie van beide. Een voorbeeld van schalen op basis van metrische gebruiksgegevens is het toevoegen van knooppunten als het CPU-gebruik hoger is dan 70%. Een voorbeeld van schaalaanpassing op basis van een planning is het toevoegen van knooppunten op basis van piekuren.

HuggingFace-hubmodellen implementeren met Studio

Als u een te implementeren model wilt vinden, opent u de modelcatalogus in Azure Machine Learning-studio. Selecteer Alle filters en selecteer Vervolgens HuggingFace in de sectie Filteren op verzamelingen. Selecteer de modeltegel om de modelpagina te openen.

Model implementeren

Kies de optie voor realtime-implementatie om het dialoogvenster Snelle implementatie te openen. Geef de volgende opties op:

  • Selecteer de sjabloon voor GPU of CPU. CPU-exemplaartypen zijn geschikt voor testen en GPU-exemplaartypen bieden betere prestaties in productie. Modellen die groot zijn, passen niet in een TYPE CPU-exemplaar.
  • Selecteer het exemplaartype. Deze lijst met exemplaren wordt gefilterd op de exemplaren die het model naar verwachting zal implementeren zonder dat er onvoldoende geheugen beschikbaar is.
  • Selecteer het aantal exemplaren. Eén exemplaar is voldoende voor testen, maar we raden u aan twee of meer exemplaren voor productie te overwegen.
  • Geef eventueel een eindpunt en implementatienaam op.
  • Selecteer Implementeren. Vervolgens gaat u naar de eindpuntpagina. Dit kan enkele seconden duren. Het uitvoeren van de implementatie duurt enkele minuten op basis van de modelgrootte en het exemplaartype.

Opmerking: Als u wilt implementeren naar een bestaand eindpunt, selecteert u More options in het dialoogvenster Snelle implementatie en gebruikt u de volledige implementatiewizard.

Het geïmplementeerde model testen

Zodra de implementatie is voltooid, vindt u het REST-eindpunt voor het model op de pagina eindpunten, die kan worden gebruikt om het model te beoordelen. U vindt opties voor het toevoegen van meer implementaties, het beheren van verkeer en het schalen van de Endpoints-hub. U gebruikt ook het tabblad Testen op de eindpuntpagina om het model te testen met voorbeeldinvoer. Voorbeeldinvoer is beschikbaar op de modelpagina. U vindt de invoerindeling, parameters en voorbeeldinvoer in de deductie-API-documentatie van de Hugging Face-hub.

Hugging Face-hubmodellen implementeren met behulp van Python SDK

Stel de Python SDK in.

Het model zoeken dat moet worden geïmplementeerd

Blader door de modelcatalogus in Azure Machine Learning-studio en zoek het model dat u wilt implementeren. Kopieer de modelnaam die u wilt implementeren. Importeer de vereiste bibliotheken. De modellen die in de catalogus worden weergegeven, worden weergegeven in het HuggingFace register. Maak de model_id modelnaam die u hebt gekopieerd uit de modelcatalogus en het HuggingFace register. U implementeert het bert_base_uncased model met de nieuwste versie in dit voorbeeld.

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"

Model implementeren

Maak een online-eindpunt. Maak vervolgens de implementatie. Stel ten slotte al het verkeer in om deze implementatie te gebruiken. U vindt de optimale CPU of GPU instance_type voor een model door het dialoogvenster snelle implementatie te openen vanaf de modelpagina in de modelcatalogus. Zorg ervoor dat u een instance_type quotum gebruikt waarvoor u een quotum hebt.

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

Het geïmplementeerde model testen

Maak een bestand met invoer die kan worden verzonden naar het online-eindpunt voor scoren. Onderstaande codevoorbeeldinvoer voor het fill-mask type sinds we het bert-base-uncased model hebben geïmplementeerd. U vindt de invoerindeling, parameters en voorbeeldinvoer in de deductie-API-documentatie van de 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))

Hugging Face-hubmodellen implementeren met behulp van CLI

De CLI instellen.

Het model zoeken dat moet worden geïmplementeerd

Blader door de modelcatalogus in Azure Machine Learning-studio en zoek het model dat u wilt implementeren. Kopieer de modelnaam die u wilt implementeren. De modellen die in de catalogus worden weergegeven, worden weergegeven in het HuggingFace register. U implementeert het bert_base_uncased model met de nieuwste versie in dit voorbeeld.

Model implementeren

U hebt het model model nodig en instance_type het model te implementeren. U vindt de optimale CPU of GPU instance_type voor een model door het dialoogvenster snelle implementatie te openen vanaf de modelpagina in de modelcatalogus. Zorg ervoor dat u een instance_type quotum gebruikt waarvoor u een quotum hebt.

De modellen die in de catalogus worden weergegeven, worden weergegeven in het HuggingFace register. U implementeert het bert_base_uncased model met de nieuwste versie in dit voorbeeld. De volledig gekwalificeerde model asset-id op basis van de modelnaam en het register is azureml://registries/HuggingFace/models/bert-base-uncased/labels/latest. We maken het deploy.yml bestand dat wordt gebruikt voor de az ml online-deployment create inline-opdracht.

Maak een online-eindpunt. Maak vervolgens de implementatie.

# 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

Het geïmplementeerde model testen

Maak een bestand met invoer die kan worden verzonden naar het online-eindpunt voor scoren. Face knuffelen als codevoorbeeldinvoer voor het fill-mask type voor het geïmplementeerde model.bert-base-uncased U vindt de invoerindeling, parameters en voorbeeldinvoer in de deductie-API-documentatie van de 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

Voorbeeldcode voor Face-model knuffelen

Volg deze koppeling om voorbeeldcode voor het gezichtsmodel te vinden voor verschillende scenario's, waaronder tokenclassificatie, vertaling, vraagantwoorden en classificatie van nul shots.

Probleemoplossing: Implementatiefouten en niet-ondersteunde modellen

De Hugging Face-hub bevat duizenden modellen, waarvan er elke dag honderden worden bijgewerkt. Alleen de populairste modellen in de verzameling worden getest en andere kunnen mislukken met een van de onderstaande fouten.

Gated-modellen

Voor gated-modellen moeten gebruikers ermee akkoord gaan om hun contactgegevens te delen en de voorwaarden van de modeleigenaren te accepteren om toegang te krijgen tot het model. Het implementeren van dergelijke modellen mislukt met een KeyError.

Modellen die externe code moeten uitvoeren

Modellen gebruiken doorgaans code van de transformatieprogramma-SDK, maar sommige modellen voeren code uit vanuit de modelopslagplaats. Dergelijke modellen moeten de parameter trust_remote_code instellen op True. Volg deze koppeling voor meer informatie over het gebruik van externe code. Dergelijke modellen worden niet ondersteund om rekening te houden met beveiliging. Het implementeren van dergelijke modellen mislukt met de volgende fout: 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.

Modellen met onjuiste tokenizers

Onjuist opgegeven of ontbrekende tokenizer in het modelpakket kan leiden tot OSError: Can't load tokenizer for <model> een fout.

Ontbrekende bibliotheken

Sommige modellen hebben extra Python-bibliotheken nodig. U kunt ontbrekende bibliotheken installeren wanneer u modellen lokaal uitvoert. Modellen die speciale bibliotheken nodig hebben buiten de standaardtransformatiebibliotheken, mislukken met ModuleNotFoundError of ImportError fout.

Onvoldoende geheugen

Als u het OutOfQuota: Container terminated due to insufficient memoryziet, kunt u proberen een instance_type met meer geheugen te gebruiken.

Veelgestelde vragen

Waar worden de modelgewichten opgeslagen?

Face-modellen hugging worden weergegeven in de Azure Machine Learning-modelcatalogus via het HuggingFace register. Met Face wordt dit register gemaakt en beheerd en beschikbaar gesteld voor Azure Machine Learning als communityregister. De modelgewichten worden niet gehost in Azure. De gewichten worden rechtstreeks gedownload van de Hugging Face-hub naar de online-eindpunten in uw werkruimte wanneer deze modellen worden geïmplementeerd. HuggingFace register in AzureML werkt als catalogus voor het detecteren en implementeren van HuggingFace-hubmodellen in Azure Machine Learning.

Hoe implementeer ik de modellen voor batchdeductie? Het implementeren van deze modellen op batch-eindpunten voor batchdeductie wordt momenteel niet ondersteund.

Kan ik modellen uit het HuggingFace register gebruiken als invoer voor taken, zodat ik deze modellen kan verfijnen met behulp van de transformator-SDK? Omdat de modelgewichten niet in het HuggingFace register worden opgeslagen, hebt u geen toegang tot modelgewichten door deze modellen als invoer voor taken te gebruiken.

Hoe kan ik ondersteuning krijgen als mijn implementaties mislukken of deductie niet werkt zoals verwacht?HuggingFace is een communityregister en dat wordt niet gedekt door Microsoft-ondersteuning. Bekijk de implementatielogboeken en ontdek of het probleem is gerelateerd aan het Azure Machine Learning-platform of specifiek voor HuggingFace-transformaties. Neem contact op met Microsoft Ondersteuning voor platformproblemen. Het is bijvoorbeeld niet mogelijk om een online-eindpunt of verificatie voor rest API voor eindpunten te maken. Gebruik het HuggingFace-forum of huggingFace-ondersteuning voor transformatoren.

Wat is een communityregister? Communityregisters zijn Azure Machine Learning-registers die zijn gemaakt door vertrouwde Azure Machine Learning-partners en beschikbaar voor alle Azure Machine Learning-gebruikers.

Waar kunnen gebruikers vragen en problemen met betrekking tot Hugging Face indienen in Azure Machine Learning? Dien uw vragen in op het Azure Machine Learning-discussieforum.

Regionale beschikbaarheid

De Hugging Face Collection is momenteel alleen beschikbaar in alle regio's van de openbare cloud.