Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Microsoft partner con Hugging Face per portare modelli open source da Hugging Face Hub a Azure Machine Learning. Hugging Face è il creatore di Transformers, una libreria ampiamente diffusa per la creazione di modelli linguistici di grandi dimensioni. L'hub del modello Hugging Face dispone di migliaia di modelli open source. Grazie all'integrazione con Azure Machine Learning, è possibile distribuire modelli open source di propria scelta per proteggere e scalare l'infrastruttura di inferenza in Azure. È possibile eseguire ricerche da migliaia di modelli di trasformatori nel catalogo modelli di Azure Machine Learning e distribuire facilmente i modelli nell'endpoint online gestito tramite la procedura guidata. Quando si distribuisce l'endpoint online gestito, offre un'API REST sicura per assegnare un punteggio al modello in tempo reale.
Note
I modelli di Hugging Face sono soggetti a condizioni di licenza di terze parti disponibili nella pagina dei dettagli del rispettivo modello. È responsabilità dell'utente rispettare le condizioni di licenza del modello.
Vantaggi dell’utilizzo di endpoint online per l'inferenza in tempo reale
Gli endpoint online gestiti in Azure Machine Learning consentono di distribuire modelli in potenti macchine CPU e GPU in Azure con modalità chiavi in mano. Gli endpoint online gestiti si occupano di gestire, ridimensionare, proteggere e monitorare i modelli, quindi non è necessario configurare e gestire l'infrastruttura sottostante. Quando si distribuiscono modelli, viene effettuato il provisioning delle macchine virtuali. È possibile avere più distribuzioni e dividere il traffico o riflettere il traffico verso tali distribuzioni. Il mirroring del traffico consente di testare le nuove versioni dei modelli nel traffico di produzione senza rilasciarle in ambienti di produzione. La suddivisione del traffico consente di aumentare gradualmente il traffico di produzione alle nuove versioni del modello mentre si osservano le prestazioni. Il ridimensionamento automatico consente di aumentare o ridurre dinamicamente le risorse in base ai carichi di lavoro. È possibile configurare il ridimensionamento in base alle metriche di utilizzo, a una pianificazione specifica o a una combinazione di entrambi. Un esempio di ridimensionamento basato sulle metriche di utilizzo consiste nell'aggiungere nodi se l'utilizzo della CPU supera il 70%. Un esempio di ridimensionamento basato sulla pianificazione consiste nell'aggiungere nodi in base al picco dell'orario di ufficio.
Distribuire modelli di hub Hugging Face con Studio
Per trovare un modello da distribuire, aprire il catalogo modelli nello studio di Azure Machine Learning. Selezionare Tutti i filtri e quindi selezionare HuggingFace nella sezione Filtra per raccolte. Selezionare il riquadro del modello per aprire la pagina del modello.
Distribuire il modello
Scegliere l'opzione di distribuzione in tempo reale per aprire la finestra di dialogo di distribuzione rapida. Specificare le opzioni seguenti:
- Selezionare il modello per GPU o CPU. I tipi di istanza della CPU sono validi per i test e i tipi di istanza GPU offrono prestazioni migliori nell'ambiente di produzione. I modelli di grandi dimensioni non rientrano in un tipo di istanza della CPU.
- Selezionare il tipo di istanza. Questo elenco di istanze viene filtrato in modo da visualizzare solo quelli che possono distribuire il modello senza esaurimento della memoria.
- Selezionare il numero di istanze. Un'istanza è sufficiente per i test, ma considerare due o più istanze per la produzione.
- Facoltativamente, specificare un endpoint e un nome di distribuzione.
- Seleziona Distribuisci. Si passa quindi alla pagina dell'endpoint, che potrebbe richiedere alcuni secondi. Il completamento della distribuzione richiede alcuni minuti in base alle dimensioni del modello e al tipo di istanza.
Nota: se si vuole eseguire la distribuzione in un endpoint esistente, selezionare More options nella finestra di dialogo di distribuzione rapida e usare la distribuzione guidata completa.
Modelli gestiti
I modelli gestiti sono modelli che richiedono l'approvazione dell'autore del modello prima dell'uso. Per usare questi modelli:
- Possedere una lettura di Hugging Face o un token specifico.
- Richiedere l'accesso tramite la pagina del modello in Hugging Face.
- Creare una connessione di chiave personalizzata denominata
HuggingFaceTokenConnectioncon la chiaveHF_TOKENe il valore che rappresenta il token Hugging Face contrassegnato come segreto. - Creare un endpoint con
enforce_access_to_default_secret_storesimpostato suenabled. - Distribuire il modello usando l'endpoint appena creato.
Testare il modello distribuito
Al termine della distribuzione, è possibile trovare l'endpoint REST per il modello nella pagina endpoint . Usare questo endpoint per assegnare un punteggio al modello. Sono disponibili opzioni per aggiungere altre distribuzioni, gestire il traffico e ridimensionare l'hub endpoint . Usare la scheda Test nella pagina endpoint per testare il modello con input di esempio. Nella pagina del modello sono disponibili input di esempio. È possibile trovare il formato di input, i parametri e gli input di esempio nella documentazione dell'API di inferenza dell'Hugging Face hub.
Distribuisci i modelli di HuggingFace Hub tramite l'SDK Python
Trovare il modello da distribuire
Sfogliare il catalogo modelli nello studio di Azure Machine Learning e trovare il modello da distribuire. Copiare il nome del modello da distribuire. Importare le librerie necessarie. I modelli riportati nel catalogo sono elencati dal registro di sistema HuggingFace. Creare il model_id usando il nome del modello copiato dal catalogo modelli e dal registro di sistema HuggingFace. Il modello bert-base-uncased viene distribuito con la versione più recente in questo esempio.
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"
Distribuire il modello
Creare un endpoint online. Quindi, creare la distribuzione. Infine, impostare tutto il traffico per usare questa distribuzione. È possibile trovare il instance_type della CPU o della GPU ideale per un modello aprendo la finestra di dialogo di distribuzione rapida dalla pagina del modello nel catalogo modelli. Assicurarsi di usare un instance_type per cui si dispone di una quota.
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()
Testare il modello distribuito
Creare un file con input che è possibile inviare all'endpoint online per l'assegnazione dei punteggi. L'esempio di codice in questa sezione consente di fornire un input per il tipo fill-mask, poiché hai distribuito il modello bert-base-uncased. È possibile trovare il formato di input, i parametri e gli input di esempio nella documentazione dell'API di inferenza dell'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))
Distribuire modelli dell'hub HuggingFace usando l'interfaccia della riga di comando
Trovare il modello da distribuire
Sfogliare il catalogo modelli nello studio di Azure Machine Learning e trovare il modello da distribuire. Copiare il nome del modello da distribuire. I modelli riportati nel catalogo sono elencati dal registro di sistema HuggingFace. Il modello bert-base-uncased viene distribuito con la versione più recente in questo esempio.
Distribuire il modello
Ti servono i valori model e instance_type per distribuire il modello. È possibile trovare il instance_type della CPU o della GPU ideale per un modello aprendo la finestra di dialogo di distribuzione rapida dalla pagina del modello nel catalogo modelli. Assicurarsi di usare un instance_type per cui si dispone di una quota.
I modelli riportati nel catalogo sono elencati dal registro di sistema HuggingFace. Il modello bert-base-uncased viene distribuito con la versione più recente in questo esempio. L'ID dell’asset model completo basato sul nome del modello e sul Registro di sistema è azureml://registries/HuggingFace/models/bert-base-uncased/labels/latest. Si crea il file deploy.yml usato per il comando az ml online-deployment create in linea.
Creare un endpoint online. Quindi, creare la distribuzione.
# 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
Testare il modello distribuito
Creare un file con input che è possibile inviare all'endpoint online per l'assegnazione dei punteggi. Hugging Face fornisce un esempio di input di codice per il tipo fill-mask per il modello bert-base-uncased distribuito. È possibile trovare il formato di input, i parametri e gli esempi di input nella documentazione dell'API di inferenza dell'hub 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
Codice di esempio del modello Hugging Face
Seguire questo collegamento per trovare codice di esempio del modello Hugging Face per vari scenari, tra cui la classificazione dei token, la traduzione, la risposta alle domande e la classificazione zero shot.
Risoluzione dei problemi: errori di distribuzione e modelli non supportati
L'hub huggingFace ha migliaia di modelli con centinaia di modelli aggiornati ogni giorno. Vengono testati solo i modelli più diffusi nella raccolta e altri potrebbero non riuscire con uno degli errori seguenti.
Modelli gestiti
I modelli gestiti richiedono agli utenti di accettare di condividere le informazioni di contatto e accettare i termini e le condizioni dei proprietari del modello per accedere al modello. Il tentativo di distribuire tali modelli senza seguire correttamente i passaggi precedenti ha esito negativo con .KeyError
Modelli che devono eseguire codice remoto
I modelli usano in genere il codice dell'SDK dei trasformatori, ma alcuni modelli eseguono codice dal repository del modello. Tali modelli devono impostare il parametro trust_remote_code su True. Seguire questo collegamento per altre informazioni sull’uso di codice remoto. Per motivi di sicurezza, tali modelli non sono supportati. Il tentativo di distribuire tali modelli ha esito negativo con l'errore seguente: 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.
Modelli con tokenizer non corretti
Un tokenizer specificato in modo errato o mancante nel pacchetto del modello può causare un errore OSError: Can't load tokenizer for <model>.
Raccolte mancanti
Alcuni modelli necessitano di librerie di Python aggiuntive. È possibile installare librerie mancanti durante l'esecuzione dei modelli in locale. I modelli che richiedono librerie speciali oltre alle librerie standard di Transformers non funzionano e restituiscono l'errore ModuleNotFoundError o ImportError.
Memoria insufficiente
Se viene visualizzato l'errore OutOfQuota: Container terminated due to insufficient memory , provare a usare un oggetto instance_type con una quantità maggiore di memoria.
Domande frequenti
Dove vengono archiviati i pesi del modello?
I modelli Hugging Face vengono visualizzati nel catalogo dei modelli di Azure Machine Learning tramite il HuggingFace Registro di sistema. Hugging Face crea e gestisce questo registro e lo rende disponibile per Azure Machine Learning come registro della community. I pesi del modello non sono ospitati in Azure. Quando si distribuiscono questi modelli, gli endpoint online nell'area di lavoro scaricano i pesi direttamente dall'hub Hugging Face. Il registro HuggingFace in Azure Machine Learning funge da catalogo per aiutarti a individuare e distribuire i modelli dell'hub Hugging Face in Azure Machine Learning.
Quali modelli sono supportati?
Azure supporta i modelli Hugging Face che soddisfano i criteri seguenti:
- Il modello ha uno dei tag
Transformers,DiffusersoSentence-Transformerssu Hugging Face Hub. - Il modello ha un'attività supportata ,
chat-completionad esempio ,image-to-textoembeddings. - I pesi del modello sono nel formato Safetensors e il modello non richiede
trust_remote_code.
Come si distribuiscono i modelli per l'inferenza batch? Attualmente, non è possibile distribuire questi modelli negli endpoint batch per l'inferenza batch.
È possibile usare i modelli dal HuggingFace Registro di sistema come input per i processi in modo che sia possibile ottimizzare questi modelli usando transformers SDK?
Poiché i pesi del modello non sono archiviati nel HuggingFace Registro di sistema, non è possibile accedere ai pesi del modello usando questi modelli come input per i processi.
Ricerca per ottenere supporto se le distribuzioni hanno esito negativo o l'inferenza non funziona come previstoHuggingFace è un registro di community non coperto dal supporto Microsoft. Esaminare i log di distribuzione per scoprire se il problema è correlato a Azure Machine Learning piattaforma o specifico dei trasformatori Hugging Face. Contattare il supporto tecnico Microsoft per eventuali problemi con la piattaforma, ad esempio se non è possibile creare un endpoint online, o se l'autenticazione per l'API REST dell'endpoint non funziona. Per problemi specifici dei trasformatori, creare un problema in GitHub, usare il forum huggingFace o usare il supporto huggingFace.
Che cos'è un registro della community? I partner affidabili di Azure Machine Learning creano registri della comunità come registri di Azure Machine Learning. Tutti gli utenti Azure Machine Learning possono accedervi.
Dove è possibile inviare domande e dubbi relativi a Hugging Face in Azure Machine Learning? Inviare le domande al forum di discussione di Azure Machine Learning o aprire un problema di GitHub.
Disponibilità regionale
La raccolta di Hugging Face è attualmente disponibile solo in tutte le regioni del cloud pubblico.