View a markdown version of this page

Obtenha recomendações generativas de implantação de inferência de IA - SageMaker Inteligência Artificial da Amazon

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Obtenha recomendações generativas de implantação de inferência de IA

Os trabalhos de recomendação de IA analisam seu modelo e as características da carga de trabalho para gerar configurações de implantação otimizadas para custo, latência ou taxa de transferência. O serviço avalia os tipos de instância, aplica otimizações como decodificação especulativa e compara cada configuração na infraestrutura real da GPU.

Pré-requisitos

Antes de criar um trabalho de recomendação, você precisa do seguinte:

  • Modele artefatos armazenados no Amazon S3 HuggingFace em formato de ponto de verificação com pesos SafeTensor

  • Um bucket Amazon S3 para saída de recomendação

  • Uma função de execução do AWS Identity and Access Management (IAM) que SageMaker concede à IA acesso aos artefatos do modelo e ao bucket de saída

Etapa 1: criar um trabalho de recomendação

Um trabalho de recomendação analisa seu modelo e gera recomendações de implantação. Você especifica a localização do modelo, a localização da saída, a configuração da carga de trabalho e uma meta de desempenho.

Python (boto3)

response = client.create_ai_recommendation_job( AIRecommendationJobName="my-recommendation-job", ModelSource={ "S3": { "S3Uri": "s3://DOC-EXAMPLE-BUCKET/models/my-model/", } }, OutputConfig={ "S3OutputLocation": "s3://DOC-EXAMPLE-BUCKET/recommendations/" }, PerformanceTarget={ "Constraints": [ {"Metric": "ttft-ms"} ] }, AIWorkloadConfigIdentifier="my-recommendation-workload", RoleArn="arn:aws:iam::111122223333:role/ExampleRole", ) print(response["AIRecommendationJobArn"])

AWS CLI

aws sagemaker create-ai-recommendation-job \ --ai-recommendation-job-name "my-recommendation-job" \ --model-source '{"S3": {"S3Uri": "s3://DOC-EXAMPLE-BUCKET/models/my-model/"}}' \ --output-config '{"S3OutputLocation": "s3://DOC-EXAMPLE-BUCKET/recommendations/"}' \ --performance-target '{"Constraints": [{"Metric": "ttft-ms"}]}' \ --ai-workload-config-identifier "my-recommendation-workload" \ --role-arn "arn:aws:iam::111122223333:role/ExampleRole" \ --region us-west-2

Você também pode, opcionalmente, especificar os seguintes parâmetros:

ComputeSpec

Restrinja os tipos de instância a serem avaliados (máximo três). Por exemplo: {"InstanceTypes": ["ml.g5.12xlarge", "ml.p4d.24xlarge"]}

OptimizeModel

Defina como true para permitir otimizações do modelo, como decodificação especulativa.

InferenceSpecification

Especifique a estrutura de inferência. Valores válidos: LMI, VLLM.

Etapa 2: Monitorar o status do trabalho

Pesquise o status do trabalho até que ele atinja um estado terminal.

Python (boto3)

import time while True: response = client.describe_ai_recommendation_job( AIRecommendationJobName="my-recommendation-job" ) status = response["AIRecommendationJobStatus"] print(f"Status: {status}") if status in ("Completed", "Failed", "Stopped"): break time.sleep(30)

AWS CLI

aws sagemaker describe-ai-recommendation-job \ --ai-recommendation-job-name "my-recommendation-job" \ --region us-west-2

Etapa 3: revisar as recomendações

Quando o trabalho é concluído, a resposta de descrição inclui uma Recommendations matriz. Cada recomendação contém uma configuração pronta para implantação com as seguintes informações:

DeploymentConfiguration

URI da imagem do contêiner, tipo de instância, contagem de instâncias e variáveis de ambiente. Você pode usar essa configuração para implantar diretamente em um endpoint de SageMaker IA.

ExpectedPerformance

Métricas de desempenho validadas, incluindo Time to First Token (TTFT), latência da solicitação em P90 e P99, taxa de transferência em tokens por segundo e taxa de transferência da solicitação.

OptimizationDetails

Técnicas de otimização aplicadas, como decodificação especulativa ou ajuste do kernel, com seus parâmetros de configuração.

As seguintes técnicas de otimização podem ser aplicadas:

Decodificação especulativa

A decodificação especulativa acelera a geração de texto processando vários tokens em paralelo, em vez de um token por vez. Um especulador leve propõe vários tokens candidatos em uma única etapa, e o modelo primário então os verifica juntos em uma única passagem, mantendo os candidatos que concordam com sua própria distribuição e descartando o resto. O especulador é treinado para se alinhar à distribuição de dados do modelo primário para que mais de suas propostas sejam aceitas, o que se traduz diretamente em tokens mais úteis produzidos por passagem direta. A distribuição de saída do modelo primário é preservada, portanto, a qualidade da resposta permanece inalterada. O resultado são maiores tokens de saída por segundo e menor latência entre tokens (ITL), melhorando assim suas métricas de produtividade.

Ajuste do kernel

O ajuste do kernel começa com a análise do gráfico de execução do modelo para identificar kernels críticos de desempenho que são bons candidatos para ajuste, como os kernels de atenção e operadores fundidos. Seus parâmetros de lançamento e colocação em blocos são então ajustados para que a implementação corresponda melhor ao hardware da GPU de destino e ao padrão de tráfego esperado, como simultaneidade. Esses parâmetros afetam a reutilização da memória, a localidade do cache e o paralelismo, melhorando a eficiência da execução. O número de estágios do pipeline usados para carregar dados e computação também é ajustado, ajudando a sobrepor a movimentação da memória à computação. Ao ajustar esses parâmetros para a combinação específica de modelo, hardware e carga de trabalho de serviço, o ajuste do kernel melhora a taxa de transferência e a latência, garantindo que a GPU seja totalmente utilizada.

As seguintes métricas de meta de desempenho estão disponíveis:

ttft-ms

Tempo até o primeiro token em milissegundos.

throughput

Tokens por segundo.

cost

Custo por hora da configuração de implantação.

Cada métrica na ExpectedPerformance resposta inclui um Stat campo indicando a medida estatística, a e uma opcionalUnit. Value As estatísticas comuns incluem: average p50p90,p95,p99,max,, min e.

Gerencie recursos de recomendação

Use as operações a seguir para gerenciar suas tarefas de recomendação e configurações de carga de trabalho.

# List recommendation jobs response = client.list_ai_recommendation_jobs(MaxResults=10) for job in response["AIRecommendationJobs"]: print(f"{job['AIRecommendationJobName']} - {job['AIRecommendationJobStatus']}") # Stop a running job client.stop_ai_recommendation_job( AIRecommendationJobName="my-recommendation-job" ) # Delete a job (must be in a terminal state) client.delete_ai_recommendation_job( AIRecommendationJobName="my-recommendation-job" ) # List workload configurations response = client.list_ai_workload_configs(MaxResults=10) for config in response["AIWorkloadConfigs"]: print(f"{config['AIWorkloadConfigName']} - {config['AIWorkloadConfigArn']}") # Delete a workload configuration client.delete_ai_workload_config( AIWorkloadConfigName="my-recommendation-workload" )