Los tres métodos esenciales para evaluar un nuevo modelo de lenguaje

'Tres métodos esenciales para evaluar un nuevo modelo de lenguaje.'

Cómo comprobar si el nuevo y más popular Modelo de Lenguaje Grande (LLM) se adapta a tus necesidades

Imagen del autor (utilizando Stable Diffusion)

¿De qué se trata esto?

Se lanzan nuevos LLMs cada semana, y si eres como yo, es posible que te preguntes: ¿Este finalmente se adapta a todos los casos de uso en los que quiero utilizar un LLM? En este tutorial, compartiré las técnicas que utilizo para evaluar nuevos LLMs. Presentaré tres técnicas que utilizo regularmente, ninguna de ellas es nueva (de hecho, me referiré a publicaciones de blog que he escrito anteriormente), pero al combinarlas todas, ahorro una cantidad significativa de tiempo cada vez que se lanza un nuevo LLM. Demostraré ejemplos de pruebas en el nuevo modelo OpenChat.

¿Por qué es esto importante?

Cuando se trata de nuevos LLMs, es importante comprender sus capacidades y limitaciones. Desafortunadamente, descubrir cómo implementar el modelo y luego probarlo sistemáticamente puede ser un poco tedioso. Este proceso suele ser manual y puede consumir mucho tiempo. Sin embargo, con un enfoque estandarizado, podemos iterar mucho más rápido y determinar rápidamente si vale la pena invertir más tiempo en un modelo, o si debemos descartarlo. Así que empecemos.

Comenzando

Hay muchas formas de utilizar un LLM, pero cuando resumimos los usos más comunes, suelen estar relacionados con tareas abiertas (por ejemplo, generar texto para un anuncio de marketing), aplicaciones de chatbot y Generación con Recuperación Mejorada (RAG). En consecuencia, utilizo métodos relevantes para probar estas capacidades en un LLM.

0. Implementando el modelo

Antes de comenzar con la evaluación, primero debemos implementar el modelo. Tengo un código de ejemplo listo para esto, donde simplemente podemos reemplazar el ID del modelo y la instancia a la cual implementarlo (en este ejemplo, estoy utilizando Amazon SageMaker para el alojamiento del modelo) y estamos listos para continuar:

import jsonimport sagemakerimport boto3from sagemaker.huggingface import HuggingFaceModel, get_huggingface_llm_image_uritry:  role = sagemaker.get_execution_role()except ValueError:  iam = boto3.client('iam')  role = iam.get_role(RoleName='sagemaker_execution_role')['Role']['Arn']model_id = "openchat/openchat_8192"instance_type = "ml.g5.12xlarge" # 4 x 24GB VRAMnumber_of_gpu = 4health_check_timeout = 600 # cuánto tiempo permitimos para la descarga del modelo# Configuración del modelo Hub. https://huggingface.co/modelshub = {  'HF_MODEL_ID': model_id,  'SM_NUM_GPUS': json.dumps(number_of_gpu),  'MAX_INPUT_LENGTH': json.dumps(7000),  # Longitud máxima del texto de entrada  'MAX_TOTAL_TOKENS': json.dumps(8192),  # Longitud máxima de la generación (incluido el texto de entrada)}# Crear la clase del modelo de Hugging Facehuggingface_model = HuggingFaceModel(  image_uri=get_huggingface_llm_image_uri("huggingface",version="0.8.2"),  env=hub,  role=role, )model_name = hf_model_id.split("/")[-1].replace(".", "-")endpoint_name = model_name.replace("_", "-")# Implementar el modelo en SageMaker Inferencepredictor = huggingface_model.deploy(  initial_instance_count=1,  instance_type=instance_type,   container_startup_health_check_timeout=health_check_timeout,  endpoint_name=endpoint_name,)  # enviar solicitudpredictor.predict({  "inputs": "Hola, mi nombre es Heiko.",})

Vale la pena señalar que podemos utilizar el nuevo Contenedor de Inferencia de LLM de Hugging Face para SageMaker, ya que el nuevo modelo OpenChat se basa en la arquitectura LLAMA, que es compatible con este contenedor.

1. Playground

Utilizar el cuaderno para probar algunas indicaciones puede ser complicado, y también puede desalentar a los usuarios no técnicos a experimentar con el modelo. Una forma mucho más efectiva de familiarizarse con el modelo, y de alentar a otros a hacer lo mismo, implica la creación de un playground. He detallado previamente cómo crear fácilmente un playground en esta publicación de blog. Con el código de esa publicación de blog, podemos poner en marcha un playground rápidamente.

Una vez que se establece el playground, podemos introducir algunas indicaciones para evaluar las respuestas del modelo. Prefiero usar indicaciones abiertas, donde planteo una pregunta que requiere cierto grado de sentido común para responder:

¿Cómo puedo mejorar mis habilidades de gestión del tiempo?

Imagen del autor

¿Qué pasaría si el Canal de Suez nunca se hubiera construido?

Imagen del autor

Ambas respuestas parecen prometedoras, lo que sugiere que podría valer la pena invertir tiempo y recursos adicionales en probar el modelo OpenChat.

2. Chatbot

Lo segundo que queremos explorar son las capacidades de chatbot de un modelo. A diferencia del playground, donde el modelo es consistentemente sin estado, queremos entender su capacidad para “recordar” el contexto dentro de una conversación. En este artículo de blog, describí cómo configurar un chatbot utilizando el modelo Falcon. Es una operación simple de enchufar y usar, y al cambiar el punto final de SageMaker, podemos dirigirlo hacia el nuevo modelo OpenChat.

Veamos cómo le va:

Imagen del autor

El rendimiento como chatbot es bastante impresionante. Sin embargo, hubo una instancia en la que OpenChat intentó terminar abruptamente la conversación, cortándola a mitad de frase. Este tipo de ocurrencia no es raro, de hecho. No solemos observar esto con otros chatbots porque emplean palabras de detención específicas para obligar a la IA a cesar la generación de texto. La ocurrencia de este problema en mi aplicación probablemente se debe a la implementación de palabras de detención dentro de mi aplicación.

Más allá de eso, OpenChat tiene la capacidad de mantener el contexto a lo largo de una conversación, así como de extraer información crucial de un documento. Impresionante. 😊

3. Generación Mejorada por Recuperación (RAG)

La última tarea que queremos probar implica el uso de LangChain para algunas tareas RAG. He encontrado que las tareas RAG pueden ser bastante desafiantes para los modelos de código abierto, a menudo requiriéndome que escriba mis propias indicaciones y analizadores de respuestas personalizados para lograr funcionalidad. Sin embargo, lo que me gustaría ver es un modelo que funcione de manera óptima “listo para usar” para tareas RAG estándar. Este artículo de blog proporciona algunos ejemplos de dichas tareas. Veamos qué tan bien se desempeña. La pregunta que plantearemos es:

¿Quién es el primer ministro del Reino Unido? ¿Dónde nació? ¿Qué tan lejos está su lugar de nacimiento de Londres?

Imagen del autor

Esto es, sin duda, el mejor rendimiento que he visto de un modelo de código abierto utilizando la indicación estándar de LangChain. Esto probablemente no sea sorprendente, considerando que OpenChat ha sido ajustado para conversaciones de ChatGPT, y LangChain está adaptado a los modelos de OpenAI, especialmente ChatGPT. No obstante, el modelo fue capaz de recuperar los tres hechos de manera precisa utilizando las herramientas a su disposición. La única deficiencia fue que, al final, el modelo no reconoció que tenía toda la información necesaria y podía responder la pregunta del usuario. Idealmente, debería haber dicho: “Ahora tengo la respuesta final” y proporcionado al usuario los hechos que había reunido.

Imagen del autor

Conclusión

En este artículo de blog, te he presentado tres técnicas de evaluación estándar que utilizo todo el tiempo para evaluar los LLM. Hemos observado que el nuevo modelo OpenChat tiene un desempeño excepcional en todas estas tareas. Sorprendentemente, parece muy prometedor como el LLM subyacente para una aplicación de RAG, probablemente solo requiriendo indicaciones personalizadas para discernir cuándo ha llegado a la respuesta final.

Es importante destacar que esto no es una evaluación exhaustiva, ni pretende serlo. En cambio, ofrece una indicación de si un modelo en particular vale la pena invertir más tiempo en él y realizar pruebas más intensivas. Parece que OpenChat definitivamente vale la pena dedicarle tiempo 🤗

Siéntete libre de utilizar todas las herramientas, ampliarlas y personalizarlas, y comenzar a evaluar los LLMs que despierten tu interés en cuestión de minutos.

Heiko Hotz

👋 Sígueme en Zepes y LinkedIn para leer más sobre Inteligencia Artificial Generativa, Aprendizaje Automático y Procesamiento del Lenguaje Natural.

👥 Si estás en Londres, únete a uno de nuestros encuentros de NLP London Meetups.

Imagen por el autor