Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Obtenga recomendaciones generativas de implementación de inferencias de IA
Los trabajos de recomendación de IA analizan las características del modelo y la carga de trabajo para generar configuraciones de implementación optimizadas en función del costo, la latencia o el rendimiento. El servicio evalúa los tipos de instancias, aplica optimizaciones, como la decodificación especulativa, y compara cada configuración con una infraestructura de GPU real.
Requisitos previos
Antes de crear un trabajo de recomendación, necesitas lo siguiente:
-
Modele artefactos almacenados en Amazon S3 en formato HuggingFace de punto de control con pesos SafeTensor
-
Un bucket de Amazon S3 para generar recomendaciones
-
Una función de ejecución de AWS Identity and Access Management (IAM) que otorga a la SageMaker IA acceso a los artefactos del modelo y al segmento de producción
Paso 1: Crea un trabajo de recomendación
Un trabajo de recomendación analiza el modelo y genera recomendaciones de implementación. Usted especifica la ubicación del modelo, la ubicación de salida, la configuración de la carga de trabajo y el objetivo de rendimiento.
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
También puede especificar los siguientes parámetros opcionales:
ComputeSpec-
Restrinja los tipos de instancias que se van a evaluar (máximo tres). Por ejemplo:
{"InstanceTypes": ["ml.g5.12xlarge", "ml.p4d.24xlarge"]} OptimizeModel-
trueConfigúrelo en para permitir optimizaciones del modelo, como la decodificación especulativa. InferenceSpecification-
Especifique el marco de inferencia. Valores válidos:
LMI,VLLM.
Paso 2: Supervisar el estado del trabajo
Sondea el estado del trabajo hasta que alcance un 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
Paso 3: Revisa las recomendaciones
Cuando se completa el trabajo, la respuesta de descripción incluye una Recommendations matriz. Cada recomendación contiene una configuración lista para la implementación con la siguiente información:
DeploymentConfiguration-
El URI de la imagen del contenedor, el tipo de instancia, el número de instancias y las variables de entorno. Puedes usar esta configuración para implementarla directamente en un punto final de SageMaker IA.
ExpectedPerformance-
Métricas de rendimiento validadas, como el tiempo transcurrido hasta el primer token (TTFT), la latencia de las solicitudes en P90 y 99, el rendimiento en tokens por segundo y el rendimiento de las solicitudes.
OptimizationDetails-
Se aplicaron técnicas de optimización, como la decodificación especulativa o el ajuste del núcleo, con sus parámetros de configuración.
Se pueden aplicar las siguientes técnicas de optimización:
- Decodificación especulativa
-
La decodificación especulativa acelera la generación de texto al procesar varios tokens en paralelo en lugar de uno a la vez. Un especulador ligero propone varios tokens candidatos en un solo paso y, a continuación, el modelo principal los verifica juntos en una sola pasada, manteniendo los candidatos que están de acuerdo con su propia distribución y descartando el resto. El especulador está entrenado para adaptarse a la distribución de datos del modelo principal, de forma que se acepten más propuestas, lo que se traduce directamente en más fichas útiles producidas por cada transferencia a futuro. Se conserva la distribución de salida del modelo principal, por lo que la calidad de la respuesta permanece inalterada. El resultado es un mayor número de tokens de salida por segundo y una menor latencia entre ellos (ITL), lo que mejora las métricas de rendimiento.
- Ajuste del núcleo
-
El ajuste del núcleo comienza con el análisis del gráfico de ejecución del modelo para identificar los núcleos críticos para el rendimiento que son buenos candidatos para el ajuste, como los núcleos de atención y los de operadores fusionados. Luego, sus parámetros de lanzamiento y ordenamiento en mosaico se ajustan para que la implementación se adapte mejor al hardware de la GPU de destino y al patrón de tráfico esperado, como la simultaneidad. Estos parámetros afectan a la reutilización de la memoria, a la localidad de la caché y al paralelismo, lo que mejora la eficiencia de la ejecución. También se ajusta el número de etapas de canalización utilizadas para cargar los datos y la computación, lo que ayuda a superponer el movimiento de la memoria con el cálculo. Al ajustar estos parámetros para una combinación específica de modelo, hardware y carga de trabajo de servicio, el ajuste del núcleo mejora el rendimiento y la latencia al garantizar que la GPU se utilice al máximo.
Están disponibles las siguientes métricas de objetivos de rendimiento:
ttft-ms-
Tiempo transcurrido hasta el primer token en milisegundos.
throughput-
Fichas por segundo.
cost-
Coste por hora de la configuración de despliegue.
Cada métrica de la ExpectedPerformance respuesta incluye un Stat campo que indica la medida estadística, a y una opcionalUnit. Value Entre las estadísticas más comunes se incluyen: average p50 p90p95,p99,,max, ymin.
Administre los recursos de recomendación
Utilice las siguientes operaciones para gestionar los trabajos recomendados y las configuraciones de carga de trabajo.
# 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" )