• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于張量虛擬機(jī)的深度神經(jīng)網(wǎng)絡(luò)模型加速方法

    2023-09-27 06:31:34申云飛
    計(jì)算機(jī)應(yīng)用 2023年9期
    關(guān)鍵詞:模擬器加速器算子

    申云飛,申 飛,李 芳,張 俊*

    (1.安徽大學(xué) 物質(zhì)科學(xué)與信息技術(shù)研究院,合肥 230031;2.中國科學(xué)院合肥物質(zhì)科學(xué)研究院 強(qiáng)磁場科學(xué)中心,合肥 230031;3.強(qiáng)磁場安徽省實(shí)驗(yàn)室,合肥 230031)

    0 引言

    近年來,隨著深度學(xué)習(xí)技術(shù)的快速發(fā)展與物聯(lián)網(wǎng)邊緣設(shè)備的普及,卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)成功應(yīng)用于圖像檢測與識別[1-2]、語音識別[3-4]、自然語言處理[5-6]等領(lǐng)域,并在自動駕駛、移動支付和公共安全等實(shí)際場景中得到廣泛應(yīng)用?,F(xiàn)有的網(wǎng)絡(luò)模型部署方式主要分為云端部署和終端部署。其中,云端部署方式是將模型部署在云數(shù)據(jù)中心,計(jì)算結(jié)果通過網(wǎng)絡(luò)返回到用戶端,具有推理速度快、對終端設(shè)備算力要求低的特點(diǎn),但同時(shí)也存在數(shù)據(jù)傳輸網(wǎng)絡(luò)延遲、用戶隱私泄露等問題。終端部署方式則是在終端直接實(shí)現(xiàn)模型推理,避免了云端部署存在的問題,但對終端設(shè)備算力、功耗要求較高。

    為解決終端部署方式存在的算力與功耗問題,工業(yè)界相繼推出高算力、低功耗的專用芯片(Application Specific Integrated Circuit,ASIC),如華為昇騰910、寒武紀(jì)1H8、華米“黃山1 號”等。專用ASIC 芯片具有開發(fā)成本高、靈活性低、制造周期長等特點(diǎn),適用于芯片需求量大、算法穩(wěn)定的場景。同時(shí),硬件廠商陸續(xù)推出用于硬件設(shè)備優(yōu)化部署的推理引擎,如Intel OpenVINO、Nvidia TensorRT、Google Mediapipe 和百度PaddleLite 等。但上述推理引擎只針對特定硬件,如Nvidia TensorRT 只支持Nvidia GPU、百度PaddleLite 只支持百度Edgeboard 開發(fā)板等。此外,由于ASIC 芯片設(shè)計(jì)固化后無法再調(diào)整,難以滿足模型快速迭代與升級的要求。

    現(xiàn)場可編程門陣列(Field-Programmable Gate Array,F(xiàn)PGA)是一種低成本、高性能、可重構(gòu)的可編程邏輯器件[7],填補(bǔ)了ASIC 芯片的空缺,是促進(jìn)模型從理論到落地應(yīng)用的優(yōu)良載體[8]。作為半定制化芯片,F(xiàn)PGA 通常需要對硬件結(jié)構(gòu)進(jìn)行二次設(shè)計(jì),將模型描述轉(zhuǎn)換成FPGA 可執(zhí)行的硬件代碼,并針對推理性能進(jìn)行多種優(yōu)化才能實(shí)現(xiàn)模型在FPGA 上的部署運(yùn)行。在FPGA 上實(shí)現(xiàn)深度神經(jīng)網(wǎng)絡(luò)(Deep Neural Network,DNN)模型的優(yōu)化和部署,需要開發(fā)人員同時(shí)掌握人工智能(Artificial Intelligence,AI)技術(shù)和FPGA 設(shè)計(jì)編程技術(shù),存在準(zhǔn)入門檻較高、開發(fā)效率低下的問題。針對該現(xiàn)狀,部分FPGA 廠商適時(shí)推出了AI 加速平臺,如Xilinx Vitis AI 通過集成模型庫和軟件設(shè)計(jì)工具提供AI 開發(fā)功能,但它的算子覆蓋有限,并且主要應(yīng)用于Xilinx 的高端FPGA 型號。因此,DNN 模型的軟硬件適配、協(xié)同與融合仍是制約AI 技術(shù)大規(guī)模推廣應(yīng)用的關(guān)鍵問題。

    針對FPGA 存在的模型優(yōu)化部署問題,本文基于張量虛擬機(jī)(Tensor Virtual Machine,TVM)[9]提出一種DNN 模型在FPGA 上部署與加速的方法,并在PYNQ-Z2 開發(fā)板上實(shí)現(xiàn)了基于殘差網(wǎng)絡(luò)(Residual Network,ResNet)的分心駕駛行為分類算法,并驗(yàn)證了算法的有效性。TVM 是一個(gè)應(yīng)用于深度學(xué)習(xí)領(lǐng)域的端到端自動編譯優(yōu)化器,將不同框架(如PyTorch、TensorFlow、ONNX(Open Neural Network Exchange)等)訓(xùn)練的模型編譯為對應(yīng)目標(biāo)硬件(如CPU、GPU、FPGA、ASIC 等)的可執(zhí)行語言[9]。為更好支持FPGA 類終端設(shè)備,TVM 集成了一個(gè)通用的、可定制的多功能張量加速器(Versatile Tensor Accelerator,VTA)[10]。通過構(gòu)建端到端、以加速器為中心的DNN 編譯平臺,TVM 可實(shí)現(xiàn)硬件跨平臺編譯,并有效降低模型部署難度,同時(shí)保證模型的推理時(shí)間和推理精度,為CNN 在終端設(shè)備上的快速部署提供了新方案。

    本文利用TVM 編譯器,實(shí)現(xiàn)基于ResNet 的分心駕駛分類模型在高性價(jià)比FGPA 上的加速計(jì)算,既保證了檢測精度和實(shí)時(shí)性要求,又降低了模型落地成本,為分心駕駛行為分類應(yīng)用的落地提供了新的方案。分心駕駛是指駕駛員將注意力從駕駛上移開,進(jìn)行諸如發(fā)短信、打電話、和乘客聊天等分心駕駛行為。圖像分類任務(wù)廣泛使用的深度卷積神經(jīng)網(wǎng)絡(luò),由于模型參數(shù)量大,在分心駕駛這類移動場景應(yīng)用時(shí)無法滿足實(shí)時(shí)性需求,而現(xiàn)有的輕量化模型如MobileNet 系列,在解決模型參數(shù)問題的同時(shí)也帶來精度下降的問題,經(jīng)驗(yàn)證分析表明它并不適用于分心駕駛行為分類場景。分心駕駛行為分類的落地應(yīng)用,離不開對硬件成本的考量,而現(xiàn)有研究大多集中在提升分心駕駛模型精度方面[11-14],較少關(guān)注模型的快速、低成本部署應(yīng)用。本文聚焦于模型在邊緣端硬件的加速計(jì)算,使用ResNet 實(shí)現(xiàn)分心駕駛行為分類,并選取成本低廉的PYNQ-Z2 開發(fā)板作為搭載硬件,取得較好成效。

    1 相關(guān)工作

    當(dāng)前,深度神經(jīng)網(wǎng)絡(luò)(DNN)模型在FPGA 上部署與加速的方法如下:1)使用專用FPGA 加速器,針對FPGA 和DNN模型進(jìn)行優(yōu)化映射,生成高層綜合(High-Level Synthesis,HLS)、Verilog 或硬件描述語言(Very-High-speed integrated circuit hardware Description Language,VHDL),最后生成比特流;2)使用通用FPGA 加速器,將DNN 模型轉(zhuǎn)換為多級中間表示,并針對多級中間表示優(yōu)化編譯,最后生成硬件代碼。

    1.1 專用型FPGA加速器

    專用型FPGA 加速器根據(jù)體系架構(gòu)分為兩類:流式架構(gòu)FPGA 加速器和處理器架構(gòu)FPGA 加速器。

    流式架構(gòu)FPGA 加速器如圖1(a)所示,由多個(gè)不同的硬件塊組成,模型的每一層對應(yīng)生成一個(gè)硬件塊,各硬件塊的性能分別進(jìn)行優(yōu)化,并將所有塊串聯(lián)形成管道,再利用層之間的并行性實(shí)現(xiàn)并發(fā)執(zhí)行。流式架構(gòu)的FPGA 加速器如fpgaConvNet[15]、DeepBurning[16]、Haddoc2[17]和AutoCodeGen[18]。fpgaConvNet 框架利用同步數(shù)據(jù)流模型執(zhí)行設(shè)計(jì)空間搜索,生成可合成的Vivado HLS 硬件設(shè)計(jì),將CNN 模型映射到FPGA 上[15];DeepBurning 根據(jù)網(wǎng)絡(luò)模型數(shù)據(jù)、訪存特性和芯片資源約束,為特定模型自動實(shí)現(xiàn)最優(yōu)FPGA 設(shè)計(jì)[16];Haddoc2 使用直接硬件映射方法實(shí)現(xiàn)CNN,為CNN 自動設(shè)計(jì)基于FPGA 的硬件加速器[17];AutoCodeGen 根據(jù)高級硬件描述語言自動生成Verilog HDL 代碼[18]。流式架構(gòu)FPGA 加速器并發(fā)性較高,但加速器要為每個(gè)模型生成比特流,編譯時(shí)間較長。

    圖1 專用型FPGA加速器架構(gòu)Fig.1 Architecture of dedicated FPGA accelerator

    處理器架構(gòu)FPGA 加速器如圖1(b)所示,由一個(gè)固定的架構(gòu)模板組成,主要包括處理單元、控制單元和直接存儲器訪問(Direct Memory Access,DMA)三部分,以脈動陣列或矩陣乘法的形式,依次處理CNN 層,基于FPGA 資源進(jìn)行配置和擴(kuò)展,實(shí)現(xiàn)一次編譯生成的比特流對應(yīng)多個(gè)CNN 模型。處理器架構(gòu)的FPGA 加速器如DNN Weaver[19]、Angel-Eye[20]、ALAMO[21]和 FP-DNN(FPGAs-Deep Neural Network)[22]。DNN Weaver 開源框架使用手動優(yōu)化的基于寄存器轉(zhuǎn)換級(Register Transfer Level,RTL)的設(shè)計(jì)模板,為給定的(DNN,F(xiàn)PGA)組合,自動生成高性能可合成的加速器[19];Angel-Eye使用數(shù)據(jù)量化策略將數(shù)據(jù)量化到8 b,并自動生成指令序列描述CNN 執(zhí)行過程[20];ALAMO 兼顧HLS 的靈活、易編程和RTL 的高性能、高能效的特性,自動將模型推理過程映射成FPGA 可執(zhí)行的RTL 代碼[21];FP-DNN 框架以TensorFlow 構(gòu)造的DNN 模型作為輸入,使用RTL-HLS 混合模板自動生成FPGA 硬件設(shè)計(jì),無須人工干預(yù),自動完成DNN 模型到FPGA的映射[22]。處理器架構(gòu)FPGA 加速器靈活、可擴(kuò)展、低定制化,但由于一次編譯生成的比特流對應(yīng)多個(gè)CNN 模型,可能導(dǎo)致加速性能不穩(wěn)定。

    1.2 通用型FPGA加速器

    通用型FPGA 加速器可分為商用深度學(xué)習(xí)編譯器和開源深度學(xué)習(xí)編譯器兩種。商用深度學(xué)習(xí)編譯器由硬件廠商推出,以庫的方式提供給用戶,將模型中間表示(Intermediate Representation,IR)轉(zhuǎn)換成編譯器內(nèi)部IR,再映射到對應(yīng)硬件的算子實(shí)現(xiàn),最后完成推理計(jì)算。OpenVINO和Vitis AI 是商用深度學(xué)習(xí)編譯器的代表。OpenVINO 是Intel 推出的針對計(jì)算機(jī)視覺加速優(yōu)化的深度學(xué)習(xí)編譯器,支持PyTorch、TensorFlow、ONNX 等前端框架訓(xùn)練的模型,通過模型轉(zhuǎn)換后可實(shí)現(xiàn)在Intel 平臺下的CPU、GPU、FPGA、視頻處理單元(Video Processing Unit,VPU)等硬件環(huán)境上部署,并具有一次寫入、處處部署的特點(diǎn)。Vitis AI 是Xilinx 推出的一款綜合推理開發(fā)平臺,支持最新的深度學(xué)習(xí)模型和主流訓(xùn)練框架,能夠完成各種深度學(xué)習(xí)任務(wù)。商用深度學(xué)習(xí)編譯器可以最大化地提升性能,但存在硬件適配和算子覆蓋率等問題。為解決上述問題,以TVM、nGraph-PlaidML[23]、XLA(Accelerated Linear Algebra)[24]、Glow[25]和 TC(Tensor Comprehensions)[26]為代表的開源深度學(xué)習(xí)編譯器應(yīng)運(yùn)而生。這類編譯器支持根據(jù)模板或自定義IR 實(shí)現(xiàn)算子的自動生成,由此解決算子覆蓋率問題;并支持將輸入模型轉(zhuǎn)換為多級IR 優(yōu)化編譯,實(shí)現(xiàn)不同硬件適配。開源深度學(xué)習(xí)編譯器結(jié)構(gòu)如圖2 所示,支持多前端輸入和多后端部署。前端將不同框架訓(xùn)練的模型描述轉(zhuǎn)換為高級中間表示(High-level IR),并通過實(shí)現(xiàn)與硬件無關(guān)的計(jì)算圖優(yōu)化,以減少計(jì)算圖冗余、提高計(jì)算效率。優(yōu)化后的High-level IR 傳入后端轉(zhuǎn)化為低級中間表示(Low-level IR),并可針對特定硬件進(jìn)行優(yōu)化,優(yōu)化后的Low-level IR 編譯即可生成目標(biāo)硬件可執(zhí)行代碼。

    TVM 是一個(gè)開源的端到端的深度學(xué)習(xí)編譯器,將不同框架訓(xùn)練的模型作為輸入,經(jīng)過Relay 執(zhí)行圖級優(yōu)化和算子級優(yōu)化后,生成特定硬件的可執(zhí)行代碼。TVM 中包含一個(gè)多功能可編程張量加速器VTA,VTA 由一個(gè)可參數(shù)化的體系結(jié)構(gòu)、兩級ISA 和一個(gè)即時(shí)編譯器(Just-In-Time compiler,JIT)組成,共同實(shí)現(xiàn)可編程可擴(kuò)展功能。VTA 結(jié)構(gòu)如圖3 所示,包括獲取模塊(fetch)、加載模塊(load)、計(jì)算模塊(compute)和存儲模塊(store)。四個(gè)模塊通過先進(jìn)先出隊(duì)列與片上共享內(nèi)存進(jìn)行模塊間的通信,可在計(jì)算受限和內(nèi)存受限的工作負(fù)載上實(shí)現(xiàn)高計(jì)算資源利用率和高內(nèi)存帶寬利用率。TVMVTA 共同構(gòu)成軟件-硬件堆棧,實(shí)現(xiàn)模型在FPGA 上的部署與加速。

    圖3 VTA結(jié)構(gòu)Fig.3 VTA structure

    2 模型優(yōu)化與部署方法

    本文基于TVM 深度學(xué)習(xí)編譯器,實(shí)現(xiàn)ResNet 的分心駕駛分類模型在PYNQ-Z2 開發(fā)板上的編譯、優(yōu)化與加速。模型編譯流程如圖4 所示,卷積神經(jīng)網(wǎng)絡(luò)(CNN)模型首先通過前端轉(zhuǎn)換,生成模型計(jì)算圖的高級中間表示Relay IR,再對Relay IR 進(jìn)行優(yōu)化、量化和計(jì)算圖打包操作,接著將Relay IR轉(zhuǎn)換為低級張量中間表示(Tensor Intermediate Representation,TIR),最后生成硬件平臺可執(zhí)行代碼。硬件代碼打包后,通過RPC(Remote Procedure Call)協(xié)議發(fā)送到遠(yuǎn)程目標(biāo)設(shè)備上,即可在目標(biāo)設(shè)備的微處理器(MicroProcessor Unit,MPU)+FPGA 上運(yùn)行,實(shí)現(xiàn)模型推理加速。下面將模型編譯流程分為模型前端轉(zhuǎn)換、模型優(yōu)化和模型硬件代碼生成與部署三個(gè)模塊詳細(xì)介紹。

    圖4 模型編譯流程Fig.4 Model compilation flow

    2.1 模型前端轉(zhuǎn)換模塊

    TVM 支持多種深度學(xué)習(xí)框架,鑒于PyTorch 框架在學(xué)術(shù)界應(yīng)用相對廣泛,本文以PyTorch 訓(xùn)練的模型為例,介紹TVM 的編譯流程。由于PyTorch 采用動態(tài)圖機(jī)制提供非固定的網(wǎng)絡(luò)結(jié)構(gòu),在性能優(yōu)化時(shí)不利于開展網(wǎng)絡(luò)結(jié)構(gòu)的分析和優(yōu)化,因此PyTorch 模型首先需要通過torch 提供的應(yīng)用程序編程接口(Application Programming Interface,API)轉(zhuǎn)換為TorchScript 格式的計(jì)算圖中間表示(IR),以使模型具備可理解、編譯和序列化能力。其次,TVM 使用前端轉(zhuǎn)換模塊將TorchScript 格式的IR 轉(zhuǎn)換為TVM 的Relay IR。前端轉(zhuǎn)換流程如圖5 所示。

    圖5 前端轉(zhuǎn)換流程Fig.5 Front end conversion flow

    2.2 模型優(yōu)化模塊

    2.2.1 計(jì)算圖優(yōu)化

    計(jì)算圖優(yōu)化通過改變數(shù)據(jù)布局、融合算子結(jié)構(gòu)等方式減小訪存和計(jì)算開銷,提高模型推理速度,提升模型的性能。針對前端轉(zhuǎn)換生成的Realy IR 執(zhí)行計(jì)算圖優(yōu)化,并返回優(yōu)化后的mod 模塊和參數(shù)。計(jì)算圖優(yōu)化流程如圖6 所示:構(gòu)建優(yōu)化上下文(context)用于存儲優(yōu)化信息,查找預(yù)調(diào)整優(yōu)化記錄,執(zhí)行計(jì)算圖優(yōu)化。計(jì)算圖優(yōu)化操作如下:

    圖6 計(jì)算圖優(yōu)化流程Fig.6 Computational graph optimization flow

    簡化數(shù)據(jù)流圖(SimplifyInference):若模型中存在正則化算子,則將正則化算子拆分為基礎(chǔ)算子(如加減乘除),并在后續(xù)優(yōu)化中與其他算子融合,減少模型計(jì)算量。

    剔除冗余函數(shù)(RemoveUnusedFunctions):若存在函數(shù)既沒有引用其他函數(shù),也沒有被其他函數(shù)調(diào)用,則此函數(shù)是冗余函數(shù),可從代碼中剔除此函數(shù)。

    消除公共子表達(dá)式(EliminateCommonSubexpr):若表達(dá)式E的計(jì)算結(jié)果為常量C,且E再次出現(xiàn)時(shí)E中所有變量的值都不變,則再次出現(xiàn)的E是公共子表達(dá)式,用常量C代替表達(dá)式E,減小模型的訪存和計(jì)算開銷。

    常量折疊(FoldConstant):用具體常量值代替出現(xiàn)在表達(dá)式中的常量參數(shù),減少訪存開銷。

    算子融合(FuseOps):將多個(gè)簡單算子融合為一個(gè)算子,如Conv+BN+ReLU 三個(gè)算子融合為一個(gè)CBR 算子,簡化計(jì)算流程,減少訪存開銷。

    變換操作布局(AlterOpLayout):根據(jù)硬件特性將數(shù)據(jù)布局轉(zhuǎn)換為硬件友好的布局方式。

    2.2.2 量化

    量化操作將高精度浮點(diǎn)計(jì)算轉(zhuǎn)換為低精度定點(diǎn)計(jì)算,可有效降低硬件的內(nèi)存消耗,提高模型的推理速度。TVM 編譯模型時(shí),為適配VTA 的低精度數(shù)值類型,將數(shù)值精度從float32 量化為int8。將優(yōu)化后的mod 模塊和參數(shù)輸入到量化模塊中,實(shí)現(xiàn)數(shù)值精度轉(zhuǎn)換,并返回量化后的mod 模塊。量化過程分兩步執(zhí)行:1)配置量化環(huán)境,基于量化配置模塊設(shè)置配置參數(shù),如不執(zhí)行量化操作的卷積層、量化校準(zhǔn)范圍等。2)執(zhí)行量化操作,首先執(zhí)行基礎(chǔ)優(yōu)化(如簡化數(shù)據(jù)流圖、折疊比例軸、常量折疊),再執(zhí)行分割、注釋、校準(zhǔn)和實(shí)現(xiàn)四種量化操作:遍歷計(jì)算圖,分割(partion)操作在預(yù)量化的計(jì)算圖中插入分割節(jié)點(diǎn)(cast_hint、stop_fustion);注釋(annotate)操作在預(yù)量化計(jì)算圖中插入模擬量化算子(simulate_quantize);校準(zhǔn)(calibrate)操作收集存儲量化信息;實(shí)現(xiàn)(realize)操作用基礎(chǔ)算子替換模擬量化算子,完成量化變換。

    2.2.3 計(jì)算圖打包

    TVM 根據(jù)目標(biāo)硬件特性轉(zhuǎn)換數(shù)據(jù)布局格式,執(zhí)行計(jì)算圖打包,并將矩陣計(jì)算卸載到FPGA 上,實(shí)現(xiàn)模型在目標(biāo)硬件上的推理加速計(jì)算。將量化后的mod 模塊輸入到圖形打包模塊中,設(shè)置圖形打包的起始和結(jié)束的節(jié)點(diǎn)名稱、索引值,返回打包后的mod 模塊。圖形打包模塊從三個(gè)方面實(shí)現(xiàn)計(jì)算圖的數(shù)據(jù)布局轉(zhuǎn)換,使用的參數(shù)bfactor、cfactor 由VTA 配置文件(vta_config.json)中的“LOG_BATCH”“LOG_BLOCK”控制,默認(rèn)bfactor=1,cfactor=16。計(jì)算圖打包流程如圖7 所示:

    圖7 計(jì)算圖打包流程Fig.7 Computational graph packaging flow

    1)打包權(quán)重,更改權(quán)重參數(shù)布局。首先判斷權(quán)重參數(shù)的第一、二維能否整除cfactor,若不能整除cfactor,則填充權(quán)重參數(shù)形狀,再將權(quán)重維度從4 維擴(kuò)展為6 維,維度擴(kuò)展規(guī)則如表1 所示。

    表1 計(jì)算圖打包的維度擴(kuò)展規(guī)則Tab.1 Dimension expansion rules of computational graph packing

    2)打包通道,更改通道數(shù)據(jù)布局。首先判斷數(shù)據(jù)通道是否滿足條件:數(shù)據(jù)通道參數(shù)第一維整除bfactor,第二維整除cfactor,若滿足條件,則將通道維度從4 維擴(kuò)展為6 維;若不滿足條件,則計(jì)算圖打包失敗,程序停止運(yùn)行。

    3)打包常量,更改常量參數(shù)布局。首先判斷常量參數(shù)第一維能否整除cfactor,若不能整除cfactor,則填充常量參數(shù)形狀,再將常量參數(shù)維度從3 維擴(kuò)展為5 維。

    2.3 模型硬件代碼生成與部署模塊

    2.3.1 硬件代碼生成

    模型在目標(biāo)設(shè)備上部署時(shí)需要將模型描述轉(zhuǎn)化為硬件可執(zhí)行代碼,TVM 基于硬件代碼生成模塊將打包后的mod 模塊編譯為硬件代碼庫,并通過RPC 協(xié)議發(fā)送到遠(yuǎn)程設(shè)備上執(zhí)行。硬件代碼生成流程如圖8 所示:將打包后的mod 模塊輸入到硬件代碼生成模塊中,首先執(zhí)行計(jì)算圖編譯,實(shí)現(xiàn)計(jì)算圖優(yōu)化和圖代碼生成;再將Realy IR 轉(zhuǎn)換為低級張量中間表示TIR,執(zhí)行TIR 優(yōu)化,分離出主機(jī)模塊和目標(biāo)設(shè)備模塊,并分別為主機(jī)端和目標(biāo)設(shè)備端生成代碼;最后將目標(biāo)設(shè)備模塊導(dǎo)入主機(jī)模塊中,生成運(yùn)行時(shí)模塊,返回生成的硬件推理庫文件。

    圖8 硬件代碼生成流程Fig.8 Hardware code generation flow

    2.3.2 配置硬件參數(shù)與模型計(jì)算

    1)配置參數(shù)。在主機(jī)端定義目標(biāo)模型和模型執(zhí)行平臺,當(dāng)目標(biāo)硬件為FPGA 后端時(shí),重新配置FPGA 和JIT 運(yùn)行時(shí)。配置目標(biāo)硬件IP 地址和對應(yīng)端口號,將VTA 配置文件中的設(shè)備目標(biāo)“TARGET”設(shè)置為“pynq”,其余參數(shù)保持不變。連接硬件設(shè)備,在主機(jī)端構(gòu)建完整的TVM 環(huán)境,目標(biāo)設(shè)備端構(gòu)建VTA 運(yùn)行環(huán)境。主機(jī)端連接目標(biāo)設(shè)備,并開啟RPC 服務(wù),完成基于TVM 的RPC 服務(wù)程序構(gòu)建和預(yù)編譯比特流下載,通過RPC 將預(yù)編譯比特流發(fā)送到目標(biāo)設(shè)備上,實(shí)現(xiàn)目標(biāo)設(shè)備上的FPGA 編程和VTA 運(yùn)行時(shí)構(gòu)建,最后發(fā)送可執(zhí)行文件到目標(biāo)硬件上執(zhí)行。

    2)運(yùn)行程序。將模型和權(quán)重參數(shù)輸入到主機(jī)端,經(jīng)過TVM 編譯優(yōu)化生成可執(zhí)行代碼,開啟RPC 服務(wù),將代碼發(fā)送到目標(biāo)硬件上執(zhí)行推理,測試模型推理速度和精度,并將結(jié)果返回主機(jī)。

    3 實(shí)驗(yàn)與結(jié)果分析

    3.1 實(shí)驗(yàn)環(huán)境

    實(shí)驗(yàn)環(huán)境分為模型訓(xùn)練環(huán)境與模型部署環(huán)境,模型部署環(huán)境又包括模型部署主機(jī)端環(huán)境和目標(biāo)硬件環(huán)境。

    3.1.1 訓(xùn)練環(huán)境

    實(shí)驗(yàn)平臺安裝Ubuntu14.04 操作系統(tǒng),采用PyTorch 1.10.1 框架,以及Python3.6 運(yùn)行環(huán)境,硬件配置為Intel Core i5-10500 CPU@3.10 GHz,采 用NVIDIA GeFore GTX 1080Ti GPUs,內(nèi)存16 GB(3 200 MHz)。訓(xùn)練參數(shù)設(shè)置如下:訓(xùn)練batch size=64,輸入圖片大小為224×224,訓(xùn)練迭代次數(shù)Epoch=100,初始權(quán)重為ImageNet 預(yù)訓(xùn)練權(quán)重,使用隨機(jī)梯度下 降(Stochastic Gradient Descent,SGD)優(yōu)化器,其中:learning rate=0.01,momentum=0.9,weight_decay=5E-4。

    3.1.2 部署環(huán)境

    本文模型部署時(shí)主機(jī)端的軟件環(huán)境Ubuntu 20.04,TVM版本為0.8,硬件環(huán)境為Intel Core i5-10500 CPU@ 3.10 GHz,內(nèi)存16 GB(3 200 MHz)。

    本文模型部署的目標(biāo)硬件為Xilinx 發(fā)布的一款FPGA 開發(fā)板PYNQ-Z2(芯片型號ZYNQ XC7Z020-1CLG400C),如圖9所示,PYNQ-Z2 內(nèi)部資源包括:650 MHz 雙核Cortex-A9 處理器、DDR3 內(nèi)存控制器、高/低帶寬外設(shè)控制器和Artix-7 系列可編程邏輯器件??删幊踢壿嬈骷?3 300 個(gè)邏輯片、630 KB 快速block RAM、4 個(gè)時(shí)鐘管理片和220 個(gè)DSP 切片組成。價(jià)格150~200 $,尺寸87 mm×137 mm,適合用于搭載分心駕駛分類模型。PYNQ-Z2 板鏡像版本為Pynq 官方提供的PYNQ-Z2 v2.5,根據(jù)TVM 官方教程在PYNQ-Z2 板上安裝VTA,一根網(wǎng)線用于數(shù)據(jù)傳輸,一根USB 用于供電。

    圖9 PYNQ-Z2開發(fā)板Fig.9 PYNQ-Z2 development board

    3.2 數(shù)據(jù)集

    本文使用了AUC(American University in Cairo)[27]和StateFarm[28]兩個(gè)開源數(shù)據(jù)集訓(xùn)練分心駕駛行為分類模型。

    3.2.1 AUC數(shù)據(jù)集

    AUC 數(shù)據(jù)集采集了來自7 個(gè)國家的31 名參與者共17 308 張駕駛圖片,圖像尺寸為1 080×1 920,包含c0~c9 共10類分心駕駛行為(如圖10 所示),分別是正常駕駛、右手發(fā)消息、右手打電話、左手發(fā)消息、左手打電話、調(diào)收音機(jī)、喝水、向后取東西、整理頭發(fā)/化妝、和乘客說話。本文將25%(4 331 張)的圖片用于測試,剩余75%(12 977 張)圖片的90%(11 680 張)用于訓(xùn)練,10%(1 297 張)用于驗(yàn)證,數(shù)據(jù)分布情況如圖11 所示,訓(xùn)練時(shí)將圖像尺寸調(diào)整為224×224。

    圖10 分心駕駛數(shù)據(jù)集樣例Fig.10 Samples of distracted driving dataset

    圖11 AUC和StateFarm數(shù)據(jù)分布Fig.11 AUC and StateFarm data distribution

    3.2.2 StateFarm數(shù)據(jù)集

    StateFarm 數(shù)據(jù)集是由kaggle 競賽公布的分心駕駛數(shù)據(jù)集,比賽提供了22 424 張已標(biāo)注訓(xùn)練集和79 729 張未標(biāo)注測試集,共有10 個(gè)分類(與AUC 數(shù)據(jù)集分類相同),圖像尺寸為640×480。本文使用22 424 張標(biāo)注圖像用于訓(xùn)練,訓(xùn)練時(shí)將圖像尺寸調(diào)整為224×224。測試和驗(yàn)證數(shù)據(jù)使用文獻(xiàn)[29]中標(biāo)注的8 350 張圖像,其中50%(4 175 張)圖像用于測試,50%(4 175 張)圖像用于驗(yàn)證。

    3.3 ResNet

    殘差網(wǎng)絡(luò)(ResNet)[30]是為了解決DNN 退化問題而提出的新型網(wǎng)絡(luò)結(jié)構(gòu),引入的殘差結(jié)構(gòu)(Residual Block)如圖12所示。將輸入信息直接通過支路(shortcut)傳到輸出,以緩解傳統(tǒng)卷積層數(shù)據(jù)傳輸時(shí)的信息損失,在模型訓(xùn)練時(shí)只需關(guān)注輸入與輸出間的差異,降低了網(wǎng)絡(luò)學(xué)習(xí)的難度。本文基于ResNet 設(shè)計(jì)分心駕駛行為分類模型,并將模型部署到FPGA 上。

    圖12 殘差結(jié)構(gòu)Fig.12 Residual blocks

    3.4 結(jié)果分析

    3.4.1 AUC和StateFarm數(shù)據(jù)集上的實(shí)驗(yàn)結(jié)果

    ResNet 模型在AUC 和StateFarm 的測試準(zhǔn)確率如表2 所示。ResNet18、34、50 在AUC 數(shù)據(jù)集上的準(zhǔn)確率都達(dá)到了95%以上,說明AUC 數(shù)據(jù)集數(shù)據(jù)量小、數(shù)據(jù)復(fù)雜程度低。ResNet18、34、50 在StateFarm 數(shù)據(jù)集上的表現(xiàn)比在AUC 上差,準(zhǔn)確率分別下降了6.15、5.04 和4.64 個(gè)百分點(diǎn),說明StateFarm 數(shù)據(jù)集數(shù)據(jù)構(gòu)成更復(fù)雜、更具有挑戰(zhàn)性。

    表2 ResNet模型在AUC和StateFarm數(shù)據(jù)集上的測試準(zhǔn)確率 單位:%Tab.2 Test accuracies of ResNet models on AUC and StateFarm datasets unit:%

    3.4.2 模型推理時(shí)間分析

    測試ResNet 模型在VTA 模擬器、PYNQ-Z2 的MPU 和MPU+FPGA 上的推理時(shí)間,batch-size=1,測試過程如下:

    VTA 模擬器是TVM 提供的一種硬件模擬環(huán)境,在主機(jī)端構(gòu)建VTA 模擬環(huán)境,更改VTA 配置文件,將“TARGET”設(shè)置為“sim”,將TVM 編譯優(yōu)化和VTA 量化打包的模型部署到VTA 模擬器上,所有TVM 工作負(fù)載都在VTA 模擬器上執(zhí)行;MPU 系統(tǒng),將TVM 編譯優(yōu)化的模型部署到PYNQ-Z2 上,在PYNQ-Z2 的MPU 上執(zhí)行矩陣計(jì)算;MPU+FPGA 系統(tǒng),將TVM編譯優(yōu)化和VTA 量化打包的模型部署到PYNQ-Z2 上,在PYNQ-Z2 的MPU+FPGA 上執(zhí)行矩陣計(jì)算。

    測試結(jié)果如表3 所示。模型在PYNQ-Z2 的MPU 上執(zhí)行推理時(shí),所有矩陣計(jì)算都在MPU 上執(zhí)行,由于模型參數(shù)量大且MPU 資源有限,所以模型在PYNQ-Z2 的MPU 上的推理速度最小。模型在VTA 模擬器和PYNQ-Z2 的MPU+FPGA 上執(zhí)行推理時(shí),都使用了量化和計(jì)算圖打包操作,壓縮了模型體積,并分別將卷積計(jì)算卸載到模擬器和FPGA 上執(zhí)行。與MPU 相比,ResNet18、50 在VTA 模擬器上的推理時(shí)間減少了39.15% 和59.66%;在MPU+FPGA 上的推理時(shí)間減少了77.53%和88.63%。與VTA 模擬器相比,ResNet34 在MPU+FPGA 上的推理時(shí)間減少了73.96%。因此,基于TVM 的DNN 模型加速方法能有效減少模型在FPGA 上的推理時(shí)間,加快模型推理。

    表3 ResNet模型在不同硬件上的推理時(shí)間對比 單位:msTab.3 Comparison of inference time of ResNet models on different hardware unit:ms

    3.4.3 模型推理精度分析

    在AUC 和StateFarm 數(shù)據(jù)集上,ResNet 模型在VTA 模擬器、PYNQ-Z2 的MPU 和MPU+FPGA 上的推理精度如表4 所示。當(dāng)模型部署平臺為PYNQ-Z2 的MPU 時(shí),模型的推理精度與在PyTorch 下的精度相同,說明基于TVM 的編譯優(yōu)化不會降低模型的推理精度。當(dāng)模型部署平臺為VTA 模擬器和PYNQ-Z2 的MPU+FPGA 時(shí),由于模型編譯優(yōu)化時(shí)使用了相同的量化和計(jì)算圖打包操作,兩個(gè)部署平臺的模型推理精度下降趨勢一致。與MPU 相比,模型部署平臺為MPU+FPGA時(shí),在AUC 數(shù)據(jù)集上,ResNet50 的top1 和top5 分別下降了0.26、0.03 個(gè)百分點(diǎn);ResNet18 的top1 和top5 分別下降了0.16 和0.04 個(gè)百分點(diǎn)。在StateFarm 數(shù)據(jù)集上,ResNet50 的精度下降趨勢最明顯,top1 和top5 精度分別下降了2.93、0.65 個(gè)百分點(diǎn)。ResNet34 在兩個(gè)數(shù)據(jù)集上的表現(xiàn)最穩(wěn)定。除了StateFarm 數(shù)據(jù)集上的ResNet50,采用本文方法后,ResNet18、34 的推理精度的下降都維持在了1 個(gè)百分點(diǎn)以內(nèi),驗(yàn)證了該方法能夠保持模型在FPGA 上的推理準(zhǔn)確性。

    表4 AUC、StateFarm數(shù)據(jù)集訓(xùn)練的ResNet模型在不同硬件上的推理精度對比 單位:%Tab.4 Comparison of inference accuracy of ResNet models trained on AUC and StateFarm datasets on different hardware unit:%

    3.4.4 模型優(yōu)化性能分析

    本節(jié)將優(yōu)化操作分為3 個(gè)方案:方案1 僅使用計(jì)算圖優(yōu)化操作;方案2 使用計(jì)算圖優(yōu)化和量化操作;方案3 同時(shí)使用計(jì)算圖優(yōu)化、量化和計(jì)算圖打包操作。分別在VTA 模擬器和PYNQ-Z2 的MPU+FPGA 上,測試使用不同優(yōu)化方案的模型的推理時(shí)間和精度情況,并分析實(shí)驗(yàn)結(jié)果。

    ResNet 在VTA 模擬器和PYNQ-Z2 的MPU+FPGA 上使用不同優(yōu)化方案的推理時(shí)間如表5 所示。ResNet18、34 和50 在VTA 模擬器上使用方案2 時(shí)推理速度最快,與方案1 相比推理時(shí)間分別減少了27.68%、18.26%和26.36%,這是因?yàn)榱炕僮鲏嚎s了模型的數(shù)據(jù)精度,提升了模型的推理速度。與方案2 相比,雖然方案3 在模型優(yōu)化時(shí)增加了計(jì)算圖打包操作,但由于計(jì)算圖打包操作將數(shù)據(jù)布局由nchw 轉(zhuǎn)換為nchwinic,匹配FPGA 的硬件規(guī)范,轉(zhuǎn)換后的數(shù)據(jù)布局不適用于VTA 模擬器,導(dǎo)致模型的推理速度降低。在MPU+FPGA上使用方案3 時(shí),ResNet18、34 和50 的推理時(shí)間比在VTA 模擬器上減小了63.08%、73.96%和71.82%,驗(yàn)證了在MPU+FPGA 上更適合使用優(yōu)化方案3。

    表5 ResNet模型在不同硬件上使用不同優(yōu)化方案的推理時(shí)間對比 單位:msTab.5 Comparison of inference time of ResNet models using different optimization schemes on different hardware unit:ms

    在AUC 和StateFarm 數(shù)據(jù)集上,ResNet 在VTA 模擬器和PYNQ-Z2 的MPU+FPGA 上使用不同優(yōu)化方案的推理精度如表6 所示。在VTA 模擬器和PYNQ-Z2 的MPU+FPGA 上分別使用方案2 和方案3 優(yōu)化時(shí),模型在兩個(gè)平臺上的推理精度變化趨勢一致,且同一平臺不同方案推理精度相同,說明計(jì)算圖打包操作不會影響模型精度。在VTA 模擬器上,與方案1 相比,使用方案2 和方案3 的推理精度略有下降,說明量化操作壓縮了模型的數(shù)據(jù)精度,會降低模型的推理精度。

    表6 AUC和StateFram數(shù)據(jù)集訓(xùn)練的ResNet模型在不同硬件上使用不同方案的推理精度對比 單位:%Tab.6 Inference accuracy comparison of ResNet models trained on AUC and StateFram datasets using different schemes on different hardwares unit:%

    硬件加速平臺Xilinx Vitis AI 支持深度學(xué)習(xí)模型在Xilinx高端FPGA(如ZCU102、ZCU104 和VCK190 等)上推理加速,這些FPGA 的計(jì)算資源豐富但價(jià)格昂貴。通過對比Vitis AI支持的FPGA 與PYNQ-Z2 的硬件價(jià)格、硬件資源和 ResNet50的推理時(shí)間(表7 所示),折中權(quán)衡之下PYNQ-Z2 的性價(jià)比更高,更適合作為分心駕駛行為分類應(yīng)用落地的載體。

    表7 Vitis AI支持的FPGA與PYNQ-Z2的硬件價(jià)格、硬件資源數(shù)和ResNet50推理時(shí)間的對比Tab.7 Comparison of hardware price,hardware resources and ResNet50 inference time of Vitis AI-supported FPGA and PYNQ-Z2

    4 結(jié)語

    本文提出了基于TVM 的深度神經(jīng)網(wǎng)絡(luò)模型加速方法,通過計(jì)算圖優(yōu)化減少模型的計(jì)算和訪存開銷,量化方法壓縮模型的體積,計(jì)算圖打包將復(fù)雜的卷積計(jì)算加載到FPGA 上執(zhí)行。本文以分心駕駛行為分類應(yīng)用為例,在FPGA 上驗(yàn)證了檢測模型的推理速度和精度。利用本文所提加速方法,在AUC 數(shù)據(jù)集上,ResNet50 在PYNQ-Z2 的MPU+FPGA 上的推理時(shí)間相比只使用MPU 減少了88.63%,而推理精度只下降了0.26 個(gè)百分點(diǎn);ResNet18 的推理時(shí)間減少了77.53%,推理一張圖片的時(shí)間減少至355.67 ms,而推理精度只降低了0.16 個(gè)百分點(diǎn)。本文方法可以降低不同訓(xùn)練框架訓(xùn)練的模型在FPGA 上的部署難度,提高模型在FPGA 上的推理速度并保持推理精度,為深度神經(jīng)網(wǎng)絡(luò)模型在FPGA 上的部署提供了新的方案。

    本文實(shí)現(xiàn)了ResNet 模型在PYNQ-Z2 上的部署加速,但是ResNet 模型中存在大量冗余參數(shù),不但增加硬件開銷還影響推理速度,下一步擬使用輕量化方法進(jìn)一步減少模型參數(shù)量,進(jìn)而提升模型在硬件上的推理速度。此外,TVM 提供的預(yù)編譯的VTA 比特流(bitstream),并不能良好適用于帶有深度可分離卷積的深度神經(jīng)網(wǎng)絡(luò)模型,下一步擬根據(jù)硬件規(guī)范,更改VTA 配置,生成更高效且適用于深度可分離卷積的VTA 比特流,從而實(shí)現(xiàn)對更多深度學(xué)習(xí)模型的支持。

    猜你喜歡
    模擬器加速器算子
    輪滑加速器
    化學(xué)工業(yè)的“加速器”
    了不起的安檢模擬器
    全民小康路上的“加速器”
    擬微分算子在Hp(ω)上的有界性
    盲盒模擬器
    劃船模擬器
    各向異性次Laplace算子和擬p-次Laplace算子的Picone恒等式及其應(yīng)用
    一類Markov模算子半群與相應(yīng)的算子值Dirichlet型刻畫
    Roper-Suffridge延拓算子與Loewner鏈
    中文字幕人妻丝袜一区二区| 欧美日韩瑟瑟在线播放| 女人精品久久久久毛片| 久久午夜亚洲精品久久| 麻豆av在线久日| 黄片大片在线免费观看| 亚洲av日韩在线播放| 国产不卡av网站在线观看| 国产真人三级小视频在线观看| 国产成人欧美| 精品国产亚洲在线| 国产高清视频在线播放一区| 国产精品98久久久久久宅男小说| 91老司机精品| e午夜精品久久久久久久| 欧美乱妇无乱码| 99riav亚洲国产免费| 国内毛片毛片毛片毛片毛片| 在线免费观看的www视频| 国产欧美日韩一区二区三| 亚洲欧美色中文字幕在线| 老熟女久久久| 中文字幕制服av| 久久 成人 亚洲| 久久午夜综合久久蜜桃| 91老司机精品| 黄色丝袜av网址大全| 国产麻豆69| 欧美亚洲 丝袜 人妻 在线| 人成视频在线观看免费观看| 亚洲人成77777在线视频| 一区二区日韩欧美中文字幕| 久久久久久人人人人人| 国产一区二区三区视频了| 亚洲精品在线美女| 777久久人妻少妇嫩草av网站| 手机成人av网站| 国产精品乱码一区二三区的特点 | 久久精品亚洲精品国产色婷小说| 美女福利国产在线| 黄色丝袜av网址大全| 老司机午夜福利在线观看视频| 久久香蕉激情| 欧美精品人与动牲交sv欧美| a级毛片在线看网站| 午夜福利免费观看在线| avwww免费| 亚洲欧美色中文字幕在线| 国产精品久久久人人做人人爽| 国产一区在线观看成人免费| 99在线人妻在线中文字幕 | 国内久久婷婷六月综合欲色啪| 久久久久久久久免费视频了| 成人永久免费在线观看视频| 成年版毛片免费区| 亚洲全国av大片| 午夜免费观看网址| 久久人妻熟女aⅴ| 69精品国产乱码久久久| 欧美大码av| 免费在线观看视频国产中文字幕亚洲| 动漫黄色视频在线观看| 黑人巨大精品欧美一区二区蜜桃| 亚洲少妇的诱惑av| 亚洲美女黄片视频| 国产精品影院久久| 午夜福利欧美成人| av在线播放免费不卡| 日本欧美视频一区| 波多野结衣av一区二区av| 国产xxxxx性猛交| av欧美777| 99在线人妻在线中文字幕 | 夫妻午夜视频| 91大片在线观看| 啦啦啦在线免费观看视频4| a级毛片黄视频| 久久精品亚洲精品国产色婷小说| 美女国产高潮福利片在线看| 亚洲全国av大片| 精品国产一区二区三区四区第35| 亚洲男人天堂网一区| 久久亚洲精品不卡| 亚洲av第一区精品v没综合| 久久天堂一区二区三区四区| 岛国毛片在线播放| 日韩人妻精品一区2区三区| 一级作爱视频免费观看| 操美女的视频在线观看| 国产亚洲欧美精品永久| 丰满迷人的少妇在线观看| 一级毛片精品| 建设人人有责人人尽责人人享有的| 日韩欧美国产一区二区入口| 精品一区二区三卡| 老汉色av国产亚洲站长工具| 狠狠狠狠99中文字幕| 亚洲人成电影观看| 国产精品成人在线| 欧美乱妇无乱码| 久久影院123| 老司机深夜福利视频在线观看| ponron亚洲| 少妇被粗大的猛进出69影院| 精品亚洲成a人片在线观看| 岛国在线观看网站| 亚洲全国av大片| 国产91精品成人一区二区三区| 精品国产一区二区三区久久久樱花| 最近最新中文字幕大全免费视频| 黄色片一级片一级黄色片| 狂野欧美激情性xxxx| 日韩欧美在线二视频 | 日韩欧美国产一区二区入口| 91麻豆精品激情在线观看国产 | 国产精品成人在线| 亚洲国产中文字幕在线视频| 啦啦啦视频在线资源免费观看| 精品一区二区三区视频在线观看免费 | 亚洲国产欧美一区二区综合| 久久天躁狠狠躁夜夜2o2o| 中文字幕人妻熟女乱码| 日本撒尿小便嘘嘘汇集6| 男女高潮啪啪啪动态图| 免费日韩欧美在线观看| 国产乱人伦免费视频| 黄网站色视频无遮挡免费观看| 悠悠久久av| 91成人精品电影| 天堂√8在线中文| 中亚洲国语对白在线视频| 精品无人区乱码1区二区| 777米奇影视久久| 搡老乐熟女国产| 50天的宝宝边吃奶边哭怎么回事| 黄色毛片三级朝国网站| 亚洲精品久久午夜乱码| 国精品久久久久久国模美| 757午夜福利合集在线观看| 欧美成人午夜精品| 三上悠亚av全集在线观看| 老熟女久久久| 他把我摸到了高潮在线观看| 一区福利在线观看| 午夜福利在线免费观看网站| 免费观看人在逋| 国产av精品麻豆| 黄网站色视频无遮挡免费观看| 亚洲va日本ⅴa欧美va伊人久久| 国产在线精品亚洲第一网站| 丰满人妻熟妇乱又伦精品不卡| 美女 人体艺术 gogo| 午夜老司机福利片| 国产欧美日韩综合在线一区二区| 操出白浆在线播放| 亚洲人成电影免费在线| 亚洲成a人片在线一区二区| 欧美日韩乱码在线| 午夜福利欧美成人| 日本欧美视频一区| 国产真人三级小视频在线观看| 精品亚洲成a人片在线观看| 精品电影一区二区在线| 国产亚洲一区二区精品| 亚洲三区欧美一区| 国产亚洲一区二区精品| 一区二区三区激情视频| 手机成人av网站| 亚洲自偷自拍图片 自拍| 搡老熟女国产l中国老女人| 亚洲精品国产一区二区精华液| 国产97色在线日韩免费| 青草久久国产| 亚洲精华国产精华精| 中文字幕人妻丝袜制服| 成在线人永久免费视频| 香蕉丝袜av| 久久人妻熟女aⅴ| 国产精华一区二区三区| 在线观看午夜福利视频| 国产欧美日韩综合在线一区二区| 国产精品秋霞免费鲁丝片| 99久久国产精品久久久| 女人精品久久久久毛片| 久久草成人影院| 欧美一级毛片孕妇| 国产男女内射视频| 亚洲欧洲精品一区二区精品久久久| 最新美女视频免费是黄的| 精品第一国产精品| 黄色怎么调成土黄色| 午夜免费鲁丝| 搡老熟女国产l中国老女人| 老熟妇乱子伦视频在线观看| 成年版毛片免费区| 精品少妇一区二区三区视频日本电影| 欧美国产精品va在线观看不卡| 欧美日韩精品网址| 高清欧美精品videossex| 王馨瑶露胸无遮挡在线观看| 久久精品亚洲精品国产色婷小说| 亚洲精品一卡2卡三卡4卡5卡| 亚洲色图av天堂| 国产视频一区二区在线看| 精品一区二区三区视频在线观看免费 | 激情视频va一区二区三区| 成人av一区二区三区在线看| 亚洲伊人色综图| 亚洲视频免费观看视频| 又大又爽又粗| 欧美色视频一区免费| aaaaa片日本免费| 亚洲免费av在线视频| 中文字幕色久视频| 久久久久国产一级毛片高清牌| 国产成人一区二区三区免费视频网站| 免费在线观看黄色视频的| 极品人妻少妇av视频| 99精品久久久久人妻精品| 精品福利永久在线观看| 亚洲国产精品一区二区三区在线| 18禁裸乳无遮挡免费网站照片 | 免费观看精品视频网站| 高潮久久久久久久久久久不卡| 人人妻人人添人人爽欧美一区卜| 国产成人免费无遮挡视频| 国产成人av激情在线播放| 中文字幕av电影在线播放| 亚洲国产欧美网| 一本综合久久免费| 又黄又爽又免费观看的视频| 水蜜桃什么品种好| 久久香蕉精品热| 国产一区二区三区视频了| 国产欧美日韩一区二区三区在线| 人人妻,人人澡人人爽秒播| 亚洲国产精品sss在线观看 | 亚洲国产中文字幕在线视频| 亚洲avbb在线观看| 免费av中文字幕在线| 丰满迷人的少妇在线观看| 久久人人爽av亚洲精品天堂| 国精品久久久久久国模美| 一本大道久久a久久精品| 国产精品免费视频内射| 久久国产乱子伦精品免费另类| 久久亚洲精品不卡| 高清视频免费观看一区二区| 在线天堂中文资源库| 国产有黄有色有爽视频| 日韩人妻精品一区2区三区| 在线观看日韩欧美| 777米奇影视久久| 9色porny在线观看| 国产精品国产高清国产av | 国产高清激情床上av| 国产不卡av网站在线观看| 国产成人精品在线电影| 国产色视频综合| 国产成人av教育| 女人被狂操c到高潮| 伦理电影免费视频| 日日爽夜夜爽网站| 国产亚洲精品一区二区www | 99在线人妻在线中文字幕 | 国产精品欧美亚洲77777| 精品一区二区三区av网在线观看| 国产1区2区3区精品| 久久久久久免费高清国产稀缺| 两个人免费观看高清视频| a级毛片在线看网站| 色尼玛亚洲综合影院| 黄网站色视频无遮挡免费观看| 极品少妇高潮喷水抽搐| 国产不卡一卡二| 啦啦啦 在线观看视频| 欧美日本中文国产一区发布| 1024视频免费在线观看| 久久久国产成人免费| 久久精品国产99精品国产亚洲性色 | 天堂√8在线中文| 欧美日韩亚洲综合一区二区三区_| 母亲3免费完整高清在线观看| 亚洲色图 男人天堂 中文字幕| 精品第一国产精品| 欧美激情久久久久久爽电影 | 狠狠婷婷综合久久久久久88av| 夜夜爽天天搞| 国产熟女午夜一区二区三区| 18禁裸乳无遮挡动漫免费视频| 国产激情久久老熟女| 黄色a级毛片大全视频| 变态另类成人亚洲欧美熟女 | 亚洲精品中文字幕一二三四区| 亚洲一区二区三区欧美精品| 日韩一卡2卡3卡4卡2021年| 久久ye,这里只有精品| 欧美人与性动交α欧美软件| 身体一侧抽搐| 日韩精品免费视频一区二区三区| 免费观看人在逋| 这个男人来自地球电影免费观看| 欧美精品人与动牲交sv欧美| tocl精华| 国产亚洲欧美精品永久| 亚洲精品国产一区二区精华液| 日日摸夜夜添夜夜添小说| 亚洲精品国产区一区二| 久久天堂一区二区三区四区| 久久久久久久久久久久大奶| 成熟少妇高潮喷水视频| 亚洲午夜理论影院| 超碰97精品在线观看| 宅男免费午夜| 日韩欧美免费精品| 国产av又大| 无人区码免费观看不卡| 色尼玛亚洲综合影院| 九色亚洲精品在线播放| 大型黄色视频在线免费观看| 99国产精品免费福利视频| 最新的欧美精品一区二区| 精品欧美一区二区三区在线| 免费一级毛片在线播放高清视频 | 极品少妇高潮喷水抽搐| 99re6热这里在线精品视频| 免费观看a级毛片全部| 亚洲欧美日韩高清在线视频| 日本黄色视频三级网站网址 | 色精品久久人妻99蜜桃| 亚洲人成电影免费在线| 校园春色视频在线观看| 精品高清国产在线一区| 亚洲精品在线美女| 午夜福利欧美成人| 免费观看人在逋| 午夜老司机福利片| 夜夜躁狠狠躁天天躁| 亚洲中文字幕日韩| 午夜福利一区二区在线看| 久久99一区二区三区| 操美女的视频在线观看| 免费观看精品视频网站| 久久久精品区二区三区| 精品人妻熟女毛片av久久网站| 亚洲精品自拍成人| 精品欧美一区二区三区在线| 午夜91福利影院| 好男人电影高清在线观看| 视频区欧美日本亚洲| 久久性视频一级片| 久久国产精品人妻蜜桃| 老熟妇乱子伦视频在线观看| 亚洲国产精品sss在线观看 | 日韩欧美在线二视频 | 久久人人97超碰香蕉20202| 欧美在线黄色| 国产成人精品久久二区二区91| aaaaa片日本免费| 亚洲 欧美一区二区三区| 午夜两性在线视频| 国产精品国产av在线观看| 久久久久久久久久久久大奶| 色婷婷av一区二区三区视频| av国产精品久久久久影院| 欧美亚洲日本最大视频资源| 久久精品国产清高在天天线| 久久久久久久久久久久大奶| 久久久国产成人精品二区 | 99久久综合精品五月天人人| 好看av亚洲va欧美ⅴa在| 亚洲国产欧美日韩在线播放| 精品国产一区二区三区久久久樱花| 国产熟女午夜一区二区三区| svipshipincom国产片| 老熟妇乱子伦视频在线观看| 欧美在线黄色| 亚洲七黄色美女视频| 伦理电影免费视频| 亚洲一区中文字幕在线| 久久人人97超碰香蕉20202| 中文字幕人妻丝袜一区二区| 视频在线观看一区二区三区| 亚洲免费av在线视频| 亚洲精品成人av观看孕妇| 在线观看免费视频网站a站| 黄色视频,在线免费观看| 亚洲色图 男人天堂 中文字幕| 夫妻午夜视频| 手机成人av网站| 精品一品国产午夜福利视频| 欧美日韩乱码在线| x7x7x7水蜜桃| av国产精品久久久久影院| 麻豆成人av在线观看| 久久国产精品男人的天堂亚洲| 成在线人永久免费视频| 99久久精品国产亚洲精品| 99国产精品99久久久久| 久久人人97超碰香蕉20202| 美女高潮喷水抽搐中文字幕| 亚洲aⅴ乱码一区二区在线播放 | 亚洲一区二区三区不卡视频| 亚洲伊人色综图| 叶爱在线成人免费视频播放| 国产精品亚洲av一区麻豆| 亚洲av成人一区二区三| 亚洲 国产 在线| 国产免费现黄频在线看| 久久午夜亚洲精品久久| 中文字幕最新亚洲高清| 天天躁夜夜躁狠狠躁躁| 亚洲中文av在线| 国产精品美女特级片免费视频播放器 | 涩涩av久久男人的天堂| 成在线人永久免费视频| 99香蕉大伊视频| 香蕉久久夜色| 亚洲欧美色中文字幕在线| 天堂中文最新版在线下载| 自拍欧美九色日韩亚洲蝌蚪91| 亚洲色图av天堂| 国产男女超爽视频在线观看| 一级片'在线观看视频| 欧美性长视频在线观看| 80岁老熟妇乱子伦牲交| 51午夜福利影视在线观看| 成人影院久久| 国产亚洲av高清不卡| 一区二区日韩欧美中文字幕| 久久午夜亚洲精品久久| 久久影院123| 国产无遮挡羞羞视频在线观看| 日本精品一区二区三区蜜桃| 无人区码免费观看不卡| 国产一区二区激情短视频| 欧美日韩视频精品一区| 国产在线精品亚洲第一网站| 动漫黄色视频在线观看| 亚洲av美国av| 国产精华一区二区三区| 久久热在线av| 91字幕亚洲| 国产亚洲欧美在线一区二区| 99精品久久久久人妻精品| 亚洲色图综合在线观看| 少妇粗大呻吟视频| 日本精品一区二区三区蜜桃| 青草久久国产| 午夜免费鲁丝| 免费黄频网站在线观看国产| 18禁美女被吸乳视频| 一级片'在线观看视频| 国产精品国产高清国产av | 久久久国产精品麻豆| 极品人妻少妇av视频| 王馨瑶露胸无遮挡在线观看| 亚洲精品中文字幕在线视频| 18禁国产床啪视频网站| 热99re8久久精品国产| 亚洲av成人一区二区三| 国产男靠女视频免费网站| 久久中文字幕一级| 欧美丝袜亚洲另类 | 另类亚洲欧美激情| 国产精品久久视频播放| 亚洲avbb在线观看| 国产精品免费视频内射| 国产成人系列免费观看| 色精品久久人妻99蜜桃| 制服人妻中文乱码| 久久婷婷成人综合色麻豆| 黄色视频不卡| 国产精品秋霞免费鲁丝片| 男男h啪啪无遮挡| 精品一品国产午夜福利视频| 一边摸一边抽搐一进一小说 | 一级毛片精品| 老熟妇仑乱视频hdxx| 久久久水蜜桃国产精品网| 99re在线观看精品视频| 国产亚洲欧美在线一区二区| tocl精华| 精品国内亚洲2022精品成人 | 涩涩av久久男人的天堂| 狠狠狠狠99中文字幕| 久久香蕉激情| 亚洲专区国产一区二区| 男女床上黄色一级片免费看| 久9热在线精品视频| 亚洲av成人一区二区三| 亚洲国产精品sss在线观看 | 亚洲精品国产区一区二| 国产午夜精品久久久久久| 国产极品粉嫩免费观看在线| 精品久久久精品久久久| 欧美精品高潮呻吟av久久| 18禁黄网站禁片午夜丰满| 亚洲午夜理论影院| 久热这里只有精品99| 国产欧美日韩一区二区精品| 91精品国产国语对白视频| 亚洲精品一二三| 欧美丝袜亚洲另类 | 日日摸夜夜添夜夜添小说| 婷婷精品国产亚洲av在线 | bbb黄色大片| netflix在线观看网站| 丰满的人妻完整版| 国产成人av激情在线播放| 欧美日韩亚洲综合一区二区三区_| 黄色怎么调成土黄色| 午夜免费观看网址| 成人三级做爰电影| 亚洲美女黄片视频| 三级毛片av免费| 91字幕亚洲| 国产精品成人在线| 亚洲精品成人av观看孕妇| 亚洲av欧美aⅴ国产| 高清欧美精品videossex| 叶爱在线成人免费视频播放| 两性午夜刺激爽爽歪歪视频在线观看 | 人妻一区二区av| 三级毛片av免费| 一二三四在线观看免费中文在| 久久99一区二区三区| 王馨瑶露胸无遮挡在线观看| 国产一区在线观看成人免费| 男人操女人黄网站| 免费在线观看视频国产中文字幕亚洲| 国产蜜桃级精品一区二区三区 | 亚洲欧美日韩另类电影网站| 久久国产精品大桥未久av| 日韩欧美在线二视频 | 三上悠亚av全集在线观看| 久久精品亚洲av国产电影网| 老司机亚洲免费影院| 成年人免费黄色播放视频| 亚洲一卡2卡3卡4卡5卡精品中文| 久久久久国产精品人妻aⅴ院 | 精品久久蜜臀av无| 老司机在亚洲福利影院| 一本一本久久a久久精品综合妖精| 777米奇影视久久| 亚洲成人免费电影在线观看| 一级片免费观看大全| 一级黄色大片毛片| 国内毛片毛片毛片毛片毛片| 亚洲自偷自拍图片 自拍| 18禁美女被吸乳视频| 人人妻人人添人人爽欧美一区卜| 亚洲,欧美精品.| 在线播放国产精品三级| 日韩制服丝袜自拍偷拍| 操出白浆在线播放| 午夜激情av网站| 日韩视频一区二区在线观看| 制服人妻中文乱码| 亚洲 国产 在线| 99热国产这里只有精品6| 精品一区二区三区视频在线观看免费 | 久久国产精品影院| 99精国产麻豆久久婷婷| 欧美成人免费av一区二区三区 | 热re99久久国产66热| 亚洲熟妇中文字幕五十中出 | 三上悠亚av全集在线观看| 久久人妻熟女aⅴ| 精品第一国产精品| 国产真人三级小视频在线观看| 麻豆国产av国片精品| av不卡在线播放| 一二三四社区在线视频社区8| 久久午夜综合久久蜜桃| 精品久久久久久,| 国产av又大| 成年人午夜在线观看视频| 在线天堂中文资源库| 国产成人av激情在线播放| 午夜福利欧美成人| 欧美日韩一级在线毛片| 国产精品1区2区在线观看. | 国产精品av久久久久免费| 国产成人欧美在线观看 | 亚洲成av片中文字幕在线观看| 18禁裸乳无遮挡动漫免费视频| 亚洲欧美精品综合一区二区三区| 19禁男女啪啪无遮挡网站| 国产成人啪精品午夜网站| 国产淫语在线视频| 精品久久久久久电影网| 又黄又爽又免费观看的视频| 老汉色av国产亚洲站长工具| 成年女人毛片免费观看观看9 | 精品一区二区三区视频在线观看免费 | 丝袜美腿诱惑在线| 国产高清国产精品国产三级| 国产一区有黄有色的免费视频| 亚洲人成电影免费在线| 黄色 视频免费看| 久久精品成人免费网站| 成年版毛片免费区| 最近最新免费中文字幕在线| 国产视频一区二区在线看| cao死你这个sao货| 欧美日韩国产mv在线观看视频| 午夜福利欧美成人| 亚洲精品国产一区二区精华液| av天堂在线播放| 69精品国产乱码久久久| 又紧又爽又黄一区二区| av超薄肉色丝袜交足视频| 成人永久免费在线观看视频| 久久香蕉国产精品|