深度學(xué)習(xí)技術(shù)基礎(chǔ)與實(shí)踐 課件 第7章-模型優(yōu)化_第1頁
深度學(xué)習(xí)技術(shù)基礎(chǔ)與實(shí)踐 課件 第7章-模型優(yōu)化_第2頁
深度學(xué)習(xí)技術(shù)基礎(chǔ)與實(shí)踐 課件 第7章-模型優(yōu)化_第3頁
深度學(xué)習(xí)技術(shù)基礎(chǔ)與實(shí)踐 課件 第7章-模型優(yōu)化_第4頁
深度學(xué)習(xí)技術(shù)基礎(chǔ)與實(shí)踐 課件 第7章-模型優(yōu)化_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第7章模型優(yōu)化授課教師:時(shí)

間:目錄7.17.27.3超參數(shù)搜索方法編程實(shí)戰(zhàn)模型壓縮剪枝、低秩分解、模型量化、權(quán)值共享、知識(shí)蒸餾網(wǎng)格搜索、隨機(jī)搜索、啟發(fā)式搜索模型量化實(shí)驗(yàn)、參數(shù)搜索實(shí)驗(yàn)7.11模型壓縮模型壓縮模型壓縮方法的目標(biāo)是,在盡可能保留現(xiàn)有深度神經(jīng)網(wǎng)絡(luò)模型表現(xiàn)的前提下,有效地剔除冗余信息、減小模型存儲(chǔ)空間。常用的模型壓縮方法有:剪枝低秩分解模型量化權(quán)值共享知識(shí)蒸餾7.1.1剪枝神經(jīng)網(wǎng)絡(luò)剪枝起初是用于解決過擬合問題,如C4.5決策樹算法中剪枝操作的運(yùn)用,現(xiàn)在更多地被用于降低網(wǎng)絡(luò)復(fù)雜度,通過剔除神經(jīng)網(wǎng)絡(luò)中冗余的參數(shù)和連接,將一個(gè)復(fù)雜度較高的網(wǎng)絡(luò)模型修剪為一個(gè)復(fù)雜度較低的網(wǎng)絡(luò),有效地壓縮了模型的大小,同時(shí)也在一定程度上解決了過擬合問題。通常情況下,我們需要訓(xùn)練一個(gè)大型的、參數(shù)冗余化的模型,以此來保證模型的可塑性,這樣才能通過剪枝操作來剔除這些冗余,以保證模型的高效性。神經(jīng)網(wǎng)絡(luò)剪枝就是通過剔除權(quán)重矩陣中相對(duì)冗余的權(quán)值,然后再重新訓(xùn)練網(wǎng)絡(luò)進(jìn)行微調(diào)。1990年LeCun等人提出了“最佳腦損傷”的方法對(duì)網(wǎng)絡(luò)進(jìn)行剪枝,通過剔除一些不重要的權(quán)重,能夠有效地加速網(wǎng)絡(luò)的推理速度,同時(shí)提升泛化性能。隨后出現(xiàn)了很多基于二階梯度的剪枝算法。這些剪枝方法有共同的邏輯思想,圍繞如何對(duì)深度神經(jīng)網(wǎng)絡(luò)模型進(jìn)行剪枝。7.1.1剪枝近年來研究者提出了各種各樣有效的剪枝方案,即使算法的細(xì)節(jié)有所不同,整體的框架卻都是相似的。常見的框架流程如下:1.初始化一個(gè)大型的、參數(shù)冗余化的深度神經(jīng)網(wǎng)絡(luò)模型,通過訓(xùn)練得到一個(gè)高性能的模型。過度參數(shù)化的大型模型可以使我們從中安全地刪除冗余的參數(shù)而不導(dǎo)致模型的準(zhǔn)確性降低。2.衡量神經(jīng)元的重要程度。神經(jīng)元的定義可以是濾波器,也可以是通道。首先確定一個(gè)需要剪枝的層,可以是基于神經(jīng)元的方案,也可以是基于梯度的方案,然后設(shè)定一個(gè)裁剪閾值或者比例進(jìn)行重要程度的衡量,不同方案的計(jì)算復(fù)雜度與效果都有很大區(qū)別。3.移除掉一部分不重要的神經(jīng)元。根據(jù)上一步衡量的結(jié)果,按照設(shè)定的閾值或者比例移除掉部分神經(jīng)元。4.模型微調(diào)。經(jīng)過剪枝后,網(wǎng)絡(luò)模型的精度會(huì)受到影響,因此為了盡可能保留模型的性能,必須對(duì)模型進(jìn)行微調(diào)。對(duì)于存儲(chǔ)模型參數(shù)的稀疏矩陣,為了提高對(duì)存儲(chǔ)空間的利用率,僅存儲(chǔ)非零值及其所在的矩陣坐標(biāo)。這樣,通過還原矩陣就可以讀取模型參數(shù)。7.1.1剪枝基于上述框架流程,Han等人提出了一個(gè)簡單而有效的方法。首先,將低于某個(gè)閾值的權(quán)重連接全部減除。然后,對(duì)剪枝后的模型網(wǎng)絡(luò)進(jìn)行微調(diào),如此反復(fù)迭代更新參數(shù),直到模型在性能和規(guī)模上達(dá)到較好的平衡。最終,在保持網(wǎng)絡(luò)分類精度不降低的前提下,可以將參數(shù)規(guī)模減少到原來的十分之一左右。該方法簡單有效,但是經(jīng)過剪枝后的網(wǎng)絡(luò)呈現(xiàn)出隨機(jī)稀疏化的結(jié)構(gòu),即被減除的網(wǎng)絡(luò)連接在分布上沒有任何的連續(xù)性,硬件實(shí)現(xiàn)的過程中難以很好地實(shí)現(xiàn)對(duì)網(wǎng)絡(luò)的加速和壓縮,同時(shí)由于結(jié)構(gòu)的改變,使得剪枝之后的網(wǎng)絡(luò)模型極度依賴于平臺(tái)應(yīng)用。7.1.1剪枝后來的研究者逐步提出了許多結(jié)構(gòu)化的剪枝策略,包括濾波器剪枝和通道剪枝等方法。濾波器剪枝即直接除掉整個(gè)濾波器。這樣一來,模型的速度能得到有效的提升,模型的大小得到有效的壓縮,而剪枝后網(wǎng)絡(luò)的通用性也不會(huì)受到影響。這類算法的關(guān)鍵思想在于如何衡量濾波器的重要程度,通過移除掉不重要的濾波器來減小對(duì)模型準(zhǔn)確度和通用性的破壞。通道剪枝是直接將網(wǎng)絡(luò)中卷積層的整個(gè)通道刪除。因?yàn)閯h除通道意味著相關(guān)的神經(jīng)元也會(huì)被刪除,裁剪力度很大,所以會(huì)導(dǎo)致精度的損失也相對(duì)較大。通道剪枝的優(yōu)點(diǎn)是不會(huì)產(chǎn)生稀疏矩陣。7.1.1剪枝后來的研究者逐步提出了許多結(jié)構(gòu)化的剪枝策略,包括濾波器剪枝和通道剪枝等方法。濾波器剪枝即直接除掉整個(gè)濾波器。這樣一來,模型的速度能得到有效的提升,模型的大小得到有效的壓縮,而剪枝后網(wǎng)絡(luò)的通用性也不會(huì)受到影響。這類算法的關(guān)鍵思想在于如何衡量濾波器的重要程度,通過移除掉不重要的濾波器來減小對(duì)模型準(zhǔn)確度和通用性的破壞。通道剪枝是直接將網(wǎng)絡(luò)中卷積層的整個(gè)通道刪除。因?yàn)閯h除通道意味著相關(guān)的神經(jīng)元也會(huì)被刪除,裁剪力度很大,所以會(huì)導(dǎo)致精度的損失也相對(duì)較大。通道剪枝的優(yōu)點(diǎn)是不會(huì)產(chǎn)生稀疏矩陣。剪枝操作對(duì)網(wǎng)絡(luò)結(jié)構(gòu)的破壞程度極小,這種良好的特性往往被用于網(wǎng)絡(luò)壓縮過程的前端處理。將剪枝與其他后端壓縮技術(shù)相結(jié)合,能夠達(dá)到網(wǎng)絡(luò)模型的最大程度壓縮??傮w而言,剪枝是一項(xiàng)有效減小模型復(fù)雜度的通用壓縮技術(shù),其關(guān)鍵是如何衡量刪除個(gè)別權(quán)重對(duì)于整體模型的影響程度。7.1.2低秩分解在卷積神經(jīng)網(wǎng)絡(luò)中,卷積核可以看成是一個(gè)矩陣或張量,卷積操作由矩陣相乘完成。在實(shí)際應(yīng)用中,權(quán)重矩陣通常非常龐大且稠密,導(dǎo)致計(jì)算和存儲(chǔ)的成本非常高。低秩分解是將稠密矩陣分解為若干個(gè)小規(guī)模矩陣,從而降低網(wǎng)絡(luò)模型存儲(chǔ)和計(jì)算的開銷。低秩分解的方法主要有矩陣分解和結(jié)構(gòu)化矩陣重構(gòu)兩種方法。7.1.2低秩分解低秩分解的方法主要有矩陣分解和結(jié)構(gòu)化矩陣重構(gòu)兩種方法:使用矩陣分解來減少權(quán)重矩陣的參數(shù)是一種比較簡便的方法,比如使用奇異值分解(SingularValueDecomposition,SVD)來重構(gòu)全連接層的權(quán)重。通常情況下,先對(duì)權(quán)重矩陣進(jìn)行SVD分解,然后根據(jù)奇異矩陣中的數(shù)值分布情況,選擇保留前k個(gè)最大項(xiàng)。于是,可以通過兩個(gè)矩陣相乘的形式來重構(gòu)原矩陣。再結(jié)合其他技術(shù),利用矩陣分解能夠?qū)⒕矸e層壓縮到原來的二分之一到三分之一,將全連接層壓縮到原來的五分之一到十三分之一,速度提升2倍左右,而精度損失則被控制在1%之內(nèi)。7.1.2低秩分解

7.1.3模型量化模型量化是深度學(xué)習(xí)常用的優(yōu)化手段,指通過減少每個(gè)權(quán)重的比特?cái)?shù)來壓縮原始網(wǎng)絡(luò),有低精度和重編碼兩種方法。對(duì)于卷積神經(jīng)網(wǎng)絡(luò)來說,網(wǎng)絡(luò)模型權(quán)重都是單精度浮點(diǎn)型32位。低精度方法是指使用更低位數(shù)的浮點(diǎn)數(shù)或整型數(shù)對(duì)其進(jìn)行訓(xùn)練;重編碼方法對(duì)原有數(shù)據(jù)進(jìn)行重編碼,采用更少的位數(shù)對(duì)原有數(shù)據(jù)進(jìn)行表示。7.1.3模型量化模型量化是深度學(xué)習(xí)常用的優(yōu)化手段,指通過減少每個(gè)權(quán)重的比特?cái)?shù)來壓縮原始網(wǎng)絡(luò),有低精度和重編碼兩種方法。對(duì)于卷積神經(jīng)網(wǎng)絡(luò)來說,網(wǎng)絡(luò)模型權(quán)重都是單精度浮點(diǎn)型32位。低精度方法是指使用更低位數(shù)的浮點(diǎn)數(shù)或整型數(shù)對(duì)其進(jìn)行訓(xùn)練;重編碼方法對(duì)原有數(shù)據(jù)進(jìn)行重編碼,采用更少的位數(shù)對(duì)原數(shù)據(jù)進(jìn)行表示。在許多情況下,我們希望只是通過壓縮權(quán)重或量化權(quán)重和激活輸出來縮小模型而不必重新訓(xùn)練模型。訓(xùn)練后量化就是這種可以在有限的數(shù)據(jù)條件下完成量化的技術(shù)。訓(xùn)練后量化操作簡單,只需要使用量化工具將訓(xùn)練好的模型執(zhí)行量化操作,即可實(shí)現(xiàn)模型的量化。訓(xùn)練后量化分為兩種,分為只對(duì)權(quán)重量化和對(duì)權(quán)重和激活輸出都量化。此外還有訓(xùn)練時(shí)量化。7.1.3模型量化

7.1.3模型量化

7.1.4權(quán)值共享權(quán)值共享指從一個(gè)局部區(qū)域?qū)W習(xí)到的信息應(yīng)用于整個(gè)圖像。例如用一個(gè)的卷積核去卷積整幅圖像,相當(dāng)于對(duì)圖像做一個(gè)全圖濾波,每個(gè)卷積核在整個(gè)圖像上是不斷重復(fù)的,這些重復(fù)的單元參數(shù)設(shè)定相同。比如一個(gè)卷積核對(duì)應(yīng)的特征是邊緣,用該卷積核作用于整個(gè)圖像,即將圖像各個(gè)位置的邊緣都提取出來。不同的卷積核用于提取不同的圖像特征。基于這個(gè)思想,權(quán)值共享技術(shù)可以用于壓縮和加速神經(jīng)網(wǎng)絡(luò)模型。例如,在一個(gè)神經(jīng)網(wǎng)絡(luò)中相鄰兩層以全連接的方式相連,每層有100個(gè)節(jié)點(diǎn),那么這兩層共有有100*100個(gè)權(quán)值。對(duì)這一百萬個(gè)權(quán)值進(jìn)行聚類,用每個(gè)類的均值代替這一類的權(quán)值,這樣部分連接將實(shí)現(xiàn)權(quán)值共享。如果將一萬個(gè)數(shù)聚類為一百類,就可以把參數(shù)從一萬降到一百,這樣就可以大幅度壓縮模型大小。7.1.5知識(shí)蒸餾知識(shí)蒸餾(KnowledgeDistillation)的思想是將預(yù)先訓(xùn)練好的教師模型(Teacher

Model)中的知識(shí)轉(zhuǎn)移到學(xué)生模型(StudentModel)中去。通過教師模型學(xué)到的知識(shí)指導(dǎo)小模型的訓(xùn)練,從而提升小模型的性能。一般情況下,教師模型的能力更出色,而學(xué)生模型結(jié)構(gòu)更緊湊。常見的知識(shí)蒸餾框架結(jié)構(gòu)如圖7.2所示,知識(shí)蒸餾的主要過程是通過損失函數(shù)學(xué)習(xí)教師模型softmax層的輸出,將知識(shí)從教師模型轉(zhuǎn)移到學(xué)生模型。圖7.2:知識(shí)蒸餾框架7.1.5知識(shí)蒸餾

7.22超參數(shù)搜索方法7.2超參數(shù)搜索方法超參數(shù)是需要在模型開始學(xué)習(xí)之前設(shè)定好的參數(shù),然后在深度學(xué)習(xí)過程中需要對(duì)超參數(shù)進(jìn)行優(yōu)化,使超參數(shù)達(dá)到最優(yōu),以優(yōu)化模型學(xué)習(xí)的效果。模型搜索方法是為深度學(xué)習(xí)尋找較佳超參數(shù)集的有效策略。超參數(shù)的搜索過程如下:將數(shù)據(jù)集分為訓(xùn)練集,驗(yàn)證集及測(cè)試集;選擇模型性能評(píng)價(jià)指標(biāo);用訓(xùn)練集對(duì)模型進(jìn)行訓(xùn)練;在驗(yàn)證集上對(duì)模型進(jìn)行超參數(shù)搜索,用性能指標(biāo)評(píng)價(jià)超參數(shù)好壞;選出最優(yōu)超參數(shù)。7.2.1網(wǎng)格搜索網(wǎng)格搜索(GridSearch)指通過循環(huán)遍歷所有候選超參數(shù),選擇使模型表現(xiàn)最好的超參數(shù)作為最優(yōu)超參數(shù)。其原理是在一定的區(qū)間內(nèi)循環(huán)遍歷所有的候選超參數(shù),并計(jì)算其約束函數(shù)和目標(biāo)函數(shù)的值。對(duì)滿足約束條件的點(diǎn),逐個(gè)比較其目標(biāo)函數(shù)的值,保留使目標(biāo)函數(shù)達(dá)到最優(yōu)解的點(diǎn),以得到最優(yōu)超參數(shù)。為了評(píng)價(jià)每次選出的參數(shù)的好壞,需要選擇評(píng)價(jià)指標(biāo),評(píng)價(jià)指標(biāo)可以根據(jù)自己的需要選擇。網(wǎng)格搜索的工作流程:在n維上定義一個(gè)網(wǎng)格,其中一個(gè)映射代表一個(gè)超參數(shù)。對(duì)于每個(gè)維度,定義可能值的范圍。搜索所有可能的配置并等待結(jié)果來建立較佳配置。7.2.2隨機(jī)搜索隨機(jī)搜索(RandomSearch)是利用隨機(jī)數(shù)去求函數(shù)的近似最優(yōu)解的方法。原理是在一定的區(qū)間內(nèi)不斷隨機(jī)地產(chǎn)生點(diǎn),并計(jì)算其約束函數(shù)和目標(biāo)函數(shù)的值,對(duì)滿足約束條件的點(diǎn),逐個(gè)比較其目標(biāo)函數(shù)的值,保留使其目標(biāo)函數(shù)達(dá)到最優(yōu)解的點(diǎn),以得到最優(yōu)超參數(shù)。這種方法是建立在概率論的基礎(chǔ)上,所取隨機(jī)點(diǎn)越多,則得到最優(yōu)解的概率也越大。隨機(jī)搜索找到近似最優(yōu)解的效率高于網(wǎng)格搜索,但隨機(jī)搜索也存在精度較差的不足。7.2.3啟發(fā)式搜索啟發(fā)式搜索(HeuristicallySearch)是利用問題擁有的啟發(fā)信息來引導(dǎo)搜索,可以通過指導(dǎo)搜索向最優(yōu)解可能存在的方向前進(jìn),以達(dá)到減少搜索范圍、降低問題復(fù)雜度的目的。遺傳算法(GeneticAlgorithm)是一種啟發(fā)式搜索算法。遺傳算法是從問題可能潛在的解集的一個(gè)種群開始的。初代種群產(chǎn)生之后,按照“適者生存和優(yōu)勝劣汰”的原理,逐代演化產(chǎn)生出更優(yōu)的近似解。這個(gè)過程將使后生代種群比前代更加適應(yīng)于環(huán)境,末代種群中的最優(yōu)個(gè)體則是問題最優(yōu)解。此外,常用的啟發(fā)式搜索還有模擬退火算法、列表搜索算法、進(jìn)化規(guī)劃、進(jìn)化策略、蟻群算法、人工神經(jīng)網(wǎng)絡(luò)等。7.33編程實(shí)戰(zhàn)7.3.1模型量化實(shí)驗(yàn)第一步,導(dǎo)入本次實(shí)驗(yàn)所需的所有依賴庫。7.3.1模型量化實(shí)驗(yàn)第二步,配置實(shí)驗(yàn)的運(yùn)行環(huán)境。MindSpore中的context類用于配置當(dāng)前的執(zhí)行環(huán)境,包括執(zhí)行模式、執(zhí)行后端等功能切換。7.3.1模型量化實(shí)驗(yàn)第三步,構(gòu)建模型。構(gòu)造一個(gè)用于對(duì)MNIST數(shù)據(jù)進(jìn)行分類的分類模型,用MindSpore框架實(shí)現(xiàn)LeNet網(wǎng)絡(luò),將輸入大小設(shè)置為[1,28,28],輸出類別數(shù)為10。7.3.1模型量化實(shí)驗(yàn)第四步,定義輸入數(shù)據(jù)。選取簡單的MNIST數(shù)據(jù)集,首先下載MNIST數(shù)據(jù)集并保存在"./datasets/mnist"下。MindSpore提供的mindspore.dataset模塊可以幫助用戶構(gòu)建數(shù)據(jù)集對(duì)象,并且分批次地將數(shù)據(jù)傳入訓(xùn)練函數(shù)中。同時(shí),在各個(gè)數(shù)據(jù)集類中還內(nèi)置了數(shù)據(jù)處理和數(shù)據(jù)增強(qiáng)算子,能夠幫助用戶將數(shù)據(jù)處理成想要的格式,提升數(shù)據(jù)訓(xùn)練效果。7.3.1模型量化實(shí)驗(yàn)第五步,定義超參數(shù)、損失函數(shù)及優(yōu)化器,執(zhí)行訓(xùn)練并保存模型。MindSpore提供訓(xùn)練函數(shù)接口,不用自定義訓(xùn)練函數(shù)。因?yàn)镸NIST數(shù)據(jù)集數(shù)據(jù)較少,所以只需要執(zhí)行5個(gè)epoch便能得到較高的訓(xùn)練精度。在模型訓(xùn)練的過程中,使用Callback回調(diào)機(jī)制傳入回調(diào)函數(shù)ModelCheckpoint對(duì)象,可以保存模型參數(shù),生成CheckPoint文件,在下次加載模型時(shí),需要先創(chuàng)建相同模型的實(shí)例,然后使用load_checkpoint和load_param_into_net方法加載參數(shù)。7.3.1模型量化實(shí)驗(yàn)第六步,利用測(cè)試數(shù)據(jù)集進(jìn)行測(cè)試。加載MNIST數(shù)據(jù)集中的測(cè)試數(shù)據(jù)集,查看模型精度。7.3.1模型量化實(shí)驗(yàn)第七步,保存并導(dǎo)出模型。使用之前添加檢查點(diǎn)(CheckPoint)保存下來的模型參數(shù),以便執(zhí)行推理及再訓(xùn)練使用,并導(dǎo)出生成MINDIR格式模型文件。7.3.1模型量化實(shí)驗(yàn)第八步,模型量化。對(duì)于已經(jīng)訓(xùn)練好的float32模型,通過訓(xùn)練后量化將其轉(zhuǎn)為int8,不僅能減小模型大小,而且能顯著提高推理性能。在MindSporeLite中,這部分功能集成在模型轉(zhuǎn)換工具conveter_lite內(nèi),通過增加命令行參數(shù),便能夠轉(zhuǎn)換得到量化后模型。在Windows環(huán)境下,在MindSpore官網(wǎng)下載轉(zhuǎn)換工具的zip包并解壓至本地目錄,即可獲得converter工具。執(zhí)行以下轉(zhuǎn)換命令:轉(zhuǎn)換成功,則顯示如下提示,且同時(shí)獲得model.ms目標(biāo)文件:7.3.2參數(shù)搜索實(shí)驗(yàn)傳統(tǒng)的方式需要人工去調(diào)試和配置超參數(shù),這種方式消耗時(shí)間和精力。MindInsight為MindSpore提供了簡單易用的調(diào)優(yōu)調(diào)試能力,MindInsight提供的Mindoptimizer調(diào)參命令可以用于搜索超參,基于用戶給的調(diào)參配置信息,可以自動(dòng)搜索參數(shù)并且執(zhí)行模型訓(xùn)練。用戶在使用時(shí)需要按照yaml格式來配置超參的范圍等信息,并且修改訓(xùn)練腳本,即可將待試驗(yàn)的超參同步到訓(xùn)練腳本里面。Mindoptimizer調(diào)參工具為Mind

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論