首頁 > AI資訊 > 行業動態 > OpenAI創始大神手搓千行C代碼訓練GPT,附PyTorch遷移教程

OpenAI創始大神手搓千行C代碼訓練GPT,附PyTorch遷移教程

新火種    2024-04-10

大神卡帕西(Andrej Karpathy)剛“復工”,立馬帶來神作:

純C語言訓練GPT,1000行代碼搞定!,不用現成的深度學習框架,純手搓。

發布僅幾個小時,已經攬星2.3k。

OpenAI創始大神手搓千行C代碼訓練GPT,附PyTorch遷移教程

它可以立即編譯和運行,和PyTorch完全兼容。

卡帕西使用的示例是GPT-2,但Llama 2和Gemma等也適用。

項目發布后,他還給出了從PyTorch遷移到C的教程。

網友們直呼:他甚至都不用C++……

OpenAI創始大神手搓千行C代碼訓練GPT,附PyTorch遷移教程

而且就連怎么讓大模型如法炮制的提示詞,他也放了出來。現在已經有人在用Devin嘗試ing。

OpenAI創始大神手搓千行C代碼訓練GPT,附PyTorch遷移教程

手動實現每個層前向/反向傳播

選擇用GPT-2的原因很簡單,有模型權重,采用了堆棧式的Transformer模型結構。

項目核心的重點包括:

直接在C/CUDA上訓練LLM,速度接近PyTorch通過在CPU版本中使用SIMD指令(如AVX2和NEON)聊加速CPU版本支持更先進的架構,比如Llama2和Gemma

卡帕西解釋,他在開始時分配了所有所需內存,訓練期間內存占用保持不變,只是數據在不同批次之間動態流動。

關鍵在于手動實現每個單獨層的前向傳播和反向傳播,并將它們串聯起來。例如,下面是層歸一化(layernorm)的前向傳播和反向傳播。

OpenAI創始大神手搓千行C代碼訓練GPT,附PyTorch遷移教程

一旦有了所有的層,把它們全部串聯在一起。

卡帕西表示這寫起來非常乏味且痛苦,因為過程中必須保證所有pointer和張量都正確排列。

下圖中左邊是分配一個單一的一維內存數組,然后將所有模型權重和激活函數都指向它。

右圖為非常小心地進行pointer計算。

OpenAI創始大神手搓千行C代碼訓練GPT,附PyTorch遷移教程

一旦建立好了正向/反向傳播,其他的都好說了。

但是到這部分,卡帕西覺得到了最有趣的部分。

從這里開始還有一些擴展,比如精度從fp32下降到fp16或更低,以及一些更多的層(比如RoFE)來支持更先進的架構。

卡帕西表示,后面還將出一個視頻進行更加詳細的講解。

更多的代碼在GitHub項目頁中有更具體展示。

后面他還加了一個如何從PyTorch遷移到C的教程。

OpenAI創始大神手搓千行C代碼訓練GPT,附PyTorch遷移教程

網友:這和LLM OS有關嗎?

前幾天,“消失”了一段時間的卡帕西突然發推特,表示自己前段時間戒網去了,總體來說感覺害行。

OpenAI創始大神手搓千行C代碼訓練GPT,附PyTorch遷移教程

和互聯網世界通上信號第4天,他就發布了這一新項目。給網友們來了點小震撼。

在一系列常規的amazing、great之外,大家對新項目主要關心三個方面。

第一,為啥不用Rust?

卡帕西表示他也在學習Rust,但是仍舊認為C語言已經很好了。

OpenAI創始大神手搓千行C代碼訓練GPT,附PyTorch遷移教程

第二,AI程序員能寫出同樣的項目嗎?

值得一提的是卡帕西還給出了一段提示詞,表示大家可以用LLM Agent試試看。

“可能就是AGI到來了?”

OpenAI創始大神手搓千行C代碼訓練GPT,附PyTorch遷移教程

現在已經有網友開始用Devin嘗試了。

他擔心Devin搜到了卡帕西的項目,然后直接抄下來。目前為止Devin還沒有這么做。

OpenAI創始大神手搓千行C代碼訓練GPT,附PyTorch遷移教程

不過卡帕西表示相比于這個,他更擔心LLM Agent在1-2年后確實可以解決這個問題了,但是那時各種代碼和討論會以一種別樣的方式滲透到訓練數據里,導致結果不夠令人滿意。

OpenAI創始大神手搓千行C代碼訓練GPT,附PyTorch遷移教程

有人補充說,要加強數據管理了。

OpenAI創始大神手搓千行C代碼訓練GPT,附PyTorch遷移教程

第三個討論比較多的話題則是,這個項目和LLM OS有關嗎?

OpenAI創始大神手搓千行C代碼訓練GPT,附PyTorch遷移教程

前段時間卡帕西從OpenAI離職,計劃要開始推進個人項目。

當時大家都猜測,他要做LLM OS。

OpenAI創始大神手搓千行C代碼訓練GPT,附PyTorch遷移教程

3月底在訪談中,他也再次聊了這個話題。

他表示,現在AGI的路線已經相對清晰了,大家都在如火如荼推進工作,大致來說,每個人都在努力構建“大模型操作系統(LLM OS)”.

OpenAI創始大神手搓千行C代碼訓練GPT,附PyTorch遷移教程

現在隨著新項目推出,卡帕西的個人項目大概是已經提上日程了。

后續關于LLM.C的項目還會推出更詳細的視頻講解版本,大家可以期待一波了~

Tags:
相關推薦
免責聲明
本文所包含的觀點僅代表作者個人看法,不代表新火種的觀點。在新火種上獲取的所有信息均不應被視為投資建議。新火種對本文可能提及或鏈接的任何項目不表示認可。 交易和投資涉及高風險,讀者在采取與本文內容相關的任何行動之前,請務必進行充分的盡職調查。最終的決策應該基于您自己的獨立判斷。新火種不對因依賴本文觀點而產生的任何金錢損失負任何責任。

熱門文章