Pular para o conteúdo principal

Desafio 03: Implantar Modelos de IA

Tempo Estimado

60 min | Custo: ~$1.00 | Domínio: Planejar e Gerenciar Soluções de IA (20-25%)

Habilidades do exame cobertas

  • Implantar modelos de IA usando opções de implantação apropriadas
  • Planejar capacidade para implantações de modelos (tokens por minuto, requisições por minuto)
  • Gerenciar versões de modelos e ciclo de vida
  • Escolher entre implantações Standard, Global Standard e Provisioned Throughput

Visão Geral

O Azure OpenAI Service requer implantação explícita do modelo antes de você poder fazer chamadas de inferência. Diferente dos serviços tradicionais do Azure AI (onde você cria um recurso e imediatamente obtém um endpoint), o Azure OpenAI separa a criação do recurso da implantação do modelo — dando a você controle sobre quais modelos estão disponíveis, sua capacidade e seu ciclo de vida de versões.

Este desafio cobre os três tipos de implantação que aparecem no exame AI-102: Standard (pago por token, regional), Global Standard (pago por token, roteamento global) e Provisioned Throughput (capacidade reservada, latência previsível). Você implantará modelos programaticamente, configurará capacidade em Tokens Por Minuto (TPM), gerenciará versões de modelos e entenderá as políticas de atualização que controlam transições automáticas de versão.

O planejamento de capacidade é um tópico importante no exame — você precisa entender como TPM se traduz em throughput real, como monitorar utilização e quando escolher provisioned throughput em vez de implantações standard.

Arquitetura

Você criará um recurso Azure OpenAI, implantará múltiplos modelos com diferentes tipos de implantação e capacidades, e então validará sua disponibilidade e comparará seus comportamentos.

Topologia do Desafio 03

Pré-requisitos

  • Assinatura Azure com acesso ao Azure OpenAI aprovado
  • Azure CLI 2.50+ com extensão cognitiveservices
  • Python 3.9+ com pip ou .NET 8 SDK
  • Pacotes Python azure-identity, azure-mgmt-cognitiveservices, openai

Implementação

Tarefa 1: Criar um Recurso Azure OpenAI e Implantar um Modelo

from azure.identity import DefaultAzureCredential
from azure.mgmt.cognitiveservices import CognitiveServicesManagementClient
from azure.mgmt.cognitiveservices.models import (
Account, Sku, AccountProperties, Deployment, DeploymentProperties,
DeploymentModel
)

credential = DefaultAzureCredential()
subscription_id = "YOUR_SUBSCRIPTION_ID"
client = CognitiveServicesManagementClient(credential, subscription_id)

# Create Azure OpenAI resource
account = client.accounts.begin_create(
resource_group_name="rg-ai102-challenge03",
account_name="ai102-openai-03",
account=Account(
sku=Sku(name="S0"),
kind="OpenAI",
location="eastus2",
properties=AccountProperties(
custom_sub_domain_name="ai102-openai-03"
)
)
).result()
print(f"OpenAI resource: {account.properties.endpoint}")

# Deploy GPT-4o with Standard deployment type
deployment = client.deployments.begin_create_or_update(
resource_group_name="rg-ai102-challenge03",
account_name="ai102-openai-03",
deployment_name="gpt-4o-standard",
deployment=Deployment(
sku=Sku(name="Standard", capacity=30), # 30K tokens per minute
properties=DeploymentProperties(
model=DeploymentModel(
format="OpenAI",
name="gpt-4o",
version="2024-08-06"
),
version_upgrade_option="OnceCurrentVersionExpired"
)
)
).result()
print(f"Deployed: {deployment.name}")
print(f"Model: {deployment.properties.model.name} v{deployment.properties.model.version}")
print(f"Capacity: {deployment.sku.capacity}K TPM")

Tarefa 2: Implantar Múltiplos Modelos com Diferentes Configurações

# Deploy GPT-4o-mini for cost-effective workloads
mini_deployment = client.deployments.begin_create_or_update(
resource_group_name="rg-ai102-challenge03",
account_name="ai102-openai-03",
deployment_name="gpt-4o-mini-standard",
deployment=Deployment(
sku=Sku(name="GlobalStandard", capacity=50), # 50K TPM with global routing
properties=DeploymentProperties(
model=DeploymentModel(
format="OpenAI",
name="gpt-4o-mini",
version="2024-07-18"
),
version_upgrade_option="OnceNewDefaultVersionAvailable"
)
)
).result()
print(f"Deployed: {mini_deployment.name} (Global Standard)")

# List all deployments to compare
deployments = client.deployments.list(
resource_group_name="rg-ai102-challenge03",
account_name="ai102-openai-03"
)

print("\n--- All Deployments ---")
for d in deployments:
print(f" {d.name}:")
print(f" Model: {d.properties.model.name} v{d.properties.model.version}")
print(f" Type: {d.sku.name}")
print(f" Capacity: {d.sku.capacity}K TPM")
print(f" Upgrade: {d.properties.version_upgrade_option}")

Tarefa 3: Testar Implantação e Monitorar Capacidade

import os
from openai import AzureOpenAI

# Test the deployed model
os.environ["AZURE_OPENAI_ENDPOINT"] = "https://ai102-openai-03.openai.azure.com/"
os.environ["AZURE_OPENAI_KEY"] = "YOUR_KEY"

client = AzureOpenAI(
azure_endpoint=os.environ["AZURE_OPENAI_ENDPOINT"],
api_key=os.environ["AZURE_OPENAI_KEY"],
api_version="2024-10-21"
)

# Call the Standard deployment
response = client.chat.completions.create(
model="gpt-4o-standard", # deployment name, not model name
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "What deployment types does Azure OpenAI support?"}
],
max_tokens=200
)

print(f"Model: {response.model}")
print(f"Tokens used: {response.usage.total_tokens}")
print(f"Response: {response.choices[0].message.content[:200]}...")

# Check remaining capacity via headers (rate limit info)
print(f"\nDeployment: gpt-4o-standard")
print(f"Configured: 30K TPM")
print(f"Tokens this call: {response.usage.total_tokens}")

Saída Esperada

OpenAI resource: https://ai102-openai-03.openai.azure.com/
Deployed: gpt-4o-standard
Model: gpt-4o v2024-08-06
Capacity: 30K TPM

Deployed: gpt-4o-mini-standard (Global Standard)

--- All Deployments ---
gpt-4o-standard:
Model: gpt-4o v2024-08-06
Type: Standard
Capacity: 30K TPM
Upgrade: OnceCurrentVersionExpired
gpt-4o-mini-standard:
Model: gpt-4o-mini v2024-07-18
Type: GlobalStandard
Capacity: 50K TPM
Upgrade: OnceNewDefaultVersionAvailable

Model: gpt-4o-2024-08-06
Tokens used: 156
Response: Azure OpenAI supports three deployment types...

Quebra & conserta

CenárioSintomaCausa RaizCorreção
Modelo não disponívelErro ModelNotFoundModelo não disponível na região selecionadaVerifique az cognitiveservices account list-models para disponibilidade regional
Capacidade excedidaInsufficientQuotaCota de TPM da assinatura totalmente alocadaReduza a capacidade em outras implantações ou solicite aumento de cota
Versão inválidaInvalidModelVersionVersão especificada foi descontinuada ou ainda não está disponívelListe as versões disponíveis com a API de modelos
429 Too Many RequestsRate limiting durante inferênciaExcedendo TPM/RPM configuradoAumente a capacidade da implantação ou implemente retry com backoff exponencial
Nome de implantação erradoDeploymentNotFound nas chamadas do SDKUsando nome do modelo em vez do nome da implantaçãoO parâmetro model no SDK deve ser o nome da implantação que você escolheu, não "gpt-4o"

Verificação de Conhecimento

1. Qual é a principal diferença entre implantações Standard e Global Standard no Azure OpenAI?

2. Você configurou uma capacidade de implantação de 30K TPM. O que acontece quando sua aplicação envia requisições que excedem esse limite?

3. Qual opção de atualização de versão você deve escolher se deseja controlar exatamente quando a versão do seu modelo muda?

4. Ao fazer uma chamada de API para o Azure OpenAI, qual valor você deve passar como parâmetro 'model' no SDK?

5. Quando você deve escolher Provisioned Throughput (PTU) em vez de implantação Standard?

Limpeza

az group delete --name rg-ai102-challenge03 --yes --no-wait

Saiba Mais