Después de seis años de desarrollo, WebGPU está a punto de lanzarse en la mayoría de los principales navegadores web. Esto es enorme: las aplicaciones web ahora tienen acceso casi nativo a la GPU, con la capacidad adicional de sombreadores informáticos.
WebGPT es una implementación básica de JS y HTML de un modelo transformador, pensada como prueba de concepto y como recurso educativo. Se ha probado que WebGPT funciona con modelos de hasta 500 M de parámetros, aunque probablemente podría admitir muchos más con más pruebas/optimización.
Mac M1 2020: 3 ms/token con parámetros de 5 M con precisión de f32.
Mac M1 2020: 30 ms/token con 117 M de parámetros con precisión de f32.
Mac M1 2020: 70 ms/token con 377 M de parámetros con precisión de f32.
Mac M1 2020: 120 ms/token con parámetros de 775 M con precisión de f32.
1.5B está funcionando pero es inestable, rondando los 1000 ms/token debido a ineficiencias.
Ejecutar WebGPT es notablemente simple, ya que es solo un conjunto de archivos HTML + JS. Dado que WebGPU aún está en proceso de lanzamiento, deberá abrirlo con un navegador compatible. WebGPU está disponible actualmente en Chrome v113, pero la forma más sencilla de garantizar el funcionamiento adecuado es instalar Chrome Canary o Edge Canary.
He incluido dos modelos diferentes: un modelo de juguete GPT-Shakespeare (que está muy poco entrenado jaja) y GPT-2 117M. Consulte main.js para obtener más información sobre cómo ejecutar estos modelos. Si desea importar modelos personalizados, consulte misc/conversion_scripts.
Si desea probar WebGPT, visite el sitio web de demostración aquí KMeans.org. Generalmente recomiendo clonar el repositorio y ejecutarlo localmente, solo porque cargar los pesos de forma remota es significativamente más lento.
Nota: Necesitará usar Git LFS para descargar los archivos del modelo, después de clonar el repositorio.
Cuando comencé este proyecto, no tenía idea de cómo funcionaban los transformadores o cómo implementarlos (o GPU o núcleos matmul o WebGPU o tokenización), por lo que la serie de Andrej Karpathy sobre redes neuronales y la construcción de GPT desde cero fue invaluable: el Youtube de Andrej. También utilicé algo de código del repositorio de nanoGPT: nanoGPT.
Copié de la implementación de LatitudeGames del tokenizador GPT-3 de OpenAI en Javascript: GPT-3-Encoder.