亚洲国产婷婷六月丁香_婷婷精品免费久久久久电影院_99riav国产精品_91香蕉成人免费网站_91在线在线啪永久地址

快訊 >

【快播報】怎樣讓ChatGPT在其內(nèi)部訓(xùn)練神經(jīng)網(wǎng)絡(luò)?先讓它想象自己有4塊3090

時間:2023-02-19 06:50:54       來源:機器之心


【資料圖】

機器之心轉(zhuǎn)載

來源:知乎作者:Posibilitee(悉尼大學人工智能與圖像處理博士)

熱評:想象自己有四塊3090,什么賽博唯心主義?

怎樣讓ChatGPT在其內(nèi)部訓(xùn)練神經(jīng)網(wǎng)絡(luò)?這個話題有點超乎大多數(shù)人的理解。

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

?THE END

轉(zhuǎn)載請聯(lián)系本公眾號獲得授權(quán)

投稿或?qū)で髨蟮溃篶ontent@jiqizhixin.com

關(guān)鍵詞: 神經(jīng)網(wǎng)絡(luò) 當前目錄 自己認為

首頁
頻道
底部
頂部
閱讀下一篇