Implemente y ajuste modelos básicos en Amazon SageMaker JumpStart con dos líneas de código

Nos complace anunciar una versión simplificada del Inicio rápido de Amazon SageMaker SDK que simplifica la creación, el entrenamiento y la implementación de modelos básicos. El código de predicción también está simplificado. En esta publicación, demostramos cómo puede usar el SDK Jumpstart de SageMaker simplificado para comenzar a usar modelos básicos en solo un par de líneas de código.

Para obtener más información sobre el SDK JumpStart de SageMaker simplificado para implementación y capacitación, consulte Implementación de código bajo con la clase JumpStartModel y Ajuste de código bajo con la clase JumpStartEstimatorrespectivamente.

Descripción general de la solución

SageMaker JumpStart proporciona modelos de código abierto previamente entrenados para una amplia gama de tipos de problemas para ayudarle a comenzar con el aprendizaje automático (ML). Puede entrenar y ajustar progresivamente estos modelos antes de su implementación. JumpStart también proporciona plantillas de soluciones que configuran la infraestructura para casos de uso comunes y cuadernos de ejemplo ejecutables para ML con Amazon SageMaker. Puede acceder a los modelos, plantillas de soluciones y ejemplos previamente entrenados a través de la página de inicio de SageMaker JumpStart en Amazon SageMaker Estudio o utilice el SDK de SageMaker Python.

Para demostrar las nuevas funciones del SDK JumpStart de SageMaker, le mostramos cómo utilizar el software previamente entrenado. Flan T5 XL modelo de Hugging Face para generación de texto para tareas de resumen. También mostramos cómo, con solo unas pocas líneas de código, puede ajustar el modelo Flan T5 XL para tareas de resumen. Puede utilizar cualquier otro modelo para la generación de texto como llama2, Halcóno Mistral AI.

Puede encontrar el cuaderno para esta solución utilizando Flan T5 XL en la repositorio de GitHub.

Implementar e invocar el modelo.

Los modelos de Foundation alojados en SageMaker JumpStart tienen ID de modelo. Para obtener la lista completa de ID de modelo, consulte Algoritmos integrados con tabla modelo previamente entrenada. Para esta publicación, utilizamos el ID del modelo de generación de texto Flan T5 XL. Creamos una instancia del objeto modelo y lo implementamos en un punto final de SageMaker llamando a su deploy método. Vea el siguiente código:

from sagemaker.jumpstart.model import JumpStartModel

# Replace with larger model if needed
pretrained_model = JumpStartModel(model_id="huggingface-text2text-flan-t5-base")
pretrained_predictor = pretrained_model.deploy()

A continuación, invocamos el modelo para crear un resumen del texto proporcionado utilizando el modelo Flan T5 XL. La nueva interfaz del SDK hace que sea sencillo invocar el modelo: solo necesita pasar el texto al predictor y éste devuelve la respuesta del modelo como un diccionario de Python.

text = """Summarize this content - Amazon Comprehend uses natural language processing (NLP) to extract insights about the content of documents. It develops insights by recognizing the entities, key phrases, language, sentiments, and other common elements in a document. Use Amazon Comprehend to create new products based on understanding the structure of documents. For example, using Amazon Comprehend you can search social networking feeds for mentions of products or scan an entire document repository for key phrases. 
You can access Amazon Comprehend document analysis capabilities using the Amazon Comprehend console or using the Amazon Comprehend APIs. You can run real-time analysis for small workloads or you can start asynchronous analysis jobs for large document sets. You can use the pre-trained models that Amazon Comprehend provides, or you can train your own custom models for classification and entity recognition. """
query_response = pretrained_predictor.predict(text)
print(query_response["generated_text"])

El siguiente es el resultado de la tarea de resumen:

Understand how Amazon Comprehend works. Use Amazon Comprehend to analyze documents.

Ajustar e implementar el modelo

El SDK JumpStart de SageMaker le proporciona una nueva clase, JumpStartEstimator, lo que simplifica el ajuste. Puede proporcionar la ubicación de los datos de ajuste y, opcionalmente, también pasar conjuntos de datos de validación. Después de ajustar el modelo, utilice el método de implementación del objeto Estimador para implementar el modelo ajustado:

from sagemaker.jumpstart.estimator import JumpStartEstimator

estimator = JumpStartEstimator(
    model_id=model_id,
)
estimator.set_hyperparameters(instruction_tuned="True", epoch="3", max_input_length="1024")
estimator.fit({"training": train_data_location})
finetuned_predictor = estimator.deploy()

Personalice las nuevas clases en SageMaker SDK

El nuevo SDK simplifica la implementación y el ajuste de los modelos JumpStart al establecer muchos parámetros predeterminados. Aún tiene la opción de anular los valores predeterminados y personalizar la implementación y la invocación según sus requisitos. Por ejemplo, puede personalizar el tipo de formato de carga útil de entrada, el tipo de instancia, la configuración de VPC y más para su entorno y caso de uso.

El siguiente código muestra cómo anular el tipo de instancia al implementar su modelo:

finetuned_predictor = estimator.deploy(instance_type="ml.g5.2xlarge")

El SDK JumpStart de SageMaker deploy La función seleccionará automáticamente un tipo de contenido y un serializador predeterminados para usted. Si desea cambiar el tipo de formato de la carga útil de entrada, puede utilizar serializers y content_types objetos para hacer una introspección de las opciones disponibles para usted pasando el model_id del modelo con el que estás trabajando. En el siguiente código, configuramos el formato de entrada de carga útil como JSON configurando JSONSerializer como serializer y application/json como content_type:

from sagemaker import serializers
from sagemaker import content_types

serializer_options = serializers.retrieve_options(model_id=model_id, model_version=model_version)
content_type_options = content_types.retrieve_options(model_id=model_id, model_version=model_version)

pretrained_predictor.serializer = serializers.JSONSerializer()
pretrained_predictor.content_type="application/json"

A continuación, puede invocar el modelo Flan T5 XL para la tarea de resumen con una carga útil en formato JSON. En el siguiente código, también pasamos parámetros de inferencia en la carga útil JSON para que las respuestas sean más precisas:

from sagemaker import serializers

input_text= """Summarize this content - Amazon Comprehend uses natural language processing (NLP) to extract insights about the content of documents. It develops insights by recognizing the entities, key phrases, language, sentiments, and other common elements in a document. Use Amazon Comprehend to create new products based on understanding the structure of documents. For example, using Amazon Comprehend you can search social networking feeds for mentions of products or scan an entire document repository for key phrases.
You can access Amazon Comprehend document analysis capabilities using the Amazon Comprehend console or using the Amazon Comprehend APIs. You can run real-time analysis for small workloads or you can start asynchronous analysis jobs for large document sets. You can use the pre-trained models that Amazon Comprehend provides, or you can train your own custom models for classification and entity recognition. """

parameters = {
    "max_length": 600,
    "num_return_sequences": 1,
    "top_p": 0.01,
    "do_sample": False,
}

payload = {"text_inputs": input_text, **parameters} #JSON Input format

pretrained_predictor.serializer = serializers.JSONSerializer()
query_response = pretrained_predictor.predict(payload)
print(query_response["generated_texts"][0])

Si está buscando más formas de personalizar las entradas y otras opciones de alojamiento y ajuste, consulte la documentación de JumpStartModelo y Estimador JumpStart clases.

Conclusión

En esta publicación, le mostramos cómo puede utilizar el SDK JumpStart de SageMaker simplificado para crear, entrenar e implementar modelos básicos y basados ​​en tareas en solo unas pocas líneas de código. Demostramos las nuevas clases como JumpStartModel y JumpStartEstimator usando el modelo Hugging Face Flan T5-XL como ejemplo. Puede utilizar cualquiera de los otros modelos básicos de SageMaker JumpStart para casos de uso como redacción de contenido, generación de código, respuesta a preguntas, resumen, clasificación, recuperación de información y más. Para ver la lista completa de modelos disponibles con SageMaker JumpStart, consulte Algoritmos integrados con tabla modelo previamente entrenada. SageMaker JumpStart también es compatible modelos de tareas específicas para muchos tipos de problemas populares.

Esperamos que la interfaz simplificada de SageMaker JumpStart SDK le ayude a empezar rápidamente y le permita realizar entregas más rápido. ¡Esperamos escuchar cómo utiliza el SDK JumpStart simplificado de SageMaker para crear aplicaciones interesantes!


Sobre los autores

Evan Kravitz es ingeniero de software en Amazon Web Services y trabaja en SageMaker JumpStart. Está interesado en la confluencia del aprendizaje automático con la computación en la nube. Evan recibió su licenciatura de la Universidad de Cornell y su maestría de la Universidad de California, Berkeley. En 2021, presentó un artículo sobre redes neuronales adversarias en la conferencia ICLR. En su tiempo libre, Evan disfruta cocinar, viajar y salir a correr por la ciudad de Nueva York.

Rachna Chadha es arquitecto principal de soluciones AI/ML en Cuentas Estratégicas en AWS. Rachna es una optimista que cree que el uso ético y responsable de la IA puede mejorar la sociedad en el futuro y generar prosperidad económica y social. En su tiempo libre, a Rachna le gusta pasar tiempo con su familia, hacer senderismo y escuchar música.

Jonathan Guinea es ingeniero de software sénior en Amazon SageMaker JumpStart en AWS. Obtuvo su maestría en la Universidad de Columbia. Sus intereses abarcan el aprendizaje automático, los sistemas distribuidos y la computación en la nube, además de democratizar el uso de la IA. Jonathan es originario de Francia y ahora vive en Brooklyn, Nueva York.

Dr. Ashish Khetan es un científico aplicado senior con algoritmos integrados de Amazon SageMaker y ayuda a desarrollar algoritmos de aprendizaje automático. Obtuvo su doctorado en la Universidad de Illinois Urbana-Champaign. Es un investigador activo en aprendizaje automático e inferencia estadística, y ha publicado numerosos artículos en conferencias NeurIPS, ICML, ICLR, JMLR, ACL y EMNLP.