Refinamiento de modelos con componentes de inferencia del adaptador - 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.

Refinamiento de modelos con componentes de inferencia del adaptador

Con Amazon SageMaker AI, puede alojar modelos fundacionales previamente entrenados sin necesidad de crear sus propios modelos desde cero. Sin embargo, para adaptar un modelo fundacional de uso general a las necesidades únicas de su empresa, debe crear una versión de refinamiento del modelo. Una técnica rentable de refinamiento es la adaptación de rango bajo (LoRA). El principio en el que se basa LoRA es que solo una pequeña parte de un gran modelo fundacional debe actualizarse para adaptarlo a nuevas tareas o dominios. Un adaptador LoRA aumenta la inferencia de un modelo fundacional con solo unas cuantas capas de adaptador adicionales.

Si aloja su modelo fundacional básico mediante un componente de inferencia de SageMaker AI, puede refinar ese modelo básico con adaptadores LoRA creando componentes de inferencia de adaptadores. Al crear un componente de inferencia de adaptador, especifica lo siguiente:

  • El componente de inferencia básico que va a contener el componente de inferencia del adaptador. El componente de inferencia básico contiene el modelo fundacional que desea adaptar. El componente de inferencia del adaptador utiliza los recursos computación que usted asignó al componente de inferencia básico.

  • La ubicación en la que ha almacenado el adaptador LoRA en Amazon S3.

Una vez creado el componente de inferencia del adaptador, puede invocarlo directamente. Cuando lo hace, SageMaker AI combina el adaptador con el modelo básico para aumentar la respuesta generada.

Antes de empezar

Antes de poder crear un componente de inferencia del adaptador, asegúrese de que cumple los siguientes requisitos:

  • Tiene un componente de inferencia básico que contiene el modelo fundacional que debe adaptarse. Ha implementado este componente de inferencia en un punto de conexión de SageMaker.

    Para obtener más información acerca de cómo implementar componentes de inferencia en puntos de conexión, consulte Implementación de modelos para inferencia en tiempo real.

  • Tiene un modelo de adaptador LoRA y ha almacenado los artefactos del modelo como un archivo tar.gz en Amazon S3. Al crear el componente de inferencia del adaptador, debe especificar el URI de S3 de los artefactos.

En los siguientes ejemplos se utiliza el SDK para Python (Boto3) para crear e invocar un componente de inferencia del adaptador.

ejemplo create_inference_component llama para crear un componente de inferencia del adaptador

En el siguiente ejemplo se crea un componente de inferencia del adaptador y lo asigna a un componente de inferencia básico:

sm_client.create_inference_component( InferenceComponentName = adapter_ic_name, EndpointName = endpoint_name, Specification={ "BaseInferenceComponentName": base_inference_component_name, "Container": { "ArtifactUrl": adapter_s3_uri }, }, )

Cuando utilice este ejemplo en su propio código, sustituya los valores de marcador de posición de la siguiente manera:

  • adapter_ic_name: nombre único para el componente de inferencia del adaptador.

  • endpoint_name: nombre del punto de conexión que aloja el componente de inferencia básico.

  • base_inference_component_name: nombre del componente de inferencia básico que contiene el modelo fundacional que se va a adaptar.

  • adapter_s3_uri: el URI de S3 que localiza el archivo tar.gz con los artefactos del adaptador LoRA.

Crea un componente de inferencia del adaptador con un código similar al de un componente de inferencia normal. Una diferencia es que, para el parámetro Specification, se omite la clave ComputeResourceRequirements. Cuando invoca un componente de inferencia del adaptador, es cargado por el componente de inferencia básico. El componente de inferencia del adaptador utiliza los recursos de computación del componente de inferencia básico.

Para obtener más información sobre la creación e implementación de componentes de inferencia con el SDK para Python (Boto3), consulte Implementación de modelos con los Python SDK.

Después de crear un componente de inferencia del adaptador, lo invoca especificando su nombre en una solicitud invoke_endpoint.

ejemplo invoke_endpoint llama para invocar un componente de inferencia del adaptador

En el siguiente ejemplo se invoca un componente de inferencia del adaptador:

response = sm_rt_client.invoke_endpoint( EndpointName = endpoint_name, InferenceComponentName = adapter_ic_name, Body = json.dumps( { "inputs": prompt, "parameters": {"max_new_tokens": 100, "temperature":0.9} } ), ContentType = "application/json", ) adapter_reponse = response["Body"].read().decode("utf8")["generated_text"]

Cuando utilice este ejemplo en su propio código, sustituya los valores de marcador de posición de la siguiente manera:

  • endpoint_name: nombre del punto de conexión que aloja los componentes de inferencia básicos y del adaptador.

  • adapter_ic_name: nombre del componente de inferencia del adaptador.

  • prompt: la petición para la solicitud de inferencia.

Para obtener más información sobre cómo invocar componentes de inferencia con el SDK para Python (Boto3), consulte Invocación de modelos para realizar inferencias en tiempo real.