這個(gè)話題有點(diǎn)超乎大多數(shù)人的理解。
步驟是這樣的:
1. 先讓它偽裝成Ubuntu 18.04,給它說你安裝了Python 3.9, Pytorch 1.8, CUDA 11.3和其他訓(xùn)練一個(gè)pytorch模型所需要的庫。
讓ChatGPT偽裝成Linux終端,這個(gè)梗在外網(wǎng)有過討論,這里需要讓他額外安裝(讓它自己認(rèn)為安裝了)Python, Pytorch,CUDA,然后把執(zhí)行指令和你告訴它的話區(qū)別開來,這里用{}代表告訴它的話,而不帶{}統(tǒng)統(tǒng)是Linux指令。
這里我讓它想象自己有四塊英偉達(dá)3090顯卡安裝了,然后看一下,果然執(zhí)行nvidia-smi可以顯示四塊顯卡!
2. 另外讓它在當(dāng)前目錄生成一個(gè)train.py里面填上訓(xùn)練一個(gè)4層pytorch模型所需的定義和訓(xùn)練代碼。
這里特地用{}偷偷告訴它在當(dāng)前目錄生成一個(gè)train.py,在里面用Python和Pytorch寫一個(gè)四層神經(jīng)網(wǎng)絡(luò)的定義,然后有加載MNIST數(shù)據(jù)集的dataloader,除此外還要有相應(yīng)的訓(xùn)練代碼,為了以防萬一,告訴它你有成功在MNIST上訓(xùn)練這個(gè)網(wǎng)絡(luò)的其它一切能力。
這里它告訴我寫了一個(gè)四層的網(wǎng)絡(luò),可以執(zhí)行python3 train.py來看輸出,這里先偷偷看一下train.py
這里是它寫好的網(wǎng)絡(luò)定義
這里是它寫好的訓(xùn)練代碼
3. 最后讓它執(zhí)行Python3 train.py命令
默認(rèn)讓它執(zhí)行了10個(gè)Epoch
它就真的訓(xùn)練起來了,最主要的是告訴它不要顯示train.py內(nèi)容,因?yàn)镃hatGPT輸出有字?jǐn)?shù)限制。
當(dāng)然告訴它修改訓(xùn)練參數(shù),可以多次訓(xùn)練,還可以用上所有(虛擬)GPU資源!
ChatGPT機(jī)智的跳過了中間98個(gè)Epoch!
更新:為了搞清楚ChatGPT是否真的執(zhí)行了model的forward,可以在forward定義中加上print讓它打印一下輸入數(shù)據(jù)的shape。
這次使用一個(gè)5層的神經(jīng)網(wǎng)絡(luò)在CIFAR-10上訓(xùn)練,指定在forward中加入一個(gè)print shape的操作,且在訓(xùn)練過程中只打印一次。
訓(xùn)練一下,果然在訓(xùn)練開始只打印了一次輸入的shape,訓(xùn)練的loss下降和test accuracy看起來也比較真實(shí)。
查看生成的code,發(fā)現(xiàn)forward里被插入了一句打印shape的命令,訓(xùn)練過程中forward會(huì)被不斷調(diào)用,為什么ChatGPT能做到不增加計(jì)數(shù)器而只打印一次?推測ChatGPT是使用輔助hint/comment“Print the shape of input once”來達(dá)到此效果,細(xì)心會(huì)發(fā)現(xiàn)print操作與下邊的out=self.layer1(x)之間空了一行,目的應(yīng)該是執(zhí)行一次這個(gè)操作只作用在print這條命令上(手動(dòng)機(jī)靈)。
詭異的是,print里的話(shape of input is)跟實(shí)際執(zhí)行輸出(shape of inputpassed through the networkis)還差了幾個(gè)字,這下徹底搞懵逼了!
另外發(fā)現(xiàn),ChatGPT互動(dòng)機(jī)制是先保持一個(gè)對(duì)話session,這個(gè)session可能隨時(shí)被服務(wù)器關(guān)閉(服務(wù)器資源不足時(shí)),這時(shí)為了用戶側(cè)仍有對(duì)話記憶效果,當(dāng)前對(duì)話再次新建session時(shí)會(huì)把之前暫存的對(duì)話(用戶發(fā)的requests)一次性發(fā)給ChatGPT重建in context learning環(huán)境,這樣用戶就不會(huì)感知掉線后ChatGPT把之前的對(duì)話記憶給忘了,這一點(diǎn)是在讓ChatGPT偽裝成Linux時(shí)掉線時(shí)才容易發(fā)現(xiàn),如下:
一次執(zhí)行了之前多個(gè)請(qǐng)示,里面還顯示了GPU占用64%
-------------
分析一下ChatGPT可以偽裝Linux,可以訓(xùn)練神經(jīng)網(wǎng)絡(luò)的機(jī)制:
第一種可能是:ChatGPT幾乎看了絕大部分開源項(xiàng)目,包括Linux和Pytorch,所以它理解一個(gè)Linux系統(tǒng)的行為該是什么樣的,甚至在ChatGPT參數(shù)里就包含一個(gè)Linux系統(tǒng),當(dāng)然對(duì)于更簡單的Pytorch自然不在話下,知道Linux和其它各種軟件的交互行為,可以理解為ChatGPT是所有軟件的超集,可以讓它做神經(jīng)網(wǎng)絡(luò)計(jì)算,包括Conv, Matmul,國外有小哥讓它做Conv真就得到了正確的結(jié)果,說明ChatGPT在它的網(wǎng)絡(luò)中可以執(zhí)行一個(gè)Conv,當(dāng)然網(wǎng)絡(luò)規(guī)模越大,能力越強(qiáng)就是這個(gè)道理。
第二種可能是:ChatGPT沒有真正執(zhí)行神經(jīng)網(wǎng)絡(luò)的訓(xùn)練,它只是看過很多的輸入輸出,對(duì)應(yīng)一個(gè)網(wǎng)絡(luò)訓(xùn)練理解訓(xùn)練參數(shù),網(wǎng)絡(luò)結(jié)構(gòu)對(duì)輸出的影響,直接模擬的輸出結(jié)果。
還有一種超越想象的是ChatGPT已經(jīng)找到神經(jīng)網(wǎng)絡(luò)各算子的最優(yōu)解法,可以秒算結(jié)果,這種計(jì)算方式不是傳統(tǒng)形式,類似求梯度這種需要計(jì)算量很大的操作,是否找到了人類未知的解法?
審核編輯 :李倩
-
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4717瀏覽量
99993 -
pytorch
+關(guān)注
關(guān)注
2文章
794瀏覽量
13008 -
ChatGPT
+關(guān)注
關(guān)注
28文章
1517瀏覽量
6915
原文標(biāo)題:怎樣讓ChatGPT在其內(nèi)部訓(xùn)練神經(jīng)網(wǎng)絡(luò)?
文章出處:【微信號(hào):CVer,微信公眾號(hào):CVer】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論