Seleccione sus preferencias de cookies

Usamos cookies esenciales y herramientas similares que son necesarias para proporcionar nuestro sitio y nuestros servicios. Usamos cookies de rendimiento para recopilar estadísticas anónimas para que podamos entender cómo los clientes usan nuestro sitio y hacer mejoras. Las cookies esenciales no se pueden desactivar, pero puede hacer clic en “Personalizar” o “Rechazar” para rechazar las cookies de rendimiento.

Si está de acuerdo, AWS y los terceros aprobados también utilizarán cookies para proporcionar características útiles del sitio, recordar sus preferencias y mostrar contenido relevante, incluida publicidad relevante. Para aceptar o rechazar todas las cookies no esenciales, haga clic en “Aceptar” o “Rechazar”. Para elegir opciones más detalladas, haga clic en “Personalizar”.

Creación de un trabajo de optimización de inferencias

Modo de enfoque
Creación de un trabajo de optimización de inferencias - Amazon SageMaker AI

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.

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.

Puede crear un trabajo de optimización de inferencias mediante Studio o el SDK de Python para SageMaker IA. 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
  1. 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:

      1. En el menú de navegación, elija JumpStart.

      2. 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.

      3. En la página de detalles del modelo, elija Optimizar. Este botón solo está habilitado para los modelos que admiten la optimización.

      4. 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 el caso de uso, seleccione la casilla de verificación Acepto el EULA, y he leído los términos y las condiciones.

    • Para crear un trabajo para un JumpStart modelo ajustado, haga lo siguiente:

      1. En el panel de navegación, en Trabajos, elija Entrenamiento.

      2. 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.

      3. En la página de detalles del trabajo de entrenamiento, elija Optimizar.

    • Para crear un trabajo para un modelo personalizado, haga lo siguiente:

      1. En el menú de navegación, en Trabajos, elija Optimización de inferencias.

      2. Elige Crear nuevo tarea.

      3. En la página Crear trabajo de optimización de inferencias, elija Agregar modelo.

      4. En la ventana Agregar modelo, elija Modelo personalizado.

      5. En Nombre de modelo personalizado, escriba un nombre.

      6. En URI de S3, introduzca el URI de la ubicación de Amazon S3 en la que ha almacenado los artefactos del modelo.

  2. 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
  1. 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 hardware de GPU, las técnicas admitidas son Cuantización y 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.

  2. 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 URI de S3 que lo localiza.

    • 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 8 GPUs, 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.

  3. En Salida, introduzca el URI de una ubicación de Amazon S3. Allí, la SageMaker IA almacena los artefactos del modelo optimizado que crea tu trabajo.

  4. (Opcional) Amplíe Opciones avanzadas para obtener un control más pormenorizado de la configuración, como, por ejemplo, el rol de IAM, la VPC y las variables de entorno. Para obtener más información, consulte a continuación Opciones avanzadas.

  5. 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 GPUs de miembros del clúster.

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

Una función de IAM 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

Conceda permisos para todas estas tareas a un rol de IAM.

Para obtener más información, consulte Cómo utilizar las funciones de ejecución de la SageMaker IA.

Clave de cifrado de KMS

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 de modelos una conexión de red en su VPC que no está conectada a Internet. También permiten al modelo conectarse a recursos en su VPC privada.

Para obtener más información, consulte Ofrezca a los puntos de conexión 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 de borrador de SageMaker IA.

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.

Etiquetas

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.

Amazon SageMaker Studio

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
  1. 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:

      1. En el menú de navegación, elija JumpStart.

      2. 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.

      3. En la página de detalles del modelo, elija Optimizar. Este botón solo está habilitado para los modelos que admiten la optimización.

      4. 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 el caso de uso, seleccione la casilla de verificación Acepto el EULA, y he leído los términos y las condiciones.

    • Para crear un trabajo para un JumpStart modelo ajustado, haga lo siguiente:

      1. En el panel de navegación, en Trabajos, elija Entrenamiento.

      2. 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.

      3. En la página de detalles del trabajo de entrenamiento, elija Optimizar.

    • Para crear un trabajo para un modelo personalizado, haga lo siguiente:

      1. En el menú de navegación, en Trabajos, elija Optimización de inferencias.

      2. Elige Crear nuevo tarea.

      3. En la página Crear trabajo de optimización de inferencias, elija Agregar modelo.

      4. En la ventana Agregar modelo, elija Modelo personalizado.

      5. En Nombre de modelo personalizado, escriba un nombre.

      6. En URI de S3, introduzca el URI de la ubicación de Amazon S3 en la que ha almacenado los artefactos del modelo.

  2. 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
  1. 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 hardware de GPU, las técnicas admitidas son Cuantización y 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.

  2. 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 URI de S3 que lo localiza.

    • 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 8 GPUs, 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.

  3. En Salida, introduzca el URI de una ubicación de Amazon S3. Allí, la SageMaker IA almacena los artefactos del modelo optimizado que crea tu trabajo.

  4. (Opcional) Amplíe Opciones avanzadas para obtener un control más pormenorizado de la configuración, como, por ejemplo, el rol de IAM, la VPC y las variables de entorno. Para obtener más información, consulte a continuación Opciones avanzadas.

  5. 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 GPUs de miembros del clúster.

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

Una función de IAM 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

Conceda permisos para todas estas tareas a un rol de IAM.

Para obtener más información, consulte Cómo utilizar las funciones de ejecución de la SageMaker IA.

Clave de cifrado de KMS

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 de modelos una conexión de red en su VPC que no está conectada a Internet. También permiten al modelo conectarse a recursos en su VPC privada.

Para obtener más información, consulte Ofrezca a los puntos de conexión 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 de borrador de SageMaker IA.

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.

Etiquetas

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 utilizando el SDK de Python para SageMaker IA 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, consulta APIsla documentación del SDK de Python para SageMaker IA.

Configuración de un proyecto
  1. En el código de la aplicación, importe las bibliotecas necesarias. En el ejemplo siguiente se importa el SDK para Python (Boto3). También importa las clases del SDK de Python para SageMaker IA que se utilizan para definir los modelos y trabajar con ellos:

    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
  2. Inicializa una sesión de SageMaker IA. En el siguiente ejemplo se utiliza la Session() clase:

    sagemaker_session = Session()
Definición de un modelo
  1. Cree una instancia de SchemaBuilder y proporcione ejemplos de entrada y salida. Al definir un modelo, debe proporcionar esta instancia a la clase ModelBuilder. 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 y ModelBuilder, 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)
  2. 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. jumpstart-model-idSustitúyalo por el identificador de un JumpStart modelo, por ejemplometa-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
  1. Para ejecutar un trabajo de cuantificación, utilice el optimize() método y establezca el quantization_config argumento. El siguiente ejemplo se establece OPTION_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, instance-type sustitúyala por una instancia de ML, comoml.p4d.24xlarge. s3://output-pathSustitúyala por la ruta a la ubicación S3 en la que se almacena el modelo optimizado que crea el trabajo.

    El optimize() método devuelve un Model objeto, que puede utilizar para implementar el modelo en un punto final.

  2. Cuando finalice 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, instance-type sustituya por una instancia de ML, comoml.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.

  1. Para ejecutar un trabajo de decodificación especulativa, utilice el optimize() método y establezca el speculative_decoding_config argumento. El siguiente ejemplo establece la ModelProvider clave SAGEMAKER 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, instance-type sustitúyala por una instancia de aprendizaje automático, comoml.p4d.24xlarge.

    El optimize() método devuelve un Model objeto, que puede utilizar para implementar el modelo en un punto final.

  2. Cuando finalice 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 de S3 speculative_decoding_config al argumento.

  1. Si quieres descargar un modelo del Hugging Face Hub, añade huggingface_hub la biblioteca a tu proyecto y descarga un modelo con snapshot_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, model-id sustitúyalo por el identificador de un modelo, Hugging Face Hub, comometa-llama/Meta-Llama-3-8B. download-dirSustitúyalo por un directorio local. hf-access-tokenSustitú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 usuario en la documentación de Hugging Face.

    Para obtener más información sobre la huggingface_hub biblioteca, consulta la biblioteca cliente de Hub en la documentación de Hugging Face.

  2. 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, prefix sustitúyalo por un calificador que le ayude a distinguir el borrador del modelo en S3, como. spec-dec-custom-draft-model

    El upload_data() método devuelve el URI de S3 de los artefactos del modelo.

  3. Para ejecutar un trabajo de decodificación especulativo, utilice el optimize() método y establezca el speculative_decoding_config argumento. El siguiente ejemplo establece la ModelSource clave del URI de S3 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, instance-type sustitúyala por una instancia de ML, comoml.p4d.24xlarge.

    El optimize() método devuelve un Model objeto, que puede utilizar para implementar el modelo en un punto final.

  4. Cuando finalice 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
  1. Para ejecutar un trabajo de compilación, utilice el optimize() método y establezca el compilation_config argumento. En el siguiente ejemplo, se utiliza la OverrideEnvironment 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, instance-type 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. ml.inf2.48xlarge s3://output-pathReemplácelo por la ruta a la ubicación S3 donde almacena el modelo optimizado que crea el trabajo.

  2. 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. En el siguiente ejemplo, se pasa la sample_input variable que también se pasó a la SchemaBuilder 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?". El predict() 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 . . .'}

Puede crear un trabajo de optimización de inferencias utilizando el SDK de Python para SageMaker IA 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, consulta APIsla documentación del SDK de Python para SageMaker IA.

Configuración de un proyecto
  1. En el código de la aplicación, importe las bibliotecas necesarias. En el ejemplo siguiente se importa el SDK para Python (Boto3). También importa las clases del SDK de Python para SageMaker IA que se utilizan para definir los modelos y trabajar con ellos:

    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
  2. Inicializa una sesión de SageMaker IA. En el siguiente ejemplo se utiliza la Session() clase:

    sagemaker_session = Session()
Definición de un modelo
  1. Cree una instancia de SchemaBuilder y proporcione ejemplos de entrada y salida. Al definir un modelo, debe proporcionar esta instancia a la clase ModelBuilder. 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 y ModelBuilder, 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)
  2. 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. jumpstart-model-idSustitúyalo por el identificador de un JumpStart modelo, por ejemplometa-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
  1. Para ejecutar un trabajo de cuantificación, utilice el optimize() método y establezca el quantization_config argumento. El siguiente ejemplo se establece OPTION_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, instance-type sustitúyala por una instancia de ML, comoml.p4d.24xlarge. s3://output-pathSustitúyala por la ruta a la ubicación S3 en la que se almacena el modelo optimizado que crea el trabajo.

    El optimize() método devuelve un Model objeto, que puede utilizar para implementar el modelo en un punto final.

  2. Cuando finalice 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, instance-type sustituya por una instancia de ML, comoml.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.

  1. Para ejecutar un trabajo de decodificación especulativa, utilice el optimize() método y establezca el speculative_decoding_config argumento. El siguiente ejemplo establece la ModelProvider clave SAGEMAKER 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, instance-type sustitúyala por una instancia de aprendizaje automático, comoml.p4d.24xlarge.

    El optimize() método devuelve un Model objeto, que puede utilizar para implementar el modelo en un punto final.

  2. Cuando finalice 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 de S3 speculative_decoding_config al argumento.

  1. Si quieres descargar un modelo del Hugging Face Hub, añade huggingface_hub la biblioteca a tu proyecto y descarga un modelo con snapshot_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, model-id sustitúyalo por el identificador de un modelo, Hugging Face Hub, comometa-llama/Meta-Llama-3-8B. download-dirSustitúyalo por un directorio local. hf-access-tokenSustitú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 usuario en la documentación de Hugging Face.

    Para obtener más información sobre la huggingface_hub biblioteca, consulta la biblioteca cliente de Hub en la documentación de Hugging Face.

  2. 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, prefix sustitúyalo por un calificador que le ayude a distinguir el borrador del modelo en S3, como. spec-dec-custom-draft-model

    El upload_data() método devuelve el URI de S3 de los artefactos del modelo.

  3. Para ejecutar un trabajo de decodificación especulativo, utilice el optimize() método y establezca el speculative_decoding_config argumento. El siguiente ejemplo establece la ModelSource clave del URI de S3 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, instance-type sustitúyala por una instancia de ML, comoml.p4d.24xlarge.

    El optimize() método devuelve un Model objeto, que puede utilizar para implementar el modelo en un punto final.

  4. Cuando finalice 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
  1. Para ejecutar un trabajo de compilación, utilice el optimize() método y establezca el compilation_config argumento. En el siguiente ejemplo, se utiliza la OverrideEnvironment 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, instance-type 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. ml.inf2.48xlarge s3://output-pathReemplácelo por la ruta a la ubicación S3 donde almacena el modelo optimizado que crea el trabajo.

  2. 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. En el siguiente ejemplo, se pasa la sample_input variable que también se pasó a la SchemaBuilder 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?". El predict() 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 de inferencia de modelos grandes (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, consulta Modo local en la documentación del SDK de Python para SageMaker IA.

  • Acceda al contenedor del modelo a través del AWS Systems Manager agente (agente SSM). El agente SSM proporciona acceso a nivel de shell a su contenedor modelo para que pueda depurar procesos y registrar comandos con Amazon. CloudWatch

    Para obtener más información acerca de esta característica, consulte Acceso a 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 inferencia de modelos grandes (LMI).

    Para obtener más información sobre estas variables, consulte Configuraciones de variables de entorno en la documentación del contenedor del LMI.

  • 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 de PyTorch entorno comunes y CUDA.

    Para obtener más información sobre estas variables, consulte las variables de entorno de Torch en la PyTorch documentación.

En esta página

PrivacidadTérminos del sitioPreferencias de cookies
© 2025, Amazon Web Services, Inc o sus afiliados. Todos los derechos reservados.