自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

秒秒鐘揪出張量形狀錯誤,這個工具能防止ML模型訓(xùn)練白忙一場

新聞 人工智能
韓國首爾大學(xué)的研究者就開發(fā)出了一款“利器”——PyTea。據(jù)研究人員介紹,它在訓(xùn)練模型前,能幾秒內(nèi)幫助你靜態(tài)分析潛在的張量形狀錯誤。

 [[442491]]

本文經(jīng)AI新媒體量子位(公眾號ID:QbitAI)授權(quán)轉(zhuǎn)載,轉(zhuǎn)載請聯(lián)系出處。

模型吭哧吭哧訓(xùn)練了半天,結(jié)果發(fā)現(xiàn)張量形狀定義錯了,這一定沒少讓你抓狂吧。

那么針對這種情況,是否存在較好的解決方法呢?

這不最近,韓國首爾大學(xué)的研究者就開發(fā)出了一款“利器”——PyTea。

據(jù)研究人員介紹,它在訓(xùn)練模型前,能幾秒內(nèi)幫助你靜態(tài)分析潛在的張量形狀錯誤。

那么PyTea是如何做到的,到底靠不靠譜,讓我們一探究竟吧。

PyTea的出場方式

為什么張量形狀錯誤這么重要?

神經(jīng)網(wǎng)絡(luò)涉及到一系列的矩陣計算,前面矩陣的列數(shù)必需匹配后面矩陣的行數(shù),如果維度不匹配,那后面的運算就都無法運行了。

秒秒鐘揪出張量形狀錯誤,這個工具能防止ML模型訓(xùn)練白忙一場

上圖代碼就是一個典型的張量形狀錯誤,[B x 120] * [80 x 10]無法進(jìn)行矩陣運算。

秒秒鐘揪出張量形狀錯誤,這個工具能防止ML模型訓(xùn)練白忙一場

無論是PyTorch,TensorFlow還是Keras在進(jìn)行神經(jīng)網(wǎng)絡(luò)的訓(xùn)練時,大多都遵循圖上的流程。

首先定義一系列神經(jīng)網(wǎng)絡(luò)層(也就是矩陣),然后合成神經(jīng)網(wǎng)絡(luò)模塊……

那么為什么需要PyTea呢?

以往我們都是在模型讀取大量數(shù)據(jù),開始訓(xùn)練,代碼運行到錯誤張量處,才可以發(fā)現(xiàn)張量形狀定義錯誤。

由于模型可能十分復(fù)雜,訓(xùn)練數(shù)據(jù)非常龐大,所以發(fā)現(xiàn)錯誤的時間成本會很高,有時候代碼放在后臺訓(xùn)練,出了問題都不知道……

PyTea就可以有效幫我們避免這個問題,因為它能在運行模型代碼之前,就幫我們分析出形狀錯誤。

秒秒鐘揪出張量形狀錯誤,這個工具能防止ML模型訓(xùn)練白忙一場

網(wǎng)友們已經(jīng)在熱烈討論了。

PyTea是如何運作的,它能否有效地檢查出錯誤呢?

秒秒鐘揪出張量形狀錯誤,這個工具能防止ML模型訓(xùn)練白忙一場

受各種約束條件的影響,代碼可能的運行路徑有很多,不同的數(shù)據(jù)會走向不同的路徑。

所以PyTea需要靜態(tài)掃描所有可能的運行路徑,跟蹤張量變化,推斷出每個張量形狀精確而保守的范圍。

上圖就是PyTea的整體架構(gòu),一共分為翻譯語言,收集約束條件求解器判斷給出反饋四步。

秒秒鐘揪出張量形狀錯誤,這個工具能防止ML模型訓(xùn)練白忙一場

首先PyTea將原始的Python代碼翻譯成一種內(nèi)核語言。PyTea內(nèi)部表示法(PyTea IR)。

秒秒鐘揪出張量形狀錯誤,這個工具能防止ML模型訓(xùn)練白忙一場

接著PyTea追蹤PyTea IR每個可能的執(zhí)行路徑,并收集有關(guān)張量形狀的約束條件。

判斷約束條件是否被滿足,分為線上分析離線分析兩步:

  • 線上分析 node.js(TypeScript / JavaScript):查找張量形狀數(shù)值上的不匹配和誤用API函數(shù)的情況。如果PyTea發(fā)現(xiàn)問題,就會停止在當(dāng)前位置,然后給用戶報錯。
秒秒鐘揪出張量形狀錯誤,這個工具能防止ML模型訓(xùn)練白忙一場
  • 離線分析 Z3/Python:如果線上分析沒有問題,PyTea將收集到的約束條件傳給SMT(Satisfiability Modulo Theories)求解器 Z3,求解器負(fù)責(zé)查看每條路徑的約束條件是否都能被滿足,如果不能,返回給用戶第一條出錯路徑的約束條件。
秒秒鐘揪出張量形狀錯誤,這個工具能防止ML模型訓(xùn)練白忙一場

如果求解器過久沒有反應(yīng),PyTea會返回不知道是否存在問題。

然而追蹤所有可能的路徑是指數(shù)級別的任務(wù),對于復(fù)雜的神經(jīng)網(wǎng)絡(luò)來說,一定會發(fā)生路徑爆炸這個問題。

秒秒鐘揪出張量形狀錯誤,這個工具能防止ML模型訓(xùn)練白忙一場

比如說在這個例子中,網(wǎng)絡(luò)的最終結(jié)構(gòu)是由24個相同模塊塊構(gòu)成的(第17行),那么可能的路徑就有16M之多。

所以路徑爆炸是一定要處理的,PyTea是怎么做的?

PyTea選擇保守的地對路徑剪枝和超時判斷來處理這種路徑爆炸。

什么樣的路徑可以被剪枝?

PyTea給出的答案是,如果該前饋函數(shù)不改變?nèi)种?,并且它的輸出值不受分支條件影響,對于每條路徑都是相等的,我們就可以忽略許多完全一致的路徑,來節(jié)約計算資源。

如果路徑剪枝還是不行,那么就只能按超時處理了。

原理就介紹這么多了,感覺還是值得一試的,現(xiàn)在代碼已經(jīng)在GitHub上面開源了,快去看看吧!

使用方法

依賴庫:

秒秒鐘揪出張量形狀錯誤,這個工具能防止ML模型訓(xùn)練白忙一場

安裝方法:

秒秒鐘揪出張量形狀錯誤,這個工具能防止ML模型訓(xùn)練白忙一場

運行命令:

秒秒鐘揪出張量形狀錯誤,這個工具能防止ML模型訓(xùn)練白忙一場
 

 

 

責(zé)任編輯:張燕妮 來源: 量子位
相關(guān)推薦

2022-07-22 14:56:17

Canvas鴻蒙

2024-08-20 08:40:54

2013-01-24 11:03:30

2019-07-19 06:41:19

數(shù)據(jù)驅(qū)動數(shù)據(jù)分析數(shù)據(jù)決策

2016-10-10 15:47:06

戴爾

2021-08-01 22:42:57

區(qū)塊鏈互聯(lián)網(wǎng)技術(shù)

2021-07-06 12:27:36

混合云多云云計算

2017-03-20 19:40:29

AndroidSwipeRefres下拉刷新

2022-11-06 15:56:50

2016-10-26 08:36:16

2015-05-26 15:17:44

OpenStack

2017-05-31 10:07:50

戴爾100天修行

2011-03-08 11:42:56

2013-10-18 13:48:04

Ubuntu消失

2023-03-20 17:43:35

ChatGPT教育

2019-06-12 15:27:53

加密貨幣幣市互聯(lián)網(wǎng)

2021-04-22 14:30:20

自動駕駛特斯拉智能

2023-03-07 17:53:00

NPS調(diào)研

2023-03-22 07:19:21

點贊
收藏

51CTO技術(shù)棧公眾號