Nuestra pila de GPU tanto para NVIDIA como para AMD, aparte de algunas piezas mínimas de firmware firmado, es 100% de código abierto y pura Python, excepto por el compilador. No utiliza controladores, marcos o bibliotecas de proveedores. Por eso es tan fácil hacerlo funcionar en Mac. Para los compiladores, en AMD, utilizamos LLVM upstream, y en NVIDIA, utilizamos el compilador NAK del proyecto MESA. Planeamos reemplazar el compilador por tinygrad puro en uno o dos años también. Con RANGEIFY fusionado, nuestra reducción ahora coincide con el estado del arte, al estilo de TVM. Estamos estudiando ThunderKittens y TileLang para velocidad a ese nivel, y deberíamos tener todo esto listo en 200 días para la fecha de entrega de nuestro contrato de entrenamiento AMD Llama 405B. Debido al pequeño tamaño de tinygrad y su naturaleza de pura Python, es la biblioteca de ML más fácil para avanzar, es decir, la pendiente más rápida de mejora. Con el estilo Megakernel para la programación, el estilo MODeL_opt para la planificación y el estilo E-graph para simbólico, deberíamos superar el estado del arte en velocidad de PyTorch y JAX. Si hacemos eso, el foso de NVIDIA se habrá acabado. Son 1000 líneas como máximo para agregar un nuevo acelerador a tinygrad. Y no me refiero a agregar un nuevo acelerador con la ayuda de un controlador de kernel, compilador y bibliotecas. Solo 1000 líneas de software para *todo* el acelerador hablando directamente en los PCIe BARs, como lo que tinygrad está haciendo ahora con las GPU de NVIDIA y AMD.
@geerlingguy O en realidad, AMD es aún más fácil. Solo instala el controlador `extra/usbgpu/tbgpu` y AMD=1
@geerlingguy O en realidad, AMD es aún más fácil. Solo instala el controlador `extra/usbgpu/tbgpu` y AMD=1. 0 planea soportar Intel a este nivel.
57,12K