Distribuire modelli open source con calcolo gestito (anteprima)

Note

Il calcolo gestito in Foundry è attualmente in anteprima pubblica ed è necessaria la registrazione per usarlo. Questa anteprima viene fornita senza un contratto di servizio e non è consigliabile per i carichi di lavoro di produzione. Alcune funzionalità potrebbero non essere supportate o potrebbero avere funzionalità limitate. Per ulteriori informazioni, vedere Condizioni supplementari per l'uso delle versioni di anteprima di Microsoft Azure.

Distribuzione di calcolo gestita (anteprima) in Microsoft Foundry ospita modelli open source in capacità GPU dedicata. Microsoft è proprietaria della topologia GPU, del runtime, dell'immagine del contenitore e dell'applicazione di patch di sicurezza. È possibile scegliere il modello, il modello di distribuzione, la famiglia di acceleratori e il comportamento di ridimensionamento che soddisfano il carico di lavoro. Questo articolo illustra il flusso di lavoro end-to-end per la distribuzione di un modello open source in un ambiente di calcolo gestito in Microsoft Foundry.

In questo articolo vengono illustrate le operazioni seguenti:

  • Scegliere un modello nel catalogo dei modelli
  • Selezionare un modello di distribuzione
  • Distribuire il modello usando il portale foundry o Python SDK
  • Eseguire l'inferenza con OpenAI SDK
  • Ridimensionare e monitorare la distribuzione
  • Richiedere più quota

Per una panoramica della distribuzione di calcolo gestita in Foundry, tra cui istanze del modello, modelli di distribuzione, runtime, famiglie di acceleratori, fatturazione e limitazioni correnti, vedere Compute gestito in Microsoft Foundry (anteprima).

Prerequisiti

  • Una sottoscrizione di Azure attiva. Per crearne uno, vedere Creare l'account gratuito Azure.

  • Gruppo di risorse nella sottoscrizione in cui si dispone dell'autorizzazione per creare risorse.

  • Un account Microsoft Foundry (account di Servizi cognitivi di tipo AIServices) e un progetto Foundry. Per crearne uno, vedere Creare un progetto Foundry.

  • Le seguenti assegnazioni di ruolo di Azure nell'ambito dell'account Foundry:

  • Quota di calcolo gestito approvata per la famiglia di acceleratori che intendi usare per la distribuzione (A100, H100 o MI300X) nella regione di destinazione. La quota di calcolo gestita è separata dalla quota di macchine virtuali di Azure. Vedere Richiedere altre quote alla fine di questo articolo.

  • Strumenti locali per l'SDK e gli esempi dell'interfaccia della riga di comando:

    pip install "azure-mgmt-cognitiveservices==15.0.0b2" azure-identity openai requests
    az login
    
  • interfaccia della riga di comando di Azure 2.60 o versione successiva.

Importante

Il calcolo gestito in Foundry è disponibile in anteprima pubblica. Le API, i nomi degli SKU e le aree supportate possono cambiare prima della disponibilità generale. Il filtro contenuto predefinito non fa parte del percorso dei dati di calcolo gestito nell'anteprima pubblica. Se è necessario filtrare a livello di richiesta o a livello di risposta, chiamare le API Sicurezza dei contenuti di Azure AI direttamente dall'applicazione.

Scegliere un modello nel catalogo

Il compute gestito distribuisce modelli dalla Hugging Face Collection nel catalogo modelli di Foundry, serviti dal azure-huggingface registro.

  1. Accedere a Microsoft Foundry. Assicurarsi che l'interruttore New Foundry sia attivato. Questi passaggi fanno riferimento a Foundry (nuovo).These steps refer to Foundry (new).
  2. Selezionare la sottoscrizione e la risorsa Foundry.
  3. Selezionare Compila nel riquadro di spostamento in alto a destra, quindi selezionare Modelli nel riquadro sinistro.
  4. Filtrare il catalogo in base alle raccolte. Scegli Hugging Face. È anche possibile usare uno qualsiasi degli altri filtri per restringere il modello da distribuire (ad esempio, scegliere una famiglia di modelli come Qwen) o modalità o attività. È anche possibile cercare in base al nome del modello.
  5. Selezionare una scheda modello (ad esempio, nvidia-nemotron-3-nano-30b-a3b-fp8) per aprirla.

La scheda modello mostra la licenza upstream, la modalità, le attività supportate e i modelli di distribuzione pubblicati per il modello. Se si prevede di eseguire la distribuzione tramite Python SDK o REST invece di usare la procedura guidata del portale, sono necessari tre valori come input per la chiamata di distribuzione. È possibile trovare questi valori nel portale foundry come indicato di seguito:

  • ID del modello: l'ID completo della risorsa nel registro per il modello. Disponibile nella scheda del modello nel catalogo (copia dal riquadro dei dettagli del modello). Esempio:

    azureml://registries/azure-huggingface/models/nvidia--nvidia-nemotron-3-nano-30b-a3b-fp8/versions/2
    
  • ID del template di distribuzione: identifica il runtime, la famiglia e il numero di acceleratori e la lunghezza del contesto per il modello. Disponibile nella distribuzione guidata che si apre quando si seleziona Distribuisci nella scheda modello. Selezionare un modello e copiare l'ID del modello di distribuzione dalla procedura guidata. Esempio:

    azureml://registries/azure-huggingface/deploymenttemplates/nvidia--nvidia-nemotron-3-nano-30b-a3b-fp8--nvidia-h100/labels/latest
    

    Note

    Un ID modello e un ID modello di distribuzione devono essere compatibili; ogni modello elenca le versioni del modello supportate. La procedura guidata del portale mostra solo modelli compatibili per il modello selezionato. Se esegui la distribuzione tramite codice, verifica che entrambi i riferimenti puntino a risorse valide nel registro azure-huggingface.

    Per altre informazioni sui modelli di distribuzione, vedere Modello di distribuzione nell'articolo Panoramica del calcolo gestito.

  • Tipo di acceleratore: ad esempio H100_80GB, A100_80GBo MI_300_192GB. Visualizzato accanto a ogni modello nella procedura guidata di distribuzione.

Distribuire il modello

  1. Selezionare Distribuisci nella scheda modello per aprire la distribuzione guidata.

  2. Specificare un nome di distribuzione. Il nome della distribuzione è il valore che l'applicazione passa nel campo model al momento dell'inferenza: scegli un nome stabile e adatto all'applicazione (ad esempio, nemotron-3-nano-30b).

  3. Il tipo di distribuzione (Global Managed Compute) è pre-selezionato nella distribuzione guidata.

  4. Selezionare il modello Di distribuzione corrispondente al carico di lavoro. Ad esempio, il modello predefinito H100 a singolo acceleratore per il costo più contenuto con una lunghezza del contesto moderata, oppure un modello predefinito a due acceleratori se i prompt superano il limite di contesto del singolo acceleratore.

  5. Selezionare il tipo di acceleratore, H100_80GBad esempio .

  6. Impostare Istanze del modello su 1 (o superiore se il carico di lavoro è stato misurato). Le istanze del modello determinano la capacità di calcolo gestita e corrispondono al valore capacity nello SKU di distribuzione. Ogni istanza utilizza il numero di acceleratori definito dal modello; Ad esempio, un modello che specifica un H100 per istanza con capacità 2 usa due acceleratori H100 in totale.

    Tip

    Inizia con capacity: 1 per una prima distribuzione, quindi esegui la scalabilità orizzontale aumentando la capacità una volta misurato il carico di lavoro. Per informazioni su come aumentare la capacità, vedere Gestire e ridimensionare la distribuzione .

  7. Selezionare la casella di controllo per confermare il costo per la distribuzione.

  8. Seleziona Distribuisci. Il provisioning richiede in genere da 10 a 15 minuti.

Verificare la distribuzione

La pagina dei dettagli della distribuzione viene aggiornata da Creating a Succeeded quando il modello è attivo dietro l'endpoint Foundry. È possibile visualizzare i dettagli sulla distribuzione, tra cui lo stato di provisioning, il tipo di distribuzione e altre selezioni effettuate durante la creazione della distribuzione.

Inviare una richiesta di test

Quando la distribuzione è pronta, testarla in modo interattivo in Foundry Playground.

  1. Selezionare la scheda Playground per passare a essa dalla pagina Dettagli della distribuzione.
  2. Inviare un prompt per testare la distribuzione.

Monitorare la distribuzione

Le distribuzioni di elaborazione gestite generano metriche nella stessa interfaccia di Monitoraggio di Azure delle altre distribuzioni di Foundry. Nella pagina dei dettagli della distribuzione nel portale foundry la scheda Monitoraggio mostra:

  • Numero di richieste raggruppate in base al codice di stato HTTP.
  • Percentili del tempo di risposta (p50, p90, p99).
  • Per i modelli di completamento della chat: conteggi dei token di input e di output, percentili del tempo al primo token (TTFT) e percentili del tempo di decodifica tra token.

Per un'analisi o un avviso più approfondito, aprire la distribuzione nel portale Azure e usare Metrics in Monitoring per tracciare le stesse metriche, raggruppare per distribuzione e configurare gli avvisi. I tag di fatturazione per distribuzione vengono generati automaticamente. Filtra Cost Management in base al tag di distribuzione per attribuire la spesa a una specifica distribuzione di calcolo gestita. Per informazioni dettagliate, vedere Pianificare e gestire i costi per Microsoft Foundry.

Eliminare la distribuzione

L'eliminazione di una distribuzione rilascia la relativa allocazione di acceleratore e interrompe immediatamente la fatturazione. Per eliminare una distribuzione:

  1. Vai all'elenco delle distribuzioni nel portale Foundry.
  2. Seleziona il pulsante di opzione accanto al nome della tua distribuzione.
  3. Nel riquadro destro selezionare Elimina.

Richiedere più quota

La quota di calcolo gestito viene concessa per famiglia di acceleratori per area geografica tramite il processo delle quote di Foundry ed è separata dalla quota delle macchine virtuali di Azure. La quota di macchine virtuali Azure esistente non può essere applicata a una distribuzione di calcolo gestita.

Per richiedere una quota maggiore:

  1. Selezionare Opera nel riquadro di spostamento in alto a destra, quindi Quota nel riquadro sinistro.
  2. Selezionare la scheda Calcolo gestito . Nella tabella sono elencate le allocazioni correnti raggruppate in base alla famiglia di acceleratori e all'area.
  3. Selezionare Richiedi quota nell'angolo superiore destro.
  4. Nel modulo di richiesta scegliere la famiglia di acceleratori (A100, H100 o MI300X), l'area di destinazione e la quota richiesta. Invia la richiesta.

Attendere fino a 15 minuti affinché una modifica della quota approvata si propaghi. Aggiornare la pagina Quota per verificare l'allocazione aggiornata. Per altre informazioni sui concetti relativi alla quota, vedere Gestire e aumentare le quote per le risorse.

Usare lo script di Python seguente per distribuire il modello. Sostituisci i segnaposto con il tuo ID sottoscrizione, il tuo gruppo di risorse, il nome del tuo account Foundry e il nome della tua distribuzione.

Tip

Inizia con capacity: 1 per una distribuzione iniziale, quindi espandi la distribuzione aumentando la capacità dopo aver misurato il carico di lavoro. Per informazioni su come aumentare la capacità, vedere Gestire e ridimensionare la distribuzione .

from azure.identity import DefaultAzureCredential
from azure.mgmt.cognitiveservices import CognitiveServicesManagementClient

SUBSCRIPTION_ID  = "<your-subscription-id>"
RESOURCE_GROUP   = "<your-resource-group>"
ACCOUNT_NAME     = "<your-foundry-account>"
DEPLOYMENT_NAME  = "nemotron-3-nano-30b"

MODEL = "azureml://registries/azure-huggingface/models/nvidia--nvidia-nemotron-3-nano-30b-a3b-fp8/versions/2"
TEMPLATE = "azureml://registries/azure-huggingface/deploymenttemplates/nvidia--nvidia-nemotron-3-nano-30b-a3b-fp8--nvidia-h100/labels/latest"

client = CognitiveServicesManagementClient(
    DefaultAzureCredential(), SUBSCRIPTION_ID
)

deployment = client.managed_compute_deployments.begin_create_or_update(
    resource_group_name=RESOURCE_GROUP,
    account_name=ACCOUNT_NAME,
    deployment_name=DEPLOYMENT_NAME,
    resource={
        "sku": {"name": "GlobalManagedCompute", "capacity": 1},
        "properties": {
            "model": MODEL,
            "deploymentTemplate": TEMPLATE,
            "acceleratorType": "H100_80GB",
            "versionUpgradeOption": "OnceNewDefaultVersionAvailable",
        },
    },
).result()  # blocks until terminal state (~10–15 min)

print(f"State: {deployment.properties.provisioning_state}")
print(f"ID:    {deployment.id}")

Verificare la distribuzione

Dopo aver creato la distribuzione, verificare che funzioni correttamente prima di inviare traffico.

d = client.managed_compute_deployments.get(
    resource_group_name=RESOURCE_GROUP,
    account_name=ACCOUNT_NAME,
    deployment_name=DEPLOYMENT_NAME,
)

print(f"State:        {d.properties.provisioning_state}")    # expect: Succeeded
print(f"Model:        {d.properties.model}")
print(f"Template:     {d.properties.deployment_template}")
print(f"Accelerator:  {d.properties.accelerator_type}")
print(f"Capacity:     {d.sku.capacity}")

Cerca:

  • provisioningState: Succeeded indica che la distribuzione è attiva.
  • acceleratorType corrisponde al valore richiesto.
  • sku.capacity corrisponde al numero di istanze richieste.

Se provisioningState è Failed, vedere Risoluzione dei problemi.

Inviare una richiesta di test

Le distribuzioni di calcolo gestite sono raggiungibili tramite l'endpoint unified Foundry all'indirizzo:

https://<account>.services.ai.azure.com/openai/v1/

Il model campo nel corpo della richiesta accetta il nome della distribuzione specificato, non l'ID modello.

from azure.identity import DefaultAzureCredential, get_bearer_token_provider
from openai import OpenAI

ACCOUNT_NAME    = "<your-foundry-account>"
DEPLOYMENT_NAME = "nemotron-3-nano-30b"

token_provider = get_bearer_token_provider(
    DefaultAzureCredential(),
    "https://cognitiveservices.azure.com/.default",
)

client = OpenAI(
    base_url=f"https://{ACCOUNT_NAME}.services.ai.azure.com/openai/v1",
    api_key="placeholder",  # required by OpenAI SDK; overridden by Authorization header
    default_headers={"Authorization": f"Bearer {token_provider()}"},
)

resp = client.chat.completions.create(
    model=DEPLOYMENT_NAME,
    messages=[{"role": "user", "content": "What is the capital of France?"}],
)

print(resp.choices[0].message.content)

La chiamata alla distribuzione con Microsoft Entra ID richiede il ruolo Azure AI User nell'account Foundry.

Gestire e ridimensionare la distribuzione

Poiché le distribuzioni di calcolo gestite sono incentrate sul modello, è possibile ridimensionare le distribuzioni modificando il numero di istanze del modello, non ridimensionando un nodo.

Modificare la capacità

d = client.managed_compute_deployments.get(
    RESOURCE_GROUP, ACCOUNT_NAME, DEPLOYMENT_NAME
)
d.sku.capacity = 3

client.managed_compute_deployments.begin_create_or_update(
    resource_group_name=RESOURCE_GROUP,
    account_name=ACCOUNT_NAME,
    deployment_name=DEPLOYMENT_NAME,
    resource=d,
).result()

Ottieni gli aggiornamenti del runtime e del modello

L'impostazione di versionUpgradeOption su OnceNewDefaultVersionAvailable nella distribuzione opta per la selezione della nuova versione predefinita del modello e del runtime quando Microsoft li pubblica. Le patch di runtime e le correzioni CVE vengono applicate automaticamente nelle distribuzioni dei clienti in produzione; non è necessario ridistribuire il modello per recepirle.

Monitorare la distribuzione

Le distribuzioni di elaborazione gestite generano metriche nella stessa interfaccia di Monitoraggio di Azure delle altre distribuzioni di Foundry. Per un'analisi più approfondita o per configurare avvisi, apri la distribuzione nel portale di Azure e usa Metriche in Monitoraggio per visualizzare in un grafico metriche quali:

  • Numero di richieste raggruppate in base al codice di stato HTTP.
  • Percentili del tempo di risposta (p50, p90, p99).
  • Per i modelli di completamento della chat: conteggi dei token di input e di output, percentili del tempo al primo token (TTFT) e percentili del tempo di decodifica tra token.

È anche possibile raggruppare in base alla distribuzione e configurare gli avvisi. I tag di fatturazione per distribuzione vengono generati automaticamente. Filtra Cost Management in base al tag di distribuzione per attribuire la spesa a una specifica distribuzione di calcolo gestita. Per informazioni dettagliate, vedere Pianificare e gestire i costi per Microsoft Foundry.

Eliminare la distribuzione

L'eliminazione di una distribuzione rilascia la relativa allocazione di acceleratore e interrompe immediatamente la fatturazione. Per eliminare una distribuzione:

client.managed_compute_deployments.begin_delete(
    resource_group_name=RESOURCE_GROUP,
    account_name=ACCOUNT_NAME,
    deployment_name=DEPLOYMENT_NAME,
).result()

Riepilogo del controllo di accesso

Action Ruolo minimo
Creare, aggiornare o eliminare una distribuzione di calcolo gestita Collaboratore di Servizi cognitivi (o Proprietario di Foundry / Proprietario dell'account Foundry) nell'account Foundry
Leggere una distribuzione o elencare le distribuzioni Utente di Cognitive Services, Utente Foundry, Foundry Project Manager o uno qualsiasi dei ruoli precedenti
Richiamare la distribuzione con Microsoft Entra ID Utente Foundry sull'account Foundry
Chiamare la distribuzione con una chiave API Chiave dell'account (nessun ruolo Azure necessario per la chiamata stessa; il recupero delle chiavi richiede l'accesso in lettura)

Per l'elenco completo delle operazioni del provider di risorse di Azure, la matrice ruolo-autorizzazione e il confronto con le distribuzioni standard, vedere Controllo degli accessi basato sui ruoli per Microsoft Foundry — operazioni del piano di controllo del calcolo gestito.

Risoluzione dei problemi

provisioningState: Failed

Verificare che la famiglia di acceleratori richiesta abbia approvato la quota nell'area di destinazione e che il modello di distribuzione scelto elenchi la famiglia di acceleratori. Un modello e un modello di distribuzione non corrispondenti, ad esempio un modello pubblicato per una versione diversa del modello, è una causa comune. Verificare che entrambi i riferimenti siano risolti in asset del Registro di sistema validi nel azure-huggingface Registro di sistema.

"Quota superata" alla creazione

L'account Foundry non dispone di una quota di calcolo gestita sufficiente nell'area per la famiglia di acceleratori richiesta. Richiedere una quota maggiore. La quota di macchine virtuali di Azure non si applica alle risorse di calcolo gestite.

"Capacità insufficiente" nell'area

L'area geografica non ha restituito capacità disponibile per la famiglia di acceleratori richiesta. Prova una famiglia diversa (ad esempio, esegui il deployment su MI300X anziché su H100), scegli un template con meno acceleratori per istanza oppure una regione diversa. Le famiglie di memoria più grandi, ad esempio MI300X, spesso hanno capacità per i modelli che non rientrano in A100.

404 dalla /openai/v1/ rotta

Se una richiesta di completamento della chat a https://<account>.services.ai.azure.com/openai/v1/chat/completions restituisce 404, verificare che:

  • Il nome della distribuzione nel corpo della richiesta corrisponde alla distribuzione creata.
  • La distribuzione è provisioningStateSucceeded.
  • Il runtime del modello espone i completamenti della chat. Alcuni runtime (ad esempio, TEI per gli embeddings) non espongono l'endpoint di chat completions; usa invece l'endpoint documentato nella scheda del modello.

Distribuzione bloccata in Creating da più di 20 minuti

Alcuni modelli più grandi impiegano più dei consueti 10–15 minuti per avviarsi. Se provisioningState è ancora Creating dopo 20 minuti, controlla la pagina dei dettagli di distribuzione nel portale Foundry per verificare la presenza di un messaggio sullo stato dell'operazione e conferma che la regione sottostante non abbia subito un degrado. Se la distribuzione rimane in Creating per più di 30 minuti senza alcun messaggio relativo all’operazione, eliminala e riprova. Il provisioning è idempotente rispetto al nome della distribuzione.