Dela via


Distribuera modeller från HuggingFace-hubben till Azure Machine Learning-onlineslutpunkter för slutsatsdragning i realtid

Microsoft har samarbetat med Hugging Face för att överföra modeller med öppen källkod från Hugging Face-hubben till Azure Machine Learning. Hugging Face är skaparen av Transformers, ett allmänt populärt bibliotek för att skapa stora språkmodeller. Hugging Face-modellhubben omfattar tusentals modeller med öppen källkod. Med integreringen med Azure Machine Learning kan du distribuera valfria modeller med öppen källkod för att skydda och skalbar slutsatsdragningsinfrastruktur i Azure. Du kan söka från tusentals transformatormodeller i Azure Machine Learning-modellkatalogen och enkelt distribuera modeller till hanterad onlineslutpunkt via den guidade guiden. När den hanterade onlineslutpunkten har distribuerats får du ett säkert REST API för att poängsätta din modell i realtid.

Kommentar

Modeller från Hugging Face omfattas av licensvillkor från tredje part som är tillgängliga på sidan Hugging Face-modellinformation. Det är ditt ansvar att följa modellens licensvillkor.

Fördelar med att använda onlineslutpunkter för slutsatsdragning i realtid

Hanterade onlineslutpunkter i Azure Machine Learning hjälper dig att distribuera modeller till kraftfulla PROCESSOR- och GPU-datorer i Azure på ett nyckelfärdigt sätt. Hanterade onlineslutpunkter betjänar, skalar om, skyddar och övervakar dina modeller så att du slipper arbetet med att konfigurera och hantera den underliggande infrastrukturen. De virtuella datorerna etableras åt dig när du distribuerar modeller. Du kan ha flera distributioner bakom och dela trafik eller spegla trafik till dessa distributioner. Speglingstrafik hjälper dig att testa nya versioner av modeller på produktionstrafik utan att släppa dem i produktionsmiljöer. Genom att dela upp trafik kan du gradvis öka produktionstrafiken till nya modellversioner samtidigt som du observerar prestanda. Med automatisk skalning kan du dynamiskt öka eller rampa ned resurser baserat på arbetsbelastningar. Du kan konfigurera skalning baserat på användningsmått, ett specifikt schema eller en kombination av båda. Ett exempel på skalning baserat på användningsmått är att lägga till noder om CPU-användningen blir högre än 70 %. Ett exempel på schemabaserad skalning är att lägga till noder baserat på hög belastning på kontorstid.

Distribuera HuggingFace-hubbmodeller med Studio

Om du vill hitta en modell som ska distribueras öppnar du modellkatalogen i Azure Machine Learning-studio. Välj Alla filter och välj sedan "HuggingFace" i avsnittet Filtrera efter samlingar. Välj modellpanelen för att öppna modellsidan.

Distribuera modellen

Välj distributionsalternativet i realtid för att öppna dialogrutan för snabbdistribution. Ange följande alternativ:

  • Välj mallen för GPU eller CPU. Cpu-instanstyper är bra för testning och GPU-instanstyper ger bättre prestanda i produktion. Modeller som är stora får inte plats i en cpu-instanstyp.
  • Välj instanstyp. Den här listan över instanser filtreras ned till de som modellen förväntas distribuera utan att minnet börjar ta slut.
  • Välj antalet instanser. En instans räcker för testning, men vi rekommenderar att du överväger två eller flera instanser för produktion.
  • Du kan också ange en slutpunkt och ett distributionsnamn.
  • Välj distribuera. Sedan navigerar du till slutpunktssidan, vilket kan ta några sekunder. Distributionen tar flera minuter att slutföra baserat på modellstorleken och instanstypen.

Obs! Om du vill distribuera till en befintlig slutpunkt väljer du More options i dialogrutan snabbdistribution och använder guiden för fullständig distribution.

Testa den distribuerade modellen

När distributionen är klar hittar du REST-slutpunkten för modellen på sidan slutpunkter, som kan användas för att poängsätta modellen. Du hittar alternativ för att lägga till fler distributioner, hantera trafik och skala slutpunktshubben. Du använder också fliken Test på slutpunktssidan för att testa modellen med exempelindata. Exempelindata är tillgängliga på modellsidan. Du hittar indataformat, parametrar och exempelindata i API-dokumentationen för huggande ansiktshubbens slutsatsdragning.

Distribuera Hugging Face-hubbmodeller genom att använda Python SDK

Konfigurera Python SDK.

Hitta den modell som ska distribueras

Bläddra i modellkatalogen i Azure Machine Learning-studio och leta reda på den modell som du vill distribuera. Kopiera det modellnamn som du vill distribuera. Importera de bibliotek som krävs. Modellerna som visas i katalogen visas från HuggingFace registret. model_id Skapa med hjälp av modellnamnet som du kopierade från modellkatalogen HuggingFace och registret. Du distribuerar bert_base_uncased modellen med den senaste versionen i det här exemplet.

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"

Distribuera modellen

Skapa en onlineslutpunkt. Skapa sedan distributionen. Slutligen anger du all trafik som ska använda den här distributionen. Du hittar den optimala processorn eller GPU instance_type :n för en modell genom att öppna dialogrutan för snabbdistribution från modellsidan i modellkatalogen. Se till att du använder en instance_type som du har kvot för.

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

Testa den distribuerade modellen

Skapa en fil med indata som kan skickas till onlineslutpunkten för bedömning. Kodexemplet i det här avsnittet tillåter indata för fill-mask typen sedan vi distribuerade bert-base-uncased modellen. Du hittar indataformat, parametrar och exempelindata i API-dokumentationen för huggande ansiktshubbens slutsatsdragning.

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

Distribuera Hugging Face-hubbmodeller genom att använda CLI

Konfigurera CLI.

Hitta den modell som ska distribueras

Bläddra i modellkatalogen i Azure Machine Learning-studio och leta reda på den modell som du vill distribuera. Kopiera det modellnamn som du vill distribuera. Modellerna som visas i katalogen visas från HuggingFace registret. Du distribuerar bert_base_uncased modellen med den senaste versionen i det här exemplet.

Distribuera modellen

Du behöver model och instance_type för att distribuera modellen. Du hittar den optimala processorn eller GPU instance_type :n för en modell genom att öppna dialogrutan för snabbdistribution från modellsidan i modellkatalogen. Se till att du använder en instance_type som du har kvot för.

Modellerna som visas i katalogen visas från HuggingFace registret. Du distribuerar bert_base_uncased modellen med den senaste versionen i det här exemplet. Det fullständigt kvalificerade model tillgångs-ID:t baserat på modellnamnet och registret är azureml://registries/HuggingFace/models/bert-base-uncased/labels/latest. Vi skapar filen deploy.yml som används för az ml online-deployment create kommandot infogat.

Skapa en onlineslutpunkt. Skapa sedan distributionen.

# 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

Testa den distribuerade modellen

Skapa en fil med indata som kan skickas till onlineslutpunkten för bedömning. Hugging Face as a code sample input for the type for our deployed model the model (Hugging Face as a code sample input for the fill-mask type for our deployed model the bert-base-uncased model). Du hittar indataformat, parametrar och exempelindata i API-dokumentationen för huggande ansiktshubbens slutsatsdragning.

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

Hugga ansiktsmodellexempelkod

Följ den här länken för att hitta exempelkod för huggande ansiktsmodeller för olika scenarier, inklusive tokenklassificering, översättning, frågesvar och noll skottklassificering.

Felsökning: Distributionsfel och modeller som inte stöds

Hugging Face-hubben omfattar tusentals modeller där hundratals uppdateras varje dag. Endast de mest populära modellerna i samlingen testas och andra kan misslyckas med något av felen nedan.

Gated-modeller

Gated-modeller kräver att användarna samtycker till att dela sin kontaktinformation och acceptera modellägarnas villkor för att få åtkomst till modellen. Försök att distribuera sådana modeller misslyckas med en KeyError.

Modeller som behöver köra fjärrkod

Modeller använder vanligtvis kod från transformatorernas SDK, men vissa modeller kör kod från modelllagringsplatsen. Sådana modeller måste ange parametern trust_remote_code till True. Följ den här länken om du vill veta mer om hur du använder fjärrkod. Sådana modeller stöds inte för att hålla säkerheten i åtanke. Försök att distribuera sådana modeller misslyckas med följande fel: 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.

Modeller med felaktiga tokenizers

Felaktigt angiven eller saknad tokenizer i modellpaketet kan resultera i OSError: Can't load tokenizer for <model> fel.

Saknade bibliotek

Vissa modeller behöver ytterligare Python-bibliotek. Du kan installera bibliotek som saknas när du kör modeller lokalt. Modeller som behöver särskilda bibliotek utöver standardbiblioteken för transformatorer misslyckas med ModuleNotFoundError eller ImportError fel.

Otillräckligt minne

Om du ser OutOfQuota: Container terminated due to insufficient memorykan du prova att använda en instance_type med mer minne.

Vanliga frågor och svar

Var lagras modellvikterna?

Hugging Face-modeller finns i Azure Machine Learning-modellkatalogen HuggingFace via registret. Hugging Face skapar och hanterar det här registret och görs tillgängligt för Azure Machine Learning som ett communityregister. Modellvikterna finns inte i Azure. Vikterna laddas ned direkt från Hugging Face Hub till onlineslutpunkterna på din arbetsyta när dessa modeller distribueras. HuggingFace registret i AzureML fungerar som en katalog för att identifiera och distribuera HuggingFace-hubbmodeller i Azure Machine Learning.

Hur distribuerar jag modellerna för batchinferens? Distribution av dessa modeller till batchslutpunkter för batchinferens stöds för närvarande inte.

Kan jag använda modeller från HuggingFace registret som indata till jobb så att jag kan finjustera dessa modeller med transformerings-SDK? Eftersom modellvikterna inte lagras i HuggingFace registret kan du inte komma åt modellvikter genom att använda dessa modeller som indata till jobb.

Hur gör jag för att få stöd om mina distributioner misslyckas eller om slutsatsdragningen inte fungerar som förväntat?HuggingFace är ett communityregister och som inte omfattas av Microsofts support. Granska distributionsloggarna och ta reda på om problemet är relaterat till Azure Machine Learning-plattformen eller specifikt för HuggingFace-transformatorer. Kontakta Microsoft support om du har problem med plattformen. Att inte kunna skapa onlineslutpunkt eller autentisering till slutpunktens REST API fungerar inte. För transformatorer specifika problem använder du HuggingFace-forumet eller HuggingFace-supporten.

Vad är ett communityregister? Community-register är Azure Machine Learning-register som skapats av betrodda Azure Machine Learning-partner och är tillgängliga för alla Azure Machine Learning-användare.

Var kan användare skicka in frågor och frågor om Hugging Face i Azure Machine Learning? Skicka in dina frågor i diskussionsforumet för Azure Machine Learning.

Regional tillgänglighet

Hugging Face Collection är för närvarande endast tillgängligt i alla regioner i det offentliga molnet.