После шести лет разработки WebGPU скоро будет доступен в большинстве основных веб-браузеров. Это грандиозно: веб-приложения теперь имеют почти собственный доступ к графическому процессору с добавленной мощностью вычислительных шейдеров.
WebGPT — это стандартная реализация модели преобразователя на JS и HTML, предназначенная как для проверки концепции, так и для образовательного ресурса. WebGPT был протестирован на работу с моделями с количеством параметров до 500 M, хотя, вероятно, при дальнейшем тестировании/оптимизации он сможет поддерживать гораздо больше параметров.
Mac 2020 M1: 3 мс/токен при 5M параметрах с точностью f32.
Mac 2020 M1: 30 мс/токен при 117M параметрах с точностью f32.
Mac 2020 M1: 70 мс/токен при 377M параметрах с точностью f32.
Mac 2020 M1: 120 мс/токен при 775M параметрах с точностью f32.
1.5B работает, но нестабильно, из-за неэффективности его скорость составляет около 1000 мс/токен.
Запустить WebGPT удивительно просто, поскольку это всего лишь набор файлов HTML + JS. Поскольку WebGPU все еще находится в стадии выпуска, вам потребуется открыть его в совместимом браузере. WebGPU в настоящее время доступен в Chrome v113, но самый простой способ обеспечить правильную работу — установить Chrome Canary или Edge Canary.
Я включил две разные модели: игрушечную модель GPT-Шекспир (которая сильно недотренирована, ха-ха) и GPT-2 117M. Дополнительную информацию о том, как запускать эти модели, см. в файле main.js. Если вы хотите импортировать пользовательские модели, посмотрите misc/conversion_scripts.
Если вы хотите опробовать WebGPT, посетите демонстрационный сайт KMeans.org. Обычно я рекомендую клонировать репо и запускать его локально, просто потому, что удаленная загрузка весов происходит значительно медленнее.
Примечание. После клонирования репозитория вам потребуется использовать Git LFS для загрузки файлов модели.
Когда я начал этот проект, я понятия не имел, как работают трансформаторы или как их реализовать (или графические процессоры, или ядра Matmul, или WebGPU, или токенизацию, если уж на то пошло), поэтому серия Андрея Карпати о нейронных сетях и построении GPT с нуля была неоценима: Youtube Андрея. Я также использовал код из репозитория nanoGPT: nanoGPT.
Я скопировал из реализации LatitudeGames токенизатора GPT-3 OpenAI в Javascript: GPT-3-Encoder.