AJUSTE FINO EFICIENTE DE PARÁMETROS (PEFT)
OPTIMIZACIÓN DE MODELOS PREENTRENADOS: AJUSTE FINO EFICIENTE DE PARÁMETROS (PEFT)
El ajuste fino con eficiencia de parámetros (PEFT) es una técnica utilizada en el procesamiento del lenguaje natural (NLP) para mejorar el rendimiento de los modelos de lenguaje entrenados previamente en tareas posteriores específicas. Implica reutilizar los parámetros del modelo previamente entrenado y ajustarlos en un conjunto de datos más pequeño, lo que ahorra tiempo y recursos computacionales en comparación con el entrenamiento de todo el modelo desde cero.
PEFT logra esta eficiencia congelando algunas de las capas del modelo previamente entrenado y solo ajustando las últimas capas que son específicas de la tarea posterior. De esta forma, el modelo se puede adaptar a nuevas tareas con menos sobrecarga computacional y menos ejemplos etiquetados. Aunque PEFT ha sido un concepto relativamente novedoso, la actualización de la última capa de modelos ha estado en práctica en el campo de la visión artificial desde la introducción del aprendizaje por transferencia. Incluso en PNL, los experimentos con incrustaciones de palabras estáticas y no estáticas se llevaron a cabo desde el principio.
Actualmente, solo se emplean los siguientes métodos PEFT. Sin embargo, se están realizando investigaciones en curso para explorar y desarrollar nuevos métodos.
Adapter
Los adaptadores(Adapter) son un tipo especial de
submódulo que se puede agregar a modelos de lenguaje previamente entrenados
para modificar su representación oculta durante el ajuste fino. Al insertar
adaptadores después de las capas de atención de cabezales múltiples y
alimentación directa en la arquitectura del transformador, podemos actualizar
solo los
La adopción de adaptadores puede ser un proceso sencillo. Todo lo que se requiere es agregar adaptadores en cada capa de transformador y colocar una capa clasificadora sobre el modelo pre-entrenado. Al actualizar los parámetros de los adaptadores y el cabezal clasificador, podemos mejorar el rendimiento del modelo preentrenado en una tarea en particular sin actualizar todo el modelo. Este enfoque puede ahorrar tiempo y recursos computacionales sin dejar de producir resultados impresionantes.
¿Cómo funciona el ajuste fino con un adaptador?
El módulo adaptador comprende dos capas de proyección de
avance conectadas con una capa de activación no lineal. También hay una
conexión de salto que pasa por alto las capas de avance.
Si tomamos el adaptador colocado justo después de la capa de atención de múltiples cabezales, entonces la entrada a la capa del adaptador es la representación oculta h calculada por la capa de atención de múltiples cabezales. Aquí, h toma dos caminos diferentes en la capa del adaptador; una es la conexión de salto, que deja la entrada sin cambios, y la otra forma involucra las capas de avance.
Inicialmente, la primera capa de alimentación hacia
adelante proyecta h en un espacio de baja dimensión. Este espacio tiene una
dimensión menor que h . Después de esto, la entrada pasa a través de una
función de activación no lineal y la segunda capa de avance la proyecta de
nuevo hasta la dimensionalidad de h . Los resultados obtenidos de las dos
formas se suman para obtener el resultado final del módulo adaptador.
La conexión de salto conserva la entrada original h del adaptador, mientras que la ruta de avance genera un cambio incremental, representado como Δh , basado en la h original . Al sumar el cambio incremental Δh , obtenido de la capa feed-forward con la h original de la capa anterior, el adaptador modifica la representación oculta calculada por el modelo pre-entrenado. Esto permite que el adaptador altere la representación oculta del modelo previamente entrenado, cambiando así su salida para una tarea específica.
LoRA
La adaptación de bajo rango (LoRA-Low-Rank Adaptation) de modelos de lenguaje grandes es otro enfoque en el área de ajuste fino de modelos para tareas o dominios específicos. Al igual que los adaptadores, LoRA también es un pequeño submódulo entrenable que se puede insertar en la arquitectura del transformador. Implica congelar los pesos del modelo previamente entrenados e inyectar matrices de descomposición de rangos entrenables en cada capa de la arquitectura del transformador, lo que disminuye en gran medida la cantidad de parámetros entrenables para las tareas posteriores. Este método puede minimizar la cantidad de parámetros entrenables hasta 10 000 veces y la necesidad de memoria de la GPU tres veces mientras sigue funcionando a la par o mejor que el ajuste fino de la calidad del modelo en varias tareas. LoRA también permite un cambio de tareas más eficiente, lo que reduce la barrera de entrada del hardware y no tiene latencia de inferencia adicional en comparación con otros métodos.
¿Como funciona?
LoRA se inserta en paralelo a los módulos en el modelo de
transformador pre-entrenado , específicamente en paralelo a las capas
feed-forward. Una capa de avance tiene dos capas de proyección y una capa no
lineal entre ellas, donde el vector de entrada se proyecta en un vector de
salida con una dimensionalidad diferente mediante una transformación afín. Las
capas de LoRA se insertan junto a cada una de las dos capas de avance.
Ahora, consideremos la capa de proyecto ascendente de feed-forward y el LoRA junto a ella. Los parámetros originales de la capa feed-forward toman la salida de la capa anterior con el modelo de dimensión d y la proyectan en d FFW . Aquí, FFW es la abreviatura de feed-forward. El módulo LoRA colocado junto a él consta de dos capas de alimentación hacia adelante. La primera capa de avance de LoRA toma la misma entrada que la capa de proyecto ascendente de avance y la proyecta en un vector de dimensión r, que es mucho menor que el modelo d . Luego, la segunda capa de avance proyecta el vector en otro vector con una dimensionalidad de d FFW. Finalmente, los dos vectores se suman para formar la representación final.
Como hemos discutido anteriormente, el ajuste fino está
cambiando la representación oculta h calculada por el modelo de transformador
original. Por lo tanto, en este caso, la representación oculta calculada por la
capa del proyecto ascendente del transformador original es h . Por su parte, el
vector calculado por LoRA es el cambio incremental Δh que se utiliza para
modificar la h original . Por lo tanto, la suma de la representación original y
el cambio incremental es la representación oculta actualizada h' .
Al insertar módulos LoRA junto a las capas de avance y un
cabezal clasificador encima del modelo preentrenado, los parámetros específicos
de cada tarea se reducen al mínimo.
Prefix tuning
El ajuste de prefijos(Prefix tuning) es una alternativa ligera al ajuste fino de grandes modelos de lenguaje previamente entrenados para tareas de generación de lenguaje natural. El ajuste fino requiere actualizar y almacenar todos los parámetros del modelo para cada tarea, lo que puede resultar muy costoso dado el gran tamaño de los modelos actuales. El ajuste de prefijos mantiene congelados los parámetros del modelo de lenguaje y optimiza un pequeño vector continuo específico de la tarea denominado prefijo. En el ajuste de prefijos, el prefijo es un conjunto de parámetros libres que se entrenan junto con el modelo de lenguaje. El objetivo del ajuste de prefijos es encontrar un contexto que dirija el modelo de lenguaje hacia la generación de texto que resuelva una tarea en particular.
El prefijo se puede ver como una secuencia de "tokens virtuales" a los que pueden atender los tokens posteriores. Al aprender solo el 0,1 % de los parámetros, el ajuste de prefijo obtiene un rendimiento comparable al ajuste fino en la configuración de datos completos, supera al ajuste fino en configuraciones de datos bajos y se extrapola mejor a ejemplos con temas no vistos durante el entrenamiento.
Al igual que con todas las técnicas PEFT mencionadas
anteriormente, el objetivo final de la sintonización de prefijos es alcanzar h'
. El ajuste de prefijos utiliza prefijos para modificar las representaciones
ocultas extraídas por los modelos de lenguaje originales previamente
entrenados. Cuando el cambio incremental Δh se agrega a la representación
oculta original h , obtenemos la representación modificada, es decir, h' .
Cuando se utiliza el ajuste de prefijos, solo se
actualizan los prefijos, mientras que el resto de las capas se fijan y no se
actualizan.
Prompt tuning
El ajuste rápido(Prompt tuning) es otra técnica PEFT para adaptar modelos de lenguaje previamente entrenados a tareas posteriores específicas. A diferencia del enfoque tradicional de "ajuste del modelo", en el que todos los parámetros del modelo entrenados previamente se ajustan para cada tarea, el ajuste de avisos implica el aprendizaje de avisos suaves a través de la retropropagación que se pueden ajustar para tareas específicas mediante la incorporación de ejemplos etiquetados. El ajuste rápido supera el aprendizaje de pocos disparos de GPT-3 y se vuelve más competitivo a medida que aumenta el tamaño del modelo. También beneficia la solidez de la transferencia de dominios y permite un ensamblaje rápido y eficiente. Requiere almacenar un pequeño aviso específico de la tarea para cada tarea, lo que facilita la reutilización de un solo modelo congelado para múltiples tareas posteriores, a diferencia del ajuste del modelo, que requiere hacer una copia específica de la tarea del modelo preentrenado completo para cada tarea.
¿Como funciona?
La afinación rápida es una variante más simple de la afinación de prefijos. En él, algunos vectores se anteponen al comienzo de una secuencia en la capa de entrada. Cuando se le presenta una oración de entrada, la capa de incrustación convierte cada token en su incrustación de palabra correspondiente, y las incrustaciones de prefijos se anteponen a la secuencia de incrustaciones de tokens. A continuación, las capas de transformadores preentrenadas procesarán la secuencia de incrustación como lo hace un modelo de transformador con una secuencia normal. Solo las incrustaciones de prefijos se ajustan durante el proceso de ajuste fino, mientras que el resto del modelo del transformador se mantiene congelado y sin cambios.
Esta técnica tiene varias ventajas sobre los métodos de ajuste fino tradicionales, incluida una eficiencia mejorada y una sobrecarga computacional reducida. Además, el hecho de que solo las incrustaciones de prefijos estén ajustadas significa que existe un menor riesgo de sobreajuste a los datos de entrenamiento, lo que produce modelos más sólidos y generalizables.P-tuning
P-tuning puede mejorar el rendimiento de modelos de lenguaje como GPT en tareas de comprensión del lenguaje natural (NLU). Las técnicas tradicionales de ajuste fino no han sido efectivas para los GPT, pero el ajuste P utiliza incrustaciones de mensajes continuos entrenables para mejorar su rendimiento. Este método se probó en dos puntos de referencia de NLU, LAMA y SuperGLUE, y mostró mejoras significativas en la precisión y la recuperación del conocimiento mundial. El ajuste P también reduce la necesidad de una ingeniería rápida y supera los enfoques de última generación en el punto de referencia SuperGLUE de pocas tomas.
P-tuning se puede utilizar para mejorar los modelos de
lenguaje previamente entrenados para diversas tareas, incluida la clasificación
de oraciones y la predicción de la capital de un país. La técnica consiste en
modificar las incrustaciones de entrada del modelo de lenguaje preentrenado con
incrustaciones de salida diferenciales generadas mediante un aviso. Los avisos
continuos se pueden optimizar utilizando una función de pérdida descendente y
un codificador de avisos, lo que ayuda a resolver los desafíos de discreción y
asociación.