18 puntos por xguru 2024-04-09 | 1 comentarios | Compartir por WhatsApp
  • Código simple de entrenamiento de LLM hecho por Andrej Karpathy en C/CUDA puro
  • No necesita PyTorch ni cPython
  • Permite entrenar GPT-2 (CPU, fp32) con un solo archivo de alrededor de 1000 líneas
    • La razón para elegir GPT-2 como primer caso funcional es que es el abuelo de los LLM donde por primera vez se combinó el stack moderno
  • Compila y se ejecuta de inmediato, y coincide exactamente con la implementación de referencia de PyTorch
  • Trabajo en curso actualmente
    • Implementación directa en CUDA mucho más rápida y probablemente más cercana a PyTorch
    • Mejora de velocidad de la versión CPU con instrucciones SIMD, AVX2 en x86 / NEON en ARM (por ejemplo: Apple Silicon)
    • Arquitecturas más modernas (por ejemplo: Llama2, Gemma, etc.)

1 comentarios

 
xguru 2024-04-09

Opiniones de Hacker News

  • Expresa admiración por el proyecto y señala que la parte de CUDA todavía no está implementada. Aún no hay código de GPU en el repositorio.

    Espera que, cuando el proyecto esté más consolidado, se haga un video detallado sobre cómo construirlo.

  • Después de ver nano GPT implementado en JAX, ahora quiere ver uno implementado en C/CUDA. Se pregunta si nano GPT sería posible en Mojo. Reconoce que Python tiene muchas funciones convenientes en comparación con otros lenguajes.

  • Expresa expectativa de que una implementación directa en CUDA será mucho más rápida que PyTorch. Considerando el precio de la GPU-RAM, se pregunta cuánto podría mejorar la velocidad en CPU. Pregunta si existe algún problema técnico para agregar ranuras SO-DIMM a la serie RTX y así ampliar la RAM según sea necesario.

  • Pregunta si hay ejemplos de cómo aplicar GPT-2 a datos de series temporales, especialmente cuando se incluyen covariables (covariates). Piensa que la predicción del siguiente token a partir de tokens previos en un LLM es similar al pronóstico de series temporales.

  • Cree que el nombre podría haber sido tomado de su propio proyecto llm.f90. Está basado en llama2.c de Karpathy y cambió el nombre para dar soporte a otras arquitecturas. Probablemente sea coincidencia.

  • Dice que cuando Lex habló con Andre, Andre comentó que se obsesiona positivamente con un problema y dice: "esto tiene que existir". Este proyecto probablemente sea uno de esos resultados.

  • Pregunta, si alguien empezara desde cero, qué materiales debería consultar para ir construyendo comprensión sobre qué hace este código y cómo leerlo. Tiene conocimiento muy limitado sobre LLM y se pregunta si en este campo es estándar usar nombres de variables concisos.

  • Opina que sería bueno crear un tutorial que explique este proyecto y cómo ejecutar un entrenamiento de prueba. Entrenar un modelo "real" en hardware personal no es realista, pero sí hace falta una experiencia de aprendizaje práctica.

  • Expresa curiosidad sobre si CUDA sigue siendo la única opción para ejecutar IA, o si está creciendo el soporte para ejecutar IA con AMD/Intel/u otros métodos.