2 puntos por GN⁺ 2023-09-24 | 1 comentarios | Compartir por WhatsApp
  • El autor construyó manualmente un modelo transformer similar a GPT-2 para predecir secuencias simples y obtener una comprensión más profunda de los transformers y el mecanismo de atención.
  • El transformer no fue entrenado usando pesos preexistentes; cada peso fue asignado manualmente.
  • La tarea elegida para el transformer es predecir la secuencia "aabaabaabaab...", lo que requiere consultar los dos tokens anteriores para determinar la siguiente salida.
  • El autor usa un esquema de tokenización que representa 'a' como 0 y 'b' como 1.
  • El código del modelo está basado en la implementación GPT-2 de picoGPT de jaymody, con algunas modificaciones para simplificarlo.
  • Las dimensiones del modelo incluyen una longitud de contexto de 5, un tamaño de vocabulario de 2 y un tamaño de embedding de 8.
  • El autor diseñó los pesos de embedding, usando los primeros 5 elementos para embeddings posicionales one-hot y los siguientes 2 elementos para embeddings one-hot del id del token.
  • El bloque transformer fue diseñado para generar matrices q, k y v, volver a proyectar el resultado al embedding y luego reproyectarlo al conjunto de logits del siguiente token usando los pesos del embedding del token.
  • El autor ofrece una explicación detallada del diseño del head de atención y de la proyección al espacio de embeddings.
  • El paso final consiste en multiplicar el resultado de ejecutar el bloque transformer por los pesos transpuestos del embedding del token para obtener los logits finales.
  • El modelo usa la función softmax para la inferencia y puede generar completaciones razonables para la secuencia dada.
  • El modelo logró una tasa de éxito del 100% cuando se probó con contextos no ambiguos.
  • El autor anima a los lectores a obtener una comprensión más intuitiva de los transformers y la atención, e intentar construir su propio modelo.
  • El artículo incluye el código completo del modelo, que usa numpy para realizar los cálculos y define funciones para tokenización, predicción y completado de secuencias.
  • El autor sugiere que la eficiencia del modelo podría mejorarse reduciendo la ventana de contexto y usando técnicas como fused multiply-add y cacheo de kv.
  • Este artículo está dirigido a personas interesadas en el campo de los modelos de lenguaje, especialmente en aprendizaje automático e IA.

1 comentarios

 
GN⁺ 2023-09-24
Opinión de Hacker News
  • Este artículo analiza la creación manual de un transformer para predecir secuencias simples.
  • La investigación relacionada, "Thinking Like Transformers", presenta RASP, un lenguaje de programación primitivo que puede modelarse con componentes de transformers.
  • Programas similares a RASP pueden compilarse en pesos del modelo sin entrenamiento.
  • Se recomienda implementar un transformer desde cero para mejorar la comprensión, incluyendo la importancia del dropout y la paralelización del entrenamiento sobre los tokens.
  • El artículo sugiere que la experiencia práctica de trabajar directamente con transformers puede generar resultados de aprendizaje inesperados.
  • Se menciona un video creado por Karpathy y otros como material útil para entender los transformers.
  • Se propone la idea de una interfaz intuitiva para los pesos del modelo que permita a expertos del dominio ajustarlos manualmente y así acelerar el entrenamiento.
  • El artículo recibe elogios por hacer que los conceptos técnicos sean más accesibles mediante una explicación clara de los transformers.
  • Los transformers se comparan con máquinas abstractas similares a una máquina de Turing o a una máquina que analiza expresiones regulares.
  • El autor duda de las aplicaciones prácticas, pero anima a los lectores a intentar construir un modelo por sí mismos.
  • El artículo resulta interesante e informativo, y despierta debate e ideas entre lectores con afinidad técnica.