經過六年的開發,WebGPU 即將在大多數主要網頁瀏覽器上推出。這是巨大的:Web 應用程式現在可以近乎本機地存取 GPU,並增加了計算著色器的容量。
WebGPT 是轉換器模型的普通 JS 和 HTML 實現,旨在作為概念驗證和教育資源。 WebGPT 已經過測試,可與高達 500 M 參數的模型一起使用,但透過進一步的測試/最佳化可能會支援更多參數。
2020 M1 Mac:3ms/token,5M 參數,f32 精度。
2020 M1 Mac:30 毫秒/令牌,117M 參數,f32 精度。
2020 M1 Mac:70ms/token,377M 參數,f32 精度。
2020 M1 Mac:120ms/token,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下載模型檔案。
當我開始這個專案時,我不知道Transformer 是如何運作的,也不知道如何實現它們(或者GPU 或matmul 核心或WebGPU 或與此相關的標記化),因此Andrej Karpathy 關於神經網路和從頭開始構建GPT的系列非常寶貴:Andrej 的Youtube。我還使用了 nanoGPT 儲存庫中的一些程式碼:nanoGPT。
我從 LatitudeGames 在 Javascript 中實作 OpenAI 的 GPT-3 分詞器:GPT-3-Encoder 進行了複製。