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.
Creación de un trabajo de optimización de inferencias
Puede crear un trabajo de optimización de inferencias mediante Studio o SageMaker AI PythonSDK. El trabajo optimiza el modelo mediante la aplicación de las técnicas que elija. Para obtener más información, consulte Técnicas de optimización.
Precios de instancias para trabajos de optimización de inferencias
Al crear un trabajo de optimización de inferencias que aplica la cuantificación o la compilación, la SageMaker IA elige qué tipo de instancia usar para ejecutar el trabajo. Se le cobrará en función de la instancia utilizada.
Para conocer los posibles tipos de instancias y los detalles de sus precios, consulta la información sobre precios de optimización por inferencia en la página de precios de Amazon SageMaker AI
No se aplicarán costos adicionales en los trabajos en los que se aplique la decodificación especulativa.
Para ver los modelos compatibles que puede optimizar, consulteReferencia de modelos compatibles.
Complete los siguientes pasos para crear un trabajo de optimización de inferencias en Studio.
Cómo empezar a crear un trabajo de optimización
-
En SageMaker AI Studio, cree un trabajo de optimización mediante cualquiera de las siguientes rutas:
-
Para crear un trabajo para un JumpStart modelo, haga lo siguiente:
-
En el menú de navegación, elija JumpStart.
-
En la página Todos los modelos públicos, elija un proveedor de modelos y, a continuación, seleccione uno de los modelos que admitan la optimización.
-
En la página de detalles del modelo, elija Optimizar. Este botón solo está habilitado para los modelos que admiten la optimización.
-
En la página Crear un trabajo de optimización de inferencias, algunos JumpStart modelos requieren que firme un acuerdo de licencia de usuario final (EULA) antes de poder continuar. Si se solicita, revise los términos de la licencia en la sección Acuerdo de licencia. Si los términos son aceptables para su caso de uso, active la casilla de verificación correspondiente a Acepto los EULA términos y condiciones y léalos.
-
-
Para crear una tarea para un JumpStart modelo ajustado, haga lo siguiente:
-
En el panel de navegación, en Trabajos, elija Entrenamiento.
-
En la página Trabajos de formación, elija el nombre de un trabajo que utilizó para ajustar un JumpStart modelo. Estos trabajos tienen el tipo JumpStartFormación en la columna Tipo de trabajo.
-
En la página de detalles del trabajo de entrenamiento, elija Optimizar.
-
-
Para crear un trabajo para un modelo personalizado, haga lo siguiente:
-
En el menú de navegación, en Trabajos, elija Optimización de inferencias.
-
Elige Crear nuevo tarea.
-
En la página Crear trabajo de optimización de inferencias, elija Agregar modelo.
-
En la ventana Agregar modelo, elija Modelo personalizado.
-
En Nombre de modelo personalizado, escriba un nombre.
-
Para S3 URI, introduzca la URI ubicación en Amazon S3 en la que ha almacenado los artefactos del modelo.
-
-
-
En la página Crear trabajo de optimización de inferencias, en Nombre del trabajo, puede aceptar el nombre predeterminado que la SageMaker IA asigna. O bien, para introducir un nombre de trabajo personalizado, seleccione el campo Nombre del trabajo y elija Introducir nombre del trabajo.
Establecimiento de las configuraciones de optimización
-
En Tipo de instancia de implementación, elija el tipo de instancia para el que desee optimizar el modelo.
El tipo de instancia afecta a las técnicas de optimización que puede elegir. Para la mayoría de los tipos que utilizan GPU hardware, las técnicas admitidas son la cuantificación y la decodificación especulativa. Si eliges una instancia que usa silicio personalizado, como la instancia de AWS Inferentia ml.inf2.8xlarge, la técnica admitida es la compilación, que puedes usar para compilar el modelo para ese tipo de hardware específico.
-
Seleccione una o varias de las técnicas de optimización que Studio proporciona:
-
Si selecciona Cuantización, elija un tipo de datos para la opción Tipo de datos de precisión.
-
Si seleccionas Decodificación especulativa, elige una de las siguientes opciones:
-
Utilizar el modelo de borrador de SageMaker IA: elija utilizar el modelo de borrador que proporciona la SageMaker IA.
nota
Si opta por utilizar el modelo de borrador de SageMaker IA, también debe habilitar el aislamiento de la red. Studio ofrece esta opción en Seguridad.
-
Elegir modelo de JumpStart borrador: elija seleccionar un modelo del JumpStart catálogo para usarlo como modelo de borrador.
-
Elija su propio modelo de borrador: elija usar su propio modelo de borrador y proporcione el S3 URI que lo ubica.
-
-
Si selecciona Carga rápida del modelo, Studio muestra la variable de
OPTION_TENSOR_PARALLEL_DEGREE
entorno. Utilice el campo Valor para establecer el grado de paralelismo del tensor. El valor debe dividir GPUs en partes iguales el número de instancias que haya elegido como tipo de instancia de despliegue. Por ejemplo, para fragmentar el modelo mientras usas una instancia con 8GPUs, usa los valores 2, 4 u 8. -
Si estableces el tipo de instancia de despliegue en una instancia de AWS Inferentia o AWS Trainium, Studio podría mostrar que la compilación es la única opción admitida. En tal caso, Studio selecciona esta opción automáticamente.
-
-
En Output, introduzca el URI de una ubicación en Amazon S3. Allí, la SageMaker IA almacena los artefactos del modelo optimizado que crea su trabajo.
-
(Opcional) Amplíe las opciones avanzadas para obtener un control más detallado de ajustes como el IAM rol y las variables de VPC entorno. Para obtener más información, consulte a continuación Opciones avanzadas.
-
Cuando haya terminado de configurar el trabajo, seleccione Crear trabajo.
Studio muestra la página de detalles del trabajo, que muestra el estado del trabajo y todos sus ajustes.
Opciones avanzadas
Puede definir las siguientes opciones avanzadas al crear un trabajo de optimización de inferencias.
En Configuraciones, puede configurar las siguientes opciones:
- Grado de tensor paralelo
-
Un valor para el grado de paralelismo de tensores. El paralelismo de tensores es un tipo de paralelismo de modelos en el que las ponderaciones, gradientes y estados del optimizador específicos del modelo se dividen entre los dispositivos. El valor debe dividir en partes iguales el número de miembros del clústerGPUs.
- Longitud máxima del token
-
El límite de la cantidad de tokens que generará el modelo. Tenga en cuenta que es posible que el modelo no siempre genere la cantidad máxima de tokens.
- Simultaneidad
-
La capacidad de ejecutar varias instancias de un modelo en el mismo hardware subyacente. Utilice la simultaneidad para ofrecer predicciones a varios usuarios y sacar el máximo partido de la utilización del hardware.
- Tamaño de lote
-
Si el modelo realiza inferencias por lotes, utilice esta opción para controlar el tamaño de los lotes que procesa el modelo.
La inferencia por lotes genera predicciones de modelos a partir de un lote de observaciones. Es una buena opción para conjuntos de datos grandes o si no necesita una respuesta inmediata a una solicitud de inferencia.
En Seguridad, puede configurar las siguientes opciones:
- Rol de IAM
-
Un IAM rol que permite a la SageMaker IA realizar tareas en tu nombre. Durante la optimización del modelo, la SageMaker IA necesita su permiso para:
-
Leer los datos de entrada de un bucket de S3
-
Escribir artefactos de modelos en un bucket de S3
-
Escribir registros en Amazon CloudWatch Logs
-
Publica métricas en Amazon CloudWatch
Otorgas permisos para todas estas tareas a un IAM rol.
Para obtener más información, consulte Cómo utilizar las funciones de ejecución de la SageMaker IA.
-
- KMSClave de cifrado
-
Una clave en AWS Key Management Service (AWS KMS). SageMaker La IA utiliza la clave para cifrar los artefactos del modelo optimizado cuando la SageMaker IA carga el modelo en Amazon S3.
- VPC
-
SageMaker La IA utiliza esta información para crear interfaces de red y conectarlas a los contenedores de sus modelos. Las interfaces de red proporcionan a sus contenedores modelo una conexión de red VPC interna que no está conectada a Internet. También permiten que su modelo se conecte a los recursos de su entorno privadoVPC.
Para obtener más información, consulte Ofrezca a los puntos finales alojados en SageMaker IA acceso a los recursos de su Amazon VPC.
- Habilitación del aislamiento de la red
-
Active esta opción si desea restringir el acceso a Internet por parte del contenedor. Los contenedores que funcionan con el aislamiento de la red no pueden realizar llamadas de red salientes.
nota
Debe activar esta opción cuando optimice con decodificación especulativa y utilice el modelo SageMaker AI Draft.
Para obtener más información sobre el aislamiento de la red, consulteAislamiento de red.
En Definición avanzada de contenedores, puede configurar las siguientes opciones:
- Condición de parada
-
Especifica el límite de tiempo durante el que se puede ejecutar un trabajo. Cuando el trabajo alcanza el límite de tiempo, la SageMaker IA finaliza el trabajo. Utilice esta opción para limitar los costos.
- Tags
-
Pares clave-valor asociadas al trabajo de optimización.
Para obtener más información sobre las etiquetas, consulte Tagging AWS resources en la Referencia general de AWS.
- Variables de entorno
-
Pares clave-valor que definen las variables de entorno que se han de establecer en el contenedor del modelo.
Puede crear un trabajo de optimización de inferencias mediante el uso de Python de SageMaker IA SDK en su proyecto. En primer lugar, defina una Model
instancia mediante la ModelBuilder
clase. A continuación, se utiliza el optimize()
método para ejecutar un trabajo que optimice el modelo mediante la cuantificación, la decodificación especulativa o la compilación. Cuando se complete el trabajo, se implementa el modelo en un punto final de inferencia mediante el método. deploy()
Para obtener más información sobre las clases y los métodos utilizados en los siguientes ejemplos, consulte APIs
Configuración de un proyecto
-
En el código de la aplicación, importe las bibliotecas necesarias. El siguiente ejemplo importa el SDK para Python (Boto3). También importa las clases del Python de SageMaker IA SDK que se utilizan para definir y trabajar con los modelos:
import boto3 from sagemaker.serve.builder.model_builder import ModelBuilder from sagemaker.serve.builder.schema_builder import SchemaBuilder from sagemaker.session import Session from pathlib import Path
-
Inicializa una sesión de SageMaker IA. En el siguiente ejemplo, se utiliza la
Session()
clase:sagemaker_session = Session()
Definición de un modelo
-
Cree una instancia de
SchemaBuilder
y proporcione ejemplos de entrada y salida. Al definir un modelo, debe proporcionar esta instancia a la claseModelBuilder
. Con ella, la SageMaker IA genera automáticamente las funciones de clasificación para serializar y deserializar la entrada y la salida.Para obtener más información sobre el uso de las clases
SchemaBuilder
yModelBuilder
, consulte Cree un modelo en Amazon SageMaker AI con ModelBuilder.En el ejemplo siguiente se proporcionan ejemplos de cadenas de entrada y salida para la clase
SchemaBuilder
:response = "Jupiter is the largest planet in the solar system. It is the fifth planet from the sun." sample_input = { "inputs": "What is the largest planet in the solar system?", "parameters": {"max_new_tokens": 128, "top_p": 0.9, "temperature": 0.6}, } sample_output = [{"generated_text": response}] schema_builder = SchemaBuilder(sample_input, sample_output)
-
Defina su modelo según la IA. SageMaker En el ejemplo siguiente se definen los parámetros para inicializar una instancia de
ModelBuilder
:model_builder = ModelBuilder( model="
jumpstart-model-id
", schema_builder=schema_builder, sagemaker_session=sagemaker_session, role_arn=sagemaker_session.get_caller_identity_arn(), )En este ejemplo se utiliza un JumpStart modelo.
Sustitúyalo por el identificador de un JumpStart modelo, por ejemplojumpstart-model-id
meta-textgeneration-llama-3-70b
.nota
Si quiere optimizar con una decodificación especulativa y quiere utilizar el borrador de SageMaker IA, debe habilitar el aislamiento de la red. Para habilitarlo, incluye el siguiente argumento al inicializar una
ModelBuilder
instancia:enable_network_isolation=True,
Para obtener más información sobre el aislamiento de la red, consulteAislamiento de red.
Para optimizar con la cuantificación
-
Para ejecutar un trabajo de cuantificación, utilice el
optimize()
método y establezca elquantization_config
argumento. El siguiente ejemplo se estableceOPTION_QUANTIZE
como una variable de entorno en el contenedor de optimización:optimized_model = model_builder.optimize( instance_type="
instance-type
", accept_eula=True, quantization_config={ "OverrideEnvironment": { "OPTION_QUANTIZE": "awq", }, }, output_path="s3://output-path
", )En este ejemplo,
sustitúyala por una instancia de ML, comoinstance-type
ml.p4d.24xlarge
.
Sustitúyala por la ruta a la ubicación S3 en la que se almacena el modelo optimizado que crea el trabajo.s3://output-path
El
optimize()
método devuelve unModel
objeto, que puede utilizar para implementar el modelo en un punto final. -
Cuando se complete el trabajo, despliegue el modelo. En el siguiente ejemplo se utiliza el
deploy()
método:predictor = optimized_model.deploy( instance_type="
instance-type
", accept_eula=True, )En este ejemplo,
sustituya por una instancia de ML, comoinstance-type
ml.p4d.24xlarge
.El
deploy()
método devuelve un objeto predictor, que puede utilizar para enviar solicitudes de inferencia al punto final que aloja el modelo.
Para optimizarlo con decodificación especulativa utilizando el borrador del modelo de IA SageMaker
Cuando optimizas tu modelo con decodificación especulativa, puedes optar por usar un borrador de modelo proporcionado por la SageMaker IA o puedes usar el tuyo propio. En los ejemplos siguientes se utiliza el modelo preliminar de SageMaker IA.
Requisito previo
Para optimizar con la decodificación especulativa y el modelo preliminar de SageMaker IA, debe habilitar el aislamiento de la red al definir el modelo.
-
Para ejecutar un trabajo de decodificación especulativa, utilice el
optimize()
método y establezca elspeculative_decoding_config
argumento. El siguiente ejemplo establece laModelProvider
claveSAGEMAKER
para utilizar el borrador del modelo que proporciona la SageMaker IA.optimized_model = model_builder.optimize( instance_type="
instance-type
", accept_eula=True, speculative_decoding_config={ "ModelProvider": "SAGEMAKER", }, )En este ejemplo,
sustitúyalo por una instancia de ML, comoinstance-type
ml.p4d.24xlarge
.El
optimize()
método devuelve unModel
objeto, que puede utilizar para implementar el modelo en un punto final. -
Cuando se complete el trabajo, despliegue el modelo. En el siguiente ejemplo se utiliza el
deploy()
método:predictor = optimized_model.deploy(accept_eula=True)
El
deploy()
método devuelve un objeto predictor, que puede utilizar para enviar solicitudes de inferencia al punto final que aloja el modelo.
Para optimizarlo mediante la decodificación especulativa mediante un modelo de borrador personalizado
Antes de poder proporcionar su borrador de modelo personalizado a SageMaker AI, primero debe cargar los artefactos del modelo en Amazon S3.
Los siguientes ejemplos muestran una forma posible de proporcionar un modelo de borrador personalizado. Los ejemplos descargan el borrador del modelo del Hugging Face Hub, lo suben a Amazon S3 y proporcionan el URI S3 speculative_decoding_config
al argumento.
-
Si quieres descargar un modelo del Hugging Face Hub, añade
huggingface_hub
la biblioteca a tu proyecto y descarga un modelo consnapshot_download()
el método. En el siguiente ejemplo, se descarga un modelo a un directorio local:import huggingface_hub huggingface_hub.snapshot_download( repo_id="
model-id
", revision="main", local_dir=download-dir
, token=hf-access-token
, )En este ejemplo,
sustitúyalo por el identificador de un modelo, Hugging Face Hub, comomodel-id
meta-llama/Meta-Llama-3-8B
.
Sustitúyalo por un directorio local.download-dir
Sustitúyalo por tu token de acceso de usuario. Para obtener información sobre cómo obtener tu token de acceso, consulta los Tokens de acceso de usuariohf-access-token
en la documentación de Hugging Face. Para obtener más información sobre la
huggingface_hub
biblioteca, consulta la biblioteca cliente de Huben la documentación de Hugging Face. -
Para que el modelo descargado esté disponible para SageMaker AI, cárguelo en Amazon S3. En el siguiente ejemplo, se carga el modelo con el
sagemaker_session
objeto:custom_draft_model_uri = sagemaker_session.upload_data( path=hf_local_download_dir.as_posix(), bucket=sagemaker_session.default_bucket(), key_prefix="
prefix
", )En este ejemplo,
sustitúyalo por un calificador que le ayude a distinguir el borrador del modelo en S3, como.prefix
spec-dec-custom-draft-model
El
upload_data()
método devuelve el S3 de URI los artefactos del modelo. -
Para ejecutar un trabajo de decodificación especulativa, utilice el
optimize()
método y establezca elspeculative_decoding_config
argumento. El siguiente ejemplo establece laModelSource
clave del S3 URI del modelo de borrador personalizado:optimized_model = model_builder.optimize( instance_type="
instance-type
", accept_eula=True, speculative_decoding_config={ "ModelSource": custom_draft_model_uri + "/", }, )En este ejemplo,
sustitúyala por una instancia de ML, comoinstance-type
ml.p4d.24xlarge
.El
optimize()
método devuelve unModel
objeto, que puede utilizar para implementar el modelo en un punto final. -
Cuando se complete el trabajo, despliegue el modelo. En el siguiente ejemplo se utiliza el
deploy()
método:predictor = optimized_model.deploy(accept_eula=True)
El
deploy()
método devuelve un objeto predictor, que puede utilizar para enviar solicitudes de inferencia al punto final que aloja el modelo.
Para optimizar con la compilación
-
Para ejecutar un trabajo de compilación, utilice el
optimize()
método y establezca elcompilation_config
argumento. En el siguiente ejemplo, se utiliza laOverrideEnvironment
clave para establecer las variables de entorno necesarias en el contenedor de optimización:optimized_model = model_builder.optimize( instance_type="
instance-type
", accept_eula=True, compilation_config={ "OverrideEnvironment": { "OPTION_TENSOR_PARALLEL_DEGREE": "24", "OPTION_N_POSITIONS": "8192", "OPTION_DTYPE": "fp16", "OPTION_ROLLING_BATCH": "auto", "OPTION_MAX_ROLLING_BATCH_SIZE": "4", "OPTION_NEURON_OPTIMIZE_LEVEL": "2", } }, output_path="s3://output-path
", )En este ejemplo,
configúrelo en un tipo de instancia de ML con hardware acelerado. Por ejemplo, para AWS una inferencia acelerada con Inferentia, puedes establecer el tipo en una instancia Inf2, como.instance-type
ml.inf2.48xlarge
Reemplácelo por la ruta a la ubicación S3 donde almacena el modelo optimizado que crea el trabajo.s3://output-path
-
Cuando se complete el trabajo, implemente el modelo. En el siguiente ejemplo se utiliza el
deploy()
método:predictor = optimized_model.deploy(accept_eula=True)
El
deploy()
método devuelve un objeto predictor, que puede utilizar para enviar solicitudes de inferencia al punto final que aloja el modelo.
Prueba del modelo con una solicitud de inferencia
-
Para enviar una solicitud de inferencia de prueba al modelo implementado, utilice el
predict()
método de un objeto predictor. El siguiente ejemplo pasa lasample_input
variable que también se pasó a laSchemaBuilder
clase en los ejemplos para definir el modelo:predictor.predict(sample_input)
La entrada de muestra tiene el mensaje,
"What is the largest planet in the solar system?"
. Elpredict()
método devuelve la respuesta que generó el modelo, como se muestra en el siguiente ejemplo:{'generated_text': ' Jupiter is the largest planet in the solar system. It is the fifth planet from the sun. It is a gas giant with . . .'}
Limitaciones del borrador del modelo de SageMaker IA
Para cualquier modelo que optimice con el modelo preliminar de SageMaker IA, tenga en cuenta los requisitos, las restricciones y las variables de entorno compatibles.
Requisitos
Debe hacer lo siguiente:
-
Usa un modelo proporcionado por la SageMaker IA JumpStart.
-
Habilite el aislamiento de la red para la implementación del modelo.
-
Si implementa el modelo en un contenedor Large Model Inference (LMI), utilice un DJLServing contenedor de la versión 0.28.0 o superior.
Para ver los contenedores disponibles, consulte Contenedores de inferencia de modelos grandes
en el GitHub repositorio de Deep Learning Containers. -
Si ajusta el JumpStart modelo con precisión, utilice el formato safetensors para los pesos del modelo.
Para obtener más información sobre este formato, consulte Safetensors
en la documentación de Hugging Face.
Restricciones
No puede hacer lo siguiente:
-
Utilice el modelo en entornos de prueba locales que cree con el modo local.
Para obtener más información sobre el modo local, consulte Modo local
en la SDK documentación de SageMaker AI Python. -
Acceda al contenedor del modelo a través del AWS Systems Manager agente (SSMagente). El SSM agente proporciona acceso a nivel de shell a tu contenedor modelo para que puedas depurar procesos y registrar comandos con Amazon. CloudWatch
Para obtener más información acerca de esta característica, consulte Acceda a los contenedores a través de SSM.
-
Configure el contenedor modelo para una descarga de núcleos que se produce si el proceso se bloquea.
Para obtener más información sobre los volcados principales de los contenedores modelo, consulte. ProductionVariantCoreDumpConfig
-
Implemente el modelo en puntos finales de varios modelos, puntos de enlace de varios contenedores o puntos de enlace que alojan componentes de inferencia.
Para obtener más información sobre estos tipos de puntos finales, consulte, y. Puntos de conexión multimodelo Puntos de conexión con varios contenedores Componentes de inferencias
-
Cree un paquete de modelos para el modelo. Los paquetes de modelos se utilizan para crear modelos desplegables en los que se publican AWS Marketplace.
Para obtener más información acerca de esta característica, consulte Cree un recurso de paquete de modelos.
-
Utilice su propio código de inferencia en el contenedor de modelos.
-
Utilice un
requirements.txt
archivo en el contenedor del modelo. Este tipo de archivo muestra las dependencias de los paquetes. -
Activa el parámetro Hugging Face.
trust_remote_code
Variables de entorno admitidas
Puede configurar el contenedor solo con las siguientes variables de entorno:
-
Variables de entorno comunes para contenedores de inference (LMI) de modelos grandes.
Para obtener más información sobre estas variables, consulte Configuraciones de variables de entorno
en la documentación del LMI contenedor. -
Variables de entorno comunes para los paquetes que Hugging Face Hub proporciona en sus repositorios de Git.
Para los repositorios, consulta Hugging
Face on. GitHub -
Variables comunes PyTorch y de CUDA entorno.
Para obtener más información sobre estas variables, consulte las variables de entorno de Torch
en la PyTorch documentación.