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
truepara 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" )