精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

深度學(xué)習(xí)模型大小與模型推理速度的一些探討

人工智能 深度學(xué)習(xí)
本文對(duì)衡量深度學(xué)習(xí)模型大小的一些常用指標(biāo),如計(jì)算量、參數(shù)量、訪存量、內(nèi)存占用等進(jìn)行探討。

 [[426034]]

本文對(duì)衡量深度學(xué)習(xí)模型大小的一些常用指標(biāo),如計(jì)算量、參數(shù)量、訪存量、內(nèi)存占用等進(jìn)行探討,分析這些指標(biāo)對(duì)模型部署推理的影響,尤其是計(jì)算量與訪存量對(duì)模型推理速度的影響,并給出在不同硬件架構(gòu)下設(shè)計(jì)網(wǎng)絡(luò)結(jié)構(gòu)的一些建議。

0、前言

當(dāng)年頭一次實(shí)習(xí)做算法的時(shí)候,主管給的第一個(gè)任務(wù)就是“把一個(gè)大的分割模型砍成一個(gè)小的”。當(dāng)時(shí)并不理解模型“大”、“小”的真正含義,就簡(jiǎn)單的選取計(jì)算量作為評(píng)價(jià)指標(biāo),瘋狂砍計(jì)算量(backbone 換 MobileNet/ShuffleNet、Conv 換成 DepthWise Conv、以及一些奇奇怪怪的融合結(jié)構(gòu)等等),把模型計(jì)算量砍了將近 10 倍,結(jié)果一部署發(fā)現(xiàn)速度并沒(méi)有快多少,反而是把最初的 ResNet 簡(jiǎn)單砍掉幾個(gè) block 效果更好。

也是從那時(shí)起接觸了訪存量、流水線、RoofLine 模型等概念,對(duì)模型推理速度的問(wèn)題產(chǎn)生了興趣,從此踏上了深度學(xué)習(xí)推理優(yōu)化的不歸路(劃掉)。

如今做推理優(yōu)化和 HPC 已經(jīng)有一段時(shí)間了,還是偶爾能回想起當(dāng)年不懂推理時(shí)設(shè)計(jì)的與硬件嚴(yán)重不匹配的模型。此外在工作中跟研究員溝通時(shí),也會(huì)發(fā)現(xiàn)部分研究員對(duì)模型大小和模型推理速度的關(guān)系不太了解,設(shè)計(jì)出一些很難發(fā)揮硬件計(jì)算能力的模型結(jié)構(gòu)。因此在這里對(duì)一些用于評(píng)價(jià)模型大小的指標(biāo)——計(jì)算量、參數(shù)量、訪存量、內(nèi)存占用等指標(biāo)進(jìn)行詳細(xì)探討,分析這些指標(biāo)會(huì)對(duì)模型的部署推理產(chǎn)生何種影響,詳細(xì)討論計(jì)算量和訪存量對(duì)模型推理速度的影響,并給出不同硬件架構(gòu)下設(shè)計(jì)高效網(wǎng)絡(luò)結(jié)構(gòu)的一些建議。

本文不僅僅是為了給出網(wǎng)絡(luò)的設(shè)計(jì)建議,更是希望能夠有效傳達(dá)性能優(yōu)化的基礎(chǔ)理論知識(shí),以及性能分析的基本思路,幫助各位同學(xué)減少網(wǎng)絡(luò)設(shè)計(jì)與部署之間的 gap,更高效的完成網(wǎng)絡(luò)設(shè)計(jì)與部署工作。非常希望本文能夠?qū)Υ蠹业墓ぷ饔兴鶐椭卜浅g迎大家在評(píng)論區(qū)留言探討。

一、常用的模型大小評(píng)估指標(biāo)

目前常用于評(píng)價(jià)模型大小的指標(biāo)有:計(jì)算量、參數(shù)量、訪存量、內(nèi)存占用等,這些指標(biāo)從不同維度評(píng)價(jià)了模型的大小。本節(jié)僅作簡(jiǎn)單介紹,熟悉的小伙伴可以跳過(guò)此節(jié),直接看后面的分析與探討。

1. 計(jì)算量

計(jì)算量可以說(shuō)是評(píng)價(jià)模型大小最常用的指標(biāo)了,很多論文在跟 baseline 進(jìn)行比較時(shí),都會(huì)把計(jì)算量作為重要的比較依據(jù)。

計(jì)算量是模型所需的計(jì)算次數(shù),反映了模型對(duì)硬件計(jì)算單元的需求。計(jì)算量一般用 OPs (Operations) ,即計(jì)算次數(shù)來(lái)表示。由于最常用的數(shù)據(jù)格式為 float32,因此也常常被寫(xiě)作 FLOPs (Floating Point Operations),即浮點(diǎn)計(jì)算次數(shù)。(這里為了跟傳統(tǒng)習(xí)慣保持一致,下文就統(tǒng)一采用 FLOPs 啦)

模型的整體計(jì)算量等于模型中每個(gè)算子的計(jì)算量之和。而每個(gè)算子的計(jì)算量計(jì)算方法各不一致。例如對(duì)于 Eltwise Sum 來(lái)講,兩個(gè)大小均為 (N, C, H, W) 的 Tensor 相加,計(jì)算量就是 N x C x H x W;而對(duì)于卷積來(lái)說(shuō),計(jì)算量公式為(乘加各算一次):

PyTorch 有不少工具可以模型計(jì)算量,但需要注意的是這些工具有可能會(huì)遺漏一些算子的計(jì)算量,將其計(jì)算量算成 0,從而導(dǎo)致統(tǒng)計(jì)的計(jì)算量跟實(shí)際計(jì)算量有輕微的偏差,不過(guò)大多數(shù)情況下這些偏差影響不大。

2. 參數(shù)量

早期的論文也很喜歡用參數(shù)量來(lái)評(píng)價(jià)模型大小。

參數(shù)量是模型中的參數(shù)的總和,跟模型在磁盤(pán)中所需的空間大小直接相關(guān)。對(duì)于 CNN 來(lái)說(shuō)參數(shù)主要由 Conv/FC 層的 Weight 構(gòu)成,當(dāng)然其他的一些算子也有參數(shù),不過(guò)一般忽略不計(jì)了。

參數(shù)量往往是被算作訪存量的一部分,因此參數(shù)量不直接影響模型推理性能。但是參數(shù)量一方面會(huì)影響內(nèi)存占用,另一方面也會(huì)影響程序初始化的時(shí)間。

參數(shù)量會(huì)直接影響軟件包的大小。當(dāng)軟件包大小是很重要的指標(biāo)時(shí),參數(shù)量至關(guān)重要,例如手機(jī) APP 場(chǎng)景,往往對(duì) APK 包的大小有比較嚴(yán)格的限制;此外有些嵌入式設(shè)備的 Flash 空間很小,如果模型磁盤(pán)所需空間很大的話,可能會(huì)放不下,因此也會(huì)對(duì)參數(shù)量有所要求。

除了在設(shè)計(jì)模型時(shí)減少參數(shù)量外,還可以通過(guò)壓縮模型的方式降低軟件包大小。例如 Caffe 和 ONNX 采用的 Protobuf 就會(huì)對(duì)模型進(jìn)行高效的編碼壓縮。不過(guò)壓縮模型會(huì)帶來(lái)解壓縮開(kāi)銷,會(huì)一定程度增加程序初始化的時(shí)間。

3. 訪存量

訪存量往往是最容易忽視的評(píng)價(jià)指標(biāo),但其實(shí)是現(xiàn)在的計(jì)算架構(gòu)中對(duì)性能影響極大的指標(biāo)。

訪存量是指模型計(jì)算時(shí)所需訪問(wèn)存儲(chǔ)單元的字節(jié)大小,反映了模型對(duì)存儲(chǔ)單元帶寬的需求。訪存量一般用 Bytes (或者 KB/MB/GB )來(lái)表示,即模型計(jì)算到底需要存/取多少 Bytes 的數(shù)據(jù)。

和計(jì)算量一樣,模型整體訪存量等于模型各個(gè)算子的訪存量之和。對(duì)于 Eltwise Sum 來(lái)講,兩個(gè)大小均為 (N, C, H, W) 的 Tensor 相加,訪存量是 (2 + 1) x N x C x H x W x sizeof(data_type),其中 2 代表讀兩個(gè) Tensor,1 代表寫(xiě)一個(gè) Tensor;而對(duì)于卷積來(lái)說(shuō),訪存量公式為:

訪存量對(duì)模型的推理速度至關(guān)重要,設(shè)計(jì)模型時(shí)需要予以關(guān)注。

4. 內(nèi)存占用

內(nèi)存占用是指模型運(yùn)行時(shí),所占用的內(nèi)存/顯存大小。一般有工程意義的是最大內(nèi)存占用,當(dāng)然有的場(chǎng)景下會(huì)使用平均內(nèi)存占用。這里要注意的是,內(nèi)存占用 ≠ 訪存量。

內(nèi)存占用在論文里不常用,主要原因是其大小除了受模型本身影響外,還受軟件實(shí)現(xiàn)的影響。例如有的框架為了保證推理速度,會(huì)將模型中每一個(gè) Tensor 所需的內(nèi)存都提前分配好,因此內(nèi)存占用為網(wǎng)絡(luò)所有 Tensor 大小的總和;但更多的框架會(huì)提供 lite 內(nèi)存模式,即動(dòng)態(tài)為 Tensor 分配內(nèi)存,以最大程度節(jié)省內(nèi)存占用(當(dāng)然可能會(huì)犧牲一部分性能)。

和參數(shù)量一樣,內(nèi)存占用不會(huì)直接影響推理速度,往往算作訪存量的一部分。但在同一平臺(tái)上有多個(gè)任務(wù)并發(fā)的環(huán)境下,如推理服務(wù)器、車載平臺(tái)、手機(jī) APP,往往要求內(nèi)存占用可控。可控一方面是指內(nèi)存/顯存占用量,如果占用太多,其他任務(wù)就無(wú)法在平臺(tái)上運(yùn)行;另一方面是指內(nèi)存/顯存的占用量不會(huì)大幅波動(dòng),影響其他任務(wù)的可用性。

5. 小結(jié)

計(jì)算量、參數(shù)量、訪存量、內(nèi)存占用從不同維度定義了模型的大小,應(yīng)根據(jù)不同的場(chǎng)合選用合適的指標(biāo)進(jìn)行評(píng)價(jià)。

模型推理速度不單單受模型計(jì)算量的影響,也與訪存量和一些其他因素息息相關(guān)。下文將詳細(xì)討論影響模型推理速度的因素。

二、計(jì)算量越小,模型推理就越快嗎

答案是否定的。

實(shí)際上計(jì)算量和實(shí)際的推理速度之間沒(méi)有直接的因果關(guān)系。計(jì)算量?jī)H能作為模型推理速度的一個(gè)參考依據(jù)。

模型在特定硬件上的推理速度,除了受計(jì)算量影響外,還會(huì)受訪存量、硬件特性、軟件實(shí)現(xiàn)、系統(tǒng)環(huán)境等諸多因素影響,呈現(xiàn)出復(fù)雜的特性。因此,在手頭有硬件且測(cè)試方便的情況下, 實(shí)測(cè)是最準(zhǔn)確的性能評(píng)估方式 。

在設(shè)計(jì)網(wǎng)絡(luò)結(jié)構(gòu)時(shí),如果有實(shí)測(cè)的條件,建議在模型迭代早期對(duì)性能也進(jìn)行測(cè)試。一些 NAS 的方法也會(huì)對(duì)搜索出來(lái)的網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行測(cè)速,或者干脆對(duì)硬件速度進(jìn)行了建模,也作為初期搜索的重要參數(shù)。這種方法設(shè)計(jì)出來(lái)的網(wǎng)絡(luò)在后期部署時(shí),會(huì)極大減少因性能問(wèn)題迭代優(yōu)化的時(shí)間和人力開(kāi)銷。

這里我將討論影響模型在硬件上推理速度的一些因素,一方面希望可以幫助手動(dòng)/自動(dòng)設(shè)計(jì)網(wǎng)絡(luò)結(jié)構(gòu)的同學(xué)更快的設(shè)計(jì)更高效的網(wǎng)絡(luò)結(jié)構(gòu),另一方面希望當(dāng)模型部署時(shí)性能出現(xiàn)問(wèn)題時(shí)能夠?yàn)榇蠹姨峁┓治鲈虻乃悸贰?/p>

這一問(wèn)題我將從如下 3 個(gè)點(diǎn)進(jìn)行討論:

  • 計(jì)算密度與 RoofLine 模型

  • 計(jì)算密集型算子與訪存密集型算子

  • 推理時(shí)間

1. 計(jì)算密度與 RoofLine 模型

計(jì)算密度是指一個(gè)程序在單位訪存量下所需的計(jì)算量,單位是 FLOPs/Byte。其計(jì)算公式很簡(jiǎn)單,很多教材、資料里也稱之為 計(jì)算訪存比 ,用于反映一個(gè)程序相對(duì)于訪存來(lái)說(shuō)計(jì)算的密集程度:

RoofLine 模型是一個(gè)用于評(píng)估程序在硬件上能達(dá)到的 性能上界 的模型,可用下圖表示:

RoofLine 模型

用公式描述:

當(dāng)程序的 計(jì)算密度I 較小時(shí),程序訪存多而計(jì)算少,性能受內(nèi)存帶寬限制,稱為 訪存密集型 程序,即圖中橙色區(qū)域。在此區(qū)域的程序性能上界=計(jì)算密度×內(nèi)存帶寬,表現(xiàn)為圖中的斜線,其中斜率為內(nèi)存帶寬的大小。計(jì)算密度越大,程序所能達(dá)到的速度上界越高,但使用的內(nèi)存帶寬始終為最大值。

反之如果計(jì)算密度I較大,程序性能受 硬件最大計(jì)算峰值 (下文簡(jiǎn)稱為 算力 )限制,稱為 計(jì)算密集 型程序,即圖中藍(lán)色區(qū)域。此時(shí)性能上界=硬件算力,表現(xiàn)為圖中的橫線。此時(shí)計(jì)算速度不受計(jì)算密度影響,但計(jì)算密度越大,所需內(nèi)存帶寬就越少。

在兩條線的交點(diǎn)處,計(jì)算速度和內(nèi)存帶寬同時(shí)到達(dá)最大值。

在不同設(shè)備上,同一個(gè)程序的性質(zhì)可能發(fā)生變化

在不同設(shè)備上,同一個(gè)程序的性質(zhì)可能發(fā)生變化。例如上圖中的程序2,在算力稍弱的設(shè)備2上屬于計(jì)算密集型程序,而在算力較強(qiáng)的設(shè)備1上就屬于訪存密集型程序了(感謝評(píng)論區(qū)指正)。如果想要充分發(fā)揮設(shè)備1的性能,應(yīng)當(dāng)適當(dāng)加大程序的計(jì)算密度(比如到程序3的位置)。

2. 計(jì)算密集型算子與訪存密集型算子

網(wǎng)絡(luò)中的算子可以根據(jù)計(jì)算密度進(jìn)行分類。一般來(lái)講, Conv、FC、Deconv 算子屬于計(jì)算密集型算子;ReLU、EltWise Add、Concat 等屬于訪存密集型算子。

同一個(gè)算子也會(huì)因參數(shù)的不同而導(dǎo)致計(jì)算密度變化,甚至改變性質(zhì),比如在其他參數(shù)不變的前提下,增大 Conv 的 group,或者減小 Conv 的 input channel 都會(huì)減小計(jì)算密度。

舉個(gè)栗子,對(duì)于不同參數(shù)的卷積,計(jì)算密度如下:

可以看到,不同參數(shù)下卷積算子的計(jì)算密度有很大的差異。第 4 個(gè)算子 Depthwise Conv 計(jì)算密度僅有 2.346,在當(dāng)下的很多設(shè)備上都屬于訪存密集型算子。

算子的計(jì)算密度越大,約有可能提升硬件的計(jì)算效率,充分發(fā)揮硬件性能。我們以一個(gè) Intel X86 服務(wù)器平臺(tái)為例(10980 XE)。該平臺(tái) CPU 頻率為 4.5 GHz,我們以 16 核為例,其理論 FP32 算力為 4.608 TFLOPs/s,內(nèi)存帶寬理論值為 96 GB/s。在此平臺(tái)上的 RoofLine 模型為:

Intel 10980 XE 16 核 RoofLine 模型,以及各個(gè)算子的計(jì)算密度與性能

該平臺(tái)“拐點(diǎn)”的計(jì)算密度為 48,計(jì)算較為密集的 OP1 和 OP2 處在計(jì)算密集區(qū),能夠達(dá)到平臺(tái)的算力峰值;而 OP3 和 OP4 處在訪存密集區(qū),受內(nèi)存帶寬限制不能到達(dá)算力峰值,尤其是 OP4,由于計(jì)算訪存比過(guò)低,計(jì)算效率僅有可憐的 4.9%,計(jì)算效率并不高。

3. 推理時(shí)間

這里涉及到一個(gè) gap,很多部署的同學(xué)們更喜歡談“計(jì)算效率”,而實(shí)際上算法同學(xué)真正關(guān)心的點(diǎn)是“推理時(shí)間”,導(dǎo)致兩者在對(duì)接的時(shí)候經(jīng)常會(huì)出現(xiàn)一些 misleading。因此我這里單獨(dú)開(kāi)一節(jié)來(lái)探討一下“推理時(shí)間”的評(píng)估方法。

其實(shí)也很簡(jiǎn)單,按照 RoofLine 模型,我們很容易就能得到算子實(shí)際的執(zhí)行時(shí)間:

這是一個(gè)分段函數(shù),拆開(kāi)來(lái)可得:

一句話總結(jié): 對(duì)于訪存密集型算子,推理時(shí)間跟訪存量呈線性關(guān)系,而對(duì)于計(jì)算密集型算子,推理時(shí)間跟計(jì)算量呈線性關(guān)系 。

講到這里,我們就能 初步 回答本章一開(kāi)始的問(wèn)題了:按照 RoofLine 模型,在計(jì)算密集區(qū),計(jì)算量越小,確實(shí)推理時(shí)間越小。但是在訪存密集區(qū),計(jì)算量與推理時(shí)間沒(méi)關(guān)系,真正起作用的是訪存量,訪存量越小,推理的時(shí)間才越快。在全局上,計(jì)算量和推理時(shí)間并非具有線性關(guān)系。

上一節(jié)中,OP4 雖然計(jì)算效率很低,但由于訪存量也很低,因此其實(shí)推理速度還是快于其他幾個(gè) OP 的。但是我們可以觀察到,其計(jì)算量雖然只有 OP1 的 1/130,但是推理時(shí)間僅降低到了 1/6,兩者并非是線性關(guān)系(也是當(dāng)年我把模型減到 1/10 計(jì)算量,但其實(shí)沒(méi)快多少的原因)。

再舉兩個(gè)例子強(qiáng)化一下,首先看這兩個(gè)卷積,他們的計(jì)算量差不多,但是因?yàn)槎荚谠L存密集區(qū),OP3 的訪存量遠(yuǎn)低于 OP5,其推理也更快:

下面這個(gè)栗子更明顯,OP5 和 OP6 的區(qū)別僅僅是一個(gè)是 DepthWise Conv,一個(gè)是普通 Conv,其他參數(shù)沒(méi)有變化。按照我們之前的直觀感受,Conv 換成 DepthWise Conv 應(yīng)該會(huì)更快,但實(shí)際上兩者的推理時(shí)間是差不多的(這組參數(shù)也是當(dāng)年我用過(guò)的【手動(dòng)捂臉):

4. 小結(jié)

從上面的討論中我們可以看出: 計(jì)算量并不能單獨(dú)用來(lái)評(píng)估模型的推理時(shí)間,還必須結(jié)合硬件特性(算力&帶寬),以及訪存量來(lái)進(jìn)行綜合評(píng)估 。并非是計(jì)算量越低模型推理越快。 在評(píng)價(jià)模型大小時(shí),也建議加上訪存量作為重要的評(píng)價(jià)指標(biāo) 。

需要強(qiáng)調(diào)的一點(diǎn)是,不同的硬件平臺(tái)峰值算力和內(nèi)存帶寬不同,導(dǎo)致同一個(gè)模型在平臺(tái) 1 上可能是計(jì)算密集的,在平臺(tái) 2 上可能就變成了訪存密集的。例如上文提到的 Intel X86 平臺(tái),“拐點(diǎn)”值為 48,而 NVIDIA V100“拐點(diǎn)”值為 173.6,上文舉的例子在 V100 平臺(tái)上僅有 OP2 落在了計(jì)算密集區(qū),剩下的全部是訪存密集的。因此, 同樣的模型在不同平臺(tái)上性質(zhì)可能會(huì)發(fā)生改變 ,需要具體情況具體分析。

我們很難給出一個(gè)通用性的結(jié)論,究其原因是 RoofLine 模型本身是一個(gè)非線性模型。這里必須要強(qiáng)調(diào)一點(diǎn)的是, 除了峰值算力和內(nèi)存帶寬之外,還有硬件限制、系統(tǒng)環(huán)境、軟件實(shí)現(xiàn)等諸多因素會(huì)影響程序的實(shí)際性能,使得其非線性特性更加嚴(yán)重。因此 RoofLine 模型僅僅只能提供一個(gè)性能上界的評(píng)估方式,并不代表能夠達(dá)到的實(shí)際性能。實(shí)際性能最準(zhǔn)確的測(cè)量方式只有真機(jī)實(shí)測(cè) 。

RoofLine 模型更重要的是提供了一種分析性能的思想,即計(jì)算密集型程序更多的受限于硬件算力,而訪存密集型程序更多的受限于硬件內(nèi)存帶寬。在理解這一點(diǎn)的基礎(chǔ)上設(shè)計(jì)網(wǎng)絡(luò)結(jié)構(gòu),并分析網(wǎng)絡(luò)的性能,將更有理論參考。不會(huì)再對(duì)”計(jì)算量減半,為啥推理時(shí)間沒(méi)變“這種問(wèn)題抱有疑問(wèn)了(說(shuō)的就是我【流淚)

下文將對(duì) RoofLine 模型的一些限制進(jìn)行討論,分析哪些因素將以何種方式影響程序,使得其到達(dá)不了 RoofLine 模型估計(jì)的性能上界。

(下文要開(kāi)始難度升級(jí)了,建議沒(méi)看懂 RoofLine 模型的同學(xué)們?cè)侔堰@一章看一遍,不然后面會(huì)看的有點(diǎn)懵)

三、影響模型推理性能的其他因素

RoofLine 模型可以用來(lái)評(píng)估程序的性能上界,但是實(shí)際能達(dá)到的性能還會(huì)受到硬件限制、系統(tǒng)環(huán)境、軟件實(shí)現(xiàn)等諸多因素的影響,距離性能上界有一定距離。本章將對(duì)這些影響因素進(jìn)行分析。

1. 硬件限制對(duì)性能上界的影響

前面 RoofLine 模型使用的峰值算力及內(nèi)存帶寬,是根據(jù)紙面數(shù)據(jù)計(jì)算得到的,是理論上的最大值。但在實(shí)際情況下, 硬件會(huì)因?yàn)榉N種原因,無(wú)法達(dá)到這個(gè)理論值。因此建議大家對(duì)硬件進(jìn)行micro-benchmark,以獲取硬件的真實(shí)性能上限 。

以上文的 Intel X86 CPU 為例,我們之前計(jì)算的 avx512 理論算力為 4.608 TFLOPs/s,但這個(gè)數(shù)值的前提是頻率能維持在 4.5 GHz。然而實(shí)際上在使用 16 核跑 avx512 指令時(shí),CPU 頻率會(huì)下降到約 2.9 GHz,此時(shí)理論算力僅剩下 2.96 TFLOPs/s,而實(shí)測(cè)值僅有 2.86 TFLOPs/s。

除了頻率之外,有些芯片可能會(huì)因?yàn)橐恍┰O(shè)計(jì)上或?qū)崿F(xiàn)上的原因,導(dǎo)致在實(shí)際使用時(shí)達(dá)不到理論峰值。比如一些低端芯片不支持多發(fā)射、不支持亂序執(zhí)行、采用了阻塞式 Cache 等等,一些芯片甚至?xí)幸恍┬阅?bug,導(dǎo)致在實(shí)際使用時(shí)幾乎到達(dá)不了理論峰值(這里我個(gè)人傾向于把這些原因歸結(jié)為硬件限制帶來(lái)的損失)。

內(nèi)存同理,該平臺(tái)理論帶寬為 96GB/s,但實(shí)測(cè)下來(lái)最高讀帶寬僅有 74 GB/s,僅能到達(dá)理論帶寬的 77%。

我們可以得到修正后的 RoofLine 模型,圖中藍(lán)色填充部分反映了因?qū)嶋H算力和內(nèi)存帶寬達(dá)到不了理論值而造成的損失:

修正了實(shí)測(cè)峰值算力和內(nèi)存帶寬后的 RoofLine 模型,藍(lán)色填充部分為硬件限制帶來(lái)的損失

修正后的模型“拐點(diǎn)”發(fā)生了變化,因此算子的性質(zhì)也會(huì)發(fā)生變化。建議拿到硬件后對(duì)硬件進(jìn)行 micro-benchmark,這里推薦兩個(gè)測(cè)試工具:

一個(gè)是高叔叔寫(xiě)的浮點(diǎn)峰值測(cè)試方法的文章,最后有 github 鏈接,大家可以 clone 下來(lái)測(cè)試硬件峰值:

還有一個(gè)是 stream 測(cè)試工具,可以用于測(cè)試內(nèi)存帶寬:

2. 系統(tǒng)環(huán)境對(duì)性能的影響

除非程序運(yùn)行在裸機(jī)中,否則操作系統(tǒng)一定會(huì)對(duì)性能上界產(chǎn)生一定影響,比如操作系統(tǒng)在多核間的調(diào)度損失、操作系統(tǒng)的內(nèi)存管理帶來(lái)的損失、操作系統(tǒng)本身占用的運(yùn)算資源等等。

對(duì)于一般的深度學(xué)習(xí)推理任務(wù)而言,現(xiàn)代操作系統(tǒng)對(duì)性能的影響并不是特別明顯。但是在一些特殊情況下,也會(huì)帶來(lái)嚴(yán)重的性能損失。我這里將會(huì)舉兩個(gè)例子:

一個(gè)是 Android 系統(tǒng)在大小核上的調(diào)度,一旦程序在 CPU 上的占用率不足(比如是周期工作的任務(wù)),則有可能被 Android 調(diào)度到小核上,帶來(lái)性能損失。

另一個(gè)例子是內(nèi)存缺頁(yè)。在 Linux 系統(tǒng)上,當(dāng)向系統(tǒng)申請(qǐng)內(nèi)存頁(yè)后,系統(tǒng)只是返回了虛擬頁(yè),等到程序?qū)嶋H使用虛擬頁(yè)時(shí),才會(huì)通過(guò)觸發(fā)缺頁(yè)異常的方式,進(jìn)入操作系統(tǒng)內(nèi)核分配物理頁(yè),這一過(guò)程會(huì)嚴(yán)重降低性能。

好在這些問(wèn)題可以通過(guò)軟件進(jìn)行一部分彌補(bǔ),例如調(diào)度問(wèn)題可以使用綁核來(lái)解決,缺頁(yè)問(wèn)題可以通過(guò)綁定物理頁(yè)(需要內(nèi)核態(tài))或內(nèi)存池來(lái)解決。因此操作系統(tǒng)帶來(lái)的影響是可控的。

除了操作系統(tǒng)帶來(lái)的影響,系統(tǒng)中運(yùn)行的其他進(jìn)程也會(huì)對(duì)當(dāng)前進(jìn)程造成影響。比如一個(gè)系統(tǒng)中運(yùn)行了多個(gè)深度學(xué)習(xí)實(shí)例,或者系統(tǒng)后臺(tái)一些 APP 自啟動(dòng)了等等。這些進(jìn)程都會(huì)占用核心算力和內(nèi)存帶寬,造成當(dāng)前進(jìn)程性能損失。

這往往會(huì)導(dǎo)致在工程測(cè)試環(huán)境下性能達(dá)標(biāo)的模型,在實(shí)際部署時(shí)性能下降。因此, 必須關(guān)注工程測(cè)試環(huán)境和實(shí)際部署系統(tǒng)環(huán)境的差異 。如有條件,最好在實(shí)際部署環(huán)境下進(jìn)行測(cè)試。

3. 軟件實(shí)現(xiàn)對(duì)性能的影響

除了硬件限制和系統(tǒng)環(huán)境外, 一個(gè)任務(wù)的軟件實(shí)現(xiàn)好壞對(duì)性能有著重大的影響 。

例如對(duì)于同樣的矩陣操作任務(wù),使用 python 寫(xiě)的多重 for 循環(huán),和用 numpy 高度優(yōu)化過(guò)的矩陣操作函數(shù),性能可以差出 1~2 個(gè)數(shù)量級(jí)。

對(duì)于深度學(xué)習(xí)模型推理而言,推理框架對(duì)模型性能的影響主要體現(xiàn)在:是否充分利用了硬件的流水線資源、是否高效利用了硬件中的緩存、是否采用了時(shí)間復(fù)雜度更低的算法、是否解決了操作系統(tǒng)帶來(lái)的性能損失(如上文的調(diào)度問(wèn)題和內(nèi)存缺頁(yè)問(wèn)題)、是否進(jìn)行了正確高效的圖優(yōu)化等等。

由于影響因素很多,因此 軟件對(duì)性能的影響往往呈現(xiàn)出很強(qiáng)的非線性 ,導(dǎo)致在評(píng)估性能時(shí)很難給出一些普適性的結(jié)論, 很多時(shí)候只能具體情況具體分析 。(有的時(shí)候甚至有點(diǎn)玄學(xué)【捂臉)

例如同樣計(jì)算量的向量四則運(yùn)算和超越函數(shù),后者往往會(huì)慢于前者的原因是很多硬件不支持超越函數(shù)的 SIMD 指令;再比如空洞卷積(dilated Conv)性能會(huì)弱于普通卷積的原因是前者對(duì)訪存的利用不如后者高效等等。

在軟件實(shí)現(xiàn)的影響下,RoofLine 模型的上界再次下降,達(dá)到圖中的紅線(真實(shí)的非線性可能會(huì)比我隨手畫(huà)的要復(fù)雜的多):

RoofLine 模型各種性能損失示意圖,圖中曲線不代表真實(shí)比例

因此,在評(píng)估或分析深度學(xué)習(xí)推理性能時(shí),簡(jiǎn)單的計(jì)算量/訪存量指標(biāo)是完全不夠的,只能做個(gè)性能上界參考。實(shí)際能達(dá)到的性能其實(shí)還要關(guān)注很多很多因素,例如算子的訪存模式、數(shù)據(jù)排布、是否能夠進(jìn)行圖融合、是否有精度可接受的低時(shí)間復(fù)雜度算法、算法并行度是否充足、各種運(yùn)算的比例等等因素。

這些因素對(duì)于算法同學(xué)而言可能過(guò)于復(fù)雜,并不需要掌握。但如果所在的公司/部門(mén)有交流的機(jī)會(huì)的話,可以跟部署/優(yōu)化的同學(xué)針對(duì)模型結(jié)構(gòu)和算子進(jìn)行探討,以獲取性能優(yōu)化的建議。

這里可以一些 一般性的結(jié)論 ,僅供參考:

  • 對(duì)于一些訪存非常密集且訪存 pattern 連續(xù)的算子,如 Concat、Eltwise Sum、ReLU、LeakyReLU、ReflectionPad 等,在 Tensor 數(shù)據(jù)量很大的情況下,軟件實(shí)現(xiàn)的損失會(huì)非常小,正常情況下基本都能達(dá)到內(nèi)存帶寬實(shí)測(cè)上限;如果框架采用了融合策略的話,基本可以達(dá)到 0 開(kāi)銷。

  • 對(duì)于 Conv/FC/Deconv 等算子,在計(jì)算密度很高的情況下,大多數(shù)框架是能夠很接近算力峰值的。但對(duì)于計(jì)算密度不是特別高的 case,不同框架的表現(xiàn)不一,需要實(shí)測(cè)才能確定。不過(guò)從大趨勢(shì)而言,都是計(jì)算密度越高,硬件的利用率越高的。

  • 盡量使用常用的算子參數(shù),例如 Conv 盡量使用 3x3_s1/s2,1x1___s1/s2 等,這些常用參數(shù)往往會(huì)被特殊優(yōu)化,性能更好。

4. 小結(jié)

RoofLine 模型僅能用于估計(jì)模型所能達(dá)到的性能上界,而實(shí)際部署時(shí),還會(huì)受硬件限制、系統(tǒng)環(huán)境、軟件實(shí)現(xiàn)等因素的影響,導(dǎo)致無(wú)法達(dá)到 RoofLine 模型所定義的性能上界。

此外,由于這些因素往往會(huì)導(dǎo)致性能曲線有較強(qiáng)的非線性,理論分析和實(shí)測(cè)會(huì)有一定差距,有時(shí)這些因素會(huì)嚴(yán)重影響性能曲線,甚至?xí)?dǎo)致算子的性質(zhì)發(fā)生變化。因此本節(jié)討論的內(nèi)容只是提供一些分析的思路與技巧, 實(shí)測(cè)始終是最準(zhǔn)確的性能評(píng)估方式 。

四、面向推理速度的模型設(shè)計(jì)建議

前面討論了一大堆,其實(shí)最實(shí)用的還是“怎么設(shè)計(jì)模型能夠達(dá)到更快的推理速度”。

在給出我的個(gè)人建議之前,首先要先聲明的是:由于不同硬件、不同環(huán)境、不同框架的差異會(huì)很大,這些建議可能并不是在所有條件下都適用。在設(shè)計(jì)算法或性能測(cè)試遇到疑問(wèn)時(shí),建議咨詢部署/優(yōu)化的同學(xué)。

好了,廢話不多說(shuō)(其實(shí)已經(jīng)說(shuō)了很多了),給出我的一些個(gè)人建議:

方法論建議:

  • 了解目標(biāo)硬件的峰值算力和內(nèi)存帶寬,最好是實(shí)測(cè)值,用于指導(dǎo)網(wǎng)絡(luò)設(shè)計(jì)和算子參數(shù)選擇。

  • 明確測(cè)試環(huán)境和實(shí)際部署環(huán)境的差異,最好能夠在實(shí)際部署環(huán)境下測(cè)試性能,或者在測(cè)試環(huán)境下模擬實(shí)際部署環(huán)境。

  • 針對(duì)不同的硬件平臺(tái),可以設(shè)計(jì)不同計(jì)算密度的網(wǎng)絡(luò),以在各個(gè)平臺(tái)上充分發(fā)揮硬件計(jì)算能力(雖然工作量可能會(huì)翻好幾倍【捂臉)。

  • 除了使用計(jì)算量來(lái)表示/對(duì)比模型大小外,建議引入訪存量、特定平臺(tái)執(zhí)行時(shí)間,來(lái)綜合反映模型大小。

  • 實(shí)測(cè)是最準(zhǔn)確的性能評(píng)估方式,如果有條件快速實(shí)測(cè)的話,建議以實(shí)測(cè)與理論分析相結(jié)合的方式設(shè)計(jì)并迭代網(wǎng)絡(luò)。

  • 遇到性能問(wèn)題時(shí),可以逐層 profiling,并與部署/優(yōu)化同學(xué)保持緊密溝通,具體問(wèn)題具體分析(適當(dāng)了解一下計(jì)算相關(guān)理論的話,可以更高效的溝通)。

網(wǎng)絡(luò)設(shè)計(jì)建議:

  • 對(duì)于低算力平臺(tái)(CPU、低端 GPU 等),模型很容易受限于硬件計(jì)算能力,因此可以采用計(jì)算量低的網(wǎng)絡(luò)來(lái)降低推理時(shí)間。

  • 對(duì)于高算力平臺(tái)(GPU、DSP 等),一味降低計(jì)算量來(lái)降低推理時(shí)間就并不可取了,往往更需要關(guān)注訪存量。單純降低計(jì)算量,很容易導(dǎo)致網(wǎng)絡(luò)落到硬件的訪存密集區(qū),導(dǎo)致推理時(shí)間與計(jì)算量不成線性關(guān)系,反而跟訪存量呈強(qiáng)相關(guān)(而這類硬件往往內(nèi)存弱于計(jì)算)。相對(duì)于低計(jì)算密度網(wǎng)絡(luò)而言,高計(jì)算密度網(wǎng)絡(luò)有可能因?yàn)橛布矢撸臅r(shí)不變乃至于更短。

  • 面向推理性能設(shè)計(jì)網(wǎng)絡(luò)結(jié)構(gòu)時(shí),盡量采用經(jīng)典結(jié)構(gòu),大部分框架會(huì)對(duì)這類結(jié)構(gòu)進(jìn)行圖優(yōu)化,能夠有效減少計(jì)算量與訪存量。例如 Conv->BN->ReLU 就會(huì)融合成一個(gè)算子,但 Conv->ReLU->BN 就無(wú)法直接融合 BN 層

  • 算子的參數(shù)盡量使用常用配置,如 Conv 盡量使用 3x3_s1/s2、1x1___s1/s2 等,軟件會(huì)對(duì)這些特殊參數(shù)做特殊優(yōu)化。

  • CNN 網(wǎng)絡(luò) channel 數(shù)盡量選擇 4/8/16/32 的冪次,很多框架的很多算子實(shí)現(xiàn)在這樣的 channel 數(shù)下效果更好(具體用多少不同平臺(tái)不同框架不太一樣)。

  • 框架除了計(jì)算耗時(shí)外,也處理網(wǎng)絡(luò)拓?fù)洹?nèi)存池、線程池等開(kāi)銷,這些開(kāi)銷跟網(wǎng)絡(luò)層數(shù)成正比。因此相比于“大而淺”的網(wǎng)絡(luò),“小而深”的網(wǎng)絡(luò)這部分開(kāi)銷更大。一般情況下這部分開(kāi)銷占比不大。但在網(wǎng)絡(luò)算子非常碎、層數(shù)非常多的時(shí)候,這部分開(kāi)銷有可能會(huì)影響多線程的擴(kuò)展性,乃至于成為不可忽視的耗時(shí)因素。

一些其他建議:

  • 除了優(yōu)化網(wǎng)絡(luò)結(jié)構(gòu)、推理框架性能外,還可以考慮通過(guò)一些其他工程技巧來(lái)提升系統(tǒng)整體的性能。例如:對(duì)推理服務(wù)流水化,并行數(shù)據(jù)讀取與計(jì)算的過(guò)程,掩蓋 IO 延時(shí)。

本文介紹了評(píng)估模型大小的四個(gè)常用指標(biāo)——計(jì)算量、參數(shù)量、訪存量、內(nèi)存占用,從 RoofLine 模型入手詳細(xì)討論了影響模型推理速度的影響因素,并給出了面向推理速度的模型設(shè)計(jì)方法論與建議。

撰寫(xiě)本文的目的,不僅僅是給算法同學(xué)提供有效的網(wǎng)絡(luò)設(shè)計(jì)建議,更多的還是希望能夠傳達(dá)性能優(yōu)化的基礎(chǔ)知識(shí)與分析思路,減少算法設(shè)計(jì)到部署之間的 gap,更快速高效的設(shè)計(jì)推理友好的網(wǎng)絡(luò)模型。希望能對(duì)大家的工作有所幫助。

由于本人知識(shí)水平有限,如有錯(cuò)誤和不詳盡的地方,望大家不吝指出,非常歡迎大家在評(píng)論區(qū)留言探討。

本文亮點(diǎn)總結(jié)

1. 模型在特定硬件上的推理速度,除了受計(jì)算量影響外,還會(huì)受訪存量、硬件特性、軟件實(shí)現(xiàn)、系統(tǒng)環(huán)境等諸多因素影響,呈現(xiàn)出復(fù)雜的特性。因此,在手頭有硬件且測(cè)試方便的情況下,實(shí)測(cè)是最準(zhǔn)確的性能評(píng)估方式。

2. 除了峰值算力和內(nèi)存帶寬之外,還有硬件限制、系統(tǒng)環(huán)境、軟件實(shí)現(xiàn)等諸多因素會(huì)影響程序的實(shí)際性能,使得其非線性特性更加嚴(yán)重。因此 RoofLine 模型僅僅只能提供一個(gè)性能上界的評(píng)估方式,并不代表能夠達(dá)到的實(shí)際性能。實(shí)際性能最準(zhǔn)確的測(cè)量方式只有真機(jī)實(shí)測(cè)。

 

責(zé)任編輯:張燕妮 來(lái)源: 極市平臺(tái)
相關(guān)推薦

2023-11-19 23:36:50

2017-12-21 07:54:07

2009-03-13 09:31:03

.NET整合分布式應(yīng)用

2024-03-26 09:11:13

TensorFlow深度學(xué)習(xí)Pipeline

2017-08-16 10:57:52

深度學(xué)習(xí)TensorFlowNLP

2022-01-12 08:30:55

結(jié)構(gòu)體指針STM32

2009-11-25 09:23:47

PHP引用&符號(hào)

2025-10-10 01:25:00

大模型訓(xùn)練數(shù)據(jù)OpenAI

2018-03-26 20:00:32

深度學(xué)習(xí)

2021-07-19 09:19:31

深度學(xué)習(xí)編程人工智能

2017-02-20 16:28:30

DCISDN-WAN傳輸網(wǎng)絡(luò)

2022-12-09 09:52:47

AI深度學(xué)習(xí)

2017-09-10 17:31:18

iOS渲染數(shù)據(jù)

2025-06-11 14:39:50

AILLMMistral

2017-10-23 12:22:58

Android編程基礎(chǔ)總結(jié)

2024-07-19 09:59:31

2021-03-01 10:38:13

深度學(xué)習(xí)編程人工智能

2025-02-27 10:33:36

2022-04-11 15:40:34

機(jī)器學(xué)習(xí)研究推理

2025-03-05 09:00:00

大語(yǔ)言模型自然語(yǔ)言AI
點(diǎn)贊
收藏

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

国产精品一区二区在线观看不卡| gogogo高清在线观看一区二区| 亚洲国产成人高清精品| 久久手机视频| 国产精品久久777777换脸| 欧美黄免费看| 亚洲欧洲第一视频| 深爱五月综合网| 国模套图日韩精品一区二区| 日韩理论在线观看| 六月婷婷久久| 超碰福利在线观看| 久久亚洲影院| 欧美激情在线一区| 国产破处视频在线观看| 凹凸成人在线| 9191久久久久久久久久久| 妞干网在线观看视频| 秋霞影院午夜丰满少妇在线视频| 成人网在线免费视频| 国产日韩欧美中文在线播放| 色婷婷av国产精品| 欧美69wwwcom| 最近免费中文字幕视频2019| 成人在线视频免费播放| av日韩一区| 欧美三级电影精品| 99热在线这里只有精品| 欧美精品videossex少妇| 国产色婷婷亚洲99精品小说| 精品蜜桃一区二区三区| 国产丰满美女做爰| 久久66热偷产精品| 国产精品观看在线亚洲人成网| 日本三级黄色大片| 欧美日韩三级| 另类色图亚洲色图| 亚洲激情图片网| 国产成人精品免费视| 亚洲国产精品推荐| jjzz黄色片| 九色精品蝌蚪| 欧美一区二区三区喷汁尤物| 五月花丁香婷婷| 99久久er| 欧美日韩你懂得| 嫩草影院国产精品| 欧美日韩尤物久久| 色婷婷亚洲综合| 日批视频在线免费看| zzzwww在线看片免费| 亚洲电影一区二区| 色欲色香天天天综合网www| 男女羞羞视频在线观看| 亚洲永久精品大片| 麻豆一区二区三区在线观看| 搞黄网站在线观看| 亚洲视频一二三| 一本色道久久88亚洲精品综合| 黄网站在线免费看| 亚洲欧美日韩一区二区三区在线观看| 曰韩不卡视频| 欧美黄色视屏| 欧美日韩一区二区三区在线免费观看| 无码精品a∨在线观看中文| 午夜裸体女人视频网站在线观看| 亚洲一区二区高清| 91专区在线观看| 自拍在线观看| 精品视频在线免费看| 一起操在线视频| 日韩在线亚洲| 日韩成人在线视频观看| 男人天堂av电影| 久久久国产精品| 久久久久久69| 9i精品福利一区二区三区| 青娱乐精品在线视频| 国产精品美女无圣光视频| 中文字幕一区二区人妻| 国产最新精品精品你懂的| 97超级碰碰| 免费a在线观看| 国产精品不卡在线| 亚洲理论电影在线观看| 456亚洲精品成人影院| 欧美日韩高清在线播放| 女女调教被c哭捆绑喷水百合| 日本一区福利在线| 在线精品播放av| 18精品爽视频在线观看| 久久婷婷av| 亚洲直播在线一区| 日韩av成人| 自拍视频在线观看一区二区| 成人午夜免费在线| 欧美大陆国产| 日韩av网站导航| 久久精品一区二区三区四区五区| 一本一本久久| 91热福利电影| 免费理论片在线观看播放老| 一区二区三区91| 国产自偷自偷免费一区| jizz性欧美23| 色婷婷综合成人| 800av免费在线观看| 国内成+人亚洲+欧美+综合在线| 久久亚洲一区二区| a级影片在线| 欧美性生活一区| 国产精品无码电影| 中文字幕午夜精品一区二区三区 | 麻豆视频在线看| 欧美精品久久天天躁| 国产精品jizz| 亚洲婷婷在线| 亚洲a∨日韩av高清在线观看| 韩国三级av在线免费观看| 亚洲午夜免费视频| 国产欧美激情视频| 欧美日韩色图| 欧美一区三区三区高中清蜜桃| av中文字幕在线免费观看| 国产视频在线观看一区二区三区| 欧美人成在线观看| 电影91久久久| 色噜噜狠狠色综合网图区| 久久久黄色大片| 成人h动漫精品一区二区 | 国产精品v欧美精品v日本精品动漫| 国产精品99蜜臀久久不卡二区| 香蕉视频网站在线| 亚洲大型综合色站| 国产a√精品区二区三区四区| 仙踪林久久久久久久999| 国产精品久久久久久久久久新婚 | 国产精品动漫网站| 精品人人人人| 97国产精品视频| 手机看片1024国产| 亚洲福中文字幕伊人影院| 国产精品熟妇一区二区三区四区 | 国产黄色特级片| 少妇久久久久| 欧洲日韩成人av| 视频一区二区在线播放| 欧美日韩性生活视频| 精品夜夜澡人妻无码av | 亚洲女同ⅹxx女同tv| 免费av不卡在线| 欧美在线观看天堂一区二区三区| 亚洲xxxx视频| 免费影视亚洲| 日韩成人在线视频观看| 人人爽人人爽人人片av| 久久久久久麻豆| 99热这里只有精品在线播放| 日韩欧美国产精品综合嫩v| 国产精品亚洲自拍| 美女隐私在线观看| 日韩一级视频免费观看在线| 久久精品国产亚洲AV无码男同| www.日韩大片| 免费观看成人在线视频| 青青一区二区三区| 91影视免费在线观看| 日韩三级电影视频| 亚洲精品成人久久久| 无码人妻精品一区二区50| 国产女人18水真多18精品一级做| 国模私拍视频在线观看| 欧美黄色免费| 久久99九九| 色猫猫成人app| 美女久久久久久久| 五月婷婷六月丁香| 欧美性一二三区| 69av.com| 日本一区二区三区四区| 五月天开心婷婷| 尤物精品在线| 欧美日韩亚洲在线| 99久久这里有精品| 26uuu亚洲伊人春色| 日韩在线资源| 亚洲福利视频专区| 成人黄色免费网| 一区二区三区美女视频| 黄色aaa视频| 国产在线精品一区二区三区不卡| 欧美 日韩 亚洲 一区| 欧美精品系列| 狠狠爱一区二区三区| 成人影院在线免费观看| 欧美激情免费看| 日本精品在线| 亚洲精品在线看| 亚洲av无码乱码在线观看性色 | 韩国国内大量揄拍精品视频| 91涩漫在线观看| 亚洲国产成人爱av在线播放| 中文字幕一区二区在线视频| 亚洲国产精品自拍| 国产色无码精品视频国产| 91麻豆产精品久久久久久 | 91精品一区| 欧洲成人免费视频| 丝袜中文在线| www欧美日韩| 黄视频在线观看免费| 精品99久久久久久| 国产一区二区女内射| 色婷婷精品大在线视频| 精品一级少妇久久久久久久| 国产精品免费免费| 一级片视频免费看| 99久久99久久综合| 美女被爆操网站| 国内精品视频一区二区三区八戒| 日本女优爱爱视频| 午夜综合激情| 欧美 日韩 国产在线观看| 欧美日韩少妇| 可以在线看黄的网站| 97人人精品| 亚洲五月六月| japanese国产精品| 欧美日韩电影一区二区三区| 久久夜色电影| 国内精品视频免费| 粉嫩一区二区三区四区公司1| 96sao精品视频在线观看| 国产国产一区| 国产日产欧美精品| 亚洲欧美在线综合| 成人黄色片网站| 国产精品久一| 成人做爽爽免费视频| 欧美天堂一区二区| 国产精品人成电影| 欧美风情在线视频| 国产欧美久久久久久| 日本成人福利| 国产欧美久久一区二区| 东京一区二区| 日韩美女主播视频| 日韩免费小视频| 国产精品高清网站| 久久久久久久性潮| 91网站在线免费观看| 日韩成人在线看| 懂色一区二区三区av片| 日日夜夜亚洲精品| 亚洲一区二区三区sesese| 亚洲1区在线观看| 成人黄动漫网站免费| 国产精品久久久久久久久久白浆| 国产精品一 二 三| 免费短视频成人日韩| 亚洲高清视频在线观看| 91日韩在线| 久操手机在线视频| 国产欧美不卡| 国产理论在线播放| 激情综合色播激情啊| 性活交片大全免费看| 久久这里只有精品6| 阿v天堂2014| 亚洲欧美日韩综合aⅴ视频| 久久中文字幕在线观看| 欧美网站在线观看| 中文字幕777| 日韩欧美www| 免费看男男www网站入口在线 | 亚洲第一页在线| 九九在线视频| 欧美精品在线观看91| 夜鲁夜鲁夜鲁视频在线播放| 国产精品自拍网| 51精品国产| 日本免费高清一区二区| 国产精品久久占久久| 人妻夜夜添夜夜无码av| 蜜臀久久99精品久久久画质超高清 | 中国特黄一级片| 亚洲黄色av一区| 天码人妻一区二区三区在线看| 欧美久久久久中文字幕| 天堂中文在线观看视频| 中文字幕亚洲综合久久| 欧美6一10sex性hd| 国产精品福利在线| 成人在线视频中文字幕| 水蜜桃亚洲一二三四在线| 欧美日韩免费| 99sesese| www激情久久| 麻豆chinese极品少妇| 在线这里只有精品| 熟妇人妻一区二区三区四区| www.日本久久久久com.| 成人午夜视屏| 动漫美女被爆操久久久| 色综合五月天| 中文字幕无码不卡免费视频| 成人永久aaa| 在线观看美女av| 在线观看91精品国产入口| 天堂av资源网| 欧美乱妇高清无乱码| 玖玖精品在线| 欧美人与性禽动交精品| 亚洲精一区二区三区| 亚洲最大视频网| 亚洲欧美一区二区在线观看| 自拍偷拍校园春色| 亚洲国产成人久久| 深夜国产在线播放| 成人精品在线视频| 成人直播大秀| 91视频免费版污| 久久久精品黄色| www.com国产| 日韩精品视频在线| 超碰97国产精品人人cao| 成人有码在线视频| 久久视频在线| 中文字幕永久有效| 中文字幕欧美国产| 国产主播第一页| 亚洲欧美日韩视频一区| 日本不良网站在线观看| 精品久久蜜桃| 久久国产99| 日韩精品电影一区二区| 色诱亚洲精品久久久久久| 视频二区在线| 热久久免费国产视频| 亚洲老女人视频免费| av之家在线观看| 99精品欧美一区二区三区综合在线| 自拍偷拍欧美亚洲| 亚洲精品v天堂中文字幕| 爱草tv视频在线观看992| 国产精品视频在线免费观看| 国产欧美亚洲一区| 黄色av网址在线观看| 狠狠色狠狠色综合日日小说| 无码h黄肉3d动漫在线观看| 97视频国产在线| 免费欧美激情| 欧美婷婷精品激情| 国产精品久久久久久久久动漫| 一级做a爱片性色毛片| 欧美成aaa人片在线观看蜜臀| 一区二区三区四区精品视频| 日韩 欧美 视频| www国产成人| 超碰在线免费97| 久久视频国产精品免费视频在线| 国产日韩欧美中文在线| 国产曰肥老太婆无遮挡| 91在线观看下载| 中文 欧美 日韩| 欧美成人精品一区| 色婷婷精品视频| 亚洲视频在线a| 亚洲免费观看高清完整版在线观看 | 亚洲综合久久av一区二区三区| 91精品国产色综合久久不卡电影| 怡红院在线观看| 久久综合九色综合久99| 美女爽到高潮91| 久久久久久免费观看| 亚洲免费成人av电影| 色999韩欧美国产综合俺来也| 国产美女在线一区| 久久久久久一级片| av中文字幕免费| 欧美最近摘花xxxx摘花| 99成人超碰| 女尊高h男高潮呻吟| 欧美日韩精品一区二区三区| 欧美日韩经典丝袜| 欧美美乳视频网站在线观看| 狠狠色丁香婷婷综合久久片| 97人人澡人人爽人人模亚洲| www.欧美三级电影.com| 欧美日韩一区二区三区四区不卡| 欧美精品久久久久久久久25p| 亚洲午夜av在线| 午夜精品一区| 久久精品丝袜高跟鞋| 久国产精品韩国三级视频| 日韩欧美性视频| 久久在线免费视频| 欧美**字幕| 亚洲国产精品第一页| 欧美三级欧美一级|