博客專欄

        EEPW首頁 > 博客 > OpenAI聯創Karpathy愛上羊駝:純C代碼實現嬰兒Llama2,MacBook可運行,已攬1.6k星

        OpenAI聯創Karpathy愛上羊駝:純C代碼實現嬰兒Llama2,MacBook可運行,已攬1.6k星

        發布人:機器之心 時間:2023-07-25 來源:工程師 發布文章
        上個周末,Karpathy 花了整個周六來忙一個 Llama2 的有趣項目。


        這一周來,Meta 開源的 Llama2 火遍了整個 AI 社區。
        這不,連特斯拉前 AI 總監、年初重回 OpenAI 的 Andrej Karpathy 也坐不住了。他利用周末時間,做了一個關于 Llama2 的有趣項目 ——「llama2.c」。
        圖片
        GitHub 地址:https://github.com/karpathy/llama2.c
        具體是什么呢?他表示「llama2.c」可以讓你在 PyTorch 中訓練一個 baby Llama2 模型,然后使用近 500 行純 C、無任何依賴性的文件進行推理。并且,這個預訓練模型能夠在 M1 芯片的 MacBook Air 上以 fp32 的浮點精度、18 tok/s 的速度對故事進行采樣。
        Karpathy 介紹稱,「llama2.c」的靈感來自 llama.cpp,后者由資深開源社區開發者 Georgi Gerganov 創建,可以在 MacBook 上使用 4-bit 量化運行第一代 LLaMA 模型。
        對于「llama2.c」,它的訓練代碼由 nanoGPT 修改而來,用來訓練 Llama2 架構的模型。核心是在如下 run.c 中編寫 C 推理引擎,不過它目前并不是一個生產級庫。下面是部分推理代碼。
        圖片
        完整代碼地址:https://github.com/karpathy/llama2.c/blob/master/run.c
        結果令 Karpathy 非常驚訝,你可以在(M1)CPU 的純單線程 C 語言中以 fp32 的交互速率來推理更小(O (~10MB))的模型。
        當然,他表示自己沒有嘗試對最小規模的 Llama2 模型(70 億參數)進行推理,他預計速度會非常慢。
        圖片
        目前,Karpathy 在 M1 MacBook Air 上,能夠以 fp32 的浮點精度、100tok/s 的速度對 15M 參數的 288 6 層 6 頭的模型進行推理。
        之后,Karpathy 對項目進行了更新,使用「-O3」進行編譯可以將 M1 MacBook Air 上的 tok/s 從 18 增加到了 98。這還沒完,使用「-funsafe-math-optimizations」進行編譯更是將 tok/s 增加到 315。他表示,只要在 gcc 命令中包含更多字符,速度就能提升 17.5 倍。
        也許你要問了,這個項目有什么意義呢?在 Karpathy 看來,在一些較窄的領域(如生成故事)中,人們可以使用極其小的 Transformers 來做有趣的事情。
        因此,這種可以移植的純 C 實現或許非常有用,我們可以通過簡單的方法高交互速率地運行合理大小的模型(幾千萬參數)。
        有網友對「llama2.c」的開發過程很感興趣,很多人都會有這樣的想法,只是在等待合適的時機,他們沒意識到幾天內就可以完成很多工作。
        Karpathy 回復稱,自己對利用 float32 權重塊及其上的微小推理代碼來生成故事非常感興趣。所以他花了整個周六的時間(從起床一直到睡覺)來寫代碼,然后讓項目工作。
        圖片
        此外,Karpathy 還表示自己將出講解視頻。
        圖片
        項目詳情
        到目前為止,「llama2.c」項目已經在 GitHub 上獲得了 1.6k 的 Stars,并在快速增長。
        圖片
        下面簡單介紹一下該項目的運行步驟。
        為了使用純 C 語言運行一個 baby Llama2 模型,你需要以下的模型檢查點。下載 TinyStories 數據集上訓練的一個 15M 參數的模型(大約 58MB),并將它放入默認檢查點目錄中。


        wget https://karpathy.ai/llama2c/model.bin -P out

        然后編譯并運行 C 代碼。


        gcc -O3 -o run run.c -lm./run out/model.bin

        請注意這只是原始 tokens 流。遺憾的是,我們現在必須通過一個簡單的轉換封裝器來運行 C 代碼(只有 30 行)。


        pip install sentencepiecepython run_wrap.py

        最后你將看到文本流。在 Karpathy 的 M1 MacBook Air 上,運行速度約 100 tok/s,對于超級原生的 fp32 單線程 C 代碼來說還不錯。示例輸出如下所示。
        圖片

        更多細節請查看原項目。

        *博客內容為網友個人發布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。



        關鍵詞: AI

        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 铁岭县| 砀山县| 西吉县| 峨眉山市| 罗江县| 池州市| 电白县| 宜兰县| 陵川县| 定结县| 门头沟区| 南昌市| 惠水县| 汕头市| 胶南市| 龙南县| 海林市| 崇明县| 贵德县| 若尔盖县| 万载县| 北辰区| 嵩明县| 建德市| 时尚| 贺州市| 张家口市| 洞口县| 河间市| 渑池县| 太原市| 监利县| 三亚市| 波密县| 新巴尔虎左旗| 呼伦贝尔市| 东安县| 偃师市| 西平县| 甘孜县| 色达县|