Evaluar modelos de lenguaje grandes en cuanto a calidad y responsabilidad

Evaluar la calidad y responsabilidad de los modelos de lenguaje grandes

Los riesgos asociados con la inteligencia artificial generativa han sido ampliamente publicitados. La toxicidad, el sesgo, la fuga de PII y las alucinaciones afectan negativamente la reputación de una organización y dañan la confianza del cliente. La investigación muestra que no solo los riesgos de sesgo y toxicidad se transfieren de los modelos de base preentrenados (FM) a los servicios de IA generativa específicos de la tarea, sino que ajustar un FM para tareas específicas, en conjuntos de datos incrementales, introduce nuevos y posiblemente mayores riesgos. Detectar y gestionar estos riesgos, según lo prescrito por directrices y regulaciones en evolución, como ISO 42001 y EU AI Act, es un desafío. Los clientes deben abandonar su entorno de desarrollo para usar herramientas académicas y sitios de referencia, que requieren conocimientos altamente especializados. La gran cantidad de métricas dificulta filtrar las que son realmente relevantes para sus casos de uso. Este proceso tedioso se repite con frecuencia a medida que se lanzan nuevos modelos y se ajustan los existentes.

Amazon SageMaker Clarify ahora proporciona a los clientes de AWS evaluaciones de modelos de base (FM), un conjunto de capacidades diseñadas para evaluar y comparar métricas de calidad y responsabilidad del modelo de cualquier LLM, en minutos. Las evaluaciones de FM ofrecen ideas prácticas basadas en la ciencia estándar de la industria, que podrían ampliarse para respaldar casos de uso específicos del cliente. Se proporcionan puntajes de evaluación verificables en tareas de generación de texto, resumen, clasificación y respuesta a preguntas, incluidos escenarios y algoritmos personalizados definidos por el cliente. Los informes resumen de manera integral cada evaluación de manera legible para humanos, a través de explicaciones en lenguaje natural, visualizaciones y ejemplos, centrando a los anotadores y científicos de datos en dónde optimizar sus LLM y ayudando a tomar decisiones informadas. También se integra con los flujos de trabajo de Machine Learning y Operation (MLOps) en Amazon SageMaker para automatizar y escalar el ciclo de vida del ML.

¿Qué es FMEval?

Con las evaluaciones de FM, presentamos FMEval, una biblioteca de evaluación de LLM de código abierto, diseñada para brindar a los científicos de datos e ingenieros de ML una experiencia de código primero para evaluar LLM en términos de calidad y responsabilidad al seleccionar o adaptar LLM a casos de uso específicos. FMEval permite realizar evaluaciones tanto para los puntos finales del modelo LLM como para el punto final de un servicio de IA generativa en su totalidad. FMEval ayuda a medir dimensiones de evaluación como precisión, robustez, sesgo, toxicidad y conocimiento fáctico para cualquier LLM. Puede usar FMEval para evaluar LLM alojados en AWS como Amazon Bedrock, Jumpstart y otros modelos de SageMaker. También puede usarlo para evaluar LLM alojados en plataformas de creación de modelos de terceros, como ChatGPT, HuggingFace y LangChain. Esta opción permite a los clientes consolidar toda su lógica de evaluación de LLM en un solo lugar, en lugar de dispersar las inversiones en evaluación en múltiples plataformas.

¿Cómo puedes empezar? Puedes usar directamente FMEval donde ejecutes tus cargas de trabajo, como un paquete de Python o a través del repositorio de código de fuente abierta, que está disponible en GitHub para mayor transparencia y como una contribución a la comunidad de IA responsable. FMEval no ofrece recomendaciones explícitas, sino que proporciona datos y reportes fáciles de comprender para que los clientes de AWS tomen decisiones. FMEval te permite cargar tus propios conjuntos de datos de prompts y algoritmos. La función principal de evaluación, evaluar(), es extensible. Puedes cargar un conjunto de datos de prompts, seleccionar y cargar una función de evaluación y ejecutar un trabajo de evaluación. Los resultados se entregan en múltiples formatos, lo que te ayuda a revisar, analizar y operacionalizar los elementos de alto riesgo y tomar una decisión informada sobre el LLM correcto para tu caso de uso.

Algoritmos compatibles

FMEval ofrece 12 evaluaciones integradas que cubren 4 tareas diferentes. Dado que el número posible de evaluaciones está en cientos y el panorama de evaluación sigue expandiéndose, FMEval se basa en los últimos hallazgos científicos y las evaluaciones de código abierto más populares. Hemos evaluado los marcos de evaluación de código abierto existentes y diseñado la API de evaluación para FMEval teniendo en cuenta la capacidad de extensión. El conjunto propuesto de evaluaciones no pretende cubrir todos los aspectos del uso de LLM, sino ofrecer evaluaciones populares de manera predeterminada y permitir la incorporación de nuevas evaluaciones.

FMEval abarca las siguientes cuatro tareas diferentes y cinco dimensiones de evaluación diferentes, como se muestra en la siguiente tabla:

Tarea Dimensión de evaluación
Generación de texto abierto Sesgo en la prompt
. Toxicidad
. Conocimiento factual
. Solidez semántica
Resumen de texto Precisión
. Toxicidad
. Solidez semántica
Respuesta a preguntas (Q&A) Precisión
. Toxicidad
. Solidez semántica
Clasificación Precisión
. Solidez semántica

Para cada evaluación, FMEval proporciona conjuntos de datos de prompt incorporados que han sido seleccionados de comunidades académicas y de código abierto para que puedas comenzar. Los clientes utilizarán los conjuntos de datos incorporados para comparar el rendimiento de sus modelos y aprender cómo evaluar sus propios conjuntos de datos personalizados creados específicamente para un caso de uso de generación de IA.

En la siguiente sección, profundizaremos en las diferentes evaluaciones:

  1. Precisión: Evalúa el rendimiento del modelo en diferentes tareas, con métricas de evaluación específicas adaptadas para cada tarea, como resumen, respuesta a preguntas (Q&A) y clasificación.
    1. Resumen – Consiste en tres métricas: (1) puntuaciones ROUGE-N (un conjunto métricas de superposición de palabras N-gramas basadas en recordatorio y medida-F que calculan la superposición entre las referencias y el resumen generado por el modelo. Las métricas no distinguen entre mayúsculas y minúsculas y los valores están en el rango de 0 (sin coincidencia) a 1 (coincidencia perfecta)); (2) puntuación METEOR (similar a ROUGE, pero incluye el uso de raíces de palabras y sinónimos a través de listas de sinónimos, por ejemplo, “lluvia” → “llovizna”); (3) puntuación BERTScore (un segundo modelo de ML de la familia BERT para calcular incrustaciones de oraciones y comparar su similitud coseno. Este puntaje puede tener en cuenta una flexibilidad lingüística adicional en comparación con ROUGE y METEOR, ya que las oraciones semánticamente similares pueden estar más cercanas entre sí).
    2. Q&A – Mide el rendimiento del modelo tanto en el escenario de libro cerrado como en el de libro abierto. En el caso de libro abierto, se le presenta al modelo un texto de referencia que contiene la respuesta (el objetivo del modelo es extraer la respuesta correcta del texto). En el caso de libro cerrado, el modelo no recibe ninguna información adicional pero utiliza su propio conocimiento del mundo para responder a la pregunta. Utilizamos conjuntos de datos como BoolQNaturalQuestions y TriviaQA. Esta dimensión informa sobre tres métricas principales: Coincidencia exacta, Coincidencia Cuasi-Exacta y F1 en palabras, evaluadas al comparar las respuestas predichas del modelo con las respuestas verdaderas proporcionadas. Los tres puntajes se informan como un promedio en el conjunto de datos completo. El puntaje agregado es un número entre 0 (peor) y 1 (mejor) para cada métrica.
    3. Clasificación – Utiliza métricas estándar de clasificación como precisión, recuperación y exactitud de clasificación equilibrada. Nuestro ejemplo de tarea incorporada es la clasificación de sentimientos, donde el modelo predice si una reseña de usuario es positiva o negativa, y proporcionamos, por ejemplo, el conjunto de datos Reseñas de ropa de mujer en comercio electrónico, que consta de 23,000 reseñas de ropa, tanto en texto como en puntajes numéricos.
  2. Solidez semántica: Evalúa el cambio en el rendimiento del modelo de salida como resultado de perturbaciones semánticamente preservadoras en las entradas. Se puede aplicar a cualquier tarea que involucre generación de contenido (incluyendo generación de texto abierto, resumen y respuesta a preguntas). Por ejemplo, supongamos que la entrada al modelo es <code

    Uso de la biblioteca FMEval para evaluaciones

    Los usuarios pueden implementar evaluaciones para sus FM utilizando el paquete de código abierto FMEval. El paquete FMEval viene con algunas construcciones principales que son necesarias para realizar trabajos de evaluación. Estas construcciones ayudan a establecer los conjuntos de datos, el modelo que estás evaluando y el algoritmo de evaluación que estás implementando. Los tres elementos principales se pueden heredar y adaptar para casos de uso personalizados, por lo que no estás limitado a utilizar las funciones incorporadas proporcionadas. Las construcciones principales se definen como los siguientes objetos en el paquete FMEval:

    • Data config : El objeto de configuración de datos señala la ubicación de tu conjunto de datos, ya sea local o en una ruta de S3. Además, la configuración de datos contiene campos como model_input, target_output y model_output. Dependiendo del algoritmo de evaluación que estés utilizando, estos campos pueden variar. Por ejemplo, para el conocimiento factual, se esperan una entrada de modelo y una salida objetivo para que el algoritmo de evaluación se ejecute correctamente. Opcionalmente, también puedes completar previamente la salida del modelo y no preocuparte por configurar un objeto Modelo Runner, ya que la inferencia ya se ha completado previamente.
    • Model runner : Un Model Runner es el FM que has alojado y realizará la inferencia. Con el paquete FMEval, el alojamiento del modelo es agnóstico, pero se proporcionan algunos Model Runners integrados. Por ejemplo, se han proporcionado clases nativas de JumpStart, Amazon Bedrock y SageMaker Endpoint Model Runner. Aquí puedes proporcionar los metadatos para esta información de alojamiento del modelo junto con el formato/plantilla de entrada que tu modelo específico espera. En el caso de que tu conjunto de datos ya tenga inferencia de modelo, no necesitas configurar un Modelo Runner. En el caso de que tu Modelo Runner no sea proporcionado nativamente por FMEval, puedes heredar la clase base Model Runner y escribir por encima el método predict con tu lógica personalizada.
    • Algoritmo de evaluación : Para una lista exhaustiva de los algoritmos de evaluación disponibles en FMEval, consulta Aprende sobre las evaluaciones de modelos. Para tu algoritmo de evaluación, puedes suministrar tu Configuración de Datos y Model Runner o solo tu Configuración de Datos en el caso de que tu conjunto de datos ya contenga la salida de tu modelo. Con cada algoritmo de evaluación, tienes dos métodos: evaluate_sample y evaluate. Con evaluate_sample, puedes evaluar un solo punto de datos bajo el supuesto de que la salida del modelo ya se ha proporcionado. Para un trabajo de evaluación, puedes iterar sobre toda tu Configuración de Datos que has proporcionado. Si se proporcionan valores de inferencia del modelo, el trabajo de evaluación simplemente se ejecutará en todo el conjunto de datos y se aplicará el algoritmo. En caso de que no se proporcione una salida del modelo, el Modelo Runner ejecutará la inferencia en cada muestra y luego se aplicará el algoritmo de evaluación. También puedes llevar un Algoritmo de Evaluación personalizado similar a un Modelo Runner personalizado, heredando la clase base Evaluation Algorithm y sobrescribiendo los métodos evaluate_sample y evaluate con la lógica necesaria para tu algoritmo.

    Configuración de datos

    Para tu Configuración de Datos, puedes señalar hacia tu conjunto de datos o utilizar uno de los conjuntos de datos proporcionados por FMEval. En este ejemplo, utilizaremos el conjunto de datos predefinido “tiny_dataset”, que contiene preguntas y respuestas objetivo. En este caso, no hay una salida del modelo predefinida, por lo que definiremos también un Modelo Runner para realizar la inferencia en la entrada del modelo.

    from fmeval.data_loaders.data_config import DataConfigconfig = DataConfig(    dataset_name="tiny_dataset",    dataset_uri="tiny_dataset.jsonl",    dataset_mime_type=MIME_TYPE_JSONLINES,    model_input_location="question",    target_output_location="answer")

    Model Runner de JumpStart

    En caso de que estés utilizando SageMaker JumpStart para alojar tu FM, puedes proporcionar opcionalmente el nombre del punto de conexión existente o el ID de modelo de JumpStart. Cuando proporcionas el ID del modelo, FMEval creará este punto de conexión para que puedas realizar inferencia. Aquí es importante definir la plantilla de contenido, que varía según tu FM, por lo que es importante configurar esta content_template para que refleje el formato de entrada que espera tu FM. Además, también debes configurar el análisis de salida en un formato JMESPath para que FMEval lo entienda correctamente.

    from fmeval.model_runners.sm_jumpstart_model_runner import JumpStartModelRunnermodel_id, model_version, = (    "huggingface-llm-falcon-7b-instruct-bf16",    "*",)js_model_runner = JumpStartModelRunner(    endpoint_name=nombre_punto_conexion,    model_id=model_id,    model_version=model_version,    output='[0].generated_text',    content_template='{"inputs": $prompt, "parameters": {"do_sample": true, "top_p": 0.9, "temperature": 0.8, "max_new_tokens": 1024}}',)

    Ejecución del modelo Bedrock

    La configuración para ejecutar el modelo Bedrock es muy similar a la del modelo runner de JumpStart. En el caso de Bedrock, no hay un punto final, por lo que solo debes proporcionar el ID del modelo.

    model_id = 'anthropic.claude-v2'bedrock_model_runner = BedrockModelRunner(    model_id=model_id,    output='completion',    content_template='{"prompt": $prompt, "max_tokens_to_sample": 500}')

    Ejecución de modelo personalizado

    En algunos casos, es posible que necesites usar un modelo runner personalizado. Por ejemplo, si tienes un modelo de HuggingFace Hub o un modelo de OpenAI, puedes heredar la clase base del modelo runner y definir tu propio método de predicción. Este método de predicción es donde se ejecuta la inferencia por el modelo runner, por lo tanto, aquí puedes definir tu propio código personalizado. Por ejemplo, en el caso de usar GPT 3.5 Turbo con OpenAI, puedes construir un modelo runner personalizado como se muestra en el siguiente código:

    class ChatGPTModelRunner(ModelRunner):    url = "https://api.openai.com/v1/chat/completions"    def __init__(self, model_config: ChatGPTModelConfig):        self.config = model_config    def predict(self, prompt: str) -> Tuple[Optional[str], Optional[float]]:        payload = json.dumps({            "model": "gpt-3.5-turbo",            "messages": [                 {                     "role": "user",                     "content": prompt                 }            ],            "temperature": self.config.temperature,            "top_p": self.config.top_p,            "n": 1,            "stream": False,            "max_tokens": self.config.max_tokens,            "presence_penalty": 0,            "frequency_penalty": 0        })        headers = {             'Content-Type': 'application/json',             'Accept': 'application/json',             'Authorization': self.config.api_key        }        response = requests.request("POST", self.url, headers=headers, data=payload)        return json.loads(response.text)["choices"][0]["message"]["content"], None

    Evaluación

    Una vez que hayas definido la configuración de los datos y opcionalmente los objetos del modelo runner, puedes configurar la evaluación. Puedes obtener el algoritmo de evaluación necesario, que en este ejemplo se muestra como conocimiento factual.

    from fmeval.fmeval import get_eval_algorithmfrom fmeval.eval_algorithms.factual_knowledge import FactualKnowledgeConfig# Evaluación de conocimiento factualeval_algorithm_config = FactualKnowledgeConfig("<OR>")eval_algo = get_eval_algorithm("factual_knowledge")(eval_algorithm_config)

    Existen dos métodos de evaluación que puedes ejecutar: evaluate_sample y evaluate. Evaluate_sample se puede ejecutar cuando ya tienes la salida del modelo en un solo punto de datos, similar al siguiente ejemplo de código:

    # Evalúa tu muestra personalizadamodel_output = model_runner.predict("¿Cuál es la capital de Londres?")[0]print(model_output)eval_algo.evaluate_sample(target_output="Reino Unido<O>Inglaterra<O>Reino Unido", model_output=model_output)

    Cuando estás ejecutando la evaluación en un conjunto de datos completo, puedes ejecutar el método evaluate, donde pasas el Modelo Runner, la Configuración de Datos y una Plantilla de Prompt. La Plantilla de Prompt es donde puedes ajustar y diseñar tu prompt para probar diferentes plantillas como desees. Esta Plantilla de Prompt se inyecta en el valor $prompt en nuestro parámetro Content_Template que hemos definido en el Modelo Runner.

    eval_outputs = eval_algo.evaluate(model=model, dataset_config=dataset_config, prompt_template="$feature", save=True)

    Para obtener más información y ejemplos completos, consulta el repositorio.

    Conclusión

    Las evaluaciones de FM permiten a los clientes confiar en que el LLM que elijan sea el adecuado para su caso de uso y que funcione de manera responsable. Es un marco de IA responsable y extensible integrado nativamente en Amazon SageMaker que mejora la transparencia de los modelos de lenguaje al permitir una evaluación y comunicación más fácil de los riesgos a lo largo del ciclo de vida del ML. Es un paso importante para aumentar la confianza y la adopción de LLM en AWS.

    Para obtener más información sobre las evaluaciones de FM, consulta la documentación del producto y consulta otros notebooks de ejemplo disponibles en nuestro repositorio de GitHub. También puedes explorar formas de operacionalizar la evaluación de LLM a gran escala, como se describe en este blogpost.

    </code

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

Un derrame le robó la capacidad de hablar a los 30 años. La IA está ayudando a restaurarla años después.

La actividad cerebral de una mujer paralizada se está traduciendo en palabras habladas por un avatar. Este hito podrí...

Inteligencia Artificial

Mejor que GPT-4 para consultas SQL NSQL (Totalmente OpenSource)

Levanta la mano si has intentado usar ChatGPT o cualquiera de los otros LLM para generar consultas SQL. ¡Yo lo he hec...

Inteligencia Artificial

Upstage presenta Solar-10.7B modelos de lenguaje grandes pioneros con escalado en profundidad y precisión ajustada para conversaciones de un solo turno

Los investigadores de Upstage (una empresa de IA de Corea del Sur) han abordado el desafío de maximizar el rendimient...

Inteligencia Artificial

Nuevo ahora están disponibles las capacidades de IA generativa sin código en Amazon SageMaker Canvas

Lanzado en 2021, Amazon SageMaker Canvas es un servicio visual y de clic que permite a analistas de negocios y cientí...

Inteligencia Artificial

Conoce a los razonadores RAP y LLM Dos marcos basados en conceptos similares para el razonamiento avanzado con LLMs

Cada día que pasa trae un progreso notable en los Modelos de Lenguaje Grandes (LLMs), lo que lleva a herramientas y a...