本發(fā)明涉及計算機科學(xué)和軟件工程領(lǐng)域,特別關(guān)注于深度學(xué)習(xí)框架的測試和缺陷檢測。本發(fā)明提出的方法是一種創(chuàng)新的深度學(xué)習(xí)框架測試技術(shù),它利用開發(fā)人員的專業(yè)知識來設(shè)計變異算子和約束條件,從而在模型訓(xùn)練和推理等多個階段檢測出更多樣化的缺陷。該方法已經(jīng)在pytorch、jax和mindspore等廣泛使用的深度學(xué)習(xí)框架上進(jìn)行了評估,并顯示出優(yōu)于現(xiàn)有基線方法的性能。本發(fā)明不僅提高了生成模型的多樣性和合法率,還成功檢測到了多個高價值的缺陷,并在mindspore社區(qū)中得到了實際應(yīng)用,證明了其在實際開發(fā)場景中檢測重要缺陷的有效性。
背景技術(shù):
1、在當(dāng)前的數(shù)字化時代,深度學(xué)習(xí)技術(shù)在多個行業(yè)中取得了顯著的成功,特別是在自動駕駛、醫(yī)學(xué)診斷和人臉識別等安全關(guān)鍵領(lǐng)域。這些應(yīng)用的成功開發(fā)、維護(hù)和部署高度依賴于深度學(xué)習(xí)框架。然而,框架中的缺陷可能導(dǎo)致嚴(yán)重的安全事故和經(jīng)濟損失。因此,對深度學(xué)習(xí)框架進(jìn)行嚴(yán)格的測試和缺陷檢測,以確保其質(zhì)量和安全性,變得至關(guān)重要。
2、盡管現(xiàn)有的研究已經(jīng)采用深度學(xué)習(xí)模型作為測試輸入,并通過變異算子生成多樣化的模型來提高測試效果,但這些方法往往難以檢測到開發(fā)人員最關(guān)心的缺陷。開發(fā)人員更傾向于修復(fù)那些在實際應(yīng)用中常見的缺陷,而不是由模糊測試工具生成的稀有模型所暴露的缺陷。這表明現(xiàn)有的測試方法與開發(fā)者的實際需求之間存在一定的差距。
3、具體來說,現(xiàn)有的測試方法存在三個主要局限:第一,它們檢測到的缺陷往往不切實際,這些缺陷在真實世界中很少,并且通常在確認(rèn)后自動關(guān)閉,沒有任何解決方案;第二,它們忽視了模型生命周期其他階段(如訓(xùn)練)中的關(guān)鍵缺陷,這導(dǎo)致未能發(fā)現(xiàn)與不合理資源調(diào)度、效率不達(dá)標(biāo)、異常性能等相關(guān)的缺陷,從而限制了檢測能力。這些缺陷在開發(fā)過程中更頻繁地暴露出來,通常會干擾使用框架的開發(fā)者;第三,它們消耗了大量資源,缺乏約束條件來過濾非法模型,這些模型可能導(dǎo)致崩潰、輸出異常(而非框架缺陷引起),以及引發(fā)大量的誤報。這會浪費時間分析低價值的測試輸入,并需要額外的手動工作來識別這些誤報,從而降低了測試效率。
4、因此,需要一種新的深度學(xué)習(xí)框架測試方法,能夠更貼近開發(fā)者的實際需求,檢測那些在實際應(yīng)用中常見且關(guān)鍵的缺陷。這種方法應(yīng)該能夠模擬開發(fā)過程中的常見操作,并在模型生命周期的多個階段進(jìn)行全面的缺陷檢測,從而提高測試的準(zhǔn)確性和效率,確保深度學(xué)習(xí)框架的質(zhì)量和安全性。
技術(shù)實現(xiàn)思路
1、本發(fā)明旨在提出了一種基于開發(fā)者經(jīng)驗的深度學(xué)習(xí)框架變異測試方法,該方法通過有效探索有價值的測試輸入空間,并結(jié)合開發(fā)者的專業(yè)知識來檢測多樣化的缺陷。具體而言,我們基于工業(yè)伙伴的開發(fā)深度學(xué)習(xí)模型的實際經(jīng)驗,設(shè)計了七個變異算子和九個約束條件,以模擬開發(fā)者的常見操作并指導(dǎo)模型變異。此外,我們還向工業(yè)合作伙伴咨詢了他們在模型構(gòu)建、訓(xùn)練和推理過程中關(guān)心的問題,以設(shè)計相應(yīng)的測試預(yù)言,并在這些階段檢測多樣化的缺陷。為了進(jìn)一步提高有效性,我們利用了雙q學(xué)習(xí)算法在變異過程中選擇變異算子和種子模型。該方法已經(jīng)在多個廣泛使用的深度學(xué)習(xí)框架上進(jìn)行了評估,并顯示出優(yōu)于現(xiàn)有基線方法的性能,不僅提高了生成模型的多樣性和合法率,還成功檢測到了多個高價值的缺陷,在實際開發(fā)場景中體現(xiàn)出檢測缺陷的有效性。
2、本發(fā)明的技術(shù)方案如下:一種基于開發(fā)者經(jīng)驗的深度學(xué)習(xí)框架變異測試方法,包括以下幾個主要步驟:整個過程迭代進(jìn)行,每輪迭代中首先進(jìn)行變異算子和種子模型選擇,本發(fā)明采用雙q學(xué)習(xí),利用兩個深度q網(wǎng)絡(luò)選擇種子模型和變異算子,高效地識別測試輸入空間中有價值的部分,并通過兩個q網(wǎng)絡(luò)的幫助持續(xù)探索這些部分。然后是模型變異,在每輪變異中,采用選定的變異算子對種子模型進(jìn)行變異,判斷是否變異失敗或生成違反約束的非法模型,并進(jìn)行相應(yīng)的獎勵計算和模型池更新,選擇下一輪的種子模型。接著進(jìn)行缺陷檢測,分析模型池中的合法模型并檢測缺陷,并刪除有缺陷的模型。最后將模型池中的模型根據(jù)獎勵值排序,對于前k個模型進(jìn)行訓(xùn)練和推理來進(jìn)一步檢測缺陷,返回缺陷集合作為輸出。
3、通過上述步驟,本發(fā)明實現(xiàn)了一種基于開發(fā)者經(jīng)驗的深度學(xué)習(xí)框架變異測試方法,解決了現(xiàn)有方法在深度學(xué)習(xí)模型測試中的不足,大大提高了缺陷檢測的準(zhǔn)確性和效率,為深度學(xué)習(xí)框架的質(zhì)量保證提供了可靠的技術(shù)支持,具有重要的應(yīng)用價值和推廣前景。
1.一種基于開發(fā)者經(jīng)驗的深度學(xué)習(xí)框架變異測試方法,包括以下步驟:
2.根據(jù)權(quán)利要求1所述的深度學(xué)習(xí)框架測試方法,其特征在于:所述的迭代過程中,本發(fā)明利用兩個深度q網(wǎng)絡(luò)選擇種子模型和變異算子,每輪變異后根據(jù)當(dāng)前目標(biāo)評估計算的獎勵來更新q網(wǎng)絡(luò)并選擇下一輪的種子模型。
3.根據(jù)權(quán)利要求1所述的深度學(xué)習(xí)框架測試方法,其特征在于:所述的變異算子中以模型結(jié)構(gòu)腳本為變異主體的類型,它們的變異方式是將新的結(jié)構(gòu)添加到原始模型中,刪除現(xiàn)有的結(jié)構(gòu),修改參數(shù)以提高模型性能。
4.根據(jù)權(quán)利要求1所述的深度學(xué)習(xí)框架測試方法,其特征在于:所述的變異算子中以執(zhí)行腳本為變異主體的類型,它們的變異方式是對模型進(jìn)行數(shù)據(jù)擴充,改變損失函數(shù)和優(yōu)化器類型,修改其參數(shù)。
5.根據(jù)權(quán)利要求1所述的深度學(xué)習(xí)框架測試方法,其特征在于:所述的模型變異的步驟中采用選定的變異算子對種子模型進(jìn)行變異,需要遵循6個變異約束,包括結(jié)構(gòu)功能一致性約束、數(shù)據(jù)計算規(guī)模約束、串聯(lián)結(jié)構(gòu)添加/刪除約束、并聯(lián)結(jié)構(gòu)添加/刪除約束、參數(shù)值范圍約束和損失/優(yōu)化器修改約束。
6.根據(jù)權(quán)利要求1所述的深度學(xué)習(xí)框架測試方法,其特征在于:所述的模型變異的步驟中用于判斷生成的模型是否非法的過濾約束,包括3種:執(zhí)行時間約束、輸出精度約束和梯度值范圍約束。
7.根據(jù)權(quán)利要求1所述的深度學(xué)習(xí)框架測試方法,其特征在于:所述的缺陷檢測步驟中,需要檢測4種類型的缺陷:性能缺陷、資源缺陷、精度缺陷和崩潰缺陷。