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

PyTorch 指南:17個技巧讓你的深度學習模型訓練變得飛快!

人工智能 深度學習
如果你正在 pytorch 中訓練深度學習模型,那么如何能夠加快模型訓練速度呢?在本文中,我會介紹一些改動最小、影響最大的在pytorch中加速深度學習模型的方法。

如果你正在 pytorch 中訓練深度學習模型,那么如何能夠加快模型訓練速度呢?

在本文中,我會介紹一些改動最小、影響最大的在pytorch中加速深度學習模型的方法。對于每種方法,我會對其思路進行簡要介紹,然后預估提升速度并討論其限制。我會把我認為重要的部分強調介紹,并在每個部分展示一些實例。接下來我將假設你正在使用GPU訓練模型,這些方法基本不需要導入其他的庫,只需要再pytorch內進行更改即可。

[[378697]]

以下是我根據預估的加速效果對不同方法的排序:

  1. 考慮使用其他的學習率調整計劃
  2. 在DataLoader中使用多個輔助進程并頁鎖定內存
  3. 最大化batch大小
  4. 使用自動混合精度AMP
  5. 考慮不同的優化器
  6. 打開cudNN基準
  7. 當心CPU與GPU之間的數據傳輸
  8. 使用梯度/激活檢查點
  9. 使用梯度累積
  10. 多GPU分布式訓練
  11. 將梯度設置為None而不是0
  12. 使用.as_tensor()而不是.tensor()
  13. 只在需要的時候打開debugging模式
  14. 使用梯度裁剪
  15. 在BatchNorm之前忽略偏差
  16. 驗證時關閉梯度計算
  17. 規范化輸入和批處理

1. 考慮使用其他的學習率調整計劃

在訓練中使用的學習率調整計劃會極大影響收斂速率以及模型泛化能力。

Leslie N. Smith 提出了循環學習率和1Cycle 學習率方法,然后由 fast.ai 的 Jeremy Howard 和 Sylvain Gugger 推廣了??偟膩碚f,1Cycle 學習速率方法如下圖所示:

在最好的情況下,與傳統的學習率策略相比,這種策略可以實現巨大的加速—— Smith稱之為“超級收斂”。例如,使用1Cycle策略,在ImageNet上減少了ResNet-56訓練迭代數的10倍,就可以匹配原始論文的性能。該策略似乎在通用架構和優化器之間運行得很好。

PyTorch提供了 torch.optim.lr_scheduler.CyclicLR 和 torch.optim.lr_scheduler.OneCycleLR 兩種方法實現該操作,請參閱相關文檔。

這兩個方法的一個缺點是引入了許多額外的超參數。這篇文章和倉庫對如何查找好的超參數(包括上文提及的學習率)提供了詳細概述和實現。

至于為什么要這樣做?現今并不完全清楚,但一個可能的解釋是:定期提高學習率有助于更快越過損失鞍點。

2. 在DataLoader中使用多個輔助進程并頁鎖定內存

在使用 torch.utils.data.DataLoader時,令 num_workers > 0,而不是默認值 0,同時設置 pin_memory=True,而不是默認值 False。至于為什么這么做,這篇文章會給你答案。

根據上述方法,Szymon Micacz 在四個 worker 和頁鎖定內存的情況下,在單個epoch中實現了 2 倍加速。

根據經驗,一般將進程數量設置為可用 GPU 數量的四倍,大于或小于這個值都會降低訓練速度。但是要注意,增加num_workers會增加 CPU 內存消耗。

3.最大化batch大小

一直以來,人們對于調大batch沒有定論。一般來說,在GPU內存允許的情況下增大batch將會增快訓練速度,但同時還需要調整學習率等其他超參數。根據經驗,batch大小加倍時,學習率也相應加倍。

OpenAI 的論文表明不同的batch大小收斂周期不同。Daniel Huynh用不同的batch大小進行了一些實驗(使用上述1Cycle 策略),實驗中他將 batch大小由64增加到512,實現了4倍加速。

然而也要注意,較大的batch會降低模型泛化能力,反之亦然。

4. 使用自動混合精度AMP

PyTorch1.6支持本地自動混合精度訓練。與單精度 (FP32) 相比,一些運算在不損失準確率的情況下,使用半精度 (FP16)速度更快。AMP能夠自動決定應該以哪種精度執行哪種運算,這樣既可以加快訓練速度,又減少了內存占用。

AMP的使用如下所示: 

  1. import torch# Creates once at the beginning of trainingscaler = torch.cuda.amp.GradScaler()for data, label in data_iter: 
  2.   optimizer.zero_grad() 
  3.   # Casts operations to mixed precision 
  4.   with torch.cuda.amp.autocast(): 
  5.      loss = model(data) 
  6.   # Scales the loss, and calls backward() 
  7.   # to create scaled gradients 
  8.   scaler.scale(loss).backward() 
  9.   # Unscales gradients and calls 
  10.   # or skips optimizer.step() 
  11.   scaler.step(optimizer) 
  12.   # Updates the scale for next iteration 
  13.   scaler.update() 

Huang及其同事在NVIDIA V100 GPU上對一些常用語言和視覺模型進行了基準測試,發現在FP32訓練中使用AMP提高約2倍的訓練速度,最高甚至達到5.5倍。

目前,只有CUDA支持上述方式,查看本文檔了解更多信息。

5. 考慮不同的優化器

AdamW是由fast.ai提出的具有權重衰減(而非 L2 正則化)的Adam, PyTorch中通過torch.optim.AdamW實現。在誤差和訓練時間上,AdamW都優于Adam。查看此文章了解為什么權重衰減使得Adam產生更好效果。

Adam和AdamW都很適合前文提到的1Cycle策略。

此外,LARS和LAMB等其他優化器也收到廣泛關注。

NVIDA的APEX對Adam等常見優化器進行優化融合,相比PyTorch中的原始Adam,由于避免了GPU內存之間的多次傳遞,訓練速度提升約 5%。

6. 打開cudNN基準

如果你的模型架構時固定的,同時輸入大小保持不變,那么設置torch.backends.cudnn.benchmark = True可能會提升模型速度(幫助文檔)。通過啟用cudNN自動調節器,可以在cudNN中對多種計算卷積的方法進行基準測試,然后選擇最快的方法。

至于提速效果,Szymon Migacz在前向卷積時提速70%,在同時向前和后向卷積時提升了27%。

注意,如果你想要根據上述方法最大化批大小,該自動調整可能會非常耗時。

7. 當心CPU與GPU之間的數據傳輸

通過tensor.cpu()可以將張量從GPU傳輸到CPU,反之使用tensor.cuda(),但這樣的數據轉化代價較高。 .item()和.numpy()的使用也是如此,建議使用.detach()。

如果要創建新的張量,使用關鍵字參數device=torch.device('cuda:0')將其直接分配給GPU。

最好使用.to(non_blocking=True)傳輸數據,確保傳輸后沒有任何同步點即可。

另外Santosh Gupta的SpeedTorch也值得一試,盡管其加速與否尚不完全清除。

8.使用梯度/激活檢查點

檢查點通過將計算保存到內存來工作。檢查點在反向傳播算法過程中并不保存計算圖的中間激活,而是在反向傳播時重新計算,其可用于模型的任何部分。

具體來說,在前向傳播中,function以torch.no_grad()方式運行,不存儲任何中間激活。相反,前向傳遞將保存輸入元組和function參數。在反向傳播時,檢索保存的輸入和function,并再次對function進行正向傳播,記錄中間激活,并使用這些激活值計算梯度。

因此,對于特定的批處理大小,這可能會稍微增加運行時間,但會顯著減少內存消耗。反過來,你可以進一步增加批處理大小,從而更好地利用GPU。

雖然檢查點可以通過torch.utils.checkpoint方便實現,但仍需要里哦阿姐其思想與本質。Priya Goyal的教程很清晰的演示了檢查點的一些關鍵思想,推薦閱讀。

9.使用梯度累積

增加批處理大小的另一種方法是在調用Optimizer.step()之對多個.backward()傳遞梯度進行累積。

根據Hugging Face的Thomas Wolf發表的文章,可以按以下方式實現梯度累積: 

  1. model.zero_grad()                                   # Reset gradients tensors    for i, (inputs, labels) in enumerate(training_set):     
  2.    predictions = model(inputs)                     # Forward pass     
  3.    loss = loss_function(predictions, labels)       # Compute loss function     
  4.    loss = loss / accumulation_steps                # Normalize our loss (if averaged)     
  5.    loss.backward()                                 # Backward pass     
  6.    if (i+1) % accumulation_steps == 0:             # Wait for several backward steps     
  7.        optimizer.step()                            # Now we can do an optimizer step     
  8.        model.zero_grad()                           # Reset gradients tensors     
  9.    if (i+1) % evaluation_steps == 0:           # Evaluate the model when we...     
  10.        evaluate_model()                        # ...have no gradients accumulated 

該方法主要是為了規避GPU內存的限制,但對其他.backward()循環之間的取舍我并不清楚。fastai論壇上的討論似乎表明它實際上是可以加速訓練的,因此值得一試。詳情查看GitHub托管的rawgradient_accumulation.py。

10.多GPU分布式訓練

通過分布式訓練加快模型速度的一種簡單的方法是使用torch.nn.DistributedDataParallel而不是torch.nn.DataParallel。這樣,每個GPU將由專用的CPU內核驅動,從而避免了DataParallel的GIL問題。

強烈推薦閱讀分布式訓練相關文檔了解更多信息:

  1. PyTorch Distributed Overview — PyTorch Tutorials 1.7.0 documentation 

11.將梯度設置為None而不是0

設置.zero_grad(set_to_none=True)而不是.zero_grad()。

這樣內存分配器處理梯度而不是主動將其設置為0,這會產生該文檔所示的適度加速,但不要抱有過大期望。

注意,這樣做不會有任何副作用!閱讀文檔查看更多信息。

12.使用.as_tensor()而不是.tensor()

torch.tensor()本質是復制數據,因此,如果要轉換numpy數組,使用torch.as_tensor()或torch.from_numpy()可以避免復制數據。

13.只在需要的時候打開debugging模式

Pytorch提供了許多調試工具,例如autograd.profiler, autograd.grad_check和autograd.anomaly_detection。使用時一定要謹慎,這些調試工具顯然會影響訓練速度,因此在不需要時將其關閉。

14.使用梯度裁剪

為了避免RNN中的梯度爆炸,使用梯度裁剪gradient = min(gradient, threshold)可以起到加速收斂作用,這一方法已得到理論和實驗的支持。

Hugging Face的Transformer提供了將梯度裁剪和AMP等其他方法有效結合的清晰示例。

在PyTorch中,也可使用torch.nn.utils.clip_grad_norm_(文檔查閱)完成此操作。

雖然我尚不完全清楚哪種模型可以從梯度裁剪中受益,但毫無疑問的是,對于RNN、基于Transformer和ResNets結構的一系列優化器來說,該方法顯然是起到一定作用的。

15.在BatchNorm之前忽略偏差

在BatchNormalization層之前關閉之前層的偏差時一種簡單有效的方法。對于二維卷積層,可以通過將bias關鍵字設置為False實現,即torch.nn.Conv2d(..., bias=False, ...)。閱讀該文檔了解其原理。

與其他方法相比,該方法的速度提升是有的。

16. 驗證時關閉梯度計算

在模型驗證時令torch.no_grad()

17. 規范化輸入和批處理

也許你已經在這樣做了,但還是要仔細檢查,反復確認:

  • 是否規范化輸入?
  • 是否規范化批處理?

其他技巧:使用JIT實現逐點融合

如果要執行相鄰逐點操作,可以使用PyTorch JIT將它們組合成一個FusionGroup,然后在單內核上啟動,而不是像默認情況那樣在多個內核上啟動,同時還可以保存一些內存進行讀寫。

Szymon Migacz展示了如何使用@torch.jit.script裝飾器融合GELU操作融合,如下:

  1. @torch.jit.scriptdef fused_gelu(x): return x * 0.5 * (1.0 + torch.erf(x / 1.41421)) 

相比于未融合版本,融合這些操作可以使fused_gelu的執行速度提高5倍。

本文轉自雷鋒網,如需轉載請至雷鋒網官網申請授權。

 

責任編輯:未麗燕 來源: 雷鋒網
相關推薦

2020-11-20 10:40:20

PyTorch神經網絡代碼

2023-12-29 14:13:41

PyTorch模型開發

2021-03-25 15:19:33

深度學習Pytorch技巧

2023-10-18 16:02:24

機器學習深度學習ChatGPT

2020-07-08 17:06:00

Python開發工具

2023-03-09 15:45:36

ES6編碼技巧數組

2022-10-08 07:36:08

Kubernetes開源容器

2024-04-03 10:29:13

JavaScrip優化技巧

2023-07-07 14:47:46

JavaScript技巧

2023-01-09 08:00:00

遷移學習機器學習數據集

2021-12-28 08:48:54

PyTorch神經網絡人工智能

2019-03-10 22:22:06

PyTorchKeras深度學習

2022-05-10 10:19:04

AI深度學習模型

2021-06-07 17:46:31

Python 3.8Python編程語言

2023-06-29 15:08:21

JavaScrip開發

2021-08-17 10:08:44

HTML網站網絡

2020-11-29 17:32:01

EmacsLinux

2014-05-07 09:41:21

UbuntuTrusty Tahr

2025-05-07 07:17:18

2020-07-20 10:40:52

Linux命令Ubuntu
點贊
收藏

51CTO技術棧公眾號

午夜亚洲国产au精品一区二区| 久久av资源网| 日韩精品在线免费观看| 亚洲人成无码www久久久| 成av人电影在线观看| 精品在线观看免费| 国内久久久精品| 中文字幕被公侵犯的漂亮人妻| 国产91在线播放精品| 亚洲视频你懂的| 精品欧美日韩| 国产喷水福利在线视频| 99这里有精品| 久热国产精品视频| 精品人妻一区二区三区蜜桃视频| 只有精品亚洲| 日韩欧美成人精品| 91免费版看片| 国产视频精选在线| 成人激情小说网站| 成人免费视频在线观看超级碰| 国产精品99re| 亚洲精品97| 亚洲日韩第一页| jjzz黄色片| 91麻豆精品国产综合久久久 | 超碰超碰在线观看| 美女高潮在线观看| 亚洲自拍偷拍欧美| 中文字幕不卡每日更新1区2区| 亚洲日本香蕉视频| 国产91在线|亚洲| 成人做爽爽免费视频| 久久精品五月天| 99国产精品99久久久久久粉嫩| 成年无码av片在线| 亚洲精品国产精品乱码在线观看| 日韩在线你懂的| 精品国产乱码久久久久久久久 | 久久精品国产福利| 欧美性猛交xxxx乱大交极品| 日本黄色片一级片| 深夜国产在线播放| 亚洲美女视频一区| 国产精品美女在线播放| 91网在线播放| 日本一区二区三区国色天香 | 国产精品一区二区三| 无码人妻精品一区二区三区蜜桃91 | 国产日韩欧美不卡在线| 人禽交欧美网站免费| 亚洲欧洲视频在线观看| 97成人超碰视| 久久国产欧美精品| 五月天婷婷视频| 91亚洲精品一区二区乱码| 国产免费一区二区| 天堂在线观看av| 99久久精品国产精品久久| 精品视频一区在线| 免费黄网站在线观看| 久久综合一区二区| 日韩和欧美的一区二区| 91最新在线| 亚洲天堂中文字幕| 国产美女作爱全过程免费视频| 暖暖在线中文免费日本| 天天色图综合网| 国产精品免费观看久久| 日韩精品三区| 51精品视频一区二区三区| 在线观看免费成人av| 亚洲a成人v| 精品欧美乱码久久久久久1区2区 | 久久精品一区二区三区不卡牛牛| 欧美日韩精品免费观看| 国产污视频在线| 中文字幕一区二区在线播放| 日本丰满大乳奶| 国产天堂在线播放视频| 欧美视频在线观看免费网址| 日日鲁鲁鲁夜夜爽爽狠狠视频97 | 国产在线一区二区三区四区| 日本韩国一区| 国产精品高清亚洲| 日韩久久久久久久久久久久| 午夜不卡影院| 51精品久久久久久久蜜臀| 国产a级黄色片| 国产日产精品一区二区三区四区的观看方式 | 国产精品美女www爽爽爽视频| 97人妻一区二区精品免费视频| 国产99精品在线观看| 日本日本精品二区免费| a视频在线观看免费| 欧美日韩亚洲国产一区| 亚洲综合欧美激情| 黄色欧美网站| 久久好看免费视频| 国产精品7777777| 久久福利资源站| 国精产品99永久一区一区| 成人在线二区| 亚洲第一主播视频| 四季av一区二区三区| 色婷婷狠狠五月综合天色拍| x99av成人免费| 国内自拍视频在线播放| 国产一区美女在线| 日本不卡二区| xxxx成人| 欧美一区二区三区成人| 精品无码一区二区三区 | 欧美黄色免费影院| 久久综合给合| 丝袜亚洲欧美日韩综合| 免费日韩一级片| 国产盗摄女厕一区二区三区| 午夜精品亚洲一区二区三区嫩草| 第一av在线| 91精品国产综合久久香蕉的特点| 国产福利在线观看视频| 中文字幕av亚洲精品一部二部| 国产精国产精品| 四虎国产精品永远| 亚洲一级在线观看| 99精品视频国产| 大色综合视频网站在线播放| 日本一区二区在线免费播放| 欧美自拍第一页| 一区二区三区中文字幕在线观看| 国产视频在线视频| 欧美日韩一区二区三区在线电影| 欧美日韩第一页| 国产乱淫a∨片免费观看| 国产日本亚洲高清| 日韩黄色片视频| 欧美18xxxx| 97免费中文视频在线观看| www.成人在线观看| 综合久久久久综合| 福利视频999| 天天av综合| 成人啪啪免费看| 国产在线激情视频| 51精品秘密在线观看| 天天色影综合网| 久久99国内精品| 资源网第一页久久久| 亚洲精品成a人ⅴ香蕉片| 丝袜美腿精品国产二区| 国产又大又长又粗| 亚洲欧美日韩中文字幕一区二区三区| 中文字幕丰满乱码| 一本一本久久a久久综合精品| 成人高清视频观看www| 国产鲁鲁视频在线观看特色| 日韩一级免费观看| 国产亚洲欧美精品久久久久久| 成人综合在线观看| 成人在线观看你懂的| 亚洲人成网77777色在线播放 | 日本免费成人| 久久五月天色综合| 性欧美videos另类hd| 亚洲一区二区三区四区在线免费观看 | 国产传媒久久久| 欧美日韩一本| 国产精品久久二区| 超碰在线网址| 亚洲福利视频久久| 无码人妻久久一区二区三区| 国产精品毛片无遮挡高清| 做a视频在线观看| 欧美精品一区二区蜜桃| 精品深夜福利视频| 欧美一级视频在线观看| 国产日韩精品在线看| 欧美日韩综合不卡| 麻豆亚洲av成人无码久久精品| thepron国产精品| 麻豆传传媒久久久爱| 国产大片一区| 狠狠久久综合婷婷不卡| 第四色男人最爱上成人网| 日韩中文字幕在线观看| 亚洲女同志亚洲女同女播放| 91黄色免费网站| 成年人av电影| 久久久国产午夜精品| 91精品999| 美女91精品| 国产奶头好大揉着好爽视频| 日本欧美韩国国产| 国产乱人伦真实精品视频| xxx性欧美| 精品精品国产国产自在线| 亚州男人的天堂| 在线成人av网站| 亚洲天堂男人av| 一区二区成人在线观看| 东方伊人免费在线观看| 成人精品国产福利| 五月激情五月婷婷| 另类图片国产| 日本大片免费看| www.com亚洲| 日韩电影一区二区三区| 日本免费a视频| 久久视频国产| 清纯唯美一区二区三区| 好吊妞国产欧美日韩免费观看网站| 国产成人精品国内自产拍免费看 | 久久久久久国产精品久久| 超碰免费97在线观看| 精品sm在线观看| 国产伦精品一区二区三区免.费| 色综合夜色一区| 精品亚洲永久免费| 亚洲三级免费电影| av在线播放中文字幕| 337p粉嫩大胆噜噜噜噜噜91av| 久久久久久无码精品人妻一区二区| 日本不卡不码高清免费观看| 国产免费黄色小视频| 欧美日韩国产免费观看| av动漫免费观看| 日本道不卡免费一区| 欧美日韩高清免费| 免费成人蒂法| 成人av免费在线看| 国产欧美视频在线| 国产日韩在线亚洲字幕中文| 欧美日韩不卡| 欧美与欧洲交xxxx免费观看| 美女精品导航| 久久91精品国产| 中文字幕伦理免费在线视频 | 日本熟伦人妇xxxx| 亚洲精品中文在线观看| 国产日产精品一区二区三区的介绍| 国产午夜亚洲精品理论片色戒| yy6080午夜| 99国产精品久久久久久久久久 | 久久综合九色综合久| 亚洲精品电影久久久| 少妇无码一区二区三区| 精品国产区一区| 狠狠综合久久av一区二区| 欧美精品一区在线观看| 色综合视频在线| 日韩av在线免费播放| 天天综合天天综合| 亚洲精品午夜精品| 国际av在线| 伊人伊成久久人综合网站| 日本大片在线观看| 一区二区在线视频| 日本中文在线| 欧美裸体在线版观看完整版| 韩国一区二区三区美女美女秀| 国产精品欧美大片| 久久福利电影| 国产欧美一区二区三区精品观看| 日韩精品不卡| 亚洲视频电影在线| 国产精品久久国产| 香蕉久久国产| www亚洲成人| 国产精品1024久久| 久久久国产精品无码| 国产日产欧产精品推荐色 | 国产va免费精品高清在线观看 | 99中文视频在线| 日韩激情网站| 亚洲资源在线网| 狠狠爱www人成狠狠爱综合网| 人妻有码中文字幕| 久久成人av少妇免费| 蜜臀视频在线观看| 久久综合九色综合欧美98| 在线观看天堂av| 亚洲一区二区三区免费视频| 国产伦精品一区二区三区视频网站 | 在线视频一区二区| 91麻豆免费在线视频| 97人人做人人爱| 欧美性aaa| 精品国产aⅴ麻豆| 图片区亚洲欧美小说区| 91成人在线观看喷潮教学| 蜜桃视频免费观看一区| 美女搡bbb又爽又猛又黄www| 国产三区在线成人av| 国产亚洲精品成人| 欧美影院一区二区三区| 肥臀熟女一区二区三区| 在线观看欧美视频| 国产深夜视频在线观看| 国产精品永久免费观看| 久久动漫网址| 中文字幕日韩精品一区二区| 国产农村妇女毛片精品久久莱园子 | 丝袜诱惑一区二区| 亚洲va欧美va在线观看| 一区二区美女| 800av在线免费观看| 全国精品久久少妇| 一女三黑人理论片在线| 亚洲天堂网中文字| 久久久久久无码精品大片| 欧美不卡123| 午夜免费视频在线国产| 国产91精品最新在线播放| 日韩不卡在线视频| 一本久道久久综合| 丝袜亚洲另类欧美| 亚洲欧美日韩偷拍| 亚洲男女一区二区三区| 在线观看国产黄| 亚洲图片欧美午夜| 老司机深夜福利在线观看| http;//www.99re视频| 久久神马影院| 一区二区三区入口| 国产三级一区二区三区| 天天综合网久久综合网| 精品福利一二区| 曰本三级在线| 成人日韩在线电影| 日韩在线欧美| 欧美在线aaa| 亚洲国产精品成人综合色在线婷婷| 九九热在线视频播放| 精品成a人在线观看| 欧美日韩经典丝袜| av成人午夜| 欧美日本免费| 丰满人妻一区二区三区免费视频棣 | 久久精品国产成人一区二区三区 | 麻豆传媒在线看| 亚洲人成精品久久久久| 亚洲一区二区三区网站| 色噜噜国产精品视频一区二区| 精品日韩视频| 无码免费一区二区三区免费播放 | 色婷婷亚洲精品| 日本ー区在线视频| 日韩av电影手机在线观看| 杨幂一区二区三区免费看视频| 日本在线观看a| 国产欧美日韩麻豆91| 中文字幕在线观看第二页| 中文字幕在线观看日韩| xxxxx.日韩| 一区二区三区一级片| 国产麻豆精品95视频| 久久久久久福利| 亚洲二区中文字幕| 欧洲一级精品| 亚洲国产欧美不卡在线观看| 精品亚洲成a人| 欧美成人手机视频| 亚洲第一区中文99精品| 英国三级经典在线观看| 日本一区二区在线视频| 另类小说欧美激情| 五月婷婷一区二区| 亚洲成人精品av| gogo亚洲高清大胆美女人体| 亚洲第一在线综合在线| 黑人巨大精品欧美黑白配亚洲| 久久久久久蜜桃| 精品一区精品二区| 99riav视频一区二区| 浴室偷拍美女洗澡456在线| 成人精品视频.| 精品一区二三区| 欧美成人午夜激情在线| 久久久久久久久久久久久久久久久久久久| 看av免费毛片手机播放| 国产精品天天摸av网| 国产黄色av片| 日韩av男人的天堂| 亚洲国产一区二区三区在线播放| 在线观看亚洲免费视频| 91黄视频在线| 免费网站在线观看人| 日本高清一区| 国产成人在线视频网址| 中文字幕在线欧美| 两个人的视频www国产精品| 欧美wwwwww| 网站在线你懂的| 欧美性少妇18aaaa视频| 污视频在线看网站| 日韩一区二区三区资源| 国产99久久久国产精品潘金网站| 欧美成人一区二区三区四区| 麻豆国产va免费精品高清在线|