Distribuire modelli usando interfaccia della riga di comando di Azure e Bicep

Questo articolo illustra come aggiungere una nuova distribuzione del modello a un endpoint dei modelli Foundry. La distribuzione è disponibile per l'inferenza nella risorsa Foundry quando si specifica il nome della distribuzione nelle richieste.

Prerequisiti

Per completare questo articolo, sono necessari gli elementi seguenti:

  • Sottoscrizione Azure.

  • Progetto Foundry. Questo tipo di progetto viene gestito in una risorsa Foundry. Se non si ha un progetto Foundry, vedere Creare un progetto per Microsoft Foundry.

  • Autorizzazioni di controllo degli accessi in base al ruolo di Azure per creare e gestire le distribuzioni. È necessario il ruolo Collaboratore Servizi cognitivi o autorizzazioni equivalenti per la risorsa Foundry.

  • Foundry Models di partner e community richiedono l'accesso a Azure Marketplace. Assicurati di disporre delle autorizzazioni necessarie per sottoscrivere le offerte di modelli. Foundry Models commercializzati da Azure non hanno questo requisito.

  • Installare il interfaccia della riga di comando di Azure (versione 2.60 o successiva). I az cognitiveservices comandi usati in questo articolo fanno parte dell'interfaccia della riga di comando principale, quindi non è necessaria alcuna estensione aggiuntiva.

  • Alcuni comandi di questa esercitazione usano lo strumento jq, che potrebbe non essere installato sul tuo sistema. Per istruzioni sull'installazione, vedere Scaricare jq.

  • Identificare le informazioni seguenti:

    • ID sottoscrizione Azure
    • Nome della risorsa Foundry
    • Gruppo di risorse in cui è stata distribuita la risorsa Foundry
  • Nome del modello, provider, versione e SKU da distribuire. Usare il portale foundry o il interfaccia della riga di comando di Azure per trovare queste informazioni. In questo esempio si distribuisce il modello seguente:

    • Nome modello: Phi-4-mini-instruct
    • Provider: Microsoft
    • Versione: 1
    • Tipo di distribuzione: Standard globale

Autorizzazioni necessarie per abbonarsi ai modelli dei partner e della community

i modelli Foundry di partner e community disponibili per la distribuzione (ad esempio, i modelli Cohere) richiedono Azure Marketplace. I provider di modelli definiscono le condizioni di licenza e impostano il prezzo per l'uso dei modelli usando Azure Marketplace.

Quando si distribuiscono modelli di terze parti, assicurarsi di disporre delle autorizzazioni seguenti nell'account:

  • Nella sottoscrizione di Azure:
    • Microsoft.MarketplaceOrdering/agreements/offers/plans/read
    • Microsoft.MarketplaceOrdering/agreements/offers/plans/sign/action
    • Microsoft.MarketplaceOrdering/offerTypes/publishers/offers/plans/agreements/read
    • Microsoft.Marketplace/offerTypes/publishers/offers/plans/agreements/read
    • Microsoft.SaaS/register/action
  • Nel gruppo di risorse: per creare e usare la risorsa SaaS:
    • Microsoft.SaaS/resources/read
    • Microsoft.SaaS/resources/write

Il Owner e Contributor ruoli predefiniti nella sottoscrizione Azure includono queste autorizzazioni. Se non si dispone delle autorizzazioni necessarie, chiedere all'amministratore della sottoscrizione di assegnare il ruolo Collaboratore o creare un ruolo personalizzato che includa le azioni elencate.

Per verificare le autorizzazioni, passare al portale Azure aprire la sottoscrizione, selezionare Controllare il controllo di accesso (IAM)>Check access ed esaminare i ruoli assegnati.

Suggerimento

Microsoft.SaaS/register/action è una registrazione unica del provider di risorse SaaS sulla sottoscrizione. Dopo la registrazione, non è necessario ripeterlo per ogni distribuzione.

Aggiungere il modello

Per aggiungere un modello, identificare prima di tutto il modello da distribuire. Eseguire una query sui modelli disponibili come segue:

  1. Accedere alla sottoscrizione Azure.

    az login
    
  2. Se sono presenti più sottoscrizioni, selezionare la sottoscrizione in cui si trova la risorsa.

    subscriptionId="<subscription-id>"
    az account set --subscription $subscriptionId
    
  3. Impostare le variabili di ambiente seguenti con il nome della risorsa Foundry che si prevede di usare e il gruppo di risorse.

    accountName="<ai-services-resource-name>"
    resourceGroupName="<resource-group>"
    location="eastus2"
    
  4. Se non è ancora stata creata una risorsa Foundry, crearne una.

    az cognitiveservices account create -n $accountName -g $resourceGroupName --custom-domain $accountName --location $location --kind AIServices --sku S0
    

    Riferimento: az cognitiveservices account

  5. Verificare quali modelli sono disponibili e in quale SKU. Ogni tipo di distribuzione è rappresentato da un codice SKU nell'interfaccia della riga di comando e arm e definisce come Azure l'infrastruttura elabora le richieste. I modelli possono offrire tipi di distribuzione diversi. Il comando seguente elenca tutte le definizioni di modello disponibili:

    az cognitiveservices account list-models \
        -n $accountName \
        -g $resourceGroupName \
    | jq '.[] | { name: .name, format: .format, version: .version, sku: .skus[0].name, capacity: .skus[0].capacity.default }'
    

    L'output include i modelli disponibili con le relative proprietà:

    {
      "name": "Phi-4-mini-instruct",
      "format": "Microsoft",
      "version": "1",
      "sku": "GlobalStandard",
      "capacity": 1000
    }
    

    Riferimento: az cognitiveservices account list-models

  6. Identificare il modello da distribuire. Sono necessarie le proprietà name, format, versione sku. La proprietà format indica il provider che offre il modello. A seconda del tipo di distribuzione, potrebbe essere necessaria anche la capacità.

  7. Aggiungere la distribuzione del modello alla risorsa. Nell'esempio seguente viene aggiunto Phi-4-mini-instruct:

    az cognitiveservices account deployment create \
        -n $accountName \
        -g $resourceGroupName \
        --deployment-name Phi-4-mini-instruct \
        --model-name Phi-4-mini-instruct \
        --model-version 1 \
        --model-format Microsoft \
        --sku-capacity 1 \
        --sku-name GlobalStandard
    

    Riferimento: az cognitiveservices account deployment

  8. Verificare che la distribuzione sia stata completata correttamente:

    az cognitiveservices account deployment show \
        --deployment-name Phi-4-mini-instruct \
        -n $accountName \
        -g $resourceGroupName \
    | jq '.properties.provisioningState'
    

    L'output dovrebbe visualizzare "Succeeded". Il modello è pronto per l'uso al termine del provisioning.

    Riferimento: az cognitiveservices account deployment show

È possibile distribuire lo stesso modello più volte, se necessario, purché venga assegnato un nome di distribuzione diverso. Questa funzionalità è utile se si vogliono testare configurazioni diverse per un determinato modello, inclusi i filtri di contenuto.

Aggiungere il modello

  1. Usare il template ai-services-deployment-template.bicep per descrivere le distribuzioni del modello:

    ai-services-deployment-template.bicep

    @description('Name of the Azure AI services account')
    param accountName string
    
    @description('Name of the model to deploy')
    param modelName string
    
    @description('Version of the model to deploy')
    param modelVersion string
    
    @allowed([
      'AI21 Labs'
      'Cohere'
      'Core42'
      'DeepSeek'
      'xAI'
      'Meta'
      'Microsoft'
      'Mistral AI'
      'OpenAI'
    ])
    @description('Model provider')
    param modelPublisherFormat string
    
    @allowed([
        'GlobalStandard'
        'DataZoneStandard'
        'Standard'
        'GlobalProvisioned'
        'Provisioned'
    ])
    @description('Model deployment SKU name')
    param skuName string = 'GlobalStandard'
    
    @description('Content filter policy name')
    param contentFilterPolicyName string = 'Microsoft.DefaultV2'
    
    @description('Model deployment capacity')
    param capacity int = 1
    
    resource modelDeployment 'Microsoft.CognitiveServices/accounts/deployments@2024-04-01-preview' = {
      name: '${accountName}/${modelName}'
      sku: {
        name: skuName
        capacity: capacity
      }
      properties: {
        model: {
          format: modelPublisherFormat
          name: modelName
          version: modelVersion
        }
        raiPolicyName: contentFilterPolicyName == null ? 'Microsoft.Nill' : contentFilterPolicyName
      }
    }
    
  2. Eseguire la distribuzione:

    resourceGroupName="<resource-group-name>"
    accountName="<ai-services-resource-name>"
    modelName="Phi-4-mini-instruct"
    provider="Microsoft"
    version=1
    
    az deployment group create \
        --resource-group $resourceGroupName \
        --template-file ai-services-deployment-template.bicep \
        --parameters accountName=$accountName modelName=$modelName modelVersion=$version modelPublisherFormat=$provider
    
  3. Verificare che la distribuzione sia stata completata correttamente:

    az cognitiveservices account deployment show \
        --deployment-name $modelName \
        -n $accountName \
        -g $resourceGroupName \
    | jq '.properties.provisioningState'
    

    L'output dovrebbe visualizzare "Succeeded".

Nota

Le restanti sezioni di questo articolo sono uguali sia per l'approccio CLI che per quello Bicep.

Usare il modello

È possibile utilizzare i modelli distribuiti usando gli Endpoint per i modelli Foundry per la risorsa. Quando si costruisce la richiesta, specificare il parametro model e inserire il nome di distribuzione del modello creato. È possibile ottenere l'URI per l'endpoint di inferenza a livello di codice usando il codice seguente:

Endpoint di inferenza

az cognitiveservices account show  -n $accountName -g $resourceGroupName | jq '.properties.endpoints["Azure OpenAI Legacy API - Latest moniker"]'

Per effettuare richieste all'endpoint Foundry Models usando l'API OpenAI v1, chiamare la /openai/v1/ route nell'URL https://<resource-name>.openai.azure.com/openai/v1/ dell'endpoint e passare il nome della distribuzione nel model campo della richiesta. La route /openai/v1/ usa il versionamento implicito, quindi non è necessario passare un api-version.

Per tutte le operazioni supportate, vedere le informazioni di riferimento sull'API OpenAI v1 Azure.

Chiavi di inferenza

az cognitiveservices account keys list  -n $accountName -g $resourceGroupName

Gestire le distribuzioni

Usare l'interfaccia della riga di comando per visualizzare tutte le distribuzioni disponibili:

  1. Eseguire il comando seguente per visualizzare tutte le distribuzioni attive:

    az cognitiveservices account deployment list -n $accountName -g $resourceGroupName
    

    Riferimento: az cognitiveservices account deployment list

  2. Eseguire il comando seguente per visualizzare i dettagli di una determinata distribuzione:

    az cognitiveservices account deployment show \
        --deployment-name "Phi-4-mini-instruct" \
        -n $accountName \
        -g $resourceGroupName
    

    Riferimento: az cognitiveservices account deployment show

  3. Eseguire il comando seguente per eliminare una determinata distribuzione:

    az cognitiveservices account deployment delete \
        --deployment-name "Phi-4-mini-instruct" \
        -n $accountName \
        -g $resourceGroupName
    

    Riferimento: az cognitiveservices account deployment delete

Risoluzione dei problemi

Errore Causa Risoluzione
Quota superata La sottoscrizione ha raggiunto la quota di distribuzione per lo SKU o l'area selezionata. Controllare la quota nel portale foundry o richiedere un aumento tramite supporto tecnico di Azure.
Autorizzazione non riuscita L'identità in uso non dispone del ruolo RBAC richiesto. Assegnare il ruolo Collaboratore Servizi cognitivi nella risorsa Foundry.
Modello non disponibile Il modello non è disponibile nella tua regione o nel tuo abbonamento. Eseguire az cognitiveservices account list-models per controllare i modelli e le aree disponibili.
Comando non riconosciuto Il interfaccia della riga di comando di Azure non è aggiornato. Eseguire l'aggiornamento alla versione 2.60 o successiva con az upgrade. I az cognitiveservices comandi fanno parte dell'interfaccia della riga di comando di base e non richiedono un'estensione separata.