Operacionalizar la evaluación de LLM a gran escala utilizando los servicios de Amazon SageMaker Clarify y MLOps

Cómo implementar la evaluación de LLM a gran escala utilizando los servicios de Amazon SageMaker Clarify y MLOps

En los últimos años, los Modelos de Lenguaje de Gran Tamaño (LLMs, por sus siglas en inglés) han ganado prominencia como herramientas excepcionales capaces de comprender, generar y manipular texto con una destreza sin precedentes. Sus posibles aplicaciones abarcan desde agentes conversacionales hasta generación de contenido y recuperación de información, prometiendo revolucionar todas las industrias. Sin embargo, aprovechar este potencial al tiempo que se garantiza el uso responsable y efectivo de estos modelos depende del proceso crítico de evaluación de LLMs. Una evaluación es una tarea utilizada para medir la calidad y responsabilidad de la salida de un LLM o servicio de IA generativa. La evaluación de LLMs no solo está motivada por el deseo de comprender el rendimiento de un modelo, sino también por la necesidad de implementar una IA responsable y mitigar el riesgo de proporcionar información errónea o contenido sesgado, y minimizar la generación de contenido dañino, inseguro, malicioso e inético. Además, la evaluación de LLMs también puede ayudar a mitigar los riesgos de seguridad, especialmente en el contexto de la manipulación de datos de instrucción. Para aplicaciones basadas en LLM, es crucial identificar vulnerabilidades e implementar salvaguardias que protejan contra posibles violaciones y manipulaciones no autorizadas de datos.

Al proporcionar herramientas esenciales para evaluar LLMs con una configuración sencilla y un enfoque de un solo clic, Amazon SageMaker Clarify ofrece a los clientes acceso a la mayoría de los beneficios mencionados anteriormente. Con estas herramientas en mano, el próximo desafío es integrar la evaluación de LLMs en el ciclo de vida del Aprendizaje Automático y las Operaciones (MLOps) para lograr la automatización y escalabilidad del proceso. En esta publicación, mostramos cómo integrar la evaluación de LLM de Amazon SageMaker Clarify con las Canalizaciones de Amazon SageMaker para habilitar la evaluación de LLM a gran escala. Además, proporcionamos un ejemplo de código en este repositorio de GitHub para permitir a los usuarios realizar evaluaciones paralelas de múltiples modelos a gran escala, utilizando ejemplos como los modelos Llama2-7b-f, Falcon-7b y Llama2-7b afinados.

¿Quién necesita realizar la evaluación de LLM?

Cualquier persona que entrene, ajuste o simplemente use un LLM pre-entrenado necesita evaluarlo de manera precisa para evaluar el comportamiento de la aplicación alimentada por ese LLM. Basándonos en este principio, podemos clasificar a los usuarios de IA generativa que necesitan capacidades de evaluación de LLM en 3 grupos, como se muestra en la siguiente figura: proveedores de modelos, ajustadores y consumidores.

  • Los proveedores de Modelos Fundamentales (FM, por sus siglas en inglés) entrenan modelos que son de propósito general. Estos modelos se pueden utilizar para muchas tareas posteriores, como extracción de características o generación de contenido. Cada modelo entrenado debe ser comparado con muchas tareas no solo para evaluar su rendimiento, sino también para compararlo con otros modelos existentes, identificar áreas que necesitan mejoras y, finalmente, realizar un seguimiento de los avances en el campo. Los proveedores de modelos también necesitan verificar la presencia de cualquier sesgo para garantizar la calidad del conjunto de datos inicial y el comportamiento correcto de su modelo. La recopilación de datos de evaluación es vital para los proveedores de modelos. Además, estos datos y métricas deben recopilarse para cumplir con las próximas regulaciones. ISO 42001, la Orden Ejecutiva de la Administración Biden y la Ley de IA de la UE desarrollan estándares, herramientas y pruebas para garantizar que los sistemas de IA sean seguros, seguros y confiables. Por ejemplo, la Ley de IA de la UE tiene la tarea de proporcionar información sobre qué conjuntos de datos se utilizan para el entrenamiento, qué potencia de cálculo se requiere para ejecutar el modelo, informar los resultados del modelo en comparación con los estándares públicos/industriales y compartir los resultados de pruebas internas y externas.
  • Los ajustadores de modelos desean resolver tareas específicas (por ejemplo, clasificación de sentimientos, resumen, respuestas a preguntas) y también utilizar modelos pre-entrenados para adoptar tareas específicas de dominio. Necesitan métricas de evaluación generadas por los proveedores de modelos para seleccionar el modelo pre-entrenado adecuado como punto de partida. Necesitan evaluar sus modelos ajustados en función del caso de uso deseado con conjuntos de datos específicos de la tarea o del dominio. Con frecuencia, deben seleccionar y crear sus propios conjuntos de datos privados, ya que los conjuntos de datos disponibles públicamente, incluso aquellos diseñados para una tarea específica, pueden no capturar adecuadamente los matices requeridos para su caso de uso particular. El ajuste fino es más rápido y económico que un entrenamiento completo y requiere una iteración operativa más rápida para la implementación y prueba, debido a que generalmente se generan muchos modelos candidatos. La evaluación de estos modelos permite una mejora continua, calibración y depuración del modelo. Es importante destacar que los ajustadores pueden convertirse en consumidores de sus propios modelos cuando desarrollan aplicaciones del mundo real.
  • Los consumidores de modelos o implementadores de modelos sirven y supervisan modelos de propósito general o modelos ajustados en producción, con el objetivo de mejorar sus aplicaciones o servicios a través de la adopción de LLMs. El primer desafío que enfrentan es garantizar que el LLM elegido se alinee con sus necesidades específicas, costos y expectativas de rendimiento. Interpretar y comprender las salidas del modelo es una preocupación persistente, especialmente cuando se trata de privacidad y seguridad de los datos (por ejemplo, para riesgos de auditoría y cumplimiento en industrias reguladas, como el sector financiero). La evaluación continua del modelo es fundamental para evitar la propagación de sesgos o contenido perjudicial. Al implementar un marco sólido de monitoreo y evaluación, los consumidores de modelos pueden identificar y abordar de manera proactiva la regresión en LLMs, asegurando que estos modelos mantengan su efectividad y confiabilidad con el tiempo.

Cómo realizar la evaluación de LLM

La evaluación efectiva de modelos implica tres componentes fundamentales: uno o más FMs o modelos afinados para evaluar los conjuntos de datos de entrada (indicaciones, conversaciones o entradas regulares) y la lógica de evaluación.

Para seleccionar los modelos para la evaluación, se deben considerar diferentes factores, incluyendo las características de los datos, la complejidad del problema, los recursos computacionales disponibles y el resultado deseado. El almacén de datos de entrada proporciona los datos necesarios para el entrenamiento, ajuste fino y prueba del modelo seleccionado. Es vital que este almacén de datos esté bien estructurado, sea representativo y de alta calidad, ya que el rendimiento del modelo depende en gran medida de los datos que aprende de él. Por último, las lógicas de evaluación definen los criterios y métricas utilizados para evaluar el rendimiento del modelo.

Estos tres componentes forman un marco coherente que garantiza la evaluación rigurosa y sistemática de los modelos de aprendizaje automático, lo que conduce en última instancia a decisiones informadas y mejoras en la eficacia del modelo.

Las técnicas de evaluación de modelos siguen siendo un campo de investigación activo. En los últimos años, la comunidad de investigadores ha creado muchos puntos de referencia y marcos públicos para cubrir una amplia gama de tareas y escenarios, como GLUE, SuperGLUE, HELM, MMLU y BIG-bench. Estos puntos de referencia tienen clasificaciones que se pueden utilizar para comparar y contrastar los modelos evaluados. Los puntos de referencia, como HELM, también tienen como objetivo evaluar métricas más allá de las medidas de precisión, como la precisión o la puntuación F1. El punto de referencia HELM incluye métricas de equidad, sesgo y toxicidad que tienen una importancia igualmente significativa en la puntuación general de evaluación del modelo.

Todos estos puntos de referencia incluyen un conjunto de métricas que miden cómo se desempeña el modelo en una determinada tarea. Las métricas más famosas y comunes son ROUGE (Recall-Oriented Understudy for Gisting Evaluation), BLEU (BiLingual Evaluation Understudy) o METEOR (Metric for Evaluation of Translation with Explicit ORdering). Estas métricas sirven como una herramienta útil para la evaluación automatizada, proporcionando medidas cuantitativas de similitud léxica entre el texto generado y el texto de referencia. Sin embargo, no capturan toda la amplitud de la generación de lenguaje similar al humano, que incluye la comprensión semántica, el contexto o los matices estilísticos. Por ejemplo, HELM no proporciona detalles de evaluación relevantes para casos de uso específicos, soluciones para probar indicaciones personalizadas y resultados de fácil interpretación utilizados por no expertos, debido a que el proceso puede ser costoso, difícilmente escalable y solo para tareas específicas.

Además, para lograr una generación de lenguaje similar al humano a menudo se requiere la incorporación de seres humanos en el proceso para aportar evaluaciones cualitativas y juicio humano que complementen las métricas de precisión automatizadas. La evaluación humana es un método valioso para evaluar las salidas de LLM, pero también puede ser subjetiva y propensa a sesgos, ya que diferentes evaluadores humanos pueden tener opiniones e interpretaciones diversas sobre la calidad del texto. Además, la evaluación humana puede ser intensiva en recursos y costosa y puede requerir un tiempo y esfuerzo significativos.

Sumergámonos en cómo Amazon SageMaker Clarify conecta perfectamente los puntos, ayudando a los clientes a realizar una evaluación y selección exhaustivas de modelos.

Evaluación de LLM con Amazon SageMaker Clarify

Amazon SageMaker Clarify ayuda a los clientes a automatizar las métricas, incluyendo pero no limitado a la precisión, robustez, toxicidad, estereotipos y conocimiento factual para la evaluación automatizada, y el estilo, coherencia y relevancia para la evaluación basada en humanos, y los métodos de evaluación al proporcionar un marco para evaluar LLM y servicios basados en LLM como Amazon Bedrock. Como un servicio completamente gestionado, SageMaker Clarify simplifica el uso de marcos de evaluación de código abierto dentro de Amazon SageMaker. Los clientes pueden seleccionar conjuntos de datos y métricas de evaluación relevantes para sus escenarios y ampliarlos con sus propios conjuntos de datos de indicaciones y algoritmos de evaluación. SageMaker Clarify proporciona resultados de evaluación en múltiples formatos para respaldar diferentes roles en la flujo de trabajo de LLM. Los científicos de datos pueden analizar resultados detallados con las visualizaciones de SageMaker Clarify en Notebooks, Tarjetas de modelo de SageMaker y informes en PDF. Mientras tanto, los equipos de operaciones pueden usar Amazon SageMaker GroundTruth para revisar y anotar elementos de alto riesgo identificados por SageMaker Clarify. Por ejemplo, por estereotipos, toxicidad, PII escapada o baja precisión.

A continuación, se emplean anotaciones y aprendizaje por refuerzo para mitigar los posibles riesgos. Las explicaciones amigables para los humanos de los riesgos identificados aceleran el proceso de revisión manual, reduciendo así los costos. Los informes resumidos ofrecen puntos de referencia comparativos entre diferentes modelos y versiones para los interesados ​​en el negocio, facilitando la toma de decisiones informadas.

La figura siguiente muestra el marco para evaluar LLMs y servicios basados en LLM:

La evaluación del LLM de Amazon SageMaker Clarify es una biblioteca de evaluación de modelos de Fundación de Código Abierto (FMEval) desarrollada por AWS para ayudar a los clientes a evaluar fácilmente LLMs. Todas las funcionalidades también se han incorporado en Amazon SageMaker Studio para permitir la evaluación de LLM para sus usuarios. En las siguientes secciones, presentamos la integración de las capacidades de evaluación de LLM de Amazon SageMaker Clarify con SageMaker Pipelines para permitir la evaluación de LLM a escala utilizando los principios de MLOps.

Ciclo de vida de Amazon SageMaker MLOps

Como describe el artículo “Hoja de ruta de la Fundación MLOps para empresas con Amazon SageMaker”, MLOps es la combinación de procesos, personas y tecnología para producir casos de uso de ML de manera eficiente.

La figura siguiente muestra el ciclo de vida de MLOps de extremo a extremo:

Un viaje típico comienza con un científico de datos creando una libreta de prueba de concepto (PoC) para demostrar que ML puede resolver un problema empresarial. A lo largo del desarrollo de la Prueba de Concepto (PoC), corresponde al científico de datos convertir los Indicadores Clave de Rendimiento (KPIs) empresariales en métricas de modelo de aprendizaje automático, como la precisión o la tasa de falsos positivos, y utilizar un conjunto de datos de prueba limitado para evaluar estas métricas. Los científicos de datos colaboran con ingenieros de ML para hacer la transición del código de las libretas a los repositorios, creando canalizaciones de ML utilizando Amazon SageMaker Pipelines, que conectan varios pasos de procesamiento y tareas, incluyendo el preprocesamiento, entrenamiento, evaluación y postprocesamiento, todo ello incorporando continuamente nuevos datos de producción. La implementación de Amazon SageMaker Pipelines se basa en interacciones de repositorios y activación de canalizaciones CI/CD. La tubería de ML mantiene los modelos de mejor rendimiento, las imágenes de contenedor, los resultados de evaluación y la información de estado en un registro de modelos, donde los interesados en el modelo evalúan el rendimiento y deciden la progresión hacia la producción en función de los resultados de rendimiento y las referencias, seguido de la activación de otra canalización CI/CD para la puesta en escena y la implementación en producción. Una vez en producción, los consumidores de ML utilizan el modelo a través de una inferencia activada por la aplicación a través de una invocación directa o llamadas de API, con bucles de retroalimentación a los propietarios del modelo para la evaluación continua del rendimiento.

Integración de Amazon SageMaker Clarify y MLOps

Siguiendo el ciclo de vida de MLOps, los ajustadores o usuarios de modelos de código abierto producen modelos ajustados o FM utilizando Amazon SageMaker Jumpstart y servicios de MLOps, como se describe en “Implementación de prácticas de MLOps con modelos preentrenados de Amazon SageMaker JumpStart”. Esto lleva a un nuevo campo de operaciones de modelos de fundación (FMOps) y operaciones de LLM (LLMOps) “FMOps/LLMOps: Operacionalizar IA generativa y diferencias con MLOps”.

La figura siguiente muestra el ciclo de vida de LLMOps de extremo a extremo:

En LLMOps, las principales diferencias en comparación con MLOps son la selección del modelo y la evaluación del modelo que involucran diferentes procesos y métricas. En la fase inicial de experimentación, los científicos de datos (o ajustadores) seleccionan el FM que se utilizará para un caso de uso específico de IA generativa. Esto a menudo resulta en la prueba y el ajuste de múltiples FMs, algunos de los cuales pueden producir resultados comparables. Después de la selección del modelo(s), los ingenieros de indicación son responsables de preparar los datos de entrada necesarios y la salida esperada para la evaluación (por ejemplo, indicaciones de entrada que comprenden datos de entrada y consulta) y definir métricas como similitud y toxicidad. Además de estas métricas, los científicos de datos o ajustadores deben validar los resultados y elegir el FM adecuado no solo en métricas de precisión, sino también en otras capacidades como latencia y coste. Luego, pueden implementar un modelo en un punto de enlace de SageMaker y probar su rendimiento a pequeña escala. Si bien la fase de experimentación puede involucrar un proceso sencillo, la transición a la producción requiere que los clientes automatizan el proceso y mejoran la robustez de la solución. Por lo tanto, necesitamos profundizar en cómo automatizar la evaluación, permitiendo a los evaluadores realizar una evaluación eficiente a gran escala e implementar el monitoreo en tiempo real de la entrada y salida del modelo.

Automatizar la evaluación de FM

Amazon SageMaker Pipelines automatiza todas las etapas de preprocesamiento, ajuste fino de FM (opcionalmente) y evaluación a escala. Dado los modelos seleccionados durante la experimentación, los ingenieros de prompts deben cubrir un conjunto más grande de casos preparando muchos prompts y almacenándolos en un repositorio de almacenamiento designado llamado catálogo de prompts. Para obtener más información, consulte FMOps/LLMOps: Operativizar IA generativa y diferencias con MLOps. Luego, Amazon SageMaker Pipelines se puede estructurar de la siguiente manera:

Escenario 1: Evaluar múltiples FMs: En este escenario, los FMs pueden cubrir el caso de uso comercial sin ajuste fino. El Pipeline de Amazon SageMaker consiste en los siguientes pasos: preprocesamiento de datos, evaluación paralela de múltiples FMs, comparación de modelos y selección basada en exactitud y otras propiedades como costo o latencia, registro de artefactos de modelos seleccionados y metadatos.

El siguiente diagrama ilustra esta arquitectura.

Escenario 2: Ajustar fino y evaluar múltiples FMs: En este escenario, el Pipeline de Amazon SageMaker se estructura de manera similar al Escenario 1, pero se ejecuta en paralelo tanto el ajuste fino como los pasos de evaluación para cada FM. El mejor modelo ajustado fino se registrará en el Registro de Modelos.

El siguiente diagrama ilustra esta arquitectura.

Escenario 3: Evaluar múltiples FMs y FMs ajustados fino: Este escenario es una combinación de la evaluación de FMs de propósito general y FMs ajustados fino. En este caso, los clientes desean verificar si un modelo ajustado fino puede funcionar mejor que un FM de propósito general.

La siguiente figura muestra los pasos resultantes del Pipeline de SageMaker.

Tenga en cuenta que el registro del modelo sigue dos patrones: (a) almacenar un modelo de código abierto y artefactos o (b) almacenar una referencia a un FM propietario. Para obtener más información, consulte FMOps/LLMOps: Operativizar IA generativa y diferencias con MLOps.

Descripción general de la solución

Para acelerar su viaje hacia la evaluación de LLM a escala, creamos una solución que implementa los escenarios utilizando tanto Amazon SageMaker Clarify como el nuevo Amazon SageMaker Pipelines SDK. Ejemplo de código, incluidos conjuntos de datos, notebooks de origen y Pipelines de SageMaker (pasos y canalización de ML), está disponible en GitHub. Para desarrollar esta solución de ejemplo, hemos utilizado dos FMs: Llama2 y Falcon-7B. En esta publicación, nos enfocamos principalmente en los elementos clave de la solución de Pipeline de SageMaker pertenecientes al proceso de evaluación.

Configuración de evaluación: Con el propósito de estandarizar el procedimiento de evaluación, hemos creado un archivo de configuración YAML (evaluation_config.yaml) que contiene los detalles necesarios para el proceso de evaluación, incluidos el conjunto de datos, el(los) modelo(s) y los algoritmos que se ejecutarán durante el paso de evaluación del Pipeline de SageMaker. El siguiente ejemplo ilustra el archivo de configuración:

pipeline:    name: "llm-evaluation-multi-models-hybrid"dataset:    dataset_name: "trivia_qa_sampled"    input_data_location: "evaluation_dataset_trivia.jsonl"    dataset_mime_type: "jsonlines"    model_input_key: "question"    target_output_key: "answer"models:  - name: "llama2-7b-f"    model_id: "meta-textgeneration-llama-2-7b-f"    model_version: "*"    endpoint_name: "llm-eval-meta-textgeneration-llama-2-7b-f"    deployment_config:      instance_type: "ml.g5.2xlarge"      num_instances: 1    evaluation_config:      output: '[0].generation.content'      content_template: [[{"role":"user", "content": "PROMPT_PLACEHOLDER"}]]      inference_parameters:         max_new_tokens: 100        top_p: 0.9        temperature: 0.6      custom_attributes:        accept_eula: True      prompt_template: "$feature"    cleanup_endpoint: True  - name: "falcon-7b"    ...  - name: "llama2-7b-finetuned"    ...    finetuning:      train_data_path: "train_dataset"      validation_data_path: "val_dataset"      parameters:        instance_type: "ml.g5.12xlarge"        num_instances: 1        epoch: 1        max_input_length: 100        instruction_tuned: True        chat_dataset: False    ...algorithms:  - algorithm: "FactualKnowledge"     module: "fmeval.eval_algorithms.factual_knowledge"    config: "FactualKnowledgeConfig"    target_output_delimiter: "<OR>"

Paso de evaluación: El nuevo SDK de SageMaker Pipeline brinda a los usuarios la flexibilidad de definir pasos personalizados en el flujo de trabajo de ML utilizando el decorador Python ‘@step’. Por lo tanto, los usuarios deben crear un script básico de Python que realice la evaluación de la siguiente manera:

def evaluacion(ruta_s3_datos, nombre_endpoint, config_datos, config_modelo, config_algoritmo, ruta_datos_salida):    from fmeval.data_loaders.data_config import DataConfig    from fmeval.model_runners.sm_jumpstart_model_runner import JumpStartModelRunner    from fmeval.reporting.eval_output_cells import EvalOutputCell    from fmeval.constants import MIME_TYPE_JSONLINES    s3 = boto3.client("s3")    bucket, object_key = parse_s3_url(ruta_s3_datos)    s3.download_file(bucket, object_key, "dataset.jsonl")    config = DataConfig(        dataset_name=config_datos["dataset_name"],        dataset_uri="dataset.jsonl",        dataset_mime_type=MIME_TYPE_JSONLINES,        model_input_location=config_datos["model_input_key"],        target_output_location=config_datos["target_output_key"],    )    evaluation_config = config_modelo["evaluation_config"]    content_dict = {        "inputs": evaluation_config["content_template"],        "parameters": evaluation_config["inference_parameters"],    }    serializer = JSONSerializer()    serialized_data = serializer.serialize(content_dict)    content_template = serialized_data.replace('"PROMPT_PLACEHOLDER"', "$prompt")    print(content_template)    js_model_runner = JumpStartModelRunner(        endpoint_name=nombre_endpoint,        model_id=config_modelo["model_id"],        model_version=config_modelo["model_version"],        output=evaluation_config["output"],        content_template=content_template,        custom_attributes="accept_eula=true",    )    eval_output_all = []    s3 = boto3.resource("s3")    output_bucket, output_index = parse_s3_url(ruta_datos_salida)    for algoritmo in config_algoritmo:        nombre_algoritmo = algoritmo["algorithm"]        modulo = importlib.import_module(algoritmo["module"])        clase_algoritmo = getattr(modulo, nombre_algoritmo)        clase_config_algoritmo = getattr(modulo, algoritmo["config"])        eval_algo = clase_algoritmo(clase_config_algoritmo(target_output_delimiter=algoritmo["target_output_delimiter"]))        eval_output = eval_algo.evaluate(model=js_model_runner, dataset_config=config, prompt_template=evaluation_config["prompt_template"], save=True,)                print(f"eval_output: {eval_output}")        eval_output_all.append(eval_output)        html = markdown.markdown(str(EvalOutputCell(eval_output[0])))        file_index = (output_index + "/" + config_modelo["name"] + "_" + eval_algo.eval_name + ".html")        s3_object = s3.Object(bucket_name=output_bucket, key=file_index)        s3_object.put(Body=html)    eval_result = {"config_modelo": config_modelo, "eval_output": eval_output_all}    print(f"eval_result: {eval_result}")    return eval_result

SageMaker Pipeline: Después de crear los pasos necesarios, como el preprocesamiento de datos, la implementación del modelo y la evaluación del modelo, el usuario necesita vincular los pasos utilizando el SDK de SageMaker Pipeline. El nuevo SDK genera automáticamente el flujo de trabajo interpretando las dependencias entre los diferentes pasos cuando se invoca la API de creación de SageMaker Pipeline, como se muestra en el siguiente ejemplo:

import osimport argparsefrom datetime import datetimeimport sagemakerfrom sagemaker.workflow.pipeline import Pipelinefrom sagemaker.workflow.function_step import stepfrom sagemaker.workflow.step_outputs import get_step# Importar los pasos necesariosfrom steps.preprocess import preprocessfrom steps.evaluation import evaluationfrom steps.cleanup import cleanupfrom steps.deploy import deployfrom lib.utils import ConfigParserfrom lib.utils import find_model_by_nameif __name__ == "__main__":    os.environ["SAGEMAKER_USER_CONFIG_OVERRIDE"] = os.getcwd()    sagemaker_session = sagemaker.session.Session()    # Definir la ubicación de los datos proporcionándola como argumento o utilizando el bucket predeterminado    default_bucket = sagemaker.Session().default_bucket()    parser = argparse.ArgumentParser()    parser.add_argument("-input-data-path", "--input-data-path", dest="input_data_path", default=f"s3://{default_bucket}/llm-evaluation-at-scale-example", help="La ruta S3 de los datos de entrada",)    parser.add_argument("-config", "--config", dest="config", default="", help="La ruta al archivo de configuración .yaml",)    args = parser.parse_args()    # Inicializar la configuración para datos, modelo y algoritmo    if args.config:        config = ConfigParser(args.config).get_config()    else:        config = ConfigParser("pipeline_config.yaml").get_config()    evalaution_exec_id = datetime.now().strftime("%Y_%m_%d_%H_%M_%S")    pipeline_name = config["pipeline"]["name"]    dataset_config = config["dataset"]  # Obtener la configuración del conjunto de datos    input_data_path = args.input_data_path + "/" + dataset_config["input_data_location"]    output_data_path = (args.input_data_path + "/output_" + pipeline_name + "_" + evalaution_exec_id)    print("Ubicación de entrada de datos:", input_data_path)    print("Ubicación de salida de datos:", output_data_path)    algorithms_config = config["algorithms"]  # Obtener la configuración de los algoritmos    model_config = find_model_by_name(config["models"], "llama2-7b")    model_id = model_config["model_id"]    model_version = model_config["model_version"]    evaluation_config = model_config["evaluation_config"]    endpoint_name = model_config["endpoint_name"]    model_deploy_config = model_config["deployment_config"]    deploy_instance_type = model_deploy_config["instance_type"]    deploy_num_instances = model_deploy_config["num_instances"]    # Construir los pasos    processed_data_path = step(preprocess, name="preprocesar")(input_data_path, output_data_path)    endpoint_name = step(deploy, name=f"implementar_{model_id}")(model_id, model_version, endpoint_name, deploy_instance_type, deploy_num_instances,)    evaluation_results = step(evaluation, name=f"evaluacion_{model_id}", keep_alive_period_in_seconds=1200)(processed_data_path, endpoint_name, dataset_config, model_config, algorithms_config, output_data_path,)    last_pipeline_step = evaluation_results    if model_config["cleanup_endpoint"]:        cleanup = step(cleanup, name=f"limpieza_{model_id}")(model_id, endpoint_name)        get_step(cleanup).add_depends_on([evaluation_results])        last_pipeline_step = cleanup    # Definir la SageMaker Pipeline    pipeline = Pipeline(        name=pipeline_name,        steps=[last_pipeline_step],    )    # Construir y ejecutar la SageMaker Pipeline    pipeline.upsert(role_arn=sagemaker.get_execution_role())    # pipeline.upsert(role_arn="arn:aws:iam::<...>:role/service-role/AmazonSageMaker-ExecutionRole-<...>")    pipeline.start()

El ejemplo implementa la evaluación de un solo FM mediante el preprocesamiento del conjunto de datos inicial, la implementación del modelo y la ejecución de la evaluación. El grafo acíclico dirigido (DAG) del pipeline generado se muestra en la siguiente imagen.

Siguiendo un enfoque similar y utilizando y adaptando el ejemplo en Afinar modelos LLaMA 2 en SageMaker JumpStart, creamos el pipeline para evaluar un modelo afinado, como se muestra en la siguiente imagen.

Utilizando los pasos anteriores de la Pipelines de SageMaker como “bloques de Lego”, hemos desarrollado la solución para el Escenario 1 y el Escenario 3, como se muestra en las siguientes imágenes. Específicamente, el repositorio de GitHub permite al usuario evaluar múltiples FMs en paralelo o realizar una evaluación más compleja combinando la evaluación de modelos de foundation y fine-tuned.

Las funcionalidades adicionales disponibles en el repositorio incluyen las siguientes:

  • Generación dinámica de pasos de evaluación: Nuestra solución genera todos los pasos de evaluación necesarios de forma dinámica basándose en el archivo de configuración para permitir a los usuarios evaluar cualquier número de modelos. Hemos ampliado la solución para admitir una integración sencilla de nuevos tipos de modelos, como Hugging Face o Amazon Bedrock.
  • Evitar la implementación de puntos finales: Si ya existe un punto final, omitimos el proceso de implementación. Esto permite al usuario reutilizar puntos finales con FMs para la evaluación, lo que resulta en ahorros de costes y reducción del tiempo de implementación.
  • Limpieza de puntos finales: Después de completar la evaluación, la Pipelines de SageMaker desmantela los puntos finales implementados. Esta funcionalidad se puede ampliar para mantener el punto final del mejor modelo activo.
  • Paso de selección de modelo: Hemos añadido un marcador de posición para el paso de selección de modelo que requiere la lógica empresarial de la selección final del modelo, incluyendo criterios como coste o latencia.
  • Paso de registro de modelos: El mejor modelo se puede registrar en el Registro de modelos de Amazon SageMaker como una nueva versión de un grupo de modelos específico.
  • Piscina cálida: Las piscinas cálidas gestionadas por SageMaker le permiten mantener y reutilizar la infraestructura asignada después de completar un trabajo para reducir la latencia de las cargas de trabajo repetitivas.

La siguiente imagen ilustra estas capacidades y un ejemplo de evaluación multi-modelo que los usuarios pueden crear fácilmente y de forma dinámica utilizando nuestra solución en este repositorio de GitHub.

Hemos dejado intencionalmente fuera del alcance la preparación de datos, ya que se describirá en detalle en una publicación diferente, incluyendo los diseños de catálogos de instrucciones, plantillas de instrucciones y optimización de instrucciones. Para obtener más información y definiciones de componentes relacionados, consulte FMOps/LLMOps: Operacionalizar la IA generativa y las diferencias con MLOps.

Conclusión

En esta publicación, nos enfocamos en cómo automatizar y operacionalizar la evaluación de LLM a gran escala utilizando las capacidades de evaluación de Amazon SageMaker Clarify y Amazon SageMaker Pipelines. Además de los diseños de arquitectura teóricos, tenemos código de ejemplo en este repositorio de GitHub (con Llama2 y Falcon-7B FMs) para que los clientes puedan desarrollar sus propios mecanismos de evaluación escalable.

La siguiente ilustración muestra la arquitectura de evaluación del modelo.

En esta publicación, nos enfocamos en operacionalizar la evaluación de LLM a gran escala, como se muestra en el lado izquierdo de la ilustración. En el futuro, nos enfocaremos en desarrollar ejemplos que cumplan con el ciclo de vida de extremo a extremo de FMs para su implementación siguiendo la guía descrita en FMOps/LLMOps: Operacionalizar la IA generativa y diferencias con MLOps. Esto incluye el servicio de LLM, el monitoreo, el almacenamiento de la calificación de salida que finalmente desencadenará una reevaluación y ajuste automático, y, por último, el uso de humanos en el proceso para trabajar en datos etiquetados o catálogo de sugerencias.

We will continue to update Zepes; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

Inteligencia Artificial

Conoce los Modelos de Difusión Compartimentados (CDM) Un enfoque de IA para entrenar diferentes modelos de difusión o indicaciones en distintas fuentes de datos.

Con los avances recientes en tecnología y en el campo de la Inteligencia Artificial, ha habido mucho progreso y mejor...

Inteligencia Artificial

¿Qué es la innatismo y importa para la inteligencia artificial? (Parte 2)

La cuestión de la innatitud, tanto en biología como en inteligencia artificial, es crucial para el futuro de la IA si...

Inteligencia Artificial

NVIDIA impulsa el entrenamiento para algunos de los modelos más grandes de la Fundación Amazon Titan.

Todo sobre los grandes modelos de lenguaje es grande: los modelos gigantes se entrenan en conjuntos de datos masivos ...

Inteligencia Artificial

Decodificación anticipada un algoritmo de decodificación paralela para acelerar la inferencia de LLM

Aunque los modelos de lenguaje grandes (LLM) como GPT-4 y LLaMA están reimaginando rápidamente las aplicaciones moder...