noticias

Apple permite que los modelos grandes aprendan a ser vagos: escupe el primer token más rápido y mantiene la precisión

2024-08-02

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina



Informe del corazón de la máquina

Departamento editorial de Machine Heart

Ser vago te hace trabajar mejor.

Llama 3.1 acaba de ser lanzada, ¿ya la probaste? Incluso si su PC tiene las últimas especificaciones superiores, es posible que aún experimente un retraso significativo al ejecutar incluso la versión 8B más pequeña. Para mejorar la eficiencia del razonamiento del modelo, los investigadores han ideado una variedad de métodos, pero muchos de ellos harán que el modelo sacrifique algo de precisión.

Recientemente, un equipo de investigación de Apple y Meta AI propuso un nuevo método que puede aumentar la velocidad de inferencia de la etapa de prellenado de Llama 2 a más de 2 veces y al mismo tiempo garantizar que la precisión no disminuya significativamente. La aceleración de 3.1 proporciona algo de inspiración. A este enfoque lo llaman LazyLLM, que significa Lazy Large Language Model.



Título del artículo: LazyLLM: poda dinámica de tokens para una inferencia eficiente de LLM de contexto largo

Dirección del artículo: https://arxiv.org/abs/2407.14057

Entonces, ¿cómo consiguen que LLM sea vago? Para comprender su método, primero necesitamos saber cuál es el proceso estándar de inferencia LLM basado en indicaciones. En pocas palabras, el proceso se divide en dos etapas: prellenado y decodificación, como se muestra en la Figura 1.



En la etapa de prepoblación, el modelo calcula y guarda la caché KV de cada token en el mensaje y predice el primer token. Al tiempo transcurrido en la fase de prepoblación lo llamamos "tiempo hasta el primer token (TTFT)".

A la etapa de prellenado le sigue la etapa de decodificación. En esta etapa, el modelo vuelve a utilizar el KV almacenado en caché para decodificar iterativamente el siguiente token hasta que se cumpla el criterio de detención.

Durante la fase de llenado previo, todas las capas de Transformer usan todos los tokens en el mensaje. TTFT puede ser lento cuando el mensaje es largo porque el mejor LLM basado en Transformer actual es profundo y amplio, y el costo de la atención informática crece cuadráticamente con la cantidad de tokens en el mensaje. Por ejemplo, Llama 2 (versión 7B) apila 32 capas de Transformers y la dimensión del modelo es 4096. En este caso, TTFT requiere 21 veces el tiempo de pared de cada paso de decodificación posterior, lo que representa aproximadamente el 23% del tiempo total de generación en el punto de referencia LongBench.

Por lo tanto, para que la inferencia LLM sea eficiente, optimizar TTFT es un paso muy crítico.

Aunque la optimización de la inferencia LLM es un área de investigación activa, muchos métodos se centran en mejorar la velocidad de inferencia de la etapa de decodificación. Los investigadores han prestado poca atención a la mejora de TTFT. Algunos resultados de investigación basados ​​en compresión pueden mejorar implícitamente el TTFT al reducir el tamaño del LLM.

Otra dirección de investigación es mejorar TTFT bajo la arquitectura estática Transformer. Para esta dirección de investigación, surge naturalmente una pregunta: ¿Son todos los tokens rápidos esenciales al generar el primer token?

La Figura 2 muestra los resultados del análisis LLM en el punto de referencia LongBench.



Se puede ver que para el primer token generado, los puntajes de atención de los tokens de entrada son muy escasos, lo que muestra que muchos tokens en el mensaje de entrada son redundantes e incluso si se eliminan, no afectarán la predicción del siguiente. simbólico. Esta observación es la base del LazyLLM propuesto por el equipo.

Las ventajas de LazyLLM incluyen una amplia gama de aplicaciones, sin necesidad de formación y buenos resultados. La Figura 3 compara LLM estándar y LazyLLM.



LazyLLM

La Figura 4 muestra el marco general de LazyLLM.



A partir del contexto completo, LazyLLM podará gradualmente los tokens, reduciendo así gradualmente la cantidad de cálculos utilizados para obtener el modelo final. Tenga en cuenta que LazyLLM permite que el modelo seleccione diferentes subconjuntos de tokens en diferentes pasos de generación, incluso si algunos de ellos pueden haber sido eliminados en pasos anteriores. En comparación con la poda estática (todos los tokens se podan a la vez), la poda dinámica optimiza la predicción del siguiente token en cada paso de generación, lo que ayuda a mantener el rendimiento del modelo.

Poda progresiva de tokens

Algunos estudios anteriores han utilizado con éxito la poda de tokens para optimizar la inferencia LLM. Sin embargo, estos métodos necesitan acumular mapas de atención completos de los primeros tokens predichos para poder analizar la importancia de los tokens rápidos antes de que comience la poda. Por lo tanto, no son adecuados para reducir TTFT porque aún necesitan calcular todos los cachés de KV durante la fase de precarga.

En comparación, LazyLLM es "muy vago" y solo calculará tokens que son importantes para predecir el siguiente token a partir de la primera iteración de inferencia (paso de pre-llenado).

En la primera iteración, un desafío clave fue determinar la importancia de cada token. Inspirándose en investigaciones anteriores que muestran que los estados ocultos de los tokens evolucionan a medida que pasan a través de las capas de Transformer, la solución del equipo es utilizar la poda de tokens capa por capa en cada paso de generación. Específicamente, utilizan el mapa de atención de cada capa para determinar la importancia del token de entrada para el token que se va a predecir.

Después de calcular la puntuación de confianza del token, otro problema difícil es determinar el umbral para podar el token.

Específicamente, para diferentes capas y diferentes tareas, este umbral puede cambiar a medida que cambia la puntuación de atención. La solución del equipo es utilizar la estrategia de selección del percentil k superior. Específicamente, si la puntuación de confianza de un token es menor que el percentil k en el token de entrada, se elimina. Una vez que se elimina un token, ya no participa en el cálculo de todas las capas posteriores.

Es decir, los tokens utilizados por las capas posteriores son un subconjunto de los tokens utilizados por las capas anteriores.

Experimentos posteriores muestran que cuando la posición de la capa de poda y el número de fichas podadas son diferentes, el rendimiento también cambiará. Específicamente, para la misma capa Transformer, a medida que se eliminan más y más tokens mediante la poda, el rendimiento del modelo disminuirá gradualmente.

También encontraron que, en comparación con la poda en las primeras capas, se logró un mejor rendimiento cuando la poda se realizó en las capas posteriores, lo que indica que las capas posteriores son menos sensibles a la poda simbólica. Para equilibrar mejor la velocidad y la precisión, el equipo utilizó una poda progresiva como se muestra en la Figura 4, reteniendo más tokens en las primeras capas y luego reduciendo gradualmente la cantidad de tokens a medida que fluyen hacia las capas posteriores.

Aux Cache (caché auxiliar)

No hay caché KV en la etapa de prepoblación y cada token se representa en un estado oculto. Por lo tanto, se puede lograr una poda progresiva de tokens eliminando el estado oculto de los tokens podados. Sin embargo, extender la poda progresiva de tokens a pasos de decodificación posteriores no es sencillo. La razón es que cada paso de decodificación utiliza el búfer KV calculado en la etapa de prellenado para calcular la atención. Dado que LazyLLM realiza una poda progresiva de tokens en la etapa de prepoblación, el KV de un token que se poda en una determinada capa no aparecerá en la caché de KV de la siguiente capa.

Como recordatorio, el marco LazyLLM permite que cada paso de generación elija un subconjunto diferente de tokens de la secuencia completa de tokens de entrada en cada paso, independientemente de si se han podado en pasos anteriores. Por ejemplo, en el paso de decodificación posterior, los tokens eliminados que no existen en la caché de KV pueden volver a seleccionarse para el cálculo de atención. En este caso, el modelo no puede recuperar la caché KV de estos tokens.

Una solución intuitiva a esto es pasar los tokens por el origen del Transformador. Sin embargo, esto da como resultado una doble contabilización del mismo token y, en última instancia, ralentiza la velocidad general de generación.

Para resolver este problema, el equipo introdujo otro caché además del caché KV original: Aux Cache (caché auxiliar).

Si los KV que han sido tokens eliminados (como T4 y T7 en la Figura 4) no aparecen en la caché de KV de las capas posteriores, la caché auxiliar guardará sus estados ocultos para recuperarlos en iteraciones posteriores.

Como se muestra en la Figura 4, en cada paso de decodificación, cada capa de Transformador recupera primero el caché KV de los tokens anteriores (si existe). Para aquellos tokens que no están en la caché KV, sus estados ocultos se recuperan directamente desde la caché auxiliar de la capa anterior sin tener que volver a pasar por la capa anterior. Aux Cache garantiza que cada token se calcule como máximo una vez en cada capa de Transformer y también garantiza que LazyLLM sea más rápido que el LLM estándar en su forma más lenta.

experimento

El equipo probó este nuevo enfoque "perezoso" en dos grandes modelos de lenguaje: Llama 2 7B y XGen 7B. El LLM estándar para comparar es el mismo modelo de punto de control previamente entrenado publicado públicamente sin ninguna capacitación adicional.

El punto de referencia experimental es LongBench, un punto de referencia multitarea para la comprensión de contenidos extensos. El punto de referencia LongBench contiene 16 conjuntos de datos e implica 6 tareas, que incluyen preguntas y respuestas de un solo documento, preguntas y respuestas de varios documentos, resumen, aprendizaje de pocas oportunidades, tareas de síntesis y finalización de código.

La métrica de evaluación es la efectividad y eficiencia de cada método en términos de aceleración TTFT versus compensación de precisión.

resultado

La Tabla 1 proporciona los resultados de aceleración y precisión de TTFT para LazyLLM, LLM estándar y otros métodos de referencia.



En esta tabla, la línea de base se refiere a la inferencia estándar de LLM. La caída aleatoria de tokens se refiere a realizar una poda aleatoria de tokens. La poda de token estática se refiere a realizar una poda única en el token de entrada según el método de atención de las capas de Transformer anteriores durante la etapa de prellenado. Prompt Compression es el método de compresión rápida, que utiliza LLM para eliminar la redundancia en el contexto de entrada.

Como puede verse en la Tabla 1, LazyLLM es ampliamente superior en aceleración TTFT, mientras que la disminución en la precisión es básicamente insignificante. Cabe señalar que usar LLM para comprimir mensajes requiere muchos cálculos. Por lo tanto, aunque la compresión rápida hace que la inferencia sea más rápida, su TTFT real es más largo que el LLM estándar.

Impacto en la velocidad de construcción general

Para evaluar el impacto del nuevo método en la velocidad general de generación, el equipo analizó el porcentaje de tokens rápidos utilizados en los cálculos y la aceleración de generación, consulte la Tabla 2.



Se puede ver que la proporción de tokens utilizados en los cálculos de LazyLLM es siempre inferior al 100%, lo que muestra que LazyLLM no ha consumido todos los tokens en el mensaje al final de la generación, pero en teoría el modelo puede utilizar todos los tokens. Esto puede proporcionar una aceleración adicional al proceso de generación general para diferentes tareas.

Tasas de caída en diferentes capas.

El equipo también analizó el impacto de la ubicación de la capa de poda y la cantidad de tokens podados. Los resultados se muestran en la Figura 6.



Se puede ver que cuando la poda se realiza en la misma capa de Transformer, cuantos menos tokens queden, peor será el rendimiento del modelo. Esto también es consistente con nuestra comprensión intuitiva. Además, en comparación con realizar la poda en la capa anterior de Transformer, la poda en las capas posteriores dará como resultado un mejor rendimiento, lo que demuestra que las capas posteriores son menos sensibles a la poda de tokens.

Con base en estas observaciones, se puede decir que la efectividad de la poda progresiva de tokens está probada.

Crecimiento progresivo de KV

Finalmente, el equipo también intentó comprender los aspectos internos del modelo utilizando la lógica de poda de tokens. Específicamente, quieren saber la proporción de uso acumulativo de los tokens de aviso y la correspondiente proporción no utilizada. Este "uso de token acumulativo" se puede definir de manera equivalente como el tamaño de caché KV en cada paso. La Figura 7 muestra el uso acumulativo de estos tokens de aviso en cada etapa de LazyLLM.



Este resultado respalda la hipótesis de que el modelo nunca seleccionará muchos tokens (aunque, en teoría, el modelo podría usar todos los tokens en el mensaje).

Teniendo en cuenta que el modelo aún puede mantener la precisión en la realización de tareas, se puede concluir que el modelo puede descartar efectivamente tokens que no afectan la calidad de la salida.