Estás en una entrevista para Científico de Investigación en OpenAI. El entrevistador pregunta: "¿Cómo expandirías la longitud del contexto de un LLM de 2K a 128K tokens?" Tú: "Voy a ajustar el modelo con documentos más largos con un contexto de 128K" Entrevista terminada. Esto es lo que te perdiste:
Ampliar la ventana de contexto no se trata solo de matrices más grandes. En un transformador tradicional, expandir los tokens por 8x aumenta las necesidades de memoria en 64x debido a la complejidad cuadrática de la atención. ¡Consulta la imagen a continuación! Entonces, ¿cómo lo gestionamos? continúa...👇
1) Atención Escasa Limita el cálculo de atención a un subconjunto de tokens mediante: - Uso de atención local (los tokens solo prestan atención a sus vecinos). - Permitiendo que el modelo aprenda en qué tokens concentrarse. Pero esto tiene un compromiso entre la complejidad computacional y el rendimiento.
Se utilizó una idea similar en ModernBERT. → Atención global completa cada 3 capas → Atención local (128 tokens) en otros casos Resultado: - Longitud de secuencia 16 veces mayor - Rendimiento mucho mejor - Codificador más eficiente en memoria Simple pero poderoso. 👇
Aquí hay una explicación intuitiva tomada del artículo: Imagínate leyendo un libro. ¿Para cada oración que lees, necesitas ser plenamente consciente de toda la trama para entender la mayor parte de ella (atención global completa)? ¿O es suficiente con estar consciente del capítulo actual (atención local), siempre que de vez en cuando pienses en su importancia para la trama principal (atención global)? En la gran mayoría de los casos, es lo segundo.
2) Atención Rápida Este es un método rápido y eficiente en memoria que mantiene la exactitud de los mecanismos de atención tradicionales, es decir, utiliza atención global pero de manera eficiente. Toda la idea gira en torno a optimizar el movimiento de datos dentro de la memoria de la GPU. ¡Entendamos!
Algunos detalles de fondo: - Un hilo es la unidad más pequeña de ejecución. - Varios hilos forman un bloque. Además: - Los hilos en un bloque comparten una memoria rápida (pero escasa) llamada SRAM. - Todos los bloques comparten una memoria global llamada HBM (abundante pero lenta). Revisa esto 👇
La atención mueve grandes matrices entre SRAM y HBM: Para calcular QK: - distribuir matrices a los hilos - calcular, y - enviar el producto a HBM Para calcular softmax: - distribuir el producto a los hilos - calcular, y - enviar la salida a HBM Repetir para todas las capas. Revisa esto 👇
La atención flash implica optimizaciones a nivel de hardware en las que utiliza SRAM para almacenar en caché los resultados intermedios. De esta manera, reduce los movimientos redundantes, ofreciendo una aceleración de hasta 7.6x en comparación con los métodos de atención estándar. Consulta esto 👇
98,93K