徐夢(mèng)煒,劉淵強(qiáng),黃 康,劉譞哲,黃 罡
1(北京大學(xué) 信息科學(xué)技術(shù)學(xué)院 軟件研究所,北京 100871)
2(高可信軟件技術(shù)教育部重點(diǎn)實(shí)驗(yàn)室(北京大學(xué)),北京 100871)
3(領(lǐng)規(guī)科技 北京有限公司,北京 100094)
近些年,以神經(jīng)網(wǎng)絡(luò)(neural network)為代表的機(jī)器學(xué)習(xí)技術(shù)得到了快速的發(fā)展,提升了計(jì)算機(jī)系統(tǒng)的智能化程度,在計(jì)算機(jī)視覺(jué)、自然語(yǔ)言處理等多個(gè)重要研究領(lǐng)域得到了廣泛應(yīng)用.近年來(lái),機(jī)器學(xué)習(xí)應(yīng)用的發(fā)展趨勢(shì)之一是由云端逐漸遷移到終端設(shè)備,如智能手機(jī).例如,近期的實(shí)證研究[1]發(fā)現(xiàn),Google Play 應(yīng)用商店中搭載神經(jīng)網(wǎng)絡(luò)并進(jìn)行本地計(jì)算的移動(dòng)應(yīng)用數(shù)量在2018 年第三季度內(nèi)增加了27%,這些深度學(xué)習(xí)應(yīng)用擁有千萬(wàn)級(jí)的用戶下載與評(píng)論量,占應(yīng)用商店中所有應(yīng)用下載評(píng)論總量超過(guò)10%.此外,各大互聯(lián)網(wǎng)廠商紛紛自研了面向移動(dòng)終端的深度學(xué)習(xí)框架,包括Google 的TF Lite、Facebook 的Caffe2、蘋(píng)果的Core ML、高通的SNPE、騰訊的ncnn等,以?xún)?yōu)化神經(jīng)網(wǎng)絡(luò)模型在這些資源受限設(shè)備上的部署.考慮到神經(jīng)網(wǎng)絡(luò)在性能上的優(yōu)勢(shì)以及部署上更具挑戰(zhàn)性,本文將以神經(jīng)網(wǎng)絡(luò)為代表研究終端設(shè)備上的機(jī)器學(xué)習(xí)部署問(wèn)題.
開(kāi)發(fā)面向移動(dòng)終端的神經(jīng)網(wǎng)絡(luò)面臨的核心挑戰(zhàn)之一是:模型的訓(xùn)練需要大量的數(shù)據(jù),而這些數(shù)據(jù)往往來(lái)自于終端設(shè)備本身且包含大量用戶隱私信息.例如,輸入法應(yīng)用的詞預(yù)測(cè)任務(wù)中需要用戶的輸入文本作為訓(xùn)練集,其中可能包含用戶的信用卡號(hào)、聊天記錄、郵件等隱私信息.近年來(lái),為了更加規(guī)范地保護(hù)用戶數(shù)據(jù)隱私,各個(gè)國(guó)家機(jī)構(gòu)出臺(tái)了相關(guān)的法律法規(guī).例如,歐盟于2018 年正式施行《通用數(shù)據(jù)保護(hù)條例》(GDPR)[2],其中詳細(xì)規(guī)定了公司在涉及用戶數(shù)據(jù)時(shí)需要遵循的原則;我國(guó)制訂中的《個(gè)人信息保護(hù)法》對(duì)APP 違規(guī)收集用戶信息等行為給出了法律定義,對(duì)用戶隱私保護(hù)做到有法可依.
如何在保護(hù)用戶隱私的前提下訓(xùn)練機(jī)器學(xué)習(xí)模型正在逐漸引起學(xué)術(shù)界和工業(yè)界的廣泛關(guān)注.以聯(lián)邦學(xué)習(xí)[3]、同態(tài)加密[4]、差分隱私[5]為代表的技術(shù)在某種程度上提供了解決方案,但都存在一定的局限性.例如,聯(lián)邦學(xué)習(xí)通過(guò)將數(shù)據(jù)和訓(xùn)練分布在不同終端設(shè)備上,通過(guò)中心化的參數(shù)服務(wù)器來(lái)分發(fā)模型、聚合梯度,從而達(dá)到隱私保護(hù)的目的.但在聯(lián)邦學(xué)習(xí)過(guò)程中,依舊存在著上傳梯度被攻擊、網(wǎng)絡(luò)帶寬開(kāi)銷(xiāo)大等問(wèn)題.同態(tài)加密利用經(jīng)典的密碼學(xué)算法實(shí)現(xiàn)了數(shù)據(jù)保護(hù),但會(huì)造成大量的額外計(jì)算開(kāi)銷(xiāo),導(dǎo)致其在復(fù)雜神經(jīng)網(wǎng)絡(luò)上無(wú)法用于實(shí)踐.
為此,本文提出了“自治式學(xué)習(xí)”的神經(jīng)網(wǎng)絡(luò)訓(xùn)練模式:將與用戶數(shù)據(jù)相關(guān)的模型計(jì)算任務(wù)完全部署在本地終端,保證數(shù)據(jù)不會(huì)以任何形式(原始數(shù)據(jù)、加密數(shù)據(jù)、模型梯度等)傳到外部.本文主要關(guān)注其中的模型訓(xùn)練過(guò)程.與傳統(tǒng)的集中式或聯(lián)邦式學(xué)習(xí)相比,自治式學(xué)習(xí)除了能夠更大程度地保護(hù)用戶隱私之外,還具有另外兩個(gè)優(yōu)勢(shì):(1)個(gè)性化學(xué)習(xí):自治式學(xué)習(xí)利用每個(gè)終端上產(chǎn)生的數(shù)據(jù)訓(xùn)練各自的模型,然后服務(wù)該特定的用戶,意味著該模型是為每個(gè)用戶定制化訓(xùn)練學(xué)習(xí)得到的.在很多移動(dòng)場(chǎng)景下,用戶的行為習(xí)慣(如輸入法,語(yǔ)音助手)各異,定制化訓(xùn)練得到的模型相較所有用戶共享的全局模型具有更高的準(zhǔn)確率.(2)高擴(kuò)展性:傳統(tǒng)的集中式/聯(lián)邦式的學(xué)習(xí)模式所需要的硬件資源,包括計(jì)算、存儲(chǔ)、網(wǎng)絡(luò)帶寬等,與接入的終端設(shè)備數(shù)量呈近似線性關(guān)系,對(duì)于用戶量巨大的應(yīng)用而言,這會(huì)帶來(lái)應(yīng)用開(kāi)發(fā)和維護(hù)成本的巨大增加.而自治式學(xué)習(xí)要求每一臺(tái)接入設(shè)備只通過(guò)本地的計(jì)算存儲(chǔ)資源進(jìn)行模型訓(xùn)練,云端無(wú)需提供更多的硬件資源,因此具有更強(qiáng)的擴(kuò)展性.
實(shí)現(xiàn)一個(gè)自治式學(xué)習(xí)系統(tǒng)面臨兩個(gè)主要挑戰(zhàn):首先,如何在終端上數(shù)據(jù)不傳到外部的前提下,訓(xùn)練出高質(zhì)量的神經(jīng)網(wǎng)絡(luò)模型?其次,每個(gè)終端設(shè)備上的硬件資源受限,如何在不影響用戶體驗(yàn)的前提下,快速完成訓(xùn)練并進(jìn)行部署?為了解決這兩個(gè)問(wèn)題,我們?cè)O(shè)計(jì)實(shí)現(xiàn)了第1 個(gè)面向移動(dòng)終端的自治式學(xué)習(xí)系統(tǒng)AutLearn,其核心思想是采用云端協(xié)同思想,在云端服務(wù)器首先利用公共數(shù)據(jù)集訓(xùn)練一個(gè)泛化能力較強(qiáng)的模型,然后在終端利用遷移學(xué)習(xí)技術(shù)對(duì)模型進(jìn)行調(diào)整,得到一個(gè)適用于該終端設(shè)備的可用于部署的模型.云端的預(yù)訓(xùn)練使用公共的非隱私數(shù)據(jù)集,而無(wú)需用戶上傳任何數(shù)據(jù);終端的遷移學(xué)習(xí)使用了數(shù)據(jù)增強(qiáng)技術(shù),以提高訓(xùn)練的效果.為了不影響用戶在使用終端設(shè)備過(guò)程中的體驗(yàn),我們將終端遷移學(xué)習(xí)進(jìn)一步分成了兩種模式:終端離線學(xué)習(xí)與終端在線學(xué)習(xí),以適用于不同的訓(xùn)練場(chǎng)景與目標(biāo).此外,AutLearn 引入了一系列的優(yōu)化技術(shù),包括模型壓縮、運(yùn)行時(shí)緩存優(yōu)化、神經(jīng)網(wǎng)絡(luò)編譯器等.這些技術(shù)在保證模型精度(或極少精度損失)的前提下,極大地節(jié)省了終端設(shè)備上神經(jīng)網(wǎng)絡(luò)訓(xùn)練的資源開(kāi)銷(xiāo).
我們基于AutLearn 實(shí)現(xiàn)了兩個(gè)自治式學(xué)習(xí)的典型應(yīng)用場(chǎng)景:輸入詞預(yù)測(cè)與圖像分類(lèi),并在大規(guī)模數(shù)據(jù)集和經(jīng)典神經(jīng)網(wǎng)絡(luò)模型上進(jìn)行了驗(yàn)證.實(shí)驗(yàn)結(jié)果表明,AutLearn 可以在保護(hù)用戶隱私的前提下,訓(xùn)練得到收斂至較高準(zhǔn)確率的神經(jīng)網(wǎng)絡(luò)模型.與集中式/聯(lián)邦式的訓(xùn)練模式相比,自治式訓(xùn)練得到的模型可以達(dá)到相近甚至更高的準(zhǔn)確率,產(chǎn)生個(gè)性化定制的效果.此外,AutLearn 的終端訓(xùn)練優(yōu)化技術(shù)可以節(jié)省最多超過(guò)80%的訓(xùn)練時(shí)間和終端設(shè)備能耗.結(jié)合我們對(duì)真實(shí)智能手機(jī)用戶使用行為的觀察分析,AutLearn 可以在一天內(nèi)完成新模型的訓(xùn)練用于部署.
以深度學(xué)習(xí)算法為代表的機(jī)器學(xué)習(xí)技術(shù)已經(jīng)得到了學(xué)術(shù)界的廣泛關(guān)注,并在工業(yè)界也進(jìn)行了大量的部署.深度學(xué)習(xí)模型的質(zhì)量依賴(lài)于訓(xùn)練數(shù)據(jù),后者的數(shù)量與質(zhì)量決定了最終訓(xùn)練得到模型的準(zhǔn)確率是否滿足要求.然而,這些數(shù)據(jù)往往需要從用戶設(shè)備中采集,并包含用戶的隱私信息.這些數(shù)據(jù)一旦離開(kāi)終端設(shè)備就會(huì)帶來(lái)隱私泄露的風(fēng)險(xiǎn).例如,輸入法應(yīng)用的詞預(yù)測(cè)任務(wù)中需要用戶的輸入文本作為訓(xùn)練集,其中可能包含用戶的信用卡號(hào)、聊天記錄、郵件等隱私信息.當(dāng)數(shù)據(jù)被上傳至服務(wù)器后,傳統(tǒng)的信息安全技術(shù),如加密傳輸、用戶匿名處理等都無(wú)法保證用戶數(shù)據(jù)不會(huì)被泄露和惡意地使用.為了更加規(guī)范地保護(hù)用戶數(shù)據(jù),各個(gè)國(guó)家機(jī)構(gòu)出臺(tái)了相關(guān)的法律.例如,歐盟于2018 年正式施行《通用數(shù)據(jù)保護(hù)條例》[1],詳細(xì)規(guī)定了公司在涉及用戶數(shù)據(jù)時(shí)需要遵循的原則.如何在保證用戶隱私的前提下訓(xùn)練高質(zhì)量的深度學(xué)習(xí)模型是一項(xiàng)巨大的挑戰(zhàn).為此,相關(guān)研究人員提出了不同的解決方案.下面我們概述其中幾個(gè)主要相關(guān)工作,總結(jié)各自的不足.
聯(lián)邦學(xué)習(xí)技術(shù)最初是由Google AI 團(tuán)隊(duì)提出來(lái)的[3],其核心思想在于不直接上傳用戶數(shù)據(jù),而是將模型訓(xùn)練任務(wù)部署到終端設(shè)備,后者在訓(xùn)練結(jié)束后上傳模型的更新到云端,而云端只需要對(duì)來(lái)自不同終端設(shè)備的模型更新聚合,以及下發(fā)聚合后的模型.由于輸入數(shù)據(jù)到梯度是多對(duì)多的高維空間映射,攻擊者很難根據(jù)模型梯度獲取原始數(shù)據(jù).因此,聯(lián)邦學(xué)習(xí)在一定程度上保護(hù)了用戶隱私.后續(xù)有大量的工作關(guān)注于如何優(yōu)化聯(lián)邦學(xué)習(xí)的流程.例如,為了減小終端到服務(wù)器的通信開(kāi)銷(xiāo),Kone?ny 等人[5]提出了兩種優(yōu)化策略:結(jié)構(gòu)化更新與速寫(xiě)式更新.前者將模型參數(shù)限制在一個(gè)相對(duì)更小的解空間里,使得模型可以使用更少的參數(shù)表示,從而減少了模型梯度的大小.后者仍舊使用原模型進(jìn)行訓(xùn)練,但在上傳之前對(duì)訓(xùn)練得到的模型梯度進(jìn)行壓縮,如量化、降采樣等;為了解決聯(lián)邦學(xué)習(xí)過(guò)程中的終端設(shè)備異構(gòu)性問(wèn)題,Li 等人[6]提出的SmartPC 系統(tǒng)使用動(dòng)態(tài)步調(diào)同步策略,在每一輪訓(xùn)練根據(jù)上一輪收到終端模型更新的延遲來(lái)動(dòng)態(tài)調(diào)整當(dāng)前的等候期限.其次,該工作還提出了通過(guò)動(dòng)態(tài)調(diào)整終端設(shè)備的CPU 運(yùn)行頻率,保證梯度可以在等候期限之前被上傳,并最小化訓(xùn)練能耗;為了進(jìn)一步優(yōu)化聯(lián)邦學(xué)習(xí)過(guò)程中的數(shù)據(jù)安全,Bonawitz[7]等人提出模型的更新通過(guò)安全多方計(jì)算技術(shù)在終端進(jìn)行融合,從而保證服務(wù)器只能看到融合后的整體更新,而無(wú)法通過(guò)個(gè)體的模型更新來(lái)推斷其訓(xùn)練數(shù)據(jù).
同態(tài)加密算法允許對(duì)密文進(jìn)行特定形式的代數(shù)運(yùn)算后,得到仍然是加密的結(jié)果,將其解密所得到的結(jié)果與對(duì)明文進(jìn)行同樣的運(yùn)算結(jié)果一致.換言之,這項(xiàng)技術(shù)令人們可以在加密的數(shù)據(jù)中進(jìn)行諸如檢索、比較等操作,得出正確的結(jié)果,而在整個(gè)處理過(guò)程中無(wú)需對(duì)數(shù)據(jù)進(jìn)行解密.一些相關(guān)工作[8,9]探究了如何將同態(tài)加密運(yùn)用于機(jī)器學(xué)習(xí)訓(xùn)練過(guò)程,但主要集中在一些簡(jiǎn)單算法上,如支持向量機(jī)、決策樹(shù)等.由于深度學(xué)習(xí)運(yùn)算的復(fù)雜性,為其設(shè)計(jì)同態(tài)加密算法具有更大的挑戰(zhàn).同時(shí),在加密數(shù)據(jù)上進(jìn)行訓(xùn)練也遠(yuǎn)遠(yuǎn)比預(yù)測(cè)[10]更加復(fù)雜.Nandakumar 等人[11]初步探討并實(shí)現(xiàn)了如何利用同態(tài)加密技術(shù)在加密數(shù)據(jù)上進(jìn)行深度學(xué)習(xí)訓(xùn)練.他們使用了ciphertext packing 技術(shù)對(duì)訓(xùn)練進(jìn)行加速,但訓(xùn)練的效率依舊不高,無(wú)法支持卷積層操作,在訓(xùn)練得到模型精度上甚至還有少量的損失.
差分隱私[12]最初是針對(duì)數(shù)據(jù)庫(kù)查詢(xún)而設(shè)計(jì)的,其目的在于將用戶隱私量化,保證用戶只能夠獲取數(shù)據(jù)庫(kù)的統(tǒng)計(jì)信息,而無(wú)法獲得單獨(dú)的個(gè)體信息,同時(shí)最大化數(shù)據(jù)查詢(xún)的準(zhǔn)確性.差分隱私的具體實(shí)現(xiàn)方式主要是在查詢(xún)結(jié)果里加入隨機(jī)性,如服從Laplace 分布和指數(shù)分布的噪音.為了將差分隱私技術(shù)應(yīng)用于機(jī)器學(xué)習(xí)訓(xùn)練過(guò)程中的數(shù)據(jù)保護(hù),Abadi 等人[5]提出修改模型的訓(xùn)練算法,在每一個(gè)batch 的數(shù)據(jù)訓(xùn)練得到的梯度之上加入擾動(dòng),然后將擾動(dòng)后的梯度應(yīng)用于模型訓(xùn)練.在該過(guò)程中,還可以累加擾動(dòng)的數(shù)值,從而在訓(xùn)練結(jié)束之后得到整體隱私的量化度.該技術(shù)也已經(jīng)被集成到TensorFlow 的開(kāi)源項(xiàng)目中,以幫助開(kāi)發(fā)者訓(xùn)練具有隱私保護(hù)的深度學(xué)習(xí)模型.Shokri等人[13]提出部分梯度共享的策略,即在每一輪訓(xùn)練結(jié)束之后,選擇性地分享梯度中的一部分,然后將多個(gè)組織的梯度聚合,整體應(yīng)用于舊模型參數(shù)上,得到更新后的模型.這種策略能夠有效工作的主要原因在于梯度下降訓(xùn)練法本身對(duì)不可靠的帶有隨機(jī)性質(zhì)的模型梯度具有很強(qiáng)的健壯性.在這種策略之上,Shokri 等人進(jìn)一步采用差分隱私技術(shù)來(lái)量化并減少隱私泄露的風(fēng)險(xiǎn).
小結(jié):以上技術(shù)雖然能夠在某種程度上保護(hù)用戶隱私,但同樣存在著其局限.例如:聯(lián)邦學(xué)習(xí)技術(shù)始終要求用戶上傳數(shù)據(jù)相關(guān)信息(模型梯度或者模型本身),導(dǎo)致其依舊存在隱私泄露的風(fēng)險(xiǎn)[14],并且聯(lián)邦學(xué)習(xí)本身會(huì)導(dǎo)致大量的網(wǎng)絡(luò)通信開(kāi)銷(xiāo),對(duì)帶寬的要求較高;同態(tài)加密技術(shù)會(huì)導(dǎo)致大量的計(jì)算開(kāi)銷(xiāo),無(wú)法被應(yīng)用于復(fù)雜的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)及實(shí)踐之中;差分隱私技術(shù)主要用于保護(hù)訓(xùn)練后得到的模型中蘊(yùn)含的數(shù)據(jù)信息,而無(wú)法保護(hù)訓(xùn)練過(guò)程中訓(xùn)練數(shù)據(jù)不被獲取以及被惡意地使用.
本文提出分布式自治學(xué)習(xí)的概念,其核心思想是:終端設(shè)備無(wú)需以任何形式上傳用戶數(shù)據(jù),與用戶數(shù)據(jù)相關(guān)的運(yùn)算(模型訓(xùn)練)全部在本地進(jìn)行.在某種程度上,自治式學(xué)習(xí)可以視為集中式學(xué)習(xí)到近些年的聯(lián)邦式發(fā)展方向的一種特殊情況,即,原始數(shù)據(jù)上傳(集中式學(xué)習(xí))→訓(xùn)練結(jié)果數(shù)據(jù)上傳(聯(lián)邦學(xué)習(xí))→無(wú)數(shù)據(jù)上傳(自治式學(xué)習(xí)),其對(duì)隱私的保護(hù)程度也依次遞增.在自治式學(xué)習(xí)中,每個(gè)客戶端設(shè)備完全不依賴(lài)于任何外部的數(shù)據(jù)與計(jì)算能力,從一個(gè)初始模型出發(fā),通過(guò)本地?cái)?shù)據(jù)和計(jì)算能力獲得一個(gè)新的部署于本地的高精度定制模型.
Fig.1 A comparison of different machine learning training paradigms圖1 多種機(jī)器學(xué)習(xí)訓(xùn)練模式的比較示意圖
這種自治式學(xué)習(xí)的計(jì)算模式也契合了近些年逐步引起重視的去中心化思想.聯(lián)邦式學(xué)習(xí)雖然在某種程度上進(jìn)行了去中心化(相較集中式學(xué)習(xí)),但是依舊存在一個(gè)中心化節(jié)點(diǎn)來(lái)協(xié)調(diào)各個(gè)終端的計(jì)算任務(wù),匯總這些終端上傳的模型參數(shù).而自治式學(xué)習(xí)實(shí)現(xiàn)了更加徹底的去中心化機(jī)器學(xué)習(xí)訓(xùn)練模式.
我們認(rèn)為,自治式學(xué)習(xí)的優(yōu)勢(shì)主要體現(xiàn)在以下3 個(gè)方面.
·用戶隱私保護(hù):由于終端設(shè)備沒(méi)有任何數(shù)據(jù)上傳操作,所有數(shù)據(jù)在本地終端設(shè)備上產(chǎn)生、存儲(chǔ)并消耗,極大地減小了隱私泄露的風(fēng)險(xiǎn).相對(duì)應(yīng)地,類(lèi)似聯(lián)邦式的機(jī)制依舊需要上傳與用戶隱私間接相關(guān)的數(shù)據(jù)(如模型更新梯度),依舊存在隱私泄露的風(fēng)險(xiǎn).從最終用戶的角度出發(fā),將數(shù)據(jù)保留在本地顯然更容易讓人接受,更利于各國(guó)數(shù)據(jù)保護(hù)條例的實(shí)施.
·個(gè)性化模型:自治式學(xué)習(xí)的過(guò)程是利用每個(gè)終端上產(chǎn)生的數(shù)據(jù)訓(xùn)練各自的模型,這個(gè)模型會(huì)被部署于服務(wù)該特定的用戶,這意味著模型是為每個(gè)用戶定制化訓(xùn)練學(xué)習(xí)得到的.在很多場(chǎng)景下,用戶的行為習(xí)慣(如輸入法,語(yǔ)音助手)各異,一個(gè)全局統(tǒng)一的、由集中式或聯(lián)邦式訓(xùn)練出的全局模型無(wú)法很好地服務(wù)于不同用戶,為此需要由自治式學(xué)習(xí)獲得的個(gè)性化能力.
·更強(qiáng)的擴(kuò)展性:自治式學(xué)習(xí)意味著每一臺(tái)新接入的設(shè)備都會(huì)提供自己的計(jì)算存儲(chǔ)資源用于模型的訓(xùn)練,而云端無(wú)需提供更多的硬件資源,因此具有很強(qiáng)的擴(kuò)展性.而集中式/聯(lián)邦式的學(xué)習(xí)模式則要求云端為新接入的終端設(shè)備提供更多的硬件支持,包括計(jì)算、存儲(chǔ)、網(wǎng)絡(luò)帶寬,對(duì)于用戶量巨大的應(yīng)用而言,這會(huì)帶來(lái)極大的經(jīng)濟(jì)開(kāi)銷(xiāo).
事實(shí)上,傳統(tǒng)觀點(diǎn)認(rèn)為,用戶隱私和用戶個(gè)性化很難同時(shí)達(dá)到[15],例如推薦系統(tǒng),因?yàn)閮烧咴诒举|(zhì)上存在著矛盾.自治式學(xué)習(xí)通過(guò)充分利用終端設(shè)備本地的計(jì)算能力,在某種程度上可以解決這個(gè)問(wèn)題.
挑戰(zhàn):實(shí)現(xiàn)一個(gè)自治式學(xué)習(xí)系統(tǒng)的挑戰(zhàn)主要存在于兩個(gè)方面:終端設(shè)備本地?cái)?shù)據(jù)量不足與終端計(jì)算力不足.首先,訓(xùn)練機(jī)器學(xué)習(xí)模型,尤其是神經(jīng)網(wǎng)絡(luò)模型需要大量的數(shù)據(jù),而每個(gè)終端設(shè)備上的訓(xùn)練數(shù)據(jù)往往有限,在不足量的條件下訓(xùn)練模型可能導(dǎo)致模型無(wú)法收斂的問(wèn)題,無(wú)法得到高質(zhì)量的模型.其次,模型的訓(xùn)練需要大量的計(jì)算資源,而終端設(shè)備往往計(jì)算能力有限,并且考慮到終端設(shè)備的復(fù)雜運(yùn)行環(huán)境和用戶的交互,無(wú)法在任意時(shí)間用于模型訓(xùn)練.一個(gè)直接的問(wèn)題是:當(dāng)一個(gè)新的模型結(jié)構(gòu)被設(shè)計(jì)出來(lái),分發(fā)到各個(gè)終端設(shè)備后,需要多久才能完成訓(xùn)練并用于部署?
可行性分析:離線模型訓(xùn)練是一種最直接的自治學(xué)習(xí)方式,即客戶端從云端獲取一個(gè)新的模型結(jié)構(gòu)后,選擇適宜的時(shí)機(jī)對(duì)該模型進(jìn)行訓(xùn)練,完成后用于部署.這里,“適宜”的訓(xùn)練時(shí)機(jī)主要指的是不會(huì)影響用戶的使用體驗(yàn).在大部分聯(lián)邦學(xué)習(xí)系統(tǒng)中[16],模型的訓(xùn)練被要求只在滿足以下條件時(shí)才會(huì)進(jìn)行:(1)設(shè)備充電;(2)設(shè)備屏幕關(guān)閉(即沒(méi)有被用戶交互使用);(3)設(shè)備處在不計(jì)費(fèi)的網(wǎng)絡(luò)環(huán)境下(如WiFi).對(duì)于自治學(xué)習(xí)而言,由于沒(méi)有模型上傳的需求,因此條件3 可以被省去.但即便如此,這些苛刻的條件仍然極大地限制了終端設(shè)備可以參與離線訓(xùn)練的時(shí)間.我們發(fā)現(xiàn),現(xiàn)有的工作缺乏相關(guān)的真實(shí)用戶數(shù)據(jù)支持這種離線的深度學(xué)習(xí)訓(xùn)練模式.為此,我們采集了近1 500 名真實(shí)用戶使用智能手機(jī)的行為數(shù)據(jù),包括這些設(shè)備上硬件狀態(tài)(網(wǎng)絡(luò)狀態(tài)、充電狀態(tài)、屏幕狀態(tài))的轉(zhuǎn)變.
圖2 展示了用戶行為數(shù)據(jù)的分析結(jié)果.其中,橫坐標(biāo)代表單個(gè)終端每天可用于模型訓(xùn)練的時(shí)間,即滿足上述系統(tǒng)狀態(tài)條件的時(shí)長(zhǎng);縱坐標(biāo)代表該時(shí)長(zhǎng)在不同設(shè)備與用戶上的累積分布函數(shù)CDF.我們發(fā)現(xiàn),每個(gè)用戶每天可用于自治式訓(xùn)練的時(shí)間約為120 分鐘(中位數(shù)),而聯(lián)邦學(xué)習(xí)的時(shí)間為60 分鐘(中位數(shù)),原因是聯(lián)邦學(xué)習(xí)對(duì)設(shè)備參與訓(xùn)練所應(yīng)具備的條件要求得更加苛刻,即必須滿足設(shè)備處于不計(jì)費(fèi)的網(wǎng)絡(luò)環(huán)境下這一條件.我們認(rèn)為,120 分鐘的時(shí)間通常足以完成大量的模型訓(xùn)練任務(wù),結(jié)合我們?cè)谙挛奶岢龅腁utLearn 系統(tǒng)與其優(yōu)化技術(shù),足以實(shí)現(xiàn)自治式學(xué)習(xí)的目的.我們將在第4.3 節(jié)中具體介紹自治學(xué)習(xí)在終端設(shè)備上的計(jì)算開(kāi)銷(xiāo).
Fig.2 The trainable time per day under federated learning and autonomous learning圖2 聯(lián)邦學(xué)習(xí)與自治學(xué)習(xí)下,單個(gè)移動(dòng)終端每天可用于模型訓(xùn)練的時(shí)間
我們實(shí)現(xiàn)了第1 個(gè)分布式自治學(xué)習(xí)系統(tǒng)框架AutLearn.本節(jié)介紹AutLearn 系統(tǒng)的設(shè)計(jì)和具體實(shí)現(xiàn).首先介紹該系統(tǒng)的核心思想;然后,介紹總體架構(gòu)以及系統(tǒng)中每一個(gè)功能模塊的具體實(shí)現(xiàn);最后,以輸入法和圖像處理為例介紹特定的應(yīng)用如何在該系統(tǒng)上運(yùn)行,以達(dá)到自治學(xué)習(xí)的目的.
為了解決終端設(shè)備上訓(xùn)練數(shù)據(jù)不足的問(wèn)題,AutLearn 采用了云端協(xié)同思想,在云端服務(wù)器上利用公共數(shù)據(jù)訓(xùn)練一個(gè)泛化能力較強(qiáng)的模型,然后在終端利用遷移學(xué)習(xí)[17]技術(shù)對(duì)模型進(jìn)行調(diào)整,得到一個(gè)適用于該終端設(shè)備的可用于部署的模型.為了保證用戶的隱私,云端服務(wù)器在預(yù)訓(xùn)練模型時(shí)不能要求用戶上傳數(shù)據(jù),而是通過(guò)數(shù)據(jù)挖掘的方式從公共數(shù)據(jù)中尋找與用戶數(shù)據(jù)分布相似的替代數(shù)據(jù),達(dá)到公私合贏的目標(biāo).這里的公共數(shù)據(jù)包括那些獲得用戶授權(quán)的數(shù)據(jù)、通過(guò)合法途徑購(gòu)買(mǎi)的數(shù)據(jù)、利用爬蟲(chóng)技術(shù)從公網(wǎng)上爬取的數(shù)據(jù)等等.此外,我們還引入了數(shù)據(jù)增強(qiáng)技術(shù)用于提高終端上用于訓(xùn)練的數(shù)據(jù)量.
為了解決終端設(shè)備計(jì)算資源及電量受限的問(wèn)題,AutLearn 引入了一系列的優(yōu)化技術(shù),包括模型層壓縮、運(yùn)行時(shí)緩存優(yōu)化、神經(jīng)網(wǎng)絡(luò)編譯器等.這些技術(shù)在保證模型精度(或極少精度損失)的前提下,極大地節(jié)省了終端設(shè)備上神經(jīng)網(wǎng)絡(luò)訓(xùn)練的資源開(kāi)銷(xiāo).
本文提出的自治學(xué)習(xí)系統(tǒng)框架AutLearn 如圖3 所示.在云端服務(wù)器,首先利用公共數(shù)據(jù)集對(duì)模型進(jìn)行預(yù)訓(xùn)練.考慮到模型需要部署在終端,AutLearn 內(nèi)置了基于奇異值分解[18]的模型剪枝算法.剪枝結(jié)束之后需對(duì)模型進(jìn)行重新訓(xùn)練以恢復(fù)模型精度.接下來(lái),AutLearn 會(huì)利用神經(jīng)網(wǎng)絡(luò)編譯技術(shù)對(duì)剪枝后的模型進(jìn)行編譯,從而優(yōu)化其在相應(yīng)終端計(jì)算硬件(CPU、GPU 等)上的運(yùn)算效率.關(guān)于編譯的具體內(nèi)容將在第3.4 節(jié)進(jìn)行介紹.
編譯后的模型被下載到各個(gè)終端設(shè)備,利用本地?cái)?shù)據(jù)在適宜的時(shí)間段進(jìn)行遷移學(xué)習(xí),這個(gè)過(guò)程我們稱(chēng)其為離線學(xué)習(xí).其中,AutLearn 會(huì)對(duì)本地?cái)?shù)據(jù)進(jìn)行增強(qiáng)以提高數(shù)據(jù)量.訓(xùn)練結(jié)束后模型會(huì)被用于部署,執(zhí)行神經(jīng)網(wǎng)絡(luò)的前向推斷.為了讓模型可以持續(xù)學(xué)習(xí)用戶行為的改變以獲取更高的準(zhǔn)確率,AutLearn 同時(shí)實(shí)現(xiàn)了在線學(xué)習(xí),即在終端設(shè)備上生成訓(xùn)練數(shù)據(jù)之后立即進(jìn)行訓(xùn)練.相較于離線學(xué)習(xí),在線學(xué)習(xí)的優(yōu)勢(shì)是可以更快地對(duì)用戶行為改變進(jìn)行適應(yīng),從而在接下來(lái)的推斷中得到更合理的結(jié)果,且數(shù)據(jù)無(wú)需保存在本地,進(jìn)一步地減少了隱私泄露的風(fēng)險(xiǎn).具體地,使用離線學(xué)習(xí)還是在線學(xué)習(xí),亦或是兩者結(jié)合,需要取決于具體的應(yīng)用場(chǎng)景.我們將在第3.6 節(jié)中介紹如何選擇合適的訓(xùn)練模式.
Fig.3 Architecture of AutLearn圖3 AutLearn 系統(tǒng)架構(gòu)圖
云端協(xié)同訓(xùn)練的目的是在云端利用公共數(shù)據(jù)集訓(xùn)練得到一個(gè)泛化能力較強(qiáng)的模型,從而在各個(gè)終端可以利用本地?cái)?shù)據(jù)集對(duì)該模型進(jìn)行精調(diào)(fine tune),達(dá)到收斂并個(gè)性化的目的.遷移學(xué)習(xí)技術(shù)的主要特點(diǎn)與優(yōu)勢(shì)在于它放寬了傳統(tǒng)機(jī)器學(xué)習(xí)中的兩個(gè)基本假設(shè):(1)用于學(xué)習(xí)的訓(xùn)練樣本與新的測(cè)試樣本滿足獨(dú)立同分布的條件;(2)必須有足夠可利用的訓(xùn)練樣本才能習(xí)得一個(gè)好的模型.在自治式學(xué)習(xí)中同樣存在這兩個(gè)問(wèn)題,即預(yù)訓(xùn)練數(shù)據(jù)很難與真實(shí)用戶數(shù)據(jù)服從同樣的分布;以及每個(gè)終端上可用于訓(xùn)練的數(shù)據(jù)有限.在AutLearn 的設(shè)計(jì)中,獲取合適的公共數(shù)據(jù)集是能否讓模型在終端上收斂并得到高準(zhǔn)確率的關(guān)鍵,其數(shù)據(jù)的語(yǔ)義和分布需要與終端設(shè)備上的整體數(shù)據(jù)較為接近,或呈包含關(guān)系,例如在輸入法的例子中,我們用從Twitter 網(wǎng)站上爬取的語(yǔ)料數(shù)據(jù)集做預(yù)訓(xùn)練,終端設(shè)備上使用用戶的輸入法數(shù)據(jù)做遷移學(xué)習(xí).在現(xiàn)實(shí)中,Twitter 的數(shù)據(jù)很大一部分就是用戶通過(guò)手機(jī)上傳的,因此這些數(shù)據(jù)在分布和語(yǔ)義上存在著很強(qiáng)的關(guān)聯(lián)性,意味著從Twitter 數(shù)據(jù)中訓(xùn)練得到的模型往往會(huì)學(xué)習(xí)到包含用戶輸入數(shù)據(jù)的特征.此外,遷移學(xué)習(xí)的常用方式是固定前面網(wǎng)絡(luò)層的參數(shù),這些參數(shù)只參與前向推斷,而不會(huì)參與后向的訓(xùn)練,只有最后一層的參數(shù)會(huì)隨著訓(xùn)練的進(jìn)行而改變,這也是為什么遷移學(xué)習(xí)僅利用小樣本就可以完成訓(xùn)練,且對(duì)計(jì)算力要求不高的主要原因.
為了進(jìn)一步提高本地遷移學(xué)習(xí)的效果,AutLearn 還使用了數(shù)據(jù)增強(qiáng)技術(shù)以提高訓(xùn)練數(shù)據(jù)量.對(duì)于圖片數(shù)據(jù),AutLearn 使用了常用的數(shù)據(jù)增強(qiáng)方法,如翻轉(zhuǎn)(flip)、旋轉(zhuǎn)(rotation)、比例縮放(scale)、裁剪(crop)、移位(translation)、添加高斯噪聲(Gaussian noise)等.對(duì)于自然語(yǔ)言類(lèi)數(shù)據(jù),AutLearn 使用了EDA[19]開(kāi)源項(xiàng)目中的技術(shù),具體包含4 種主要的操作:(1)同義詞替換(synonyms replace,簡(jiǎn)稱(chēng)SR):不考慮stopwords,在句子中隨機(jī)抽取n個(gè)詞,然后從同義詞詞典中隨機(jī)抽取同義詞,并進(jìn)行替換.(2)隨機(jī)插入(randomly insert,簡(jiǎn)稱(chēng) RI):不考慮stopwords,隨機(jī)抽取一個(gè)詞,然后在該詞的同義詞集合中隨機(jī)選擇一個(gè),插入原句子中的隨機(jī)位置.該過(guò)程可以重復(fù)n次.(3)隨機(jī)交換(randomly swap,簡(jiǎn)稱(chēng)RS):句子中,隨機(jī)選擇兩個(gè)詞,對(duì)它們進(jìn)行位置交換操作.該過(guò)程可以重復(fù)多次.(4)隨機(jī)刪除(randomly delete,簡(jiǎn)稱(chēng)RD):將句子中的每個(gè)詞以概率p隨機(jī)刪除.具體地,使用何種數(shù)據(jù)增強(qiáng)技術(shù)或幾種技術(shù)的組合需要根據(jù)具體的應(yīng)用場(chǎng)景(分類(lèi)任務(wù))來(lái)決定.
AutLearn 將終端設(shè)備上進(jìn)行的遷移學(xué)習(xí)按照訓(xùn)練發(fā)起的時(shí)機(jī)和訓(xùn)練數(shù)據(jù)產(chǎn)生的時(shí)間分為兩種:離線學(xué)習(xí)和在線學(xué)習(xí)(見(jiàn)表1).離線學(xué)習(xí)是基于歷史數(shù)據(jù),選擇適宜的時(shí)機(jī)在不影響用戶體驗(yàn)(延遲、電量)的前提下進(jìn)行的訓(xùn)練,通常發(fā)生在開(kāi)發(fā)者更新下發(fā)了一個(gè)新模型之后,對(duì)模型進(jìn)行遷移學(xué)習(xí),解決冷啟動(dòng)問(wèn)題.由于歷史數(shù)據(jù)通常較多,訓(xùn)練時(shí)間較長(zhǎng),無(wú)法確保在短時(shí)間(如1 天)內(nèi)完成,因此AutLearn 會(huì)存儲(chǔ)中間結(jié)果,將訓(xùn)練分散在多個(gè)時(shí)間窗口中.在線學(xué)習(xí)是基于設(shè)備上實(shí)時(shí)產(chǎn)生的數(shù)據(jù)進(jìn)行的訓(xùn)練,主要目的是為了對(duì)新的數(shù)據(jù)做出及時(shí)的響應(yīng),例如用戶行為改變之后,可以立即對(duì)模型進(jìn)行定制化訓(xùn)練,是一個(gè)持續(xù)強(qiáng)化的過(guò)程.雖然在線學(xué)習(xí)會(huì)產(chǎn)生相應(yīng)的計(jì)算開(kāi)銷(xiāo),但是由于實(shí)時(shí)產(chǎn)生的數(shù)據(jù)較為有效,因此訓(xùn)練帶來(lái)的開(kāi)銷(xiāo)通常不易察覺(jué).在第4 節(jié)中我們著重分析了在輸入法應(yīng)用中在線學(xué)習(xí)帶來(lái)的系統(tǒng)資源開(kāi)銷(xiāo)問(wèn)題.
Table 1 A comparison of different on-device transfer learning in AutLearn表1 AutLearn 中的兩種終端遷移學(xué)習(xí)方式比較
現(xiàn)有的在移動(dòng)終端上部署神經(jīng)網(wǎng)絡(luò)的方式主要有兩種:一種是使用通用的機(jī)器學(xué)習(xí)框架,如TensorFlow,這些框架實(shí)現(xiàn)了各種算子的前向/后向運(yùn)算,以第三方庫(kù)的方式加載進(jìn)內(nèi)存,然后讀入模型與數(shù)據(jù),進(jìn)行運(yùn)算;另一種方式是近些年興起的以TVM[20]為代表的神經(jīng)網(wǎng)絡(luò)編譯器,這些編譯器為特定的模型和硬件平臺(tái)生成一個(gè)可執(zhí)行文件,可直接在該平臺(tái)上部署運(yùn)行.例如,TVM 沿用并拓展了Halide[21]的compute-schedule 這一概念,通過(guò)定義schedule 來(lái)確定代碼的優(yōu)化過(guò)程,通過(guò)做自動(dòng)代碼生成來(lái)實(shí)現(xiàn)在各種設(shè)備上的部署深度學(xué)習(xí)模型.相較于通用的機(jī)器學(xué)習(xí)框架,神經(jīng)網(wǎng)絡(luò)編譯器具有以下幾個(gè)優(yōu)點(diǎn):(1)可以根據(jù)硬件和算子的描述,自動(dòng)生成底層的運(yùn)算代碼,具有更強(qiáng)的擴(kuò)展性;(2)可以自動(dòng)搜索在特定硬件上的實(shí)現(xiàn)方式(包括memory layout,SIMD),以達(dá)到最優(yōu)的運(yùn)算效率.在自治學(xué)習(xí)場(chǎng)景下,引入模型訓(xùn)練編譯器可以有效地減少終端設(shè)備上的計(jì)算開(kāi)銷(xiāo).
然而,已有的神經(jīng)網(wǎng)絡(luò)編譯器只服務(wù)于模型推斷的場(chǎng)景,無(wú)法用于模型訓(xùn)練.為此,我們擴(kuò)展了原有的TVM框架,以實(shí)現(xiàn)移動(dòng)終端上的自治學(xué)習(xí).
如圖4 所示,為了編譯生成一個(gè)可用于訓(xùn)練的可執(zhí)行文件,我們將用戶輸入的網(wǎng)絡(luò)結(jié)構(gòu)和損失函數(shù)通過(guò)編譯得到3 個(gè)網(wǎng)絡(luò).
(1)可運(yùn)行的前向網(wǎng)絡(luò),該網(wǎng)絡(luò)用于前向計(jì)算;
(2)可運(yùn)行的loss 網(wǎng)絡(luò),該網(wǎng)絡(luò)與可運(yùn)行的前向網(wǎng)絡(luò)的區(qū)別在于增加了損失函數(shù),通過(guò)這一個(gè)網(wǎng)絡(luò)可以得到相關(guān)的訓(xùn)練參數(shù),從而確定需要更新的參數(shù);
(3)可運(yùn)行的更新網(wǎng)絡(luò),該網(wǎng)絡(luò)用于更新網(wǎng)絡(luò)的相關(guān)參數(shù),根據(jù)輸入?yún)?shù)和計(jì)算出來(lái)的相關(guān)梯度,利用SGD等算法將參數(shù)進(jìn)行更新,從而完成對(duì)計(jì)算圖的參數(shù)更新.
生成以上3 個(gè)不同功能網(wǎng)絡(luò)的目的是為了更好地利用TVM 模塊化特性,減少對(duì)TVM 代碼庫(kù)的修改.
最后,我們補(bǔ)充了TVM 中缺失的各個(gè)算子的后向傳播,從而對(duì)于任意模型結(jié)構(gòu),可以編譯得到在移動(dòng)端執(zhí)行的二進(jìn)制代碼,最后在移動(dòng)設(shè)備上運(yùn)行更新網(wǎng)絡(luò)即可以實(shí)現(xiàn)訓(xùn)練過(guò)程.由于模型訓(xùn)練中的反向傳播與模型推斷在底層實(shí)現(xiàn)上基本類(lèi)似,例如最核心的操作都是圍繞矩陣乘法展開(kāi)的,因此在編譯出可執(zhí)行代碼的過(guò)程中,我們沿用了推斷過(guò)程中已有schedule 的設(shè)計(jì)思路,包括搜索空間與搜索算法.更具體地,我們針對(duì)上述第3 個(gè)可運(yùn)行的更新網(wǎng)絡(luò),增加了針對(duì)反向傳播算子(如conv2d_grad、dense_grad 等)的schedule 的搜索空間,以TVM 現(xiàn)有的template 形式實(shí)現(xiàn);對(duì)于搜索算法,我們沿用了TVM 中基于機(jī)器學(xué)習(xí)的cost model 方法來(lái)預(yù)測(cè)schedule 的運(yùn)行時(shí)間,并在實(shí)際編譯的過(guò)程中不斷更新這個(gè)cost model,最終使搜索過(guò)程快速達(dá)到收斂.
Fig.4 A deep learning compiler for autonomous learning圖4 面向自治學(xué)習(xí)的模型編譯框架
此外,針對(duì)不同的終端平臺(tái),TVM 內(nèi)部實(shí)現(xiàn)了很多與硬件相關(guān)的schedule 原語(yǔ),我們利用這些原語(yǔ)來(lái)設(shè)計(jì)不同終端平臺(tái)的代碼搜索空間,經(jīng)過(guò)自動(dòng)調(diào)優(yōu)的不斷測(cè)試,最終得到針對(duì)后端硬件優(yōu)化后的代碼.本文擴(kuò)展后的TVM 框架在生成訓(xùn)練代碼時(shí),同樣需要使用不同終端設(shè)備(或不同硬件SoC)進(jìn)行各自的調(diào)優(yōu),調(diào)優(yōu)過(guò)程中需要真實(shí)設(shè)備提供運(yùn)行時(shí)服務(wù),以獲取搜索過(guò)程中遍歷節(jié)點(diǎn)的運(yùn)行效率,作為搜索過(guò)程的反饋.對(duì)于每一臺(tái)設(shè)備或硬件(本文實(shí)驗(yàn)中使用了兩種設(shè)備),都需要進(jìn)行以上搜索調(diào)優(yōu)過(guò)程,時(shí)間成本開(kāi)銷(xiāo)較大.在未來(lái)工作中,我們將嘗試使用更加有效的cost model[22]來(lái)加速編譯過(guò)程.
模型壓縮[23]是常用的減少神經(jīng)網(wǎng)絡(luò)模型復(fù)雜度的方式,包括模型剪枝、量化、參數(shù)共享、知識(shí)蒸餾等具體方案.AutLearn 中采用了基于magnitude 的參數(shù)剪枝方案[18]:每一輪選擇一個(gè)卷積層(CONV)或者全連接層(FC),然后將L2-norm magnitude 最小的K個(gè)卷積核(FC 可視為特殊的CONV,同樣具有卷積核)去掉,這里,K的大小取決于最后想要壓縮得到模型的復(fù)雜度大小.在多次迭代之后,可以獲取一個(gè)或多個(gè)壓縮后的模型,適用于不同的終端設(shè)備.為了減少開(kāi)發(fā)者負(fù)擔(dān),無(wú)需手動(dòng)選擇哪些網(wǎng)絡(luò)層可以進(jìn)行剪枝,AutLearn 中內(nèi)置了一個(gè)模型自動(dòng)剪枝模塊,即一種特殊形式的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)自動(dòng)搜索算法(NAS),可以從一個(gè)大模型出發(fā),自動(dòng)地生成一系列針對(duì)不同資源狀況的優(yōu)化后模型.如下面公式所示,這里,Accuracy 用于計(jì)算一個(gè)模型的準(zhǔn)確率,通過(guò)在驗(yàn)證集上測(cè)得;Resource 用于計(jì)算一個(gè)模型資源的消耗情況(例如延遲、能耗、內(nèi)存占用等),可以通過(guò)根據(jù)模型結(jié)構(gòu)建模的方式獲得[24,25],也可以通過(guò)真機(jī)實(shí)測(cè)獲得[26,27],本文為了獲取更加真實(shí)、準(zhǔn)確的資源數(shù)據(jù)采用了后者;Budget 為用戶設(shè)定的可使用資源上限.這里,資源類(lèi)型可以是模型的計(jì)算復(fù)雜度(FLOPs)、模型的推斷時(shí)間、模型的推斷能耗、模型的內(nèi)存占用等,由開(kāi)發(fā)者控制.
目前,AutLearn 的剪枝是在云端完成的,主要原因是云端具有更多的數(shù)據(jù)對(duì)剪枝之后的模型進(jìn)行重新訓(xùn)練,同時(shí)減小終端的計(jì)算負(fù)載.但在終端進(jìn)行模型剪枝也有一定的優(yōu)勢(shì),主要是可以直接利用終端的數(shù)據(jù)進(jìn)行剪枝訓(xùn)練和測(cè)試,得到更加準(zhǔn)確的剪枝方案.本文使用基于magnitude 剪枝技術(shù)的原因是這種技術(shù)已得到廣泛證明且使用,但其他類(lèi)型的剪枝技術(shù)同樣與AutLearn 系統(tǒng)兼容,例如文獻(xiàn)[28]中使用的根據(jù)剪枝操作對(duì)feature map 的影響來(lái)判定最優(yōu)剪枝方案.相較于這些更加復(fù)雜的剪枝算法,基于magnitude 的剪枝方案計(jì)算復(fù)雜度更低,因此更有利于在終端設(shè)備上進(jìn)行.
此外,AutLearn 針對(duì)在線學(xué)習(xí)場(chǎng)景,設(shè)計(jì)了推斷-訓(xùn)練緩存復(fù)用技術(shù)以減少模型訓(xùn)練的開(kāi)銷(xiāo).如圖5 所示,在線學(xué)習(xí)中,模型會(huì)在實(shí)時(shí)的輸入數(shù)據(jù)上做推斷運(yùn)算,根據(jù)用戶的反饋生成標(biāo)簽,與原數(shù)據(jù)組成訓(xùn)練數(shù)據(jù),用于訓(xùn)練模型.推斷與訓(xùn)練以流水線方式進(jìn)行.其中,神經(jīng)網(wǎng)絡(luò)訓(xùn)練的本質(zhì)其實(shí)就是在推斷結(jié)果的基礎(chǔ)上計(jì)算損失函數(shù),然后做后向傳播.因此,AutLearn 會(huì)將預(yù)測(cè)的結(jié)果進(jìn)行復(fù)用,直接在其基礎(chǔ)上根據(jù)用戶的反饋行為(真實(shí)標(biāo)簽)進(jìn)行模型訓(xùn)練.具體地,需要在模型推斷中進(jìn)行緩存的數(shù)據(jù)為推斷預(yù)測(cè)結(jié)果(用于生成loss)以及產(chǎn)生的中間結(jié)果(即特征圖feature map,用于反向傳播過(guò)程中的參數(shù)更新).由于自治學(xué)習(xí)中使用遷移學(xué)習(xí)技術(shù),只需要更新模型尾部少部分參數(shù),假設(shè)需要更新的網(wǎng)絡(luò)層是從第K層起至最后一層,則只需要保存第K-1 層至最后一層中產(chǎn)生的中間向量,極大地減小了運(yùn)行時(shí)緩存的內(nèi)存開(kāi)銷(xiāo).為了進(jìn)一步減小單個(gè)數(shù)據(jù)的性能開(kāi)銷(xiāo),AutLearn 會(huì)等待多個(gè)數(shù)據(jù)產(chǎn)生達(dá)到一個(gè)batch 后一起訓(xùn)練(默認(rèn)的batch size 是16,可由開(kāi)發(fā)者調(diào)節(jié)設(shè)置).
Fig.5 Workflow of inference results reuse in online learning圖5 在線學(xué)習(xí)中的推斷-訓(xùn)練緩存復(fù)用流程圖
我們基于AutLearn 構(gòu)建了兩個(gè)應(yīng)用實(shí)例以驗(yàn)證其功能及效果.
3.6.1 輸入法中的詞預(yù)測(cè)
輸入法是移動(dòng)設(shè)備上最為重要的應(yīng)用之一.輸入法應(yīng)用的主要功能之一是輸入詞預(yù)測(cè):以英文輸入法為例,基于用戶已有的輸入序列(包括單詞和字母),預(yù)測(cè)用戶想要的輸入詞.詞預(yù)測(cè)功能在大部分主流輸入法應(yīng)用,如Gboard 中都基于神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn),是自然語(yǔ)言處理任務(wù)中最常見(jiàn)的任務(wù)之一.當(dāng)前處理該任務(wù)的主流算法之一是循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN).我們以RNN 的常見(jiàn)變體LSTM 網(wǎng)絡(luò)結(jié)構(gòu)為例,實(shí)現(xiàn)了一個(gè)基本的詞預(yù)測(cè)神經(jīng)網(wǎng)絡(luò)模型,如圖6 所示.
Fig.6 The LSTM model structure implemented in this work圖6 本文實(shí)現(xiàn)的用于詞預(yù)測(cè)功能的LSTM 模型
輸入法中的詞預(yù)測(cè)功能契合了AutLearn 的應(yīng)用場(chǎng)景:(1)數(shù)據(jù)隱私:用戶輸入數(shù)據(jù)包含聊天記錄、賬號(hào)密碼等,不應(yīng)上傳至中心化的服務(wù)器;(2)本地產(chǎn)生訓(xùn)練數(shù)據(jù),用戶的點(diǎn)擊輸入即為數(shù)據(jù)進(jìn)行了標(biāo)注,可直接用于訓(xùn)練;(3)用戶輸入行為具有個(gè)性化,需要對(duì)模型進(jìn)行定制以達(dá)到最佳的效果;(4)本地通常存有歷史輸入數(shù)據(jù),可用于離線的模型遷移學(xué)習(xí);(5)用戶的輸入行為不是一成不變的,可能會(huì)隨著時(shí)間而改變,需要持續(xù)不斷地進(jìn)行學(xué)習(xí)更新(在線學(xué)習(xí)).
3.6.2 圖像分類(lèi)
圖片處理是神經(jīng)網(wǎng)絡(luò)最常見(jiàn)的應(yīng)用場(chǎng)景之一.例如,在iPhone 手機(jī)自帶的相冊(cè)應(yīng)用中,已有卷積神經(jīng)網(wǎng)絡(luò)用于物體、場(chǎng)景、人臉的識(shí)別,幫助用戶整理圖片,便于搜索查找.與輸入法中的文字輸入數(shù)據(jù)類(lèi)似,用戶拍攝的圖片包含大量的隱私信息,不應(yīng)上傳至服務(wù)器進(jìn)行訓(xùn)練.
我們基于AutLearn 構(gòu)建了經(jīng)典的卷積神經(jīng)網(wǎng)絡(luò)MobileNet,以實(shí)現(xiàn)手機(jī)終端上的圖片分類(lèi).MobileNet 是專(zhuān)門(mén)為移動(dòng)設(shè)備設(shè)計(jì)的網(wǎng)絡(luò)結(jié)構(gòu),其內(nèi)部利用了depthwise separable convolutions 結(jié)構(gòu),減少了卷積層的計(jì)算量.
本節(jié)介紹我們對(duì)AutLearn 的實(shí)驗(yàn)設(shè)計(jì)與實(shí)驗(yàn)結(jié)論.實(shí)驗(yàn)?zāi)康闹饕譃閮蓚€(gè)方面:(1)驗(yàn)證AutLearn 可以通過(guò)在移動(dòng)終端上的遷移學(xué)習(xí)獲得較高的神經(jīng)網(wǎng)絡(luò)模型準(zhǔn)確率;(2)常用的移動(dòng)終端平臺(tái)上的硬件資源足以支撐神經(jīng)網(wǎng)絡(luò)模型的訓(xùn)練,尤其是上文中提到的一系列優(yōu)化技術(shù)對(duì)減小神經(jīng)網(wǎng)絡(luò)模型訓(xùn)練開(kāi)銷(xiāo)的效果.
模型與數(shù)據(jù).針對(duì)上文提到的兩種應(yīng)用場(chǎng)景,我們分別使用了不同的公共數(shù)據(jù)集和模型進(jìn)行測(cè)試.
·輸入法詞預(yù)測(cè)應(yīng)用中,我們使用LSTM[29]模型,以Twitter 數(shù)據(jù)作為預(yù)訓(xùn)練數(shù)據(jù)(公共數(shù)據(jù)集),Shakespeare數(shù)據(jù)集作為各個(gè)終端設(shè)備上的本地?cái)?shù)據(jù)集.兩份數(shù)據(jù)都來(lái)自于LEAF[30]聯(lián)邦學(xué)習(xí)基準(zhǔn)測(cè)試中的標(biāo)準(zhǔn)數(shù)據(jù)集,都預(yù)先切分好了不同的用戶,不同用戶的數(shù)據(jù)不滿足獨(dú)立同分布(non-iid).兩個(gè)數(shù)據(jù)集都用于輸入詞預(yù)測(cè)訓(xùn)練.終端遷移學(xué)習(xí)中只有最后一層全連接層參與模型更新.本文所使用的LSTM 模型具體參數(shù)為10 000 個(gè)使用頻率最高的詞組成的詞匯表大小,Step Size 為通過(guò)bucketing 技術(shù)[31]實(shí)現(xiàn)的可變長(zhǎng)大小,2 層LSTM Cell 堆疊(2-layer stacked).
·在圖像分類(lèi)應(yīng)用中,我們使用MobileNet[32]模型,以ImageNet 數(shù)據(jù)集作為預(yù)訓(xùn)練數(shù)據(jù),FEMINST 數(shù)據(jù)集作為各個(gè)終端設(shè)備上的本地?cái)?shù)據(jù)集.其中,FEMINST 同樣來(lái)自原LEAF 的標(biāo)準(zhǔn)數(shù)據(jù)集,數(shù)據(jù)為non-iid.ImageNet 數(shù)據(jù)集用于訓(xùn)練MobileNet 的1 000 類(lèi)物體識(shí)別,FEMINST 用于遷移學(xué)習(xí)至手寫(xiě)體識(shí)別任務(wù),遷移學(xué)習(xí)中只有最后一層全連接層與Softmax 層會(huì)參與模型更新.兩個(gè)數(shù)據(jù)集中,我們都只挑選了數(shù)據(jù)量最大的10%用戶用于訓(xùn)練與測(cè)試,因?yàn)楝F(xiàn)實(shí)中用戶的歷史數(shù)據(jù)積累往往大于這些標(biāo)準(zhǔn)數(shù)據(jù)集的數(shù)據(jù)量.
基準(zhǔn)線.我們比較AutLearn 與以下方案:(1)聯(lián)邦學(xué)習(xí)是近些年興起的在分布式數(shù)據(jù)上進(jìn)行模型訓(xùn)練的技術(shù)(具體見(jiàn)第1 節(jié)),這里我們使用最常見(jiàn)的聯(lián)邦學(xué)習(xí)算法FedAvg[3].與自治學(xué)習(xí)技術(shù)相比,聯(lián)邦學(xué)習(xí)沒(méi)有對(duì)不同用戶的模型進(jìn)行定制化,且需要大量的通信開(kāi)銷(xiāo);(2)中心化的云端訓(xùn)練技術(shù)(CloudTrain)[33]將用戶的數(shù)據(jù)都收集到各個(gè)終端上,然后利用這些數(shù)據(jù)訓(xùn)練一個(gè)通用的模型.同樣地,CloudTrain 的方法也未對(duì)模型進(jìn)行定制化訓(xùn)練.這種集中式的訓(xùn)練模式也是現(xiàn)在工業(yè)界通用的部署方式;(3)中心化的定制訓(xùn)練技術(shù)(CloudCustomize)[34],是指在CloudTrain 獲得的模型的基礎(chǔ)上,對(duì)新模型在不同設(shè)備上的數(shù)據(jù)進(jìn)行定制化訓(xùn)練后的結(jié)果.從模型準(zhǔn)確率的角度考慮,CloudCustomize 可被認(rèn)為是最優(yōu)的情形,因?yàn)樗瑫r(shí)使用了用戶隱私數(shù)據(jù)進(jìn)行預(yù)訓(xùn)練和遷移學(xué)習(xí).但同時(shí),CloudCustomize 的方式在用戶隱私和可擴(kuò)展性上都有較大的缺陷.AutLearn 和所有基準(zhǔn)線都通過(guò)mini-batch 的方式進(jìn)行模型訓(xùn)練[35].
終端設(shè)備.我們使用Samsung Note 8 和Redmi Note 8 兩種設(shè)備型號(hào)測(cè)試AutLearn 在終端設(shè)備上的訓(xùn)練效率,包括訓(xùn)練時(shí)間與能耗.
圖7 總結(jié)了離線學(xué)習(xí)中,AutLearn 在不同模型下和各個(gè)基準(zhǔn)線的準(zhǔn)確率對(duì)比.實(shí)驗(yàn)結(jié)果表明,AutLearn 和各個(gè)基準(zhǔn)線都可以訓(xùn)練得到收斂的模型.與CloudTrain 這種傳統(tǒng)的訓(xùn)練模式相比,FedAvg 聯(lián)邦學(xué)習(xí)訓(xùn)練模式得到的模型有少量的精度損失(約1%),而AutLearn 的精度則與CloudTrain 模式基本持平甚至更高:在LSTM 模型上,AutLearn 相較于CloudTrain 有0.9%的精度下降,而在MobileNet 模型上,則有0.8%的模型精度提升.原因是,AutLearn 采用自治式學(xué)習(xí)方式,在終端遷移學(xué)習(xí)過(guò)程中會(huì)對(duì)每個(gè)用戶的模型使用該特定用戶產(chǎn)生的數(shù)據(jù)進(jìn)行訓(xùn)練,達(dá)到了個(gè)性化學(xué)習(xí)的效果.此外,CloudCustomize 方式在兩種模型上都得到最高的準(zhǔn)確率,原因是它在CloudTrain 集中式訓(xùn)練的基礎(chǔ)上,再進(jìn)行個(gè)性化訓(xùn)練,且使用相同的用戶隱私數(shù)據(jù)集;而AutLearn 使用分布不同的數(shù)據(jù)集首先進(jìn)行云端預(yù)訓(xùn)練得到一個(gè)全局模型,然后再利用與測(cè)試數(shù)據(jù)集同源的數(shù)據(jù)集進(jìn)行遷移學(xué)習(xí).由于預(yù)訓(xùn)練與遷移學(xué)習(xí)中使用的數(shù)據(jù)集不同,難免導(dǎo)致預(yù)訓(xùn)練過(guò)程中模型學(xué)到的特征提取無(wú)法完全適用于用戶隱私數(shù)據(jù),因此效果不如 CloudCustomize 模式.需要強(qiáng)調(diào)的是:在 4 種訓(xùn)練模式中,只有 FedAvg 和AutLearn 考慮了用戶隱私保護(hù)的問(wèn)題.在這一系列實(shí)驗(yàn)中,我們發(fā)現(xiàn)模型定制化的效果有限,原因是數(shù)據(jù)集限制了每個(gè)設(shè)備上的數(shù)據(jù)量.
Fig.7 The accuracy of AutLearn compared with baselines圖7 AutLearn 訓(xùn)練模型準(zhǔn)確率與基準(zhǔn)線對(duì)比
我們同時(shí)驗(yàn)證了數(shù)據(jù)增強(qiáng)技術(shù)對(duì)模型準(zhǔn)確率的影響.對(duì)于LSTM 模型,我們使用同義詞替換技術(shù);對(duì)于MobileNet 模型,我們使用裁剪、旋轉(zhuǎn)和移位技術(shù).需要注意的是,兩種技術(shù)都可以將訓(xùn)練數(shù)據(jù)量提升最高超過(guò)5倍,為了平衡訓(xùn)練的計(jì)算開(kāi)銷(xiāo),本文所做實(shí)驗(yàn)都只在生成數(shù)據(jù)中采樣不超過(guò)原數(shù)據(jù)量的1 倍.實(shí)驗(yàn)結(jié)果表明,數(shù)據(jù)增強(qiáng)對(duì)詞預(yù)測(cè)和圖像分類(lèi)兩種任務(wù)分別有0.9%和3.1%的準(zhǔn)確率提升.后者的效果更明顯:事實(shí)上,自然語(yǔ)言處理中的數(shù)據(jù)增強(qiáng)比起圖片數(shù)據(jù)而言確實(shí)更加困難.
此外,我們還通過(guò)實(shí)驗(yàn)探究了在線學(xué)習(xí)對(duì)模型準(zhǔn)確率的提升效果.從預(yù)訓(xùn)練的模型出發(fā),然后將數(shù)據(jù)集序列化,不斷地輸入到AutLearn 系統(tǒng)中.對(duì)于每一條數(shù)據(jù),AutLearn 會(huì)首先做出預(yù)測(cè),然后利用該數(shù)據(jù)進(jìn)行模型的強(qiáng)化訓(xùn)練,不斷重復(fù)該過(guò)程,最后匯總預(yù)測(cè)的整體結(jié)果.這個(gè)過(guò)程即是模擬用戶在使用該模型的過(guò)程中AutLearn 對(duì)用戶當(dāng)前行為(產(chǎn)生數(shù)據(jù))做出的適應(yīng)性改變.我們發(fā)現(xiàn),對(duì)于LSTM 和MobileNet 模型而言,相比只用預(yù)訓(xùn)練模型預(yù)測(cè)所有數(shù)據(jù),在線學(xué)習(xí)可以在所有數(shù)據(jù)上平均提升5.9%和3.1%的模型準(zhǔn)確率.并且,該提升在后面輸入的數(shù)據(jù)上更加明顯,原因是隨著更多數(shù)據(jù)的輸入,模型得到了持續(xù)的學(xué)習(xí),精度上升.實(shí)驗(yàn)結(jié)果表明,在線學(xué)習(xí)可以有效地根據(jù)用戶行為改變(如輸入模式)適應(yīng)性地對(duì)模型進(jìn)行調(diào)整,以達(dá)到更高的準(zhǔn)確率.
我們測(cè)試了在兩種終端設(shè)備上進(jìn)行遷移學(xué)習(xí)的性能開(kāi)銷(xiāo)(離線學(xué)習(xí)),結(jié)果如圖8 所示.其中,AutLearn 代表離線學(xué)習(xí)的訓(xùn)練速度,w/o compression 和w/o compiler 分別代表去除前文提到的模型壓縮與編譯器加速技術(shù)后的性能,w/o cache 代表利用推斷-訓(xùn)練緩存加速后的在線訓(xùn)練時(shí)間.這里,去掉編譯器優(yōu)化即使用統(tǒng)一的深度學(xué)習(xí)計(jì)算庫(kù)進(jìn)行模型訓(xùn)練(TensorFlow 庫(kù)).其中,針對(duì)LSTM 模型,我們使用batch 大小為16 進(jìn)行訓(xùn)練,而MobileNet模型,由于內(nèi)存占用較大,在實(shí)驗(yàn)終端上只能使用batch 大小為1 進(jìn)行訓(xùn)練.
Fig.8 The speedup of AutLearn on different device models (including online/offline learning)圖8 AutLearn 在不同模型和機(jī)型上的性能(包括離線學(xué)習(xí)和在線學(xué)習(xí))
實(shí)驗(yàn)結(jié)果表明:(1)模型壓縮技術(shù)可以有效地縮短訓(xùn)練時(shí)間,但在不同模型上的表現(xiàn)差別較大.這里,我們默認(rèn)壓縮模型至1%的精度損失.在LSTM 模型上,模型壓縮技術(shù)可以減少超過(guò)80%的訓(xùn)練時(shí)間,但在MobileNet模型上,只能減少20%~30%.主要原因在于MobileNet 本身就是專(zhuān)門(mén)為低計(jì)算能力設(shè)備設(shè)計(jì)的極為精簡(jiǎn)的模型,在其上做壓縮更難.(2)編譯器技術(shù)同樣可以有效地縮短訓(xùn)練時(shí)間,在LSTM 和MobileNet 模型上都達(dá)到了將近40%的節(jié)省.相較模型壓縮,編譯器技術(shù)基本上不依賴(lài)于模型本身的結(jié)構(gòu),且又不會(huì)造成模型精度的損失.(3)在線學(xué)習(xí)中使用推斷-訓(xùn)練緩存機(jī)制可以進(jìn)一步減小模型的訓(xùn)練時(shí)間(30%~40%),原因是節(jié)省了模型訓(xùn)練過(guò)程中的前向推斷過(guò)程,只需要進(jìn)行反向傳播.需要注意的是,緩存機(jī)制只對(duì)在線學(xué)習(xí)有效,因?yàn)殡x線學(xué)習(xí)中,每一個(gè)batch 訓(xùn)練之后會(huì)更新參數(shù),導(dǎo)致原來(lái)緩存的預(yù)測(cè)結(jié)果在新模型上失效,無(wú)法復(fù)用.(4)在不同終端設(shè)備上的訓(xùn)練時(shí)間有最高將近2 倍的差異,原因是,不同終端設(shè)備上計(jì)算資源存在著差異.但是,AutLearn 的優(yōu)化技術(shù)在不同的設(shè)備上都有相應(yīng)的性能提升,具有一定的普適性.
結(jié)合第2 節(jié)中提到的我們對(duì)真實(shí)用戶的行為數(shù)據(jù)所進(jìn)行的分析后發(fā)現(xiàn),超過(guò)半數(shù)的終端每天都有約120 分鐘處于可訓(xùn)練階段.這意味著LSTM 模型和MobileNet 模型都可以在1 天內(nèi)完成多輪遷移學(xué)習(xí)的訓(xùn)練,即新模型下發(fā)后的第2 天就可以用于部署,并達(dá)到定制化后的高準(zhǔn)確率.
我們還度量了AutLearn 在終端設(shè)備上的能耗狀況,這里,我們以Nexus6 型號(hào)為例.如圖9 所示,“interactive”和“powersave”代表不同的CPU 狀態(tài)調(diào)節(jié)器,其中,前者會(huì)使CPU 運(yùn)行在較高頻率上(Android 設(shè)備的默認(rèn)調(diào)節(jié)器),而后者則會(huì)讓CPU 一直運(yùn)行于最低頻率以節(jié)省能耗.所有結(jié)果都?xì)w一化到同樣的baseline:即不使用AutLearn 的優(yōu)化加速技術(shù)且讓CPU 處在interactive 調(diào)節(jié)器下.實(shí)驗(yàn)結(jié)果表明:(1)AutLearn 的優(yōu)化技術(shù)可以極大地減少終端模型訓(xùn)練的能耗,最多超過(guò)80%(LSTM 模型),原因主要在于節(jié)省了模型訓(xùn)練的端到端時(shí)間;(2)在CPU 低頻率運(yùn)行狀態(tài)下,雖然模型的訓(xùn)練需要花費(fèi)更多的時(shí)間,但是整體的能耗卻有所下降,原因是,在低頻率運(yùn)行狀態(tài)下單位時(shí)間內(nèi)CPU 能耗更低.這意味著在一些不需要迅速完成模型訓(xùn)練進(jìn)行部署的場(chǎng)景下,可以通過(guò)將CPU 頻率調(diào)低來(lái)節(jié)省設(shè)備能耗.
Fig.9 The energy consumption of AutLearn under different CPU status圖9 AutLearn 在不同CPU 狀態(tài)下的能耗
針對(duì)面向移動(dòng)終端的數(shù)據(jù)隱私問(wèn)題,本文提出了自治式的機(jī)器學(xué)習(xí)模式.區(qū)別于以往傳統(tǒng)的集中式和聯(lián)邦式,自治式學(xué)習(xí)將隱私數(shù)據(jù)相關(guān)的計(jì)算全都部署在本地,極大程度地提高了用戶隱私保護(hù)能力,同時(shí)提供了模型定制化效果.為了解決自治學(xué)習(xí)中終端設(shè)備上數(shù)據(jù)量不足以及計(jì)算能力不足的兩大挑戰(zhàn),我們?cè)O(shè)計(jì)實(shí)現(xiàn)了AutLearn 自治學(xué)習(xí)框架,其中包含云端協(xié)同訓(xùn)練、本地?cái)?shù)據(jù)增強(qiáng)、模型壓縮以及緩存復(fù)用等技術(shù).我們以經(jīng)典的自然語(yǔ)言處理和圖像識(shí)別任務(wù)為例,在真實(shí)數(shù)據(jù)集上驗(yàn)證了自治式學(xué)習(xí)的效果:AutLearn 相比傳統(tǒng)的訓(xùn)練模式,可以達(dá)到相當(dāng)甚至更高的準(zhǔn)確率,同時(shí),其計(jì)算開(kāi)銷(xiāo)亦在普通智能手機(jī)可承受范圍之內(nèi).