Wdrażanie modeli z centrum rozpoznawania twarzy w celu Azure Machine Learning punktów końcowych online na potrzeby wnioskowania w czasie rzeczywistym

Microsoft współpracuje z hugging Face, aby udostępnić modele open source z Hugging Face Hub do Azure Machine Learning. Przytulanie twarzy jest twórcą Transformers, powszechnie popularnej biblioteki do tworzenia dużych modeli językowych. Centrum modelu Hugging Face zawiera tysiące modeli typu open source. Dzięki integracji z Azure Machine Learning można wdrażać wybrane modele typu open source w celu zabezpieczenia i skalowalnej infrastruktury wnioskowania na 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. Podczas wdrażania zarządzanego punktu końcowego online zapewnia bezpieczny interfejs API REST do oceniania modelu w czasie rzeczywistym.

Note

Modele z funkcji Hugging Face podlegają postanowieniom licencyjnym innych firm dostępnym na stronie szczegółów modelu rozpoznawania twarzy Hugging. Twoim obowiązkiem jest 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 dbają o obsługę, skalowanie, zabezpieczanie i monitorowanie modeli, dzięki czemu nie trzeba konfigurować podstawowej infrastruktury i zarządzać nią. Maszyny wirtualne są aprowidowane podczas wdrażania modeli. Możesz mieć wiele wdrożeń i podzielić ruch lub zrcadlić ruch między tymi wdrożeniami. Ruch dublowania pomaga przetestować nowe wersje modeli w ruchu produkcyjnym bez wydawania ich w środowiskach produkcyjnych. Dzielenie ruchu pozwala stopniowo zwiększać ruch produkcyjny do nowych wersji modelu podczas obserwowania 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 centrum rozpoznawania twarzy 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. Duże modele nie mieszczą się w typie wystąpienia procesora CPU.
  • Wybierz typ wystąpienia. Ta lista wystąpień jest filtrowana w celu wyświetlenia tylko tych, które mogą wdrażać model bez braku pamięci.
  • Wybierz liczbę wystąpień. Jedno wystąpienie jest wystarczające do testowania, ale rozważ co najmniej dwa wystąpienia dla środowiska produkcyjnego.
  • Opcjonalnie określ punkt końcowy i nazwę wdrożenia.
  • Wybierz Wdróż. Następnie nastąpi przejście do strony punktu końcowego, co 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.

Modele bramowane

Modele bramowane to modele, które wymagają zatwierdzenia od autora modelu przed użyciem. Aby użyć tych modeli:

  1. Mieć czytelny lub precyzyjny token rozpoznawania twarzy przytulania.
  2. Poproś o dostęp na stronie modelu w serwisie Hugging Face.
  3. Utwórz niestandardowe połączenie klucza o nazwie HuggingFaceTokenConnection z kluczem HF_TOKEN i wartością tokenu Hugging Face oznaczoną jako wpis tajny.
  4. Utwórz punkt końcowy z ustawioną enforce_access_to_default_secret_stores wartością enabled.
  5. Wdróż model przy użyciu nowo utworzonego punktu końcowego.

Testowanie wdrożonego modelu

Po zakończeniu wdrażania można znaleźć punkt końcowy REST dla modelu na stronie punktów końcowych . Użyj tego punktu końcowego, aby ocenić model. Dostępne są opcje dodawania kolejnych wdrożeń, zarządzania ruchem i skalowania centrum Punktów końcowych . Użyj karty Test na stronie punktu końcowego, aby przetestować model z przykładowymi danymi wejściowymi. Przykładowe dane wejściowe są dostępne na stronie modelu. Format danych wejściowych, parametry i przykładowe dane wejściowe można znaleźć w dokumentacji interfejsu API w serwisie Hugging Face hub.

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

Ustaw zestaw SDK 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,
)
from azure.identity import DefaultAzureCredential

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_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 w celu oceniania. Przykładowy kod w tej sekcji umożliwia wprowadzanie danych wejściowych dla fill-mask typu od momentu wdrożenia bert-base-uncased modelu. Format danych wejściowych, parametry i przykładowe dane wejściowe można znaleźć w dokumentacji interfejsu API w serwisie 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 = 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 CLI.

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

Aby wdrożyć model, potrzebne są model wartości i instance_type . 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. deploy.yml Utworzysz 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 w celu oceniania. Przytulanie twarzy udostępnia przykładowe dane wejściowe kodu dla fill-mask typu wdrożonego bert-base-uncased modelu. Format wejściowy, parametry i przykładowe dane wejściowe można znaleźć w dokumentacji interfejsu API wnioskowania aplikacji 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

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. Testowane są tylko najbardziej popularne modele w kolekcji, a inne mogą zakończyć się niepowodzeniem z jednym z następujących błędów.

Modele bramowane

Modele z bramami 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 bez prawidłowego wykonania powyższych kroków kończy się niepowodzeniem z powodu błędu 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. Ze względów bezpieczeństwa takie modele nie są obsługiwane. Próba wdrożenia takich modeli koń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 read the code 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 Python. Brakujące biblioteki można zainstalować lokalnie podczas uruchamiania modeli. Modele, które wymagają bibliotek specjalnych poza standardowymi bibliotekami przekształcania, kończą się niepowodzeniem lub ModuleNotFoundError błędemImportError.

Za mało pamięci

Jeśli zostanie wyświetlony OutOfQuota: Container terminated due to insufficient memory błąd, 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 twarzy jest wyświetlane w katalogu modeli Azure Machine Learning za pośrednictwem HuggingFace rejestru. Przytulanie twarzy tworzy ten rejestr i zarządza nim i udostępnia go Azure Machine Learning jako rejestr społeczności. Wagi modelu nie są hostowane na platformie Azure. Podczas wdrażania tych modeli punkty końcowe online w obszarze roboczym pobierają wagi bezpośrednio z centrum rozpoznawania twarzy Hugging. Rejestr HuggingFace w Azure Machine Learning działa jako katalog, który ułatwia odnajdywanie i wdrażanie modeli centrum rozpoznawania twarzy Hugging w Azure Machine Learning.

Jakie modele są obsługiwane?

Azure obsługuje modele rozpoznawania twarzy, które spełniają następujące kryteria:

  • Model ma Transformerstagi , Diffuserslub Sentence-Transformers hugging Face Hub.
  • Model ma obsługiwane zadanie , takie jak chat-completion, image-to-textlub embeddings.
  • Wagi modelu są w formacie Safetensors, a model nie wymaga trust_remote_code.

Jak wdrożyć modele na potrzeby wnioskowania wsadowego? Obecnie nie można wdrożyć tych modeli w punktach końcowych wsadowych na potrzeby wnioskowania wsadowego.

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 uzyskać pomoc techniczną, jeśli wdrożenia kończą się niepowodzeniem lub wnioskowaniem nie działają zgodnie z oczekiwaniami?HuggingFace jest rejestrem społeczności i obsługa Microsoft nie obejmuje go. Przejrzyj dzienniki wdrażania, aby dowiedzieć się, czy problem jest związany z platformą Azure Machine Learning lub specyficznym dla funkcji przekształcania twarzy hugging. Skontaktuj się z pomocą techniczną firmy Microsoft w przypadku problemów z platformą, takich jak brak możliwości utworzenia punktu końcowego online lub gdy uwierzytelnianie w interfejsie API REST punktu końcowego nie działa. W przypadku problemów specyficznych dla funkcji przekształcania utwórz problem w witrynie GitHub, użyj forum HuggingFace lub skorzystaj z pomocy technicznej aplikacji HuggingFace.

Co to jest rejestr społeczności? Zaufani partnerzy Azure Machine Learning tworzą rejestry społeczności jako rejestry Azure Machine Learning. Wszyscy użytkownicy Azure Machine Learning mogą uzyskiwać do nich dostęp.

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 lub otwórz problem z usługą GitHub.

Dostępność regionalna

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