大神卡帕西(Andrej Karpathy)剛“復工”,開創立馬帶來神作:純 C 言語練習 GPT,大神C代1000 行代碼搞定!手搓 ,千行不必現成的碼練深度學習結構,純手搓。搬遷發布僅幾個小時,教程現已攬星 2.3k 。開創
它能夠當即編譯和運轉,手搓和 PyTorch 徹底兼容。千行卡帕西運用的碼練示例是 GPT-2,但 Llama 2 和 Gemma 等也適用 。搬遷
項目發布后 ,教程他還給出了從 PyTorch 遷移到 C 的開創教程 。
網友們直呼:他乃至都不必 C++…… 。
并且就連怎樣讓大模型依樣畫葫蘆的。提示詞。,他也放了出來。現在現已有人在用 Devin 測驗 ing。
挑選用 GPT-2 的原因很簡略 ,有模型權重,采用了倉庫式的 Transformer 模型結構。
項目中心的要點包括 :
直接在 C / CUDA 上練習 LLM ,速度挨近 PyTorch 。
經過在 CPU 版別中運用 SIMD 指令(如 AVX2 和 NEON)聊加快 CPU 版別。
支撐更先進的架構,比方 Llama2 和 Gemma。
卡帕西解說 ,他在開端時分配了一切所需內存,練習期間內存占用堅持不變 ,僅僅數據在不同批次之間動態活動。
關鍵在于手動完成每個獨自層的前向傳達和反向傳達 ,并將它們串聯起來 。例如 ,下面是層歸一化(layernorm)的前向傳達和反向傳達。
一旦有了一切的層 ,把它們悉數串聯在一起。
卡帕西表明這寫起來十分庸俗且苦楚 ,由于過程中有必要確保一切 pointer 和張量都正確擺放。
下圖中左面是分配一個單一的一維內存數組,然后將一切模型權重和激活函數都指向它。
右圖為十分小心腸進行 pointer 核算。
一旦樹立好了正向 / 反向傳達 ,其他的都好說了。
可是到這部分,卡帕西覺得到了最風趣的部分。
我正在將其逐層移植到 CUDA ,使其愈加高效,乃至或許和 PyTorch 功率差不多,但不會有過多依靠。
從這兒開端還有一些擴展 ,比方精度從 fp32 下降到 fp16 或更低 ,以及一些更多的層(比方 RoFE)來支撐更先進的架構。
卡帕西表明,后邊還將出一個視頻進行愈加具體的解說 。
更多的代碼在 GitHub 項目頁中有更具體展現 。
后邊他還加了一個怎么從 PyTorch 遷移到 C 的教程。
前幾天,“消失”了一段時刻的卡帕西忽然發推特 ,表明自己前段時刻戒網去了,整體來說感覺還行 。
和互聯網國際通上信號第 4 天 ,他就發布了這一新項目。給網友們來了點小震懾 。
在一系列慣例的 amazing 、great 之外,咱們對新項目首要關懷三個方面。
榜首 ,為啥不必 Rust?
卡帕西表明他也在學習 Rust,可是依舊以為 C 言語現已很好了 。
它簡略 、潔凈 、簡便、漂亮,是最好的言語。
第二,AI 程序員能寫出相同的項目嗎?
值得一提的是卡帕西還給出了一段提示詞,表明咱們能夠用 LLM Agent 試試看 。
現在的模型生成成果沒那么好,但或許 1 、2 年之后能夠再看看。假如成功了……。
“或許便是 AGI 到來了?”。
現在現已有網友開端用 Devin 測驗了。
他憂慮 Devin 搜到了卡帕西的項目,然后直接抄下來。現在為止 Devin 還沒有這么做。
不過卡帕西表明比較于這個,他更憂慮 LLM Agent 在 1-2 年后的確能夠處理這個問題了,可是那時各種代碼和評論會以一種異樣的方法滲透到練習數據里,導致成果不行令人滿意。
有人彌補說,要加強數據管理了。
第三個評論比較多的論題則是,這個項目和 LLM OS 有關嗎 ?