Nasazení modelů z centra HuggingFace do online koncových bodů Azure Machine Learning pro inferenci v reálném čase

Společnost Microsoft navázala spolupráci se společností Hugging Face, aby přenesla modely s otevřeným zdrojovým kódem z centra Hugging Face Hub do služby Azure Machine Learning. Hugging Face je tvůrce Transformers, což je široce oblíbená knihovna pro vytváření velkých jazykových modelů. Centrum modelů Hugging Face, které obsahuje tisíce open-source modelů. Integrace se službou Azure Machine Učení umožňuje nasadit opensourcové modely podle vašeho výběru pro zabezpečení a škálovatelnou infrastrukturu odvozování v Azure. Pomocí průvodce můžete snadno vyhledávat z tisíců modelů transformátorů v katalogu modelů Azure Machine Učení a nasazovat modely do spravovaného online koncového bodu. Po nasazení vám spravovaný online koncový bod poskytne zabezpečené rozhraní REST API pro hodnocení modelu v reálném čase.

Poznámka:

Modely z Hugging Face podléhají licenčním podmínkám třetích stran, které jsou k dispozici na stránce podrobností modelu Hugging Face. Je vaší zodpovědností dodržovat licenční podmínky modelu.

Výhody používání online koncových bodů pro odvozování v reálném čase

Spravované online koncové body ve službě Azure Machine Učení pomáhají nasazovat modely na výkonné počítače s procesorem a GPU v Azure na klíč. Spravované online koncové body se starají o obsluhu, škálování, zabezpečení a monitorování vašich modelů a osvobodí vás od režijních nákladů na nastavení a správu základní infrastruktury. Virtuální počítače se zřídí vaším jménem při nasazování modelů. Můžete mít několik nasazení za sebou a rozdělit provoz nebo zrcadlit provoz na tato nasazení. Zrcadlový provoz pomáhá testovat nové verze modelů na produkčním provozu, aniž byste je uvolnili v produkčních prostředích. Rozdělení provozu umožňuje postupně zvýšit produkční provoz do nových verzí modelu při sledování výkonu. Automatické škálování umožňuje dynamicky navyšovat nebo zvětšovat prostředky na základě úloh. Škálování můžete nakonfigurovat na základě metrik využití, konkrétního plánu nebo kombinace obou. Příkladem škálování na základě metrik využití je přidání uzlů, pokud využití procesoru překročí 70 %. Příkladem škálování na základě plánu je přidání uzlů na základě špičky v pracovní době.

Nasazení modelů centra HuggingFace pomocí studia

Pokud chcete najít model k nasazení, otevřete katalog modelů v studio Azure Machine Learning. Vyberte kolekci centra HuggingFace. Vyfiltrujte podle úkolu nebo licence a prohledejte modely. Výběrem dlaždice modelu otevřete stránku modelu.

Nasazení modelu

Zvolte možnost nasazení v reálném čase a otevřete dialogové okno rychlého nasazení. Zadejte následující možnosti:

  • Vyberte šablonu pro GPU nebo PROCESOR. Typy instancí procesoru jsou vhodné pro testování a typy instancí GPU nabízejí lepší výkon v produkčním prostředí. Modely, které jsou velké, se nevejdou do typu instance procesoru.
  • Vyberte typ instance. Tento seznam instancí se vyfiltruje na ty, u kterých se očekává, že se model nasadí bez nedostatku paměti.
  • Vyberte počet instancí. Jedna instance je dostatečná pro testování, ale doporučujeme zvážit dvě nebo více instancí pro produkční prostředí.
  • Volitelně zadejte koncový bod a název nasazení.
  • Vyberte nasadit. Pak přejdete na stránku koncového bodu, která může trvat několik sekund. Dokončení nasazení trvá několik minut na základě velikosti modelu a typu instance.

Animation showing the location of the model catalog within the Azure Machine learning studio

Poznámka: Pokud chcete nasadit do existujícího koncového bodu, vyberte More options z dialogového okna rychlého nasazení a použijte průvodce úplným nasazením.

Testování nasazeného modelu

Po dokončení nasazení najdete koncový bod REST pro model na stránce koncových bodů, který se dá použít k určení skóre modelu. Najdete možnosti pro přidání dalších nasazení, správu provozu a škálování centra Endpoints. K otestování modelu s ukázkovými vstupy také použijete kartu Test na stránce koncového bodu. Ukázkové vstupy jsou k dispozici na stránce modelu. V dokumentaci k rozhraní API pro odvozování centra Hugging Face najdete vstupní formát, parametry a ukázkové vstupy.

Nasazení modelů centra HuggingFace pomocí sady Python SDK

Nastavte sadu Python SDK.

Vyhledání modelu pro nasazení

Projděte si katalog modelů v studio Azure Machine Learning a vyhledejte model, který chcete nasadit. Zkopírujte název modelu, který chcete nasadit. Importujte požadované knihovny. Modely zobrazené v katalogu jsou uvedené v HuggingFace registru. model_id Vytvořte název modelu, který jste zkopírovali z katalogu modelů a HuggingFace registru. Model nasadíte bert_base_uncased s nejnovější verzí v tomto příkladu.

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"

Nasazení modelu

Vytvořte online koncový bod. Dále vytvořte nasazení. Nakonec nastavte veškerý provoz tak, aby používal toto nasazení. Optimální procesor nebo GPU instance_type pro model najdete otevřením dialogového okna rychlého nasazení na stránce modelu v katalogu modelů. Ujistěte se, že používáte kvótu, pro kterou máte kvótu instance_type .

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.traffic = {"demo": 100}
ml_client.begin_create_or_update(endpoint_name).result()

Testování nasazeného modelu

Vytvořte soubor se vstupy, které se dají odeslat do online koncového bodu pro bodování. Pod ukázkovým vstupem fill-mask kódu pro typ, protože jsme model nasadili bert-base-uncased . V dokumentaci k rozhraní API pro odvozování centra Hugging Face najdete vstupní formát, parametry a ukázkové vstupy.

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

Nasazení modelů centra HuggingFace pomocí CLI

Nastavení rozhraní příkazového řádku

Vyhledání modelu pro nasazení

Projděte si katalog modelů v studio Azure Machine Learning a vyhledejte model, který chcete nasadit. Zkopírujte název modelu, který chcete nasadit. Modely zobrazené v katalogu jsou uvedené v HuggingFace registru. Model nasadíte bert_base_uncased s nejnovější verzí v tomto příkladu.

Nasazení modelu

Potřebujete model model a instance_type nasadit ho. Optimální procesor nebo GPU instance_type pro model najdete otevřením dialogového okna rychlého nasazení na stránce modelu v katalogu modelů. Ujistěte se, že používáte kvótu, pro kterou máte kvótu instance_type .

Modely zobrazené v katalogu jsou uvedené v HuggingFace registru. Model nasadíte bert_base_uncased s nejnovější verzí v tomto příkladu. Plně kvalifikované model ID prostředku založené na názvu modelu a registru je azureml://registries/HuggingFace/models/bert-base-uncased/labels/latest. Vytvoříme deploy.yml soubor použitý pro příkaz vložený az ml online-deployment create .

Vytvořte online koncový bod. Dále vytvořte nasazení.

# 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

Testování nasazeného modelu

Vytvořte soubor se vstupy, které se dají odeslat do online koncového bodu pro bodování. Hugging Face as a code sample input for the fill-mask type for our deployed model the bert-base-uncased model. V dokumentaci k rozhraní API pro odvozování centra Hugging Face najdete vstupní formát, parametry a ukázkové vstupy.

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

Vzorový kód modelu hugging Face Model

Na tomto odkazu najdete vzorový kód modelu objetí tváře pro různé scénáře, včetně klasifikace tokenů, překladu, odpovědi na otázky a klasifikace nulového snímku.

Řešení potíží: Chyby nasazení a nepodporované modely

Centrum HuggingFace obsahuje tisíce modelů a stovky z nich jsou každý den aktualizovány. Testují se pouze nejoblíbenější modely v kolekci a jiné můžou selhat s jednou z následujících chyb.

Vrátné modely

Vrátné modely vyžadují, aby uživatelé souhlasili se sdílením kontaktních informací a přijetím podmínek a ujednání vlastníků modelů pro přístup k modelu. Pokus o nasazení takových modelů selže s chybou KeyError.

Modely, které potřebují spustit vzdálený kód

Modely obvykle používají kód ze sady SDK transformátorů, ale některé modely spouštějí kód z úložiště modelu. Tyto modely musí parametr nastavit trust_remote_code na True. Další informace o používání vzdáleného kódu najdete na tomto odkazu. Tyto modely nejsou podporovány z hlediska zabezpečení. Pokus o nasazení těchto modelů selže s následující chybou: 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.

Modely s nesprávnými tokenizátory

Nesprávně zadaný nebo chybějící tokenizátor v balíčku modelu může způsobit OSError: Can't load tokenizer for <model> chybu.

Chybějící knihovny

Některé modely potřebují další knihovny Pythonu. Chybějící knihovny můžete nainstalovat při místním spouštění modelů. Modely, které potřebují speciální knihovny nad rámec standardních knihoven transformátorů, selžou nebo ImportError dojde k ModuleNotFoundError chybě.

Nedostatek paměti

Pokud se zobrazí tato možnost OutOfQuota: Container terminated due to insufficient memory, zkuste použít instance_type více paměti.

Nejčastější dotazy

Kde jsou uloženy váhy modelu?

Modely hugging Face jsou doporučené v katalogu modelů Azure Machine Učení prostřednictvím HuggingFace registru. Hugging Face vytváří a spravuje tento registr a je zpřístupněn pro službu Azure Machine Učení jako registr komunity. Váhy modelu nejsou hostované v Azure. Váhy se stáhnou přímo z centra Hugging Face do online koncových bodů ve vašem pracovním prostoru při nasazení těchto modelů. HuggingFaceregistr v AzureML funguje jako katalog, který pomáhá zjišťovat a nasazovat modely centra HuggingFace ve službě Azure Machine Učení.

Jak nasadit modely pro dávkové odvozování? Nasazení těchto modelů do dávkových koncových bodů pro odvozování dávek se v současné době nepodporuje.

Můžu použít modely z HuggingFace registru jako vstup pro úlohy, aby bylo možné tyto modely doladit pomocí sady SDK transformátorů? Vzhledem k tomu, že váhy modelu nejsou uloženy v HuggingFace registru, nemůžete získat přístup k hmotnostem modelu pomocí těchto modelů jako vstupů pro úlohy.

Návody získat podporu, pokud moje nasazení selžou nebo neodvozují podle očekávání?HuggingFace je registr komunity, na který se nevztahuje podpora Microsoftu. Projděte si protokoly nasazení a zjistěte, jestli problém souvisí s platformou azure machine Učení nebo specifickou pro transformátory HuggingFace. V případě problémů s platformou se obraťte na podporu Microsoftu. Například nejde vytvořit online koncový bod nebo ověřování pro rozhraní REST API koncového bodu nefunguje. V případě problémů specifických pro transformátory použijte fórum HuggingFace nebo podporu HuggingFace.

Co je registr komunity? Registry komunity jsou registry Azure Machine Učení vytvořené důvěryhodnými partnery Azure Machine Učení a dostupné všem uživatelům azure Machine Učení.

Kde můžou uživatelé odesílat dotazy a obavy týkající se centra Hugging Face v rámci služby Azure Machine Learning? Odešlete své dotazy na diskuzní fórum Azure Machine Učení.

Regionální dostupnost

Kolekce Hugging Face Collection je aktuálně dostupná jenom ve všech oblastech veřejného cloudu.