在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何提高自動(dòng)駕駛汽車感知模型的訓(xùn)練效率和GPU利用率

NVIDIA英偉達(dá)企業(yè)解決方案 ? 來源:NVIDIA英偉達(dá)企業(yè)解決方案 ? 2024-04-29 09:12 ? 次閱讀

由于采用了多攝像頭輸入和深度卷積骨干網(wǎng)絡(luò),用于訓(xùn)練自動(dòng)駕駛感知模型的 GPU 內(nèi)存占用很大。當(dāng)前減少內(nèi)存占用的方法往往會(huì)導(dǎo)致額外的計(jì)算開銷或工作負(fù)載的失衡。

本文介紹了 NVIDIA 和智能電動(dòng)汽車開發(fā)商蔚來的聯(lián)合研究。具體來說,文中探討了張量并行卷積神經(jīng)網(wǎng)絡(luò)(CNN)訓(xùn)練如何有助于減少 GPU 內(nèi)存占用,并展示了蔚來如何提高自動(dòng)駕駛汽車感知模型的訓(xùn)練效率和 GPU 利用率。

自動(dòng)駕駛的感知模型訓(xùn)練

自動(dòng)駕駛感知任務(wù)采用多攝像頭數(shù)據(jù)作為輸入,卷積神經(jīng)網(wǎng)絡(luò)(CNN)作為骨干(backbone)來提取特征。由于 CNN 的前向激活值(activations)都是形狀為(N, C, H, W)的特征圖(feature maps)(其中 N、C、H、W 分別代表圖像數(shù)、通道數(shù)、高度和寬度)。這些激活值需要被保存下來用于反向傳播,因此骨干網(wǎng)絡(luò)的訓(xùn)練通常會(huì)占據(jù)顯著的內(nèi)存大小。

例如,有 6 路相機(jī)以 RGB 格式輸入分辨率為 720p 的圖像,批大小(batchsize)設(shè)置為 1,那么骨干網(wǎng)絡(luò)的輸入形狀為(6, 3, 720, 1280)。對(duì)于如 RegNet 或 ConvNeXt 這樣的骨干網(wǎng)絡(luò)而言,激活值的內(nèi)存占用是遠(yuǎn)大于模型權(quán)重和優(yōu)化器狀態(tài)的內(nèi)存占用的,并且可能會(huì)超出 GPU 的內(nèi)存大小限制。

蔚來汽車自動(dòng)駕駛團(tuán)隊(duì)在這一領(lǐng)域的研究表明,使用更深的模型和更高的圖像分辨率可以顯著提高感知精度,尤其是對(duì)尺寸小和距離遠(yuǎn)的目標(biāo)的識(shí)別;同時(shí),蔚來 Aquila 超感系統(tǒng)搭載 11 個(gè) 800 萬像素高清攝像頭,每秒可產(chǎn)生 8GB 圖像數(shù)據(jù)。

GPU 內(nèi)存優(yōu)化需求

深度模型和高分辨率輸入對(duì)于 GPU 內(nèi)存優(yōu)化提出了更高的要求。當(dāng)前解決激活值 GPU 內(nèi)存占用過大的技術(shù)有梯度檢查點(diǎn)(gradient checkpointing),即在前向傳播的過程中,只保留部分層的激活值。而對(duì)于其他層的激活值,則在反向傳播的時(shí)候重新計(jì)算。

這樣可以節(jié)省一定的 GPU 內(nèi)存,但會(huì)增加計(jì)算的開銷,拖慢模型訓(xùn)練。此外,設(shè)置梯度檢查點(diǎn)通常需要開發(fā)者根據(jù)模型結(jié)構(gòu)來選擇和調(diào)試,這給模型訓(xùn)練過程引入了額外的代價(jià)。

蔚來還使用了流水線并行技術(shù),將神經(jīng)網(wǎng)絡(luò)按照 GPU 內(nèi)存開銷進(jìn)行平均分段,部署到多個(gè) GPU 上進(jìn)行訓(xùn)練。此方法雖然將存儲(chǔ)需求平分到多個(gè) GPU 上,但是因?yàn)橛?jì)算不平衡,會(huì)導(dǎo)致明顯的 GPU 間負(fù)載不均衡現(xiàn)象,一些 GPU 的計(jì)算資源無法被充分利用。

基于 PyTorch DTensor 的張量并行 CNN 訓(xùn)練

綜合考慮以上因素,NVIDIA 和蔚來合作設(shè)計(jì)并實(shí)現(xiàn)了張量并行(Tensor Parallel)卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練方案,將輸入值和中間激活值切分到多個(gè) GPU 上。而對(duì)于模型權(quán)重和優(yōu)化器狀態(tài),我們采用和數(shù)據(jù)并行訓(xùn)練相同的策略,將其復(fù)制到各個(gè) GPU 上。該方法能夠降低對(duì)單個(gè) GPU 的內(nèi)存占用和帶寬壓力。

PyTorch 2.0 中引入的 DTensor 提供了一系列原語(primitives)來表達(dá)張量的分布如切片(sharding)和重復(fù)(replication),使用戶能夠方便地進(jìn)行分布式計(jì)算而無需顯式調(diào)用通信算子,因?yàn)?DTensor 的底層實(shí)現(xiàn)已經(jīng)封裝了通信庫,如 NVIDIA 集合通信庫 (NCCL)

有了 DTensor 的抽象,用戶可以方便地搭建各種并行訓(xùn)練策略,如張量并行(Tensor Parallel),分布式數(shù)據(jù)并行(Distributed Data Parallel)和完全切片數(shù)據(jù)并行(Fully Sharded Data Parallel)。

實(shí)現(xiàn)

以用于視覺任務(wù)的 CNN 模型 ConvNeXt-XL 為例,我們將展示 Tensor Parallel 卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練的實(shí)現(xiàn)。DTensor 放置方式如下:

模型參數(shù):Replicate

重復(fù)放置在各個(gè) GPU 上,模型包含 3.50 億個(gè)參數(shù),以 FP32 存儲(chǔ)時(shí)占據(jù) 1.4GB GPU 內(nèi)存。

模型輸入:Shard(3)

切分(N, C, H, W)的 W 維度,將輸入分片放到各個(gè) GPU 上。例如,在 4 個(gè) GPU 上對(duì)形狀為(7, 3, 512, 2048) 的輸入執(zhí)行 Shard(3) 會(huì)生成四個(gè)切片,形狀為 (7, 3, 512, 512)。

激活值:Shard(3)

切分(N, C, H, W)的 W 維度,將激活值分片放在各個(gè) GPU 上

模型參數(shù)的梯度:Replicate

重復(fù)放置在各個(gè) GPU 上。

優(yōu)化器狀態(tài):Replicate

重復(fù)放置在各個(gè) GPU 上。

上述配置可以通過 DTensor 提供的 API 來實(shí)現(xiàn),且用戶只需指明模型參數(shù)和模型輸入的放置方式,其他張量的放置方式會(huì)自動(dòng)生成。

而要達(dá)成張量并行的訓(xùn)練,我們需要給卷積算子 aten.convolution 和 aten.convolution_backward 注冊(cè)傳播規(guī)則,這將根據(jù)輸入 DTensor 的放置方式來確定輸出 DTensor 的放置方式:

aten.convolution

Input 放置方式為 Shard(3),weight 和 bias 放置方式為 Replicate,output 放置方式為 Shard(3)

aten.convolution_backward

grad_output 放置方式為 Shard(3),weight和 bias 放置方式為 Replicate,grad_input 放置方式為 Shard(3),grad_weight 和 grad_bias 方式方式為 _Partial

放置方式為 _Partial 的 DTensor,在使用其數(shù)值時(shí)會(huì)自動(dòng)執(zhí)行規(guī)約操作,默認(rèn)規(guī)約算子為求和。

接下來,我們便要給出張量并行的卷積算子前向和反向的實(shí)現(xiàn)。由于將激活值切分到了多個(gè) GPU 上,1 個(gè) GPU 上的本地卷積可能需要相鄰 GPU 上激活值的邊緣數(shù)據(jù),這就需要 GPU 之間進(jìn)行通信。在 ConvNeXt-XL 模型中,其降采樣層的卷積不存在該問題,而 Block 中的逐深度卷積則需要處理該問題。

如果無需交換數(shù)據(jù),用戶可以直接調(diào)用卷積的前向和反向算子,傳入本地張量即可。如果需要交換本地激活值張量邊緣數(shù)據(jù),則使用如圖 1 和圖 2 所示的卷積前向算法和反向算法,省略了圖中的 N 和 C 維度,并假設(shè)卷積核大小為 5x5,padding 為 2,stride 為 1。

3e402744-0575-11ef-a297-92fbcf53809c.png

圖 1 張量并行卷積前向算法示意圖

如圖 1 所示,當(dāng)卷積核大小為 5x5,padding 為 2,stride 為 1 時(shí),每個(gè) GPU 上的本地 input 都需要取用相鄰 GPU 的寬度為 2 的輸入邊緣,并將收到的邊緣數(shù)據(jù)拼接到自身上。換句話說,需要 GPU 間的通信來確保張量并行卷積的正確性。這種數(shù)據(jù)交換,可以通過調(diào)用 PyTorch 封裝的 NCCL 發(fā)送接受通信算子來實(shí)現(xiàn)。

值得一提的是,在多個(gè) GPU 上存在激活切片時(shí),卷積算子的有些 padding 是不需要的。因此本地卷積前向傳播完成后,需要切除 output 中由不需要的 padding 引入的無效像素,如圖 1 中的藍(lán)色條所示。

圖 2 顯示了張量并行卷積的反向傳播。首先,在梯度輸出上應(yīng)用 zero padding,這與前向傳播過程中的輸出切除操作相對(duì)應(yīng)。對(duì)本地輸入同樣要進(jìn)行數(shù)據(jù)交換、拼接和 padding 操作。

之后,通過調(diào)用每個(gè) GPU 上的卷積反向算子,即可獲得權(quán)重梯度、偏置梯度和梯度輸入。

3e60a0aa-0575-11ef-a297-92fbcf53809c.png

圖 2 張量并行卷積反向傳播工作流程

權(quán)重梯度和偏置梯度的 DTensor 放置方式是 _Partial,因此使用時(shí)會(huì)自動(dòng)對(duì)它們的值進(jìn)行多 GPU 規(guī)約操作。梯度輸入的 DTensor 放置方式是 Shard(3)。

最后,本地梯度輸入的邊緣像素會(huì)被發(fā)送到鄰近 GPU 并在相應(yīng)位置累積,如圖 2 中的橙色條所示。

除了卷積層之外,ConvNeXt-XL 還有一些層需要處理以支持張量并行訓(xùn)練。例如我們需要為 DropPath 層使用的 aten.bernoulli 算子傳播規(guī)則。該算子應(yīng)被置于隨機(jī)數(shù)生成追蹤器的分布式區(qū)域內(nèi),以保證各個(gè) GPU 上的一致性。

所有代碼已經(jīng)并入了 PyTorch GitHub repo 的主分支,用戶使用時(shí)直接調(diào)用 DTensor 的上層 API 便可實(shí)現(xiàn)張量并行的卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練。

使用張量并行訓(xùn)練 ConvNeXt 的基準(zhǔn)效果

我們?cè)?NVIDIA DGX AI 平臺(tái)上進(jìn)行了基準(zhǔn)測(cè)試,研究 ConvNeXt-XL 訓(xùn)練的速度和 GPU 內(nèi)存占用。梯度檢查點(diǎn)技術(shù)和 DTensor 是兼容的,并且結(jié)合兩項(xiàng)技術(shù),GPU 的內(nèi)存占用能夠更顯著地降低。

測(cè)試的基線是在 1 個(gè) NVIDIA GPU 上使用 PyTorch 原生 Tensor,輸入大小為(7, 3, 512, 1024)時(shí)的結(jié)果:不使用梯度檢查點(diǎn)時(shí) GPU 內(nèi)存占用為 43.28 GiB,一次訓(xùn)練迭代時(shí)間為 723 ms;使用梯度檢查點(diǎn)時(shí) GPU 內(nèi)存占用為 11.89 GiB,一次訓(xùn)練迭代時(shí)間為 934 ms。

全部測(cè)試結(jié)果如圖 3 和圖 4 所示:全局輸入形狀為 (7,3,512,W),其中 W 從 1024 到 8192 不等。實(shí)線為未使用梯度檢查點(diǎn)時(shí)的結(jié)果,虛線為使用梯度檢查點(diǎn)時(shí)的結(jié)果。

3e775002-0575-11ef-a297-92fbcf53809c.png

圖 3 各種測(cè)試條件下的 GPU 內(nèi)存占用

3e887f9e-0575-11ef-a297-92fbcf53809c.png

圖 4 各種測(cè)試條件下一次訓(xùn)練迭代耗時(shí)

如圖 3 所示,使用 DTensor 切分激活值可以有效降低 ConvNeXt-XL 訓(xùn)練的 GPU 內(nèi)存占用,并且同時(shí)使用 DTensor 和梯度檢查點(diǎn),ConvNeXt-XL 訓(xùn)練的 GPU 內(nèi)存占用可以降到很低的水平。如圖 4 所示,張量并行方法有很好的弱擴(kuò)展性;在問題規(guī)模足夠大時(shí),也有不錯(cuò)的強(qiáng)擴(kuò)展性。下面是不使用梯度檢查點(diǎn)時(shí)的擴(kuò)展性:

全局輸入(7, 3, 512, 2048)給 2 個(gè) GPU 時(shí),一次迭代時(shí)間為 937 ms

全局輸入(7, 3, 512, 4096)給 4 個(gè) GPU 時(shí),一次迭代時(shí)間為 952 ms

全局輸入(7, 3, 512, 4096)給 8 個(gè) GPU 時(shí),一次迭代時(shí)間為 647 ms

結(jié)論

蔚來自動(dòng)駕駛開發(fā)平臺(tái)(NADP)是蔚來專門用于研發(fā)核心自動(dòng)駕駛服務(wù)的平臺(tái)。該平臺(tái)可提供高性能計(jì)算和全鏈工具,用來處理每天成千上萬的日常推理和訓(xùn)練任務(wù),以確保主動(dòng)安全和駕駛輔助功能的持續(xù)演進(jìn)。使用 DTensor 實(shí)現(xiàn)的張量并行 CNN 訓(xùn)練能夠有效提高 NADP 上的訓(xùn)練效率。

該關(guān)鍵性的方案使得 NADP 能夠進(jìn)行萬卡規(guī)模的并行計(jì)算,它提高了對(duì) GPU 的利用率,降低了訓(xùn)練模型的成本,支持了更靈活的模型結(jié)構(gòu)。基準(zhǔn)測(cè)試顯示,在蔚來自動(dòng)駕駛場(chǎng)景下,該方法表現(xiàn)良好,有效解決了視覺大模型的訓(xùn)練難題。

基于 PyTorch DTensor 的張量并行 CNN 訓(xùn)練可顯著減少內(nèi)存占用并保持良好的可擴(kuò)展性。我們預(yù)計(jì)該方法將充分利用多個(gè) GPU 的算力和互連功能,使感知模型訓(xùn)練更加普及。



審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • NVIDIA
    +關(guān)注

    關(guān)注

    14

    文章

    5258

    瀏覽量

    105852
  • gpu
    gpu
    +關(guān)注

    關(guān)注

    28

    文章

    4915

    瀏覽量

    130725
  • 自動(dòng)駕駛
    +關(guān)注

    關(guān)注

    788

    文章

    14223

    瀏覽量

    169692
  • pytorch
    +關(guān)注

    關(guān)注

    2

    文章

    809

    瀏覽量

    13785

原文標(biāo)題:使用張量并行技術(shù)進(jìn)行自動(dòng)駕駛感知模型訓(xùn)練

文章出處:【微信號(hào):NVIDIA-Enterprise,微信公眾號(hào):NVIDIA英偉達(dá)企業(yè)解決方案】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    新能源車軟件單元測(cè)試深度解析:自動(dòng)駕駛系統(tǒng)視角

    ? AWS RoboMaker等云平臺(tái)支持萬級(jí)測(cè)試用例的并行執(zhí)行。某自動(dòng)駕駛初創(chuàng)企業(yè)利用云端GPU集群,將AI模型單元測(cè)試時(shí)間從3周縮短至6小時(shí)。 ?標(biāo)準(zhǔn)體系演進(jìn)? UL 460
    發(fā)表于 05-12 15:59

    DeepSeek MoE架構(gòu)下的網(wǎng)絡(luò)負(fù)載如何優(yōu)化?解鎖90%網(wǎng)絡(luò)利用率的關(guān)鍵策略

    近年來,隨著AI大模型訓(xùn)練(如GPT-4、Gemini)的爆發(fā)式增長(zhǎng),數(shù)據(jù)中心網(wǎng)絡(luò)的流量壓力急劇上升。單次訓(xùn)練任務(wù)可能涉及數(shù)千張GPU卡協(xié)同工作,生成集合通信流量(All-Reduce
    的頭像 發(fā)表于 04-28 12:04 ?289次閱讀
    DeepSeek MoE架構(gòu)下的網(wǎng)絡(luò)負(fù)載如何優(yōu)化?解鎖90%網(wǎng)絡(luò)<b class='flag-5'>利用率</b>的關(guān)鍵策略

    NVIDIA Halos自動(dòng)駕駛汽車安全系統(tǒng)發(fā)布

    NVIDIA 整合了從云端到車端的安全自動(dòng)駕駛開發(fā)技術(shù)套件,涵蓋車輛架構(gòu)到 AI 模型,包括芯片、軟件、工具和服務(wù)。 物理 AI 正在為自動(dòng)駕駛和機(jī)器人開發(fā)技術(shù)的交叉領(lǐng)域釋放新的可能性,尤其是加速了
    的頭像 發(fā)表于 03-25 14:51 ?509次閱讀

    標(biāo)貝科技:自動(dòng)駕駛中的數(shù)據(jù)標(biāo)注類別分享

    自動(dòng)駕駛訓(xùn)練模型的成熟和穩(wěn)定離不開感知技術(shù)的成熟和穩(wěn)定,訓(xùn)練自動(dòng)駕駛
    的頭像 發(fā)表于 11-22 15:07 ?1846次閱讀
    標(biāo)貝科技:<b class='flag-5'>自動(dòng)駕駛</b>中的數(shù)據(jù)標(biāo)注類別分享

    標(biāo)貝科技:自動(dòng)駕駛中的數(shù)據(jù)標(biāo)注類別分享

    自動(dòng)駕駛訓(xùn)練模型的成熟和穩(wěn)定離不開感知技術(shù)的成熟和穩(wěn)定,訓(xùn)練自動(dòng)駕駛
    的頭像 發(fā)表于 11-22 14:58 ?3300次閱讀
    標(biāo)貝科技:<b class='flag-5'>自動(dòng)駕駛</b>中的數(shù)據(jù)標(biāo)注類別分享

    MEMS技術(shù)在自動(dòng)駕駛汽車中的應(yīng)用

    中的核心作用 MEMS傳感器以其微小但功能強(qiáng)大的特性,在自動(dòng)駕駛汽車中發(fā)揮著至關(guān)重要的作用。它們能夠?qū)崟r(shí)監(jiān)測(cè)和控制車輛的各種參數(shù),為自動(dòng)駕駛系統(tǒng)提供精確的環(huán)境感知和數(shù)據(jù)支持。這些傳感器
    的頭像 發(fā)表于 11-20 10:19 ?1319次閱讀

    PyTorch GPU 加速訓(xùn)練模型方法

    在深度學(xué)習(xí)領(lǐng)域,GPU加速訓(xùn)練模型已經(jīng)成為提高訓(xùn)練效率和縮短
    的頭像 發(fā)表于 11-05 17:43 ?1292次閱讀

    Waymo利用谷歌Gemini大模型,研發(fā)端到端自動(dòng)駕駛系統(tǒng)

    邁新步,為其機(jī)器人出租車業(yè)務(wù)引入了一種基于谷歌多模態(tài)大語言模型(MLLM)“Gemini”的全新訓(xùn)練模型——“端到端多模態(tài)自動(dòng)駕駛模型”(E
    的頭像 發(fā)表于 10-31 16:55 ?1587次閱讀

    自動(dòng)駕駛汽車安全嗎?

    隨著未來汽車變得更加互聯(lián),汽車逐漸變得更加依賴技術(shù),并且逐漸變得更加自動(dòng)化——最終實(shí)現(xiàn)自動(dòng)駕駛,了解自動(dòng)駕駛
    的頭像 發(fā)表于 10-29 13:42 ?994次閱讀
    <b class='flag-5'>自動(dòng)駕駛</b><b class='flag-5'>汽車</b>安全嗎?

    GPU深度學(xué)習(xí)應(yīng)用案例

    能力,可以顯著提高圖像識(shí)別模型訓(xùn)練速度和準(zhǔn)確性。例如,在人臉識(shí)別、自動(dòng)駕駛等領(lǐng)域,GPU被廣泛應(yīng)用于加速深度學(xué)習(xí)
    的頭像 發(fā)表于 10-27 11:13 ?1140次閱讀

    聊聊自動(dòng)駕駛離不開的感知硬件

    自動(dòng)駕駛飛速發(fā)展,繞不開感知、決策和控制決策的經(jīng)典框架,而感知作為自動(dòng)駕駛汽車“感官”的重要組成部分,決定了
    的頭像 發(fā)表于 08-23 10:18 ?1039次閱讀

    FPGA在自動(dòng)駕駛領(lǐng)域有哪些優(yōu)勢(shì)?

    FPGA(Field-Programmable Gate Array,現(xiàn)場(chǎng)可編程門陣列)在自動(dòng)駕駛領(lǐng)域具有顯著的優(yōu)勢(shì),這些優(yōu)勢(shì)使得FPGA成為自動(dòng)駕駛技術(shù)中不可或缺的一部分。以下是FPGA在自動(dòng)駕駛
    發(fā)表于 07-29 17:11

    FPGA在自動(dòng)駕駛領(lǐng)域有哪些應(yīng)用?

    控制。在視覺算法方面,F(xiàn)PGA利用自身并行處理和高速存儲(chǔ)器的特點(diǎn),極大地加快了算法的執(zhí)行速度,提高了運(yùn)算效率。 五、未來發(fā)展趨勢(shì)隨著自動(dòng)駕駛技術(shù)的不斷發(fā)展,F(xiàn)PGA在
    發(fā)表于 07-29 17:09

    自動(dòng)駕駛汽車如何識(shí)別障礙物

    自動(dòng)駕駛汽車識(shí)別障礙物是一個(gè)復(fù)雜而關(guān)鍵的過程,它依賴于多種傳感器和技術(shù)的協(xié)同工作。這些傳感器主要包括激光雷達(dá)(LiDAR)、雷達(dá)、攝像頭以及超聲波雷達(dá)等,它們各自具有不同的工作原理和優(yōu)勢(shì),共同為自動(dòng)駕駛
    的頭像 發(fā)表于 07-23 16:40 ?2539次閱讀

    自動(dòng)駕駛汽車傳感器有哪些

    自動(dòng)駕駛汽車傳感器是實(shí)現(xiàn)自動(dòng)駕駛功能的關(guān)鍵組件,它們通過采集和處理車輛周圍環(huán)境的信息,為自動(dòng)駕駛系統(tǒng)提供必要的感知和決策依據(jù)。以下是對(duì)
    的頭像 發(fā)表于 07-23 16:00 ?3096次閱讀
    主站蜘蛛池模板: 在线观看视频在线观看 | 免费观看激色视频网站bd | 黄色国产在线观看 | 日韩一级片在线免费观看 | 日韩一级片免费 | 中文字幕一二三四区2021 | 亚洲一成人毛片 | 中国女人a毛片免费全部播放 | 4455ee日本高清免费观看 | 高清欧美色欧美综合网站 | 日本特黄在线观看免费 | 欧美成人a | 一级毛片免费不卡在线视频 | 色香欲综合成人免费视频 | 性色视频在线 | 天天躁夜夜 | 国产视频综合 | 在线亚洲精品 | 亚洲色图综合 | 天天干天天爱天天射 | 特黄特色三级在线播放 | 欧美日韩乱国产 | 嗯!啊!使劲用力在线观看 | 成人的天堂视频一区二区三区 | 免费视频久久看 | 99热国内精品 | 操他射他影院 | 中文字幕一区二区三区精品 | 第三级视频在线观看 | 亚洲一二 | 美脚连裤袜老师正在播放 | 人人澡人人射 | 在线免费观看一区二区三区 | 亚洲三级免费观看 | 国产成人精品一区 | 国产网站黄 | 四虎在线视频 | 一个人看的www片免费高清视频 | 色婷婷一区二区三区四区成人 | 黄色在线观看网站 | 久久精品国产四虎 |