Sdílet prostřednictvím


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 Learning umožňuje nasazovat opensourcové modely podle vašeho výběru pro zabezpečení a škálovatelnou infrastrukturu odvozování v Azure. Pomocí průvodce průvodce můžete snadno vyhledávat z tisíců modelů transformátorů v katalogu modelů Azure Machine Learning 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.

Note

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 Learning 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 více nasazení a rozdělit provoz nebo zrcadlit provoz k těmto nasazením. 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. V části Filtrovat podle kolekcí vyberte Všechny filtry a pak vyberte HuggingFace. 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, což může trvat několik sekund. Dokončení nasazení trvá několik minut na základě velikosti modelu a typu instance.

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.

Vrátné modely

Modely s omezeným přístupem jsou modely, u kterých budete muset před použitím požádat autora o schválení. Použití:

  1. Použít Hugging Face na čtení nebo jemně odstupňovaný token
  2. Žádost o přístup prostřednictvím stránky modelu na Hugging Face
  3. Vytvořte vlastní připojení klíče pojmenované HuggingFaceTokenConnection s klíčem HF_TOKEN a s hodnotou, která je vaším tokenem Hugging Face označeným jako tajemství.
  4. Vytvoření koncového bodu s enforce_access_to_default_secret_stores nastavením enabled
  5. Nasazení modelu pomocí nově vytvořeného koncového bodu

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 zde 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. Vstupní formát, parametry a ukázkové vstupy najdete v dokumentaci k rozhraní API pro odvozování centra Hugging Face.

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

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}"

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

Testování nasazeného modelu

Vytvořte soubor se vstupy, které se dají odeslat do online koncového bodu pro bodování. Ukázka kódu v této části umožňuje vstup pro fill-mask typ, protože jsme model nasadili bert-base-uncased . Vstupní formát, parametry a ukázkové vstupy najdete v dokumentaci k rozhraní API pro odvozování centra Hugging Face.

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 identifikátor prostředku sestavený z 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"
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

Testování nasazeného modelu

Vytvořte soubor se vstupy, které se dají odeslat do online koncového bodu pro bodování. Příklad kódu Hugging Face jako vstup pro typ fill-mask pro náš nasazený model bert-base-uncased. Vstupní formát, parametry a ukázkové vstupy najdete v dokumentaci k rozhraní API pro odvozování centra Hugging Face.

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í těchto modelů bez správného provedení výše uvedených kroků 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 bezpečnostních důvodů. Pokus o nasazení takových 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 s chybou ModuleNotFoundError nebo chybou ImportError.

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 Learning prostřednictvím HuggingFace registru. Hugging Face vytvoří a spravuje tento registr a zpřístupní se službě Azure Machine Learning 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ů. HuggingFace registr ve službě Azure Machine Learning funguje jako katalog, který pomáhá zjišťovat a nasazovat modely centra HuggingFace ve službě Azure Machine Learning.

Jaké modely jsou podporované?

Modely hugging Face, které splňují následující kritéria, se podporují v Azure:

  • Musí mít buď Transformersznačku , Diffusersnebo Sentence-Transformers značky v Hugging Face Hubu.
  • podporovaný úkol , například chat-completion, image-to-tasknebo embeddings
  • Váhy modelů jsou ve formátu Safetensors a model nevyžaduje trust_remote_code

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 vyladit 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.

Jak získám podporu v případě selhání nasazení nebo odvozování nefunguje 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 Learning nebo konkrétně s transformátory HuggingFace. V případě problémů s platformou, jako je nemožnost vytvořit online koncový bod nebo selhání ověřování rozhraní REST API koncového bodu, obraťte se na podporu společnosti Microsoft. V případě problémů specifických pro transformátory vytvořte problém na GitHubu, použijte fórum HuggingFace nebo podporu HuggingFace.

Co je registr komunity? Registry komunity jsou registry Azure Machine Learning vytvořené důvěryhodnými partnery služby Azure Machine Learning a jsou k dispozici všem uživatelům služby Azure Machine Learning.

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 služby Azure Machine Learning nebo otevřete problém GitHubu.

Regionální dostupnost

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