首頁 科技週邊 人工智慧 本科生60行程式碼教你手搓GPT大模型,技術介紹堪比教學

本科生60行程式碼教你手搓GPT大模型,技術介紹堪比教學

Apr 11, 2023 pm 11:49 PM
gpt 模型

目前,大型語言模型(LLM)被認為是人工智慧突破的方向。人們正在嘗試用它們做各種複雜的事情,例如問答、創作、數學推理以及編寫程式碼等。近段時間 ChatGPT 持續的爆火是最好的例證。

然而,對於機器學習從業者來說,大模型的門檻很高:因為體積太大難以訓練,很長時間裡這個方向一直被大公司壟斷。不過最近,簡化 GPT 模型的方法越來越多了。 1 月中旬,前特斯拉AI 高級總監Andrej Karpathy(現已回歸OpenAI)就發布了#從零開始構建GPT 模型的完整教程

##。不過訓練出的 GPT 和 OpenAI 的 GPT-3 比較,兩者規模差距達 1 萬 - 100 萬倍。

本科生60行程式碼教你手搓GPT大模型,技術介紹堪比教學近日,加拿大麥克馬斯特大學的一位軟體工程本科生Jay Mody 在導入NumPy 庫下,僅用60 行程式碼就從頭實現了一個GPT 模型,並將其命名為PicoGPT。不僅如此,他還將經過訓練的 GPT-2 模型權重載入到自己的實作中,並產生了一些文字。下面為 60 行程式碼展示。

本科生60行程式碼教你手搓GPT大模型,技術介紹堪比教學#不過要做到這些,你需要熟悉Python 和NumPy,還要有一些訓練神經網路的基本經驗。作者表示,這篇部落格旨在對 GPT 進行簡單易懂的完整介紹。因此,作者只使用已經訓練的模型權重來實現前向傳遞程式碼。

#程式碼位址:

https://github.com/jaymody/picoGPT/blob/29e78cc52b58ed2c1c483ffea2eb46ff6bdec785/gpt2_pico.py#L3-L58

本科生60行程式碼教你手搓GPT大模型,技術介紹堪比教學

本科生60行程式碼教你手搓GPT大模型,技術介紹堪比教學

本科生60行程式碼教你手搓GPT大模型,技術介紹堪比教學

##對於此項目。研究,Andrej Karpathy 給了四個字:雖然遲但到。想當初,Karpathy 建構的 minGPT 和 nanoGPT 還要 300 行程式碼。

本科生60行程式碼教你手搓GPT大模型,技術介紹堪比教學值得一提的是,這篇教學不是完全零門檻的。為了讓讀者明白,作者首先介紹了什麼是 GPT、它的輸入、輸出如何等其他內容,介紹得都非常詳細。

###################至於GPT 到底能幹什麼,作者給了幾個範例,它能寫電子郵件、總結一本書、給你instagram 標題的想法、向5 歲的孩子解釋黑洞、用SQL 寫程式碼等。 ############透過仔細閱讀這部分內容後,你能大致了解 GPT 的一些基礎知識。有了這些背景介紹,接下來就是如何設定了。 #########專案介紹############設定###############這一章主要介紹如何設定編碼器、超參數以及參數。 #################################你要做的,首先是複製程式碼庫:####### ###############然後安裝依賴項:######

本科生60行程式碼教你手搓GPT大模型,技術介紹堪比教學

注意,如果你使用的是 M1 Macbook,在執行 pip install 之前,你需要在 requirements.txt 中將 tensorflow 更改為 tensorflow-macos。在這個專案下,檔案包括encoder.py、utils.py、gpt2.py、gpt2_pico.py:

  • encoder.py:包含OpenAI BPE Tokenizer 的程式碼,直接取自gpt-2 repo;
  • utils.py:包含下載和載入GPT-2 模型權重、tokenizer 和超參數的程式碼;
  • gpt2.py:包含GPT 模型和生成程式碼,可以將其作為python 腳本運行;
  • gpt2_pico.py:與gpt2.py 相同,但是程式碼行數更少。

其中gpt2.py 需要從頭開始實現,因此你要做的是先刪除gpt2.py 並重新建立一個空檔案:

本科生60行程式碼教你手搓GPT大模型,技術介紹堪比教學

然後將下列程式碼複製到gpt2.py 中:

本科生60行程式碼教你手搓GPT大模型,技術介紹堪比教學

##上述程式碼包含4 個主要部分:

  • gpt2 函數是本次實作GPT 的實際程式碼;
  • generate 函數實作自迴歸解碼演算法;
  • main 函數;

本科生60行程式碼教你手搓GPT大模型,技術介紹堪比教學

# fire.Fire (main) 將檔案轉換為CLI 應用程序,以便最終可以運行程式碼:python gpt2.py "some prompt here"。

main 函數包含有encode、hparams、params 參數,執行下列程式碼:

本科生60行程式碼教你手搓GPT大模型,技術介紹堪比教學

接著必要的模型以及tokenizer 檔案將被下載到models/124M 檔案。

設定完成之後,作者開始介紹編碼器、超參數、參數的一些細節內容。就拿編碼器來說,本文的編碼器和 GPT-2 所使用的 BPE tokenizer 一樣。以下是該編碼器編碼和解碼的一些文字範例:本科生60行程式碼教你手搓GPT大模型,技術介紹堪比教學

實際的token 長這個樣子:本科生60行程式碼教你手搓GPT大模型,技術介紹堪比教學

###要注意,有時token 是單字(例如Not),有時它們是單字但前面有一個空格(例如Ġall,Ġ代表一個空格),有時是單字的一部分(例如capes 被拆分為Ġcap 和es),有時它們是標點符號(例如.)。 ############BPE 的一個好處是它可以對任意字串進行編碼,如果遇到詞彙表中不存在的內容,它會將其分解為它能理解的子字串:#####################更細節的內容不再贅述。接下來介紹基礎神經網絡,這一部分就更加基礎了,主要包括 GELU、Softmax 函數以及 Layer Normalization 和 Linear。 ######

本科生60行程式碼教你手搓GPT大模型,技術介紹堪比教學

每一小部分都有程式碼範例,例如在Linear 部分,作者展示了標準矩陣乘法偏移:

本科生60行程式碼教你手搓GPT大模型,技術介紹堪比教學

#線性圖層從一個向量空間投影到另一個向量空間的程式碼如下:

本科生60行程式碼教你手搓GPT大模型,技術介紹堪比教學

#GPT 架構

這部分介紹GPT 自身架構。

本科生60行程式碼教你手搓GPT大模型,技術介紹堪比教學

#Transformer 架構如下:

本科生60行程式碼教你手搓GPT大模型,技術介紹堪比教學

##Transformer 僅使用解碼器堆疊(圖的右側部分):

本科生60行程式碼教你手搓GPT大模型,技術介紹堪比教學

##需要注意,由於擺脫了編碼器,中間的交叉注意力層也被刪除了。

在高層次上,GPT 體系架構有以下三個部分:

##文字位置嵌入;
  • Transformer 解碼器堆疊;
  • 投影到詞彙表。
  • 程式碼就像下面這樣:

本科生60行程式碼教你手搓GPT大模型,技術介紹堪比教學

#程式碼部分截圖

接下來更詳細地分解以上三個部分中的每一個部分,這裡也不再贅述。

以上就是作者對 GPT 的實現,接下來就是將它們組合在一起並運行程式碼,得到 gpt2.py。它的全部內容只有 120 行程式碼(如果刪除註解和空格,則為 60 行)。

作者透過以下方式測試結果:

本科生60行程式碼教你手搓GPT大模型,技術介紹堪比教學

##輸出結果如下:

本科生60行程式碼教你手搓GPT大模型,技術介紹堪比教學

#如作者所說的:這次實驗成功了。

本文只是跟著作者的思路大概介紹了整體流程,想要了解更多內容的小夥伴,可以參考原文連結。

原文連結:https://jaykmody.com/blog/gpt-from-scratch/#basic-layers

以上是本科生60行程式碼教你手搓GPT大模型,技術介紹堪比教學的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1659
14
CakePHP 教程
1415
52
Laravel 教程
1310
25
PHP教程
1258
29
C# 教程
1232
24
全球最強開源 MoE 模型來了,中文能力比肩 GPT-4,價格僅 GPT-4-Turbo 的近百分之一 全球最強開源 MoE 模型來了,中文能力比肩 GPT-4,價格僅 GPT-4-Turbo 的近百分之一 May 07, 2024 pm 04:13 PM

想像一下,一個人工智慧模型,不僅擁有超越傳統運算的能力,還能以更低的成本實現更有效率的效能。這不是科幻,DeepSeek-V2[1],全球最強開源MoE模型來了。 DeepSeek-V2是一個強大的專家混合(MoE)語言模型,具有訓練經濟、推理高效的特點。它由236B個參數組成,其中21B個參數用於啟動每個標記。與DeepSeek67B相比,DeepSeek-V2效能更強,同時節省了42.5%的訓練成本,減少了93.3%的KV緩存,最大生成吞吐量提高到5.76倍。 DeepSeek是一家探索通用人工智

AI顛覆數學研究!菲爾茲獎得主、華裔數學家領銜11篇頂刊論文|陶哲軒轉贊 AI顛覆數學研究!菲爾茲獎得主、華裔數學家領銜11篇頂刊論文|陶哲軒轉贊 Apr 09, 2024 am 11:52 AM

AI,的確正在改變數學。最近,一直十分關注這個議題的陶哲軒,轉發了最近一期的《美國數學學會通報》(BulletinoftheAmericanMathematicalSociety)。圍繞著「機器會改變數學嗎?」這個話題,許多數學家發表了自己的觀點,全程火花四射,內容硬核,精彩紛呈。作者陣容強大,包括菲爾茲獎得主AkshayVenkatesh、華裔數學家鄭樂雋、紐大電腦科學家ErnestDavis等多位業界知名學者。 AI的世界已經發生了天翻地覆的變化,要知道,其中許多文章是在一年前提交的,而在這一

Google狂喜:JAX性能超越Pytorch、TensorFlow!或成GPU推理訓練最快選擇 Google狂喜:JAX性能超越Pytorch、TensorFlow!或成GPU推理訓練最快選擇 Apr 01, 2024 pm 07:46 PM

谷歌力推的JAX在最近的基準測試中表現已經超過Pytorch和TensorFlow,7項指標排名第一。而且測試並不是JAX性能表現最好的TPU上完成的。雖然現在在開發者中,Pytorch依然比Tensorflow更受歡迎。但未來,也許有更多的大型模型會基於JAX平台進行訓練和運行。模型最近,Keras團隊為三個後端(TensorFlow、JAX、PyTorch)與原生PyTorch實作以及搭配TensorFlow的Keras2進行了基準測試。首先,他們為生成式和非生成式人工智慧任務選擇了一組主流

替代MLP的KAN,被開源專案擴展到卷積了 替代MLP的KAN,被開源專案擴展到卷積了 Jun 01, 2024 pm 10:03 PM

本月初,來自MIT等機構的研究者提出了一種非常有潛力的MLP替代方法—KAN。 KAN在準確性和可解釋性方面表現優於MLP。而且它能以非常少的參數量勝過以更大參數量運行的MLP。例如,作者表示,他們用KAN以更小的網路和更高的自動化程度重現了DeepMind的結果。具體來說,DeepMind的MLP有大約300,000個參數,而KAN只有約200個參數。 KAN與MLP一樣具有強大的數學基礎,MLP基於通用逼近定理,而KAN基於Kolmogorov-Arnold表示定理。如下圖所示,KAN在邊上具

你好,電動Atlas!波士頓動力機器人復活,180度詭異動作嚇到馬斯克 你好,電動Atlas!波士頓動力機器人復活,180度詭異動作嚇到馬斯克 Apr 18, 2024 pm 07:58 PM

波士頓動力Atlas,正式進入電動機器人時代!昨天,液壓Atlas剛「含淚」退出歷史舞台,今天波士頓動力就宣布:電動Atlas上崗。看來,在商用人形機器人領域,波士頓動力是下定決心要跟特斯拉硬剛一把了。新影片放出後,短短十幾小時內,就已經有一百多萬觀看。舊人離去,新角色登場,這是歷史的必然。毫無疑問,今年是人形機器人的爆發年。網友銳評:機器人的進步,讓今年看起來像人類的開幕式動作、自由度遠超人類,但這真不是恐怖片?影片一開始,Atlas平靜地躺在地上,看起來應該是仰面朝天。接下來,讓人驚掉下巴

特斯拉機器人進廠打工,馬斯克:手的自由度今年將達到22個! 特斯拉機器人進廠打工,馬斯克:手的自由度今年將達到22個! May 06, 2024 pm 04:13 PM

特斯拉機器人Optimus最新影片出爐,已經可以在工廠裡打工了。正常速度下,它分揀電池(特斯拉的4680電池)是這樣的:官方還放出了20倍速下的樣子——在小小的「工位」上,揀啊揀啊揀:這次放出的影片亮點之一在於Optimus在廠子裡完成這項工作,是完全自主的,全程沒有人為的干預。而且在Optimus的視角之下,它還可以把放歪了的電池重新撿起來放置,主打一個自動糾錯:對於Optimus的手,英偉達科學家JimFan給出了高度的評價:Optimus的手是全球五指機器人裡最靈巧的之一。它的手不僅有觸覺

DualBEV:大幅超越BEVFormer、BEVDet4D,開卷! DualBEV:大幅超越BEVFormer、BEVDet4D,開卷! Mar 21, 2024 pm 05:21 PM

這篇論文探討了在自動駕駛中,從不同視角(如透視圖和鳥瞰圖)準確檢測物體的問題,特別是如何有效地從透視圖(PV)到鳥瞰圖(BEV)空間轉換特徵,這一轉換是透過視覺轉換(VT)模組實施的。現有的方法大致分為兩種策略:2D到3D和3D到2D轉換。 2D到3D的方法透過預測深度機率來提升密集的2D特徵,但深度預測的固有不確定性,尤其是在遠處區域,可能會引入不準確性。而3D到2D的方法通常使用3D查詢來採樣2D特徵,並透過Transformer學習3D和2D特徵之間對應關係的注意力權重,這增加了計算和部署的

牛津大學最新! Mickey:3D中的2D影像匹配SOTA! (CVPR\'24) 牛津大學最新! Mickey:3D中的2D影像匹配SOTA! (CVPR\'24) Apr 23, 2024 pm 01:20 PM

寫在前面項目連結:https://nianticlabs.github.io/mickey/給定兩張圖片,可以透過建立圖片之間的對應關係來估計它們之間的相機姿態。通常,這些對應關係是二維到二維的,而我們估計的姿態在尺度上是不確定的。一些應用,例如隨時隨地實現即時增強現實,需要尺度度量的姿態估計,因此它們依賴外部的深度估計器來恢復尺度。本文提出了MicKey,這是一個關鍵點匹配流程,能夠夠預測三維相機空間中的度量對應關係。透過學習跨影像的三維座標匹配,我們能夠在沒有深度測試的情況下推斷度量相對

See all articles