Permítanme comenzar diciendo que no pretendo ofender a los creadores de Large Language Models (LLM), las herramientas para evaluarlos, ni a las personas u organizaciones que los clasifican y crean tablas de clasificación. Como relativamente nuevo en este ecosistema, estoy en deuda con su trabajo y agradecido de que me hayan facilitado el camino para realizar tareas que de otro modo serían laboriosas.
Claramente, mi próxima publicación debe ser explorar varios métodos para la clasificación de modelos, para obtener un poco más de detalle sobre cómo funcionan las evaluaciones.
Si no ha leído mi artículo anterior PrivateGPT para el resumen de libros: variables de configuración de prueba y clasificación, puede que le resulte beneficioso revisarlo, ya que definí términos y expliqué los medios por los cuales llegué a diversas prácticas y creencias.
Si leyó ese artículo, sabrá que he estado perfeccionando mis procesos durante algunos meses, utilizando modelos de lenguaje grande (LLM) con el fin de resumir libros. Medí una serie de parámetros que incluyen plantillas de mensajes, mensajes del sistema, mensajes del usuario, etc.
A partir de esa ronda preliminar de clasificación de modelos y recopilación de datos sobre el uso de variables de configuración, descubrí que mistral-7b-instruct-v0.2.Q8_0.gguf produce notas con viñetas de la más alta calidad y he estado buscando una que lo mejore. eso cabe en mi 3060 de 12 GB, desde entonces.
Para esta clasificación, estoy utilizando esa base de conocimiento para evaluar una variedad de modelos 7b líderes. Esta vez estoy usando Ollama , ya que lo encuentro más sencillo de usar y bastante eficaz.
Elegí los siguientes modelos porque los encontré clasificados por encima de Mistral 7b Instruct 0.2 en varias tablas de clasificación, o fueron autoproclamados como los mejores 7b. (plantillas de chat probadas entre paréntesis)
openchat-3.5-0106.Q8_0.gguf (OpenChat)
snorkel-mistral-pairrm-dpo.Q8_0.gguf (Mistral)
delfín-2.6-mistral-7b.Q8_0.gguf (Mistral)
supermario-v2.Q8_0.gguf (ChatML)
openhermes-2.5-mistral-7b.Q8_0.gguf (ChatML)
openhermes-2.5-neural-chat-7b-v3-1-7b.Q8_0.gguf (ChatML)
openhermes-2.5-neural-chat-v3-3-slerp.Q8_0.gguf (ChatML)
WestLake-7B-v2-Q8_0.gguf (ChatML, Mistral)
MBX-7B-v3-DPO.q8_0.gguf (ChatML, Mistral)
neuralbeagle14-7b.q8_0.gguf (ChatML, Mistral)
omnibeagle-7b-q8_0.gguf (ChatML, Mistral)
Para algunos modelos, en los que no obtuve los resultados deseados, ya que en su mayoría están derivados de Mistral, probé la plantilla Mistral a pesar de que enumeran ChatML como su entrada preferida.
Escriba notas completas con viñetas que resuma el siguiente texto, con títulos, términos y conceptos clave en negrita.\n\nTEXTO:
Si bien GPT3.5 no es mi punto de referencia personal, es una especie de estándar de la industria y esperaría que produzca mejores resultados que la mayoría de los GGUF 7b Q8.
Si bien no hay conceptos clave de los términos en negrita, los títulos están en negrita y, en general, es bastante fácil de leer en comparación con bloques de párrafos. Además, el hecho de que encontremos términos en negrita o no puede depender del texto de entrada en sí, donde un resumen con viñetas siempre debe incluir encabezados en negrita.
Veo esto como una tarea fundamental para cualquier modelo de Instruct. Idealmente, los desarrolladores entrenarán sus modelos para generar este tipo de notas con viñetas ideales. Tengo toneladas de datos, con algunos libros ya entrenados, pero es relativamente sencillo generar estas notas para un libro (usando Mistral 7b Instruct 0.2 con el texto semánticamente fragmentado, a mano, en partes de menos de 2,5k tokens, cada una).
Si se trata de un libro de 300 a 600 páginas, normalmente se puede realizar en un solo día, incluido el procesamiento previo y posterior.
Con el tiempo, podría experimentar con algunos ajustes en un intento de mejorar yo mismo sus capacidades.
Anteriormente, intenté darle una puntuación a cada clasificación. Es realmente difícil dar una puntuación numérica. En el futuro, creo que intentaré obtener un LLM para clasificar los resúmenes. Esta vez, simplemente dejaré un comentario sobre lo que se queda corto y lo que me gusta, sin dar una puntuación numérica a cada modelo.
Probé cada uno de los siguientes modelos en un solo capítulo de libro, dividido en 6 partes de 1900 a 3000 fichas cada una. Compartiré un ejemplo representativo de cada uno y los datos completos estarán disponibles en GitHub, como siempre.
Estoy seguro de que ya te habrás dado cuenta de que, en mi opinión, Mistral tiene el 7b a batir.
Ollama tiene una función donde ingresa la ubicación del modelo, la plantilla y los parámetros en un archivo de modelo, que utiliza para guardar una copia de su LLM usando su configuración especificada. Esto facilita la demostración de varios modelos sin tener que estar siempre preocupado por los parámetros.
He mantenido los mismos parámetros para todos los modelos excepto la plantilla de chat, pero compartiré contigo la plantilla que estoy usando para cada uno, para que puedas ver con precisión cómo uso la plantilla. Puede informarme si obtendría mejores resultados con los siguientes modelos utilizando un Modelfile configurado de manera diferente.
TEMPLATE """ <s></s>[INST] {{ .Prompt }} [/INST] """ PARAMETER num_ctx 8000 PARAMETER num_gpu -1 PARAMETER num_predict 4000
No diré que Mistral lo haga perfectamente todas las veces, pero la mayoría de las veces este es mi resultado. Y si recuerda la respuesta de GPT3.5, puede estar de acuerdo en que esto es mejor.
Me sorprendió gratamente el 0106 de OpenChat . Aquí hay un modelo que dice tener el mejor modelo 7b y al menos es competitivo con el Mistral 7b.
TEMPLATE """ GPT4 Correct User: {{ .Prompt }}<|end_of_turn|>GPT4 Correct Assistant: """ PARAMETER num_ctx 8000 PARAMETER num_gpu -1 PARAMETER num_predict 4000
En esta pequeña muestra, los títulos estaban en negrita 4/6 veces. Más adelante lo revisaré junto con otros contendientes principales mediante un análisis más detallado.
Obviamente, soy parcial en este punto, ya que Snorkel fue entrenado en Mistral 7b Instruct 0.2. De todos modos, soy cautelosamente optimista y espero más lanzamientos de Snorkel.ai .
TEMPLATE """ <s></s>[INST] {{ .Prompt }} [/INST] """ PARAMETER num_ctx 8000 PARAMETER num_gpu -1 PARAMETER num_predict 4000
4/6 de estos resúmenes son acertados, pero otros contienen irregularidades, como listas muy largas de términos y títulos clave en lugar de simplemente ponerlos en negrita como parte del resumen.
Aquí hay otro derivado del mistral que está bien considerado.
TEMPLATE """ <|im_start|>system You are a helpful AI writing assistant.<|im_end|> <|im_start|>user {{ .Prompt }} <|im_end|> <|im_start|>assistant {{ .Response }}<|im_end|> """ PARAMETER num_ctx 8000 PARAMETER num_gpu -1 PARAMETER num_predict 4000
Este es otro modelo decente que es casi tan bueno como el Mistral 7b Instruct 0.2. Tres de cada seis resúmenes tenían el formato adecuado y títulos en negrita, otro tenía un buen formato sin negrita, pero 2/6 tenían mala forma en todos los aspectos.
Este modelo es bastante popular, tanto en las tablas de clasificación como entre "la gente" en los chats de discordia no asociados. Quiero que sea líder en este ranking, pero no es así.
TEMPLATE """ <|im_start|>system You are a helpful AI writing assistant.<|im_end|> <|im_start|>user {{ .Prompt }} <|im_end|> <|im_start|>assistant {{ .Response }}<|im_end|> """ PARAMETER num_ctx 8000 PARAMETER num_gpu -1 PARAMETER num_predict 4000
3 de 6 resultados producen una estructura adecuada, pero sin texto en negrita. Uno de ellos tiene estructura y texto en negrita. Los otros dos tenían bloques de texto más grandes y una estructura deficiente.
También probé algunos derivados de alto rango de OpenHermes 2.5 Mistral para ver si podía obtener mejores resultados. Lamentablemente, ese no fue el caso.
TEMPLATE """ <|im_start|>system You are a helpful AI writing assistant.<|im_end|> <|im_start|>user {{ .Prompt }} <|im_end|> <|im_start|>assistant {{ .Response }}<|im_end|> """ PARAMETER num_ctx 8000 PARAMETER num_gpu -1 PARAMETER num_predict 4000
Ninguno de estos resultados fue deseable.
Hicieran lo que hicieran, estos derivados no mejoraron el original.
TEMPLATE """ <|im_start|>system You are a helpful AI writing assistant.<|im_end|> <|im_start|>user {{ .Prompt }} <|im_end|> <|im_start|>assistant {{ .Response }}<|im_end|> """ PARAMETER num_ctx 8000 PARAMETER num_gpu -1 PARAMETER num_predict 4000
¡Está empeorando con cada nueva versión!
No esperaba mucho de Mario, pero parece prometedor. Mientras tanto, V3 y V4 están disponibles, pero todavía no he encontrado GGUF para ellos.
TEMPLATE """ <|im_start|>system You are a helpful AI writing assistant.<|im_end|> <|im_start|>user {{ .Prompt }} <|im_end|> <|im_start|>assistant {{ .Response }}<|im_end|> """ PARAMETER num_ctx 8000 PARAMETER num_gpu -1 PARAMETER num_predict 4000
Su primer resultado fue engañosamente bueno. Sin embargo, cada uno de los siguientes resúmenes se desvió del patrón deseado. Estaré atento a GGUF de los lanzamientos más recientes. Puede ver aquí que tenemos bloques de párrafos con un título inicial en negrita. Realmente no es lo que pedí.
Ojalá tuviera mejores noticias para compartir. Mi titular ideal es que existe una gran cantidad de modelos líderes que producen resultados de calidad al crear resúmenes completos de notas con viñetas, y me resulta muy difícil elegir entre ellos. Desafortunadamente, ese no es el caso.
¿Quizás superan a Mistral 0.2 en su forma completa pero solo están detrás en formato GGUF? Creo que es muy probable que ninguna de nuestras evaluaciones existentes tenga como objetivo este tipo de resultado, pero ciertamente diría que es una tarea que cualquier modelo líder de 7b guff debería poder realizar.
Otra cosa a considerar es que Mistral 7b Instruct v0.2 salió poco después de Mixtral, en medio de mucha fanfarria. Creo que ese lanzamiento pasó desapercibido. De hecho, muchos de los modelos "principales" que he visto se basan en 0.1 Mistral.
¿Quizás las cosas cambien y el mundo se dé cuenta de que sus mejores modelos aún no pueden superar al Mistral? Por otra parte, tal vez todos esos modelos sean realmente buenos en todas las demás tareas que no estoy pidiendo.
Tengo datos, tengo una canalización y tengo una necesidad infinita de crear resúmenes de notas con viñetas. Si quieres trabajar conmigo, por favor comunícate.
También puedes consultar mi GitHub, comprobar los datos y probar tu propia versión de este experimento. Estoy feliz de que se demuestre que estoy equivocado.