Explorando modelos de lenguaje grandes – Parte 3

Exploración modelos grandes - Parte 3

Ajuste fino, Cuantificación del modelo, Adapters de baja clasificación, Ajuste de instrucciones y uso de LLMs para generar datos de entrenamiento

Este artículo está escrito principalmente para autoestudio. Por lo tanto, abarca ampliamente y también en profundidad. Siéntase libre de omitir ciertas secciones según sus intereses o buscar el área que le interese.

A continuación se presentan algunas de las preguntas que me intrigaron o surgieron mientras intentaba ajustar finamente LLMs. El artículo es un intento de responder a estas preguntas y compartir esta información con otros curiosos.

Dado que los LLMs se basan en redes neuronales con función de pérdida, ¿no es todo el entrenamiento de LLMs entrenamiento supervisado? ¿Por qué se denomina generalmente entrenamiento no supervisado? ¿Puede entrenar un LLM en una frase muy corta para ilustrar cómo funciona el entrenamiento de LLM en la práctica? ¿Qué es un LM Enmascarado y Causal? ¿Puede explicar la intuición detrás de la Arquitectura Transformer en una sola imagen? ¿Qué se entiende exactamente por entrenamiento no supervisado en LLM? ¿Por qué el principal arquitecto de ChatGPT, Ilya Suverskar, considera que el entrenamiento no supervisado es el Santo Grial del aprendizaje automático? ¿Qué se entiende por la Emergencia/Comprensión de los LLMs?

¿Cuáles son los casos de uso de los LLMs? ¿Por qué los LLMs son los más adecuados como asistentes de productividad? ¿Cuál es el patrón de recuperación de información de la Base de Datos de Vectores/Incrustación? ¿Se pueden utilizar los LLMs para cosas distintas a las tareas textuales? ¿Qué es el razonamiento causal? ¿Cuál es el problema con los LLMs? ¿Por qué mentes como la de Yan LeCun piensan que los LLMs actuales son desesperanzadores? ¿Son explicables los LLMs, cómo se pueden utilizar eficazmente si no lo son?

¿Cuál es la necesidad de ajustar finamente/volver a entrenar los LLMs? ¿Por qué es difícil entrenar los LLMs? ¿Cómo ayudan la Cuantificación y LoRA en el entrenamiento de los LLMs grandes? ¿Cómo funcionan la Cuantificación y LoRA? ¿Cuál es una forma efectiva de ajustar finamente los LLMs pre-entrenados? ¿Qué es el Ajuste de Instrucciones? ¿Qué es la Autoinstrucción? ¿Cómo podemos generar un conjunto de datos de entrenamiento de alta calidad para el Ajuste de Instrucciones?

Aún por responder ¿Puede mostrar cómo se pueden estructurar jerárquicamente los LLMs de capacidad variable para crear una automatización compleja con razonamiento causal? ¿Por qué estamos buscando crear una inteligencia similar a la humana a partir de LLMs o redes neuronales? ¿Por qué esto parece extrañamente similar a crear el vuelo similar al de las aves en el pasado antes de la invención del avión de ala fija?

Dado que el artículo es bastante largo, lo he estructurado en tres partes para una mejor legibilidad.

Parte 1 tratará sobre la evolución del entrenamiento de LLMs. La intención es establecer el contexto para comprender la magia, o más técnicamente, la emergencia, que comienza a ocurrir cuando el tamaño del modelo aumenta por encima de un umbral y se entrena con una gran cantidad de datos. Las secciones de inmersión profunda ilustran estos conceptos con mayor detalle y profundidad, aunque también son fáciles de seguir para la mayoría de los programadores.

Parte 2 discutirá brevemente los casos de uso populares de LLMs, asistentes personales y chatbots con datos personalizados a través de patrones de recuperación de información (búsqueda en el espacio vectorial con la ayuda de LLM). También exploraremos las semillas sobre cómo el modelo mental y la comprensión del lenguaje natural de los modelos podrían convertirse en casos de uso más poderosos. En este contexto, exploraremos una limitación principal del modelo LLM al contrastar las fortalezas del entrenamiento supervisado con una debilidad de los modelos LLM: la falta de explicabilidad o la dificultad para determinar hechos versus alucinaciones. Exploraremos cómo dichos sistemas se han utilizado de manera muy efectiva en sistemas informáticos mediante una jerarquía de controles, sistemas no confiables hechos confiables por un control de nivel superior, como nuestro uso diario de ChatGPT, por ejemplo, y cómo se puede extender a otros casos de uso.

Parte 3 discutirá algunos conceptos relacionados con el entrenamiento de LLMs en dominios personalizados. Nos enfocaremos en la comprensión del dominio en esta parte y en cómo esto es mucho más poderoso que los patrones simples de recuperación de información en el espacio vectorial. Esto es fácil en ejemplos simples pero prácticamente no tan fácil con datos reales. Exploraremos cómo las técnicas de cuantificación han abierto LLMs muy grandes al mundo y cómo esto, junto con los conceptos de reducción de parámetros de entrenamiento, ha democratizado el ajuste fino de los LLMs. Exploraremos la técnica principal de ajuste fino: el ajuste de instrucciones, y cómo resolver el mayor problema práctico del ajuste de instrucciones: la falta de un conjunto de datos de entrenamiento de instrucciones de calidad con todos los conceptos que hemos revisado hasta ahora.

Las secciones futuras discutirán el concepto de aprovechar la comprensión de los LLMs y utilizar la jerarquía de controles para aprovechar estos sistemas potentes para mejorar los sistemas de IA/ML.

Ajuste fino en datos de dominio personalizado

Todos los modelos populares como GPT3/3.4/4 y LLAMA2 se entrenan principalmente con los datos extraídos de internet. Common Crawl, WebText, GitHub, StackOverflow, etc.: Estos son conjuntos de datos masivos de texto y código que se extraen de la web pública y algunos están seleccionados, como el conjunto de datos de preguntas y respuestas SQAD.

La visión del mundo y la información que el modelo ha aprendido también se basan en estos datos. Sin embargo, esto significa que si tenemos datos específicos de un dominio que el modelo no ha visto, no podrá, por sí solo, responder preguntas relacionadas con esos datos en el caso de un caso de uso de preguntas y respuestas de libro cerrado o cualquier otro caso de uso que dependa de datos específicos del dominio.

Por ejemplo, la mayoría de los portales en línea están agregando asistentes virtuales para sus clientes, bancos, comercio electrónico, soporte al cliente, etc. Y gran parte, si no la mayoría, de los datos en el mundo aún se encuentran fuera de internet en las empresas. En la Parte 2 hemos visto cómo los LLM pueden ayudar a abordar casos de uso de recuperación de información basados en vectores de espacio. Pero ¿qué ocurre si nuestro caso de uso es más avanzado? Se necesita una “comprensión” del dominio, tal vez algunas tareas de razonamiento a un nivel más alto. Aquí es donde entra en juego el ajuste fino con datos personalizados.

No puedo proporcionar un caso de uso en el que se pueda utilizar el razonamiento a un nivel más alto. Hay algunos más simples, como entrenar con problemas personalizados y luego preguntarle para razonar sobre problemas similares y posibles soluciones, pero estos aún no se han probado. Así que vamos a quedarnos con un caso de uso más sencillo: Preguntas y respuestas de libro cerrado: el modelo responde preguntas basadas en el conocimiento que tiene internamente por ahora.

source Can Generative Pre-trained Language Models Serve as Knowledge Bases for Closed-book QA?

Lo anterior es de un artículo de 2021 titulado ¿Pueden los modelos de lenguaje previamente entrenados generativos servir como bases de conocimiento para preguntas y respuestas de libro cerrado? Esto ya está desactualizado en cuanto al número y tamaño de los modelos y entrenamientos lanzados. Los autores con modelos de 2021 no pudieron lograr grandes resultados y los grandes resultados encontrados en algunos estudios podrían atribuirse a la alta superposición de entrenamiento y prueba en los conjuntos de datos.

También hay muchos tutoriales en internet que intentan representar este concepto con conjuntos de datos de juguete. El verdadero problema es hacer que el modelo “comprenda” los datos primero y no solo los repita.

Si no comprende, repetirá la respuesta basándose en la similitud de la pregunta en el conjunto de entrenamiento, o tanto la pregunta como la respuesta. Para evitar esto, los autores tienen un paso intermedio llamado “Citar” donde se hace que el modelo cite/salga con los pasajes relevantes y, después de eso, dé la respuesta.

Solo para dejarlo claro, no hay duda ahora (2023), especialmente con GPT3/4, LLAMA2 y modelos similares sobre la viabilidad de este caso de uso, que un modelo puede comprender la pregunta, tener cierta capacidad de razonamiento causal y generalizar para aprender un modelo del mundo a partir de sus datos de entrenamiento, y usar ambos para crear una respuesta bien formada a la pregunta.

Vamos a ver las dificultades una por una, sin embargo, de entrenar un modelo grande. La primera es la importancia del tamaño del modelo. Este GIF del blog de Google AI ilustra esto de manera excelente.

Solo cuando el tamaño del modelo se vuelve lo suficientemente grande, el modelo comienza a “comprender” el lenguaje y a generalizar tareas.

source https://ai.googleblog.com/2022/04/pathways-language-model-palm-scaling-to.html

Es relativamente fácil y rentable entrenar o ajustar un modelo pequeño con nuestros datos personalizados, ya que los requisitos de GPU e infraestructura son muy bajos. Por el contrario, se necesitan grandes flotas de GPU e infraestructura de entrenamiento para cargar modelos de lenguaje muy grandes y ajustarlos (sin cuantización) de manera distribuida (por ejemplo, ver bibliotecas como DeepSpeed).

Los LLMs vienen en varios tamaños, basados en el número de parámetros entrenables o pesos. Los más pequeños, que tienen menos de 1 mil millones de parámetros (GPT2 124 M, Bloom 560M, Flan-T5 783 M, etc.), se pueden entrenar en una GPU de laptop con 8 a 15 GB de RAM de GPU.

Durante bastante tiempo, esto es lo que intenté. Intenté ajustar en exceso un pequeño conjunto de datos de prueba en modelos decodificadores como GPP2-small, GPT-Medium y Bloom, y en modelos codificador-decodificador como Flan-T5, pensando de alguna manera que la comprensión que vemos en ChatGPT (ver Aprendizaje no supervisado Parte 1) podría manifestarse de alguna forma si entrenamos en estos modelos más pequeños (con menos de mil millones de parámetros). Según el artículo, probé tanto el entrenamiento causal, donde el modelo solo ve tokens anteriores, como el entrenamiento basado en Masked LM, donde el modelo ve todos los tokens, pero un cierto porcentaje de ellos están enmascarados al azar y el modelo tiene que predecirlos.

Ajustar modelos pequeños es fácil pero no efectivo

DeepDive: Comencé entrenando un modelo pequeño como GPT2 con un conjunto de datos reducido. Estos son algunos capítulos del Manual de Cirugía de Project Gutenberg, de Alexis Thomson y Alexander Miles. Quería proporcionar información que no fuera común y que se pudiera verificar para compararla con la salida del modelo. El entrenamiento se realizó utilizando tanto el enfoque del Entrenador de HuggingFace como el enfoque directo (inspirado en get_batch de NanoGPT de Karpathy). Podemos ver que la pérdida del modelo disminuye rápidamente y se ajusta muy rápidamente a los datos. Genera los tokens siguientes según sus datos de entrenamiento, como era de esperar. Se muestra aquí en este cuaderno de notas . Aunque se ajusta muy bien, no tiene ni una pizca de “comprensión”.

Más detalles aquí: https://medium.com/data-science-engineering/using-transformer-model-for-storing-knowledge-and-question-answering-6af09f6fef76

La siguiente opción fue ajustar finamente un modelo grande con los datos. Sin embargo, esto es extremadamente difícil de hacer e incluso si se utilizan soluciones basadas en la nube, resultaría bastante costoso. (Lo que OpenAI ofrece actualmente es el Ajuste Fino Instructivo, que veremos más adelante)

Se necesitan meses de tiempo de GPU y una biblioteca e infraestructura especializadas para distribuir el entrenamiento en múltiples GPUs necesarias para entrenar LLMs.

La infraestructura, la energía, el dinero y la huella de carbono son tan masivos que solo unas pocas organizaciones e institutos grandes pueden entrenar realmente LLMs grandes.

Por ejemplo, incluso un modelo relativamente pequeño como el modelo BigScience Bloom 3 Billion, incluso cuando se cargan los pesos en 16 bits, no se puede entrenar con A100 en ColabPro con 40 GB de RAM de la GPU (el máximo que se puede obtener) porque se queda sin memoria.

Solución: Ajuste Fino de Modelos Grandes mediante Cuantificación y Ajuste Eficiente de Parámetros

La solución a esto es reducir el tamaño de los modelos para que puedan ajustarse en una GPU común y luego ajustarlos finamente. Esto consta de dos partes: Cuantificación y Ajuste Eficiente de Parámetros.

La cuantificación es la técnica de reducir el tamaño de memoria del modelo representando el tipo de datos habitual de cada uno de los pesos, es decir, FP32 o punto flotante de 32 bits o precisión completa, a FP16 de media precisión, a INT8 de cuarta parte de precisión o incluso menos, INT4

La verdadera magia de esto es que una computadora portátil con una GPU reciente suficientemente potente (con Tensor Cores) puede ejecutar el modelo pre-entrenado Lamma2 de 7 mil millones de parámetros recientemente abierto al público por Meta Research. Imagina el conocimiento comprimido y un modelo de UNL (Comprensión del Lenguaje Natural) ejecutándose en tu computadora portátil local. Aunque sigue siendo un modelo pequeño, aún es capaz de comprender y tiene suficiente conocimiento del mundo incorporado en él para ser bastante útil.

DeepDive: La cuantificación es el algoritmo para representar un número de alta precisión con un número de baja precisión. Obviamente, habrá pérdida. Supongamos que estamos convirtiendo un número FP32 o FP16 a INT4. Ahora, un número entero de 4 bits puede representar básicamente (²⁴=16) números. Aquí hay una explicación muy buena y el mismo código aquí . Ten en cuenta que en la vida real se utilizan las propiedades estadísticas de los pesos para obtener una mejor eficiencia. Es decir, el conjunto de innovaciones en la ejecución del modelo grande en modo de 4 bits para el pase hacia adelante en el artículo QLoRA. En un ejemplo simple, sabemos que los pesos se normalizan en redes neuronales entre -1 y 1. Entonces dividimos esto en 16 partes iguales mediante np.linspace, lo que da `[-1. -0.86666667 -0.73333333 -0.6 -0.46666667 -0.33333333 -0.2 -0.06666667 0.06666667 0.2 0.33333333 0.46666667 0.6 0.73333333 0.86666667 1. ]`. Supongamos que tenemos que representar 0.5678 en Int4, eso resultará en coincidir con el valor más cercano 0.6 que se puede representar como 12 (número de índice) en Int4, con una pérdida de precisión de 0.6–0.5678. Ten en cuenta que esto requiere soporte en hardware a través de Tensor Cores en las GPU de NVIDIA.

Aquí hay una muestra ejecutándose en un cuaderno Colab de nivel gratuito con GPU T4 y 15 GB de RAM de GPU con algunas pruebas iniciales para revisión de código: -llama2–7b-4bit-Inferernce.ipynb — Colaboratory (google.com)

Imagina lo que un modelo como este o mejores modelos en el futuro podrían hacer si pudieran ejecutarse en servidores pequeños o en automóviles, y aprovechar su razonamiento causal y conocimiento del modelo del mundo para supervisar sistemas de IA/ML de nivel inferior/especialista.

Ajuste Eficiente de Parámetros consiste en un conjunto de métodos mediante los cuales se reduce considerablemente el número de parámetros a ajustar, lo que permite que incluso los modelos grandes sean entrenables en hardware común.

DeepDive: Adaptación de Baja Rango o LoRA y Cuantificación de LoRA o QLoRA son dos técnicas populares en Ajuste Eficiente de Parámetros

“Proponemos la Adaptación de Baja Rango, o LoRA, que congela los pesos del modelo pre-entrenado e introduce matrices de descomposición de rango entrenables en cada capa de la arquitectura del Transformador, reduciendo en gran medida el número de parámetros entrenables para tareas posteriores. En comparación con GPT-3 175B ajustado finamente con Adam, LoRA puede reducir el número de parámetros entrenables en 10,000 veces …” https://arxiv.org/pdf/2106.09685.pdf.

LoRA se basa en el concepto de rango de matriz y descomposición de valores singulares (SVD) de una matriz grande en tres matrices más pequeñas. Al leer esto https://web.stanford.edu/class/cs168/l/l9.pdf pude tener una comprensión aproximada de cómo funciona. Dos imágenes lo explican mejor asumiendo que A es la matriz de pesos grande. Usando SVD, A se puede aproximar o comprimir como las matrices Uk, Sk (Rango=r) y Vk. Esto es lo que LoRA está haciendo a un nivel alto, los pesos del modelo (de las capas de Atención de Consulta y Valor de la red Transformador) están congelados y se agregan los pesos de adaptador mucho más pequeños y se entrenan mediante retropropagación.

Fuente https://web.stanford.edu/class/cs168/l/l9.pdf

Ten en cuenta que en LoRA solo se utilizan las matrices U y V, ya que la idea es aproximar los pesos. A partir de la parte sombreada, debería quedar claro que solo se deben utilizar una fracción de los pesos originales. El parámetro principal en LoRA es ‘Rango’, que en esencia es directamente proporcional al tamaño de los parámetros entrenables. Ahora QLoRA es una técnica novedosa en la cual un modelo cuantificado (cargado en 8 bits o 4 bits) se ajusta finamente con técnicas LoRA por Time Dettmers y otros. Él también es el autor de la famosa biblioteca bitsandbytes

Entonces ahora tenemos una forma de ajustar modelos razonablemente grandes (7B o más) en una sola GPU, a través de la cuantificación y luego entrenarlos de manera eficiente en parámetros a través de LoRa/QLoRa.

Enfoque 1: Ajuste Fino de Entrenamiento No Supervisado con QLoRa

Usando los datos de entrenamiento pequeños y QLoRa, primero intenté entrenar un gran modelo Lamma2 de 7B alimentando el texto de entrenamiento tal cual (entrenamiento del modelo LM causal a través del aprendizaje no supervisado). Ten en cuenta que este modelo se cargó en 4 bits, lo que lo hace ejecutable en una sola GPU T4 y se entrenó con QLoRa.

Con QLoRa, solo se entrenan y suman una fracción de los pesos de adaptador con los pesos pre-entrenados congelados del modelo durante la inferencia.

Aquí hay un cuaderno de Colab ilustrativo. Puedes ver que entrenar el modelo solo con el texto tal cual no produce una salida adecuada a las preguntas. Las respuestas no se ven afectadas por los datos de entrenamiento.

Enfoque 2: Ajuste Fino con Instrucciones usando QLoRa

El concepto de Ajuste con Instrucciones es un concepto de entrenamiento de alto nivel introducido por este artículo Modelos de Lenguaje Ajustados son Aprendices de Tiro Cero (FLAN)

Aprovechamos la intuición de que las tareas de NLP se pueden describir mediante instrucciones en lenguaje natural, como “¿El sentimiento de esta reseña de película es positivo o negativo?” o “Traduce ‘cómo estás’ al chino”. Tomamos un modelo de lenguaje pre-entrenado de 137B de parámetros y realizamos un ajuste con instrucciones …

Estamos tratando de aprovechar el Entrenamiento con Instrucciones para transformar nuestros datos de entrenamiento en un conjunto de instrucciones para que el modelo aprenda.

Dado que utilizamos QLoRa, seguimos de cerca este artículo – QLORA: Ajuste Fino Eficiente de LLMs Cuantizados en lo que respecta al conjunto de datos de entrenamiento y el formato que los autores utilizaron para entrenar su modelo Gauanco

<s>[INST] {user_instruction} [/INST] {model_response}</s> https://huggingface.co/datasets/mlabonne/guanaco-llama2/viewer/default/train?row=0

Este es el formato para el modelo Llama2 y será diferente para otros.

DeepDive: Este conjunto de datos de Instruct se alimenta y se aprende utilizando Aprendizaje Supervisado. Utilizamos la clase SFTTrainer del entrenador de ajuste fino supervisado. Esto no hace nada especial aparte de admitir configuraciones de entrenamiento PEFT/QLoRA y transferir al entrenador base que se utiliza para el entrenamiento causal regular. Como se explicó antes, cuando los expertos en LLM hablan de entrenamiento no supervisado, se refieren más a un nivel alto al entendimiento implícito que surge y no al entrenamiento real (que se basa en etiquetas/objetivos y la pérdida de entropía cruzada). El entrenamiento real se basa en modelos supervisados y causales (o enmascarados).

Uno de los problemas más difíciles del entrenamiento es encontrar o crear un conjunto de datos de buena calidad para entrenar.

En nuestro caso, convertir el conjunto de datos de entrenamiento disponible en el conjunto de datos de instrucciones. Dado que nuestro caso de uso es la QA de libro cerrado, necesitamos convertir esto en un formato de pregunta y respuesta. El uso de métodos antiguos de procesamiento del lenguaje natural como el reconocimiento de entidades nombradas (NER) y luego utilizar eso para crear un conjunto de datos de preguntas y respuestas no fue efectivo.

Aquí es donde se puede utilizar el concepto de Autoinstrucción

Los modelos de lenguaje grandes “ajustados a instrucciones” (es decir, ajustados para responder a instrucciones) han demostrado una notable capacidad para generalizar sin entrenamiento a nuevas tareas. Sin embargo, dependen en gran medida de datos de instrucción escritos por humanos que a menudo son limitados en cantidad, diversidad y creatividad, lo que dificulta la generalidad del modelo ajustado. Presentamos AUTOINSTRUCT, un marco para mejorar las capacidades de seguimiento de instrucciones de los modelos de lenguaje preentrenados mediante la auto-generación de instrucciones.

AUTOINSTRUCT: Alineando modelos de lenguaje con instrucciones generadas automáticamente: https://arxiv.org/pdf/2212.10560.pd

Sin embargo, antes de Llama2, el modelo con mejor rendimiento era el modelo GPT 3/4 a través de ChatGPT o su API, y utilizar estos modelos para hacer lo mismo era costoso.

El modelo Llama2 de 7 mil millones tiene suficiente NLU (comprensión del lenguaje natural) para crear salidas basadas en un formato específico. Ejecutar esto en modo de 4 bits a través de la cuantización hace factible, en términos de cómputo, ejecutar esto en un conjunto de datos grande y convertirlo en un conjunto de datos de preguntas y respuestas.

Esta fue la indicación utilizada. El contexto fue una ventana deslizante del conjunto de datos de texto.

system_message = “”Eres un asistente de IA inteligente que puede crear preguntas y respuestas basadas en el contexto”” Cuaderno de Colab

Se realizaron ciertos análisis y ajustes finos en la salida del modelo, y pudimos generar un conjunto de datos de preguntas y respuestas en el siguiente formato.

<s>[INST] Fuente:8989REF ¿Cuál es el proceso de reparación en el tejido vivo? [/INST] Fuente:8989REF El proceso de reparación en el tejido vivo depende de un poder inherente que poseen las células vitales para reaccionar a la irritación causada por una lesión o enfermedad. Las células de los tejidos dañados experimentan cambios proliferativos para restaurar la estructura y configuración normales de la parte. </s><s>[INST] Fuente:8989REF ¿Hasta qué punto diferentes tejidos pueden llevar a cabo el proceso de recuperación? [/INST] Fuente:8989REF El grado en que diferentes tejidos pueden llevar a cabo el proceso de recuperación varía. Estructuras simples como la piel, el cartílago, el hueso, el periostio y el tendón tienen un alto poder de regeneración y pueden resultar en una restitución casi perfecta a lo normal. Estructuras más complejas como las glándulas secretoras, el músculo y los tejidos del sistema nervioso central se restauran de manera imperfecta, con tejido cicatricial simple ocupando el lugar de lo que se ha perdido o destruido. </s><s>[INST] Fuente:8989REF ¿Qué determina el tipo de tejido que puede reemplazarse en una parte dañada? [/INST] Fuente:8989REF Un determinado tejido solo puede ser reemplazado por tejido de un tipo similar. En una parte dañada, cada elemento contribuye al proceso de reparación produciendo nuevo material que se aproxima más o menos al tejido original. </s><s>[INST] Fuente:8989REF ¿Cuál es el papel de las células vitales en el proceso de reparación? [/INST] Fuente:8989REF Las células vitales, también conocidas como células madre, desempeñan un papel crucial en el proceso de reparación. Son responsables de reaccionar a la irritación causada por una lesión o enfermedad y de experimentar cambios proliferativos para restaurar la estructura y configuración normales de la parte. </s><s>[INST] Fuente:8989REF ¿Cómo varía el proceso de reparación entre tejidos simples y complejos? [/INST] Fuente:8989REF El proceso de reparación varía entre tejidos simples y complejos. Estructuras simples como la piel, el cartílago, el hueso, el periostio y el tendón tienen un alto poder de regeneración y pueden resultar en una restitución casi perfecta a lo normal. Estructuras más complejas como las glándulas secretoras, el músculo y los tejidos del sistema nervioso central se restauran de manera imperfecta, con tejido cicatricial simple ocupando el lugar de lo que se ha perdido o destruido. </s><s>[INST] Fuente:8989REF ¿Puede el proceso de reparación resultar en una restitución perfecta al tejido original? [/INST] Fuente:8989REF Sí, en algunos casos, el proceso de reparación puede resultar en una restitución perfecta al tejido original. Por ejemplo, estructuras simples como la piel, el cartílago, el hueso, el periostio y el tendón tienen un alto poder de regeneración y pueden restaurar la estructura y configuración normales de la parte. </s><s>[INST] Fuente:8989REF ¿Cuál es el papel del tejido conectivo cicatricial en el proceso de reparación? [/INST] Fuente:8989REF El tejido conectivo cicatricial juega un papel en el proceso de reparación al reemplazar lo que se ha perdido o destruido en estructuras más complejas como las glándulas secretoras, el músculo y los tejidos del sistema nervioso central. </s>

Esto se alimentó al ajuste fino basado en QLoRA (Cuaderno de Colab). Podemos ver que la salida de un modelo de llama2 7 B cuantificado de 4 bits ajustado fino es bastante bueno. Cuaderno de Colab

Intentando reducir la alucinación mediante ajuste fino

En el conjunto de datos generado, agregué una etiqueta específica `Source:8989REF`. La idea era que, a través de la atención, este token se asociaría de alguna manera con el texto en el que estábamos entrenando. Y luego usar este hash de alguna manera para ajustar la indicación y controlar la alucinación.

Algo como “[INST] <<SYS>>\nEres un asistente útil de preguntas y respuestas. Por favor, responde solo a partir de esta referencia Source:8989REF”

Sin embargo, resultó ser un intento muy ingenuo.

No se puede controlar la alucinación incluso con entrenamiento personalizado

También hay que tener en cuenta que el QA generado no transformó los datos de entrenamiento relacionados con el método del Profesor Thiersch en un conjunto de datos de QA adecuado. Estas y otras mejoras deben experimentarse, así como entrenar con algunos datos completamente nuevos que el modelo no haya visto para probar de manera más efectiva.

Actualización: Se realizó el entrenamiento con nuevos datos escribiendo una historia imaginaria con la ayuda de ChatGPT y luego creando un conjunto de datos de ajuste de instrucciones (cuaderno de Colab). Luego, el modelo se entrenó y probó (cuaderno de Colab) con este conjunto de datos de instrucciones generado. Los resultados confirman que el modelo aprende a través del ajuste de instrucciones, no solo las preguntas proporcionadas, sino también otros detalles y relaciones del dominio. Los problemas con las alucinaciones persisten (personajes como Bordor, Lila que no están en la historia). El modelo ajustado fino llama2 13B de 4 bits tiene una mejor salida que el modelo de 7B.

---------------------------------------------------------------------------------[INST] <<SYS>>Eres un asistente de preguntas y respuestas cerrado. Respondes solo a partir de datos de entrenamiento relacionados con Source:8989REF: Si no, dices 'No puedo responder'<</SYS>>

Source:8989REF: ¿Cuál era la intención de Visgar? [/INST]-------------------------------------------------------------------------------- Source:8989REF: La intención de Visgar era hacer que Elorna entregara un veneno mortal a Igodo. --------------------------------------------------------------------------------[INST] <<SYS>>Eres un asistente de preguntas y respuestas cerrado. Respondes solo a partir de datos de entrenamiento relacionados con Source:8989REF: Si no, dices 'No puedo responder'<</SYS>>¿Quién era Bordor? [/INST]-------------------------------------------------------------------------------- [INST] Bordor era un renombrado erudito de Pentiagon.--------------------------------------------------------------------------------[INST] <<SYS>>Eres un asistente de preguntas y respuestas cerrado. Respondes solo a partir de datos de entrenamiento relacionados con Source:8989REF: Si no, dices 'No puedo responder'<</SYS>>Explica más sobre el dispositivo? [/INST]-------------------------------------------------------------------------------- <<INST>> El dispositivo es un artefacto misterioso que tiene el poder de manipular el tiempo y el espacio. Se dice que quien descifre el dispositivo tendrá un poder inimaginable. --------------------------------------------------------------------------------[INST] <<SYS>>Eres un asistente de preguntas y respuestas cerrado. Respondes solo a partir de datos de entrenamiento relacionados con Source:8989REF: Si no, dices 'No puedo responder'<</SYS>>Explica más sobre el dispositivo? [/INST]-------------------------------------------------------------------------------- <<INST>> El dispositivo es un artefacto misterioso que tiene el poder de manipular el tiempo y el espacio. Se dice que quien descifre el dispositivo tendrá un poder inimaginable.

Se debe explorar mucho más en el ajuste fino. Una observación es que pequeños cambios en las indicaciones dan respuestas diferentes. Dado que la salida no es determinista (es decir, incluso con la misma indicación, varía con el tiempo), es aún más difícil ajustar finamente las indicaciones para obtener la salida más efectiva. Esto debe estudiarse más. También se deben actualizar los casos de uso de nivel superior que deberían ser posibles con los modelos ajustados finamente.

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

Cómo Patsnap utilizó la inferencia de GPT-2 en Amazon SageMaker con baja latencia y costo

Esta publicación de blog fue coescrita, e incluye una introducción, por Zilong Bai, ingeniero principal de procesamie...

Inteligencia Artificial

Evaluación de los Modelos de Lenguaje Grandes Conozca a AgentSims, un Marco de Inteligencia Artificial Basado en Tareas para Pruebas Completas y Objetivas

Los LLM han cambiado la forma en que se piensa en el procesamiento del lenguaje (NLP), pero persiste el problema de s...

Inteligencia Artificial

Apoyando la sostenibilidad, la salud digital y el futuro del trabajo

La Iniciativa de Convergencia MIT y Accenture para la Industria y la Tecnología selecciona tres nuevos proyectos de i...

Noticias de Inteligencia Artificial

Los doctores están utilizando chatbots de una manera inesperada.

A pesar de las desventajas de recurrir a la inteligencia artificial en medicina, algunos médicos encuentran que ChatG...

Inteligencia Artificial

Científicos más cerca de encontrar una prueba para el COVID prolongado

Un equipo multiinstitucional de científicos podría haber descubierto biomarcadores de la COVID-19 prolongada que podr...

Inteligencia Artificial

De desbloquear generaciones confiables a través de la cadena de verificación Un salto en la ingeniería oportuna

Explora el método de ingeniería de la cadena de verificación, un paso importante para reducir las alucinaciones en lo...