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