Udostępnij za pośrednictwem


Wdrażanie modeli z centrum HuggingFace do punktów końcowych online usługi Azure Machine Learning na potrzeby wnioskowania w czasie rzeczywistym

Firma Microsoft nawiązała współpracę z Hugging Face, aby udostępnić modele open source z centrum usługi Hugging Face do usługi Azure Machine Learning. Przytulanie twarzy jest twórcą Transformers, powszechnie popularnej biblioteki do tworzenia dużych modeli językowych. Centrum modelu Hugging Face, które ma tysiące modeli typu open source. Integracja z usługą Azure Machine Learning umożliwia wdrażanie modeli typu open source wybranego w celu zabezpieczenia i skalowalnej infrastruktury wnioskowania na platformie Azure. Możesz wyszukiwać tysiące modeli przekształcania w katalogu modeli usługi Azure Machine Learning i wdrażać modele w zarządzanym punkcie końcowym online z łatwością za pomocą kreatora z przewodnikiem. Po wdrożeniu zarządzany punkt końcowy online zapewnia bezpieczny interfejs API REST do oceniania modelu w czasie rzeczywistym.

Uwaga

Modele z funkcji Hugging Face podlegają postanowieniom licencyjnym innych firm dostępnym na stronie szczegółów modelu rozpoznawania twarzy Hugging. Użytkownik ponosi odpowiedzialność za przestrzeganie postanowień licencyjnych modelu.

Zalety korzystania z punktów końcowych online na potrzeby wnioskowania w czasie rzeczywistym

Zarządzane punkty końcowe online w usłudze Azure Machine Learning ułatwiają wdrażanie modeli na zaawansowanych maszynach z procesorem CPU i procesorem GPU na platformie Azure w sposób zaawansowany. Zarządzane punkty końcowe online oferują obsługę, skalowanie, zabezpieczanie i monitorowanie modeli, uwalniając Cię od konieczności konfigurowania infrastruktury bazowej i zarządzania nią. Maszyny wirtualne są aprowidowane w Twoim imieniu podczas wdrażania modeli. Możesz mieć wiele wdrożeń w tyle i podzielić ruch lub dublować ruch do tych wdrożeń. Ruch dublowania pomaga przetestować nowe wersje modeli w ruchu produkcyjnym bez wydawania ich środowisk produkcyjnych. Dzielenie ruchu pozwala stopniowo zwiększać ruch produkcyjny do nowych wersji modelu przy jednoczesnym obserwowaniu wydajności. Automatyczne skalowanie umożliwia dynamiczne zwiększanie lub zwiększanie zasobów na podstawie obciążeń. Skalowanie można skonfigurować na podstawie metryk użycia, określonego harmonogramu lub kombinacji obu tych elementów. Przykładem skalowania na podstawie metryk wykorzystania jest dodanie węzłów, jeśli użycie procesora CPU przekroczy 70%. Przykładem skalowania opartego na harmonogramie jest dodanie węzłów w oparciu o szczytowe godziny pracy.

Wdrażanie modeli koncentratora HuggingFace przy użyciu programu Studio

Aby znaleźć model do wdrożenia, otwórz katalog modeli w usłudze Azure Machine Learning Studio. Wybierz pozycję "Wszystkie filtry", a następnie wybierz pozycję "HuggingFace" w sekcji Filtruj według kolekcji. Wybierz kafelek modelu, aby otworzyć stronę modelu.

Wdrażanie modelu

Wybierz opcję wdrażania w czasie rzeczywistym, aby otworzyć okno dialogowe szybkiego wdrażania. Podaj następujące opcje:

  • Wybierz szablon procesora GPU lub procesora CPU. Typy wystąpień procesora CPU są dobre do testowania, a typy wystąpień procesora GPU oferują lepszą wydajność w środowisku produkcyjnym. Modele, które są duże, nie mieszczą się w typie wystąpienia procesora CPU.
  • Wybierz typ wystąpienia. Ta lista wystąpień jest filtrowana w dół do tych, które model ma zostać wdrożony bez braku pamięci.
  • Wybierz liczbę wystąpień. Jedno wystąpienie jest wystarczające do testowania, ale zalecamy rozważenie co najmniej dwóch wystąpień w środowisku produkcyjnym.
  • Opcjonalnie określ punkt końcowy i nazwę wdrożenia.
  • Wybierz pozycję Wdróż. Następnie nastąpi przejście do strony punktu końcowego, która może potrwać kilka sekund. Wdrożenie trwa kilka minut na podstawie rozmiaru modelu i typu wystąpienia.

Uwaga: jeśli chcesz wdrożyć w istniejącym punkcie końcowym, wybierz pozycję More options w oknie dialogowym szybkiego wdrażania i użyj kreatora pełnego wdrożenia.

Testowanie wdrożonego modelu

Po zakończeniu wdrażania można znaleźć punkt końcowy REST dla modelu na stronie punktów końcowych, który może służyć do oceniania modelu. Dostępne są opcje dodawania kolejnych wdrożeń, zarządzania ruchem i skalowania centrum Punktów końcowych. Możesz również użyć karty Test na stronie punktu końcowego, aby przetestować model przy użyciu przykładowych danych wejściowych. Przykładowe dane wejściowe są dostępne na stronie modelu. Format wejściowy, parametry i przykładowe dane wejściowe można znaleźć w dokumentacji interfejsu API wnioskowania interfejsu API przytulania twarzy.

Wdrażanie modeli centrum HuggingFace przy użyciu zestawu SDK języka Python

Skonfiguruj zestaw SDK języka Python.

Znajdowanie modelu do wdrożenia

Przejrzyj katalog modeli w usłudze Azure Machine Learning Studio i znajdź model, który chcesz wdrożyć. Skopiuj nazwę modelu, który chcesz wdrożyć. Zaimportuj wymagane biblioteki. Modele wyświetlane w wykazie są wyświetlane z HuggingFace rejestru. model_id Utwórz wartość przy użyciu nazwy modelu skopiowanej z katalogu modeli i HuggingFace rejestru. W tym przykładzie bert_base_uncased wdrożysz model z najnowszą wersją.

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"

Wdrażanie modelu

Utwórz punkt końcowy online. Następnie utwórz wdrożenie. Na koniec ustaw cały ruch, aby używał tego wdrożenia. Optymalny procesor CPU lub procesor GPU instance_type dla modelu można znaleźć, otwierając okno dialogowe szybkiego wdrażania na stronie modelu w katalogu modeli. Upewnij się, że używasz limitu instance_type przydziału.

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

Testowanie wdrożonego modelu

Utwórz plik z danymi wejściowymi, które można przesłać do punktu końcowego online na potrzeby oceniania. Poniżej przykładowych danych wejściowych kodu dla fill-mask typu od czasu wdrożenia bert-base-uncased modelu. Format wejściowy, parametry i przykładowe dane wejściowe można znaleźć w dokumentacji interfejsu API wnioskowania interfejsu API przytulania twarzy.

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

Wdrażanie modeli centrum HuggingFace przy użyciu zestawu CLI

Skonfiguruj interfejs wiersza polecenia.

Znajdowanie modelu do wdrożenia

Przejrzyj katalog modeli w usłudze Azure Machine Learning Studio i znajdź model, który chcesz wdrożyć. Skopiuj nazwę modelu, który chcesz wdrożyć. Modele wyświetlane w wykazie są wyświetlane z HuggingFace rejestru. W tym przykładzie bert_base_uncased wdrożysz model z najnowszą wersją.

Wdrażanie modelu

Potrzebujesz identyfikatora model i instance_type , aby wdrożyć model. Optymalny procesor CPU lub procesor GPU instance_type dla modelu można znaleźć, otwierając okno dialogowe szybkiego wdrażania na stronie modelu w katalogu modeli. Upewnij się, że używasz limitu instance_type przydziału.

Modele wyświetlane w wykazie są wyświetlane z HuggingFace rejestru. W tym przykładzie bert_base_uncased wdrożysz model z najnowszą wersją. W pełni kwalifikowany model identyfikator zasobu na podstawie nazwy modelu i rejestru to azureml://registries/HuggingFace/models/bert-base-uncased/labels/latest. Utworzymy deploy.yml plik używany dla wbudowanego az ml online-deployment create polecenia.

Utwórz punkt końcowy online. Następnie utwórz wdrożenie.

# 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

Testowanie wdrożonego modelu

Utwórz plik z danymi wejściowymi, które można przesłać do punktu końcowego online na potrzeby oceniania. Przytulanie twarzy jako przykładowe dane wejściowe kodu dla fill-mask typu wdrożonego bert-base-uncased modelu modelu. Format wejściowy, parametry i przykładowe dane wejściowe można znaleźć w dokumentacji interfejsu API wnioskowania interfejsu API przytulania twarzy.

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

Przykładowy kod przytulania modelu twarzy

Użyj tego linku, aby znaleźć przytulanie kodu przykładowego modelu twarzy dla różnych scenariuszy, w tym klasyfikacji tokenów, tłumaczenia, odpowiadania na pytania i zerowej klasyfikacji strzałów.

Rozwiązywanie problemów: błędy wdrażania i nieobsługiwane modele

Centrum HuggingFace ma tysiące modeli z setkami aktualizowanymi każdego dnia. Tylko najbardziej popularne modele w kolekcji są testowane, a inne mogą zakończyć się niepowodzeniem z jednym z poniższych błędów.

Modele bramowane

Modele bramowane wymagają od użytkowników zgody na udostępnienie swoich informacji kontaktowych i zaakceptowanie warunków i postanowień właścicieli modelu w celu uzyskania dostępu do modelu. Próba wdrożenia takich modeli zakończy się niepowodzeniem z elementem KeyError.

Modele, które muszą uruchamiać kod zdalny

Modele zazwyczaj używają kodu z zestawu SDK przekształcania, ale niektóre modele uruchamiają kod z repozytorium modelu. Takie modele muszą ustawić parametr trust_remote_code na True. Postępuj zgodnie z tym linkiem, aby dowiedzieć się więcej o korzystaniu z kodu zdalnego. Takie modele nie są obsługiwane z myślą o zabezpieczeniach. Próba wdrożenia takich modeli zakończy się niepowodzeniem z powodu następującego błędu: 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.

Modele z nieprawidłowymi tokenizatorami

Niepoprawnie określony lub brak tokenizatora w pakiecie modelu może spowodować OSError: Can't load tokenizer for <model> błąd.

Brakujące biblioteki

Niektóre modele wymagają dodatkowych bibliotek języka Python. Brakujące biblioteki można zainstalować lokalnie podczas uruchamiania modeli. Modele, które wymagają specjalnych bibliotek poza standardowymi bibliotekami przekształcania, kończą się niepowodzeniem lub ImportError błędemModuleNotFoundError.

Za mało pamięci

Jeśli widzisz wartość OutOfQuota: Container terminated due to insufficient memory, spróbuj użyć elementu z większą ilością instance_type pamięci.

Często zadawane pytania

Gdzie są przechowywane wagi modelu?

Przytulanie modeli rozpoznawania twarzy jest opisywane w katalogu modeli usługi Azure Machine Learning za pośrednictwem HuggingFace rejestru. Przytulanie twarzy tworzy ten rejestr i zarządza nim i jest udostępniany usłudze Azure Machine Learning jako rejestr społeczności. Wagi modelu nie są hostowane na platformie Azure. Wagi są pobierane bezpośrednio z centrum Hugging Face do punktów końcowych online w obszarze roboczym podczas wdrażania tych modeli. HuggingFace rejestr w usłudze AzureML działa jako katalog, aby ułatwić odnajdywanie i wdrażanie modeli centrum HuggingFace w usłudze Azure Machine Learning.

Jak wdrożyć modele na potrzeby wnioskowania wsadowego? Wdrażanie tych modeli w punktach końcowych wsadowych na potrzeby wnioskowania wsadowego nie jest obecnie obsługiwane.

Czy mogę używać modeli z HuggingFace rejestru jako danych wejściowych do zadań, aby można było dostosować te modele przy użyciu zestawu SDK przekształcania? Ponieważ wagi modelu nie są przechowywane w rejestrze HuggingFace , nie można uzyskać dostępu do wag modelu przy użyciu tych modeli jako danych wejściowych do zadań.

Jak mogę uzyskać pomoc techniczną, jeśli moje wdrożenia kończą się niepowodzeniem lub wnioskowaniem nie działają zgodnie z oczekiwaniami?HuggingFace jest rejestrem społeczności i nie jest objęty pomocą techniczną firmy Microsoft. Przejrzyj dzienniki wdrażania i sprawdź, czy problem jest związany z platformą Azure Machine Learning lub specyficznym dla transformatorów HuggingFace. Skontaktuj się z pomocą techniczną firmy Microsoft, aby uzyskać informacje o problemach z platformą. Na przykład nie można utworzyć punktu końcowego online ani uwierzytelniania w interfejsie API REST punktu końcowego nie działa. W przypadku problemów specyficznych dla transformatorów skorzystaj z forum HuggingFace lub obsługi aplikacji HuggingFace.

Co to jest rejestr społeczności? Rejestry społeczności to rejestry usługi Azure Machine Learning utworzone przez zaufanych partnerów usługi Azure Machine Learning i dostępne dla wszystkich użytkowników usługi Azure Machine Learning.

Gdzie użytkownicy mogą przesyłać pytania i wątpliwości dotyczące Hugging Face w usłudze Azure Machine Learning? Prześlij swoje pytania na forum dyskusyjnym usługi Azure Machine Learning.

Dostępność w regionach

Kolekcja rozpoznawania twarzy jest obecnie dostępna we wszystkich regionach chmury publicznej.