午夜视频免费看_日韩三级电影网站_国产精品久久一级_亚洲一级在线播放_人妻体内射精一区二区三区_91夜夜揉人人捏人人添红杏_91福利在线导航_国产又粗又猛又黄又爽无遮挡_欧美日韩一区在线播放_中文字幕一区二区三区四区不卡 _日日夜夜精品视频免费观看_欧美韩日一区二区三区

主頁 > 知識庫 > pytorch 如何使用amp進行混合精度訓練

pytorch 如何使用amp進行混合精度訓練

熱門標簽:武漢外呼系統平臺 外呼系統哪些好辦 沈陽防封電銷卡品牌 江西省地圖標注 如何申請400電話費用 富錦商家地圖標注 沈陽人工外呼系統價格 沈陽外呼系統呼叫系統 池州外呼調研線路

簡介

AMP:Automatic mixed precision,自動混合精度,可以在神經網絡推理過程中,針對不同的層,采用不同的數據精度進行計算,從而實現節省顯存和加快速度的目的。

在Pytorch 1.5版本及以前,通過NVIDIA提供的apex庫可以實現amp功能。但是在使用過程中會伴隨著一些版本兼容和奇怪的報錯問題。

從1.6版本開始,Pytorch原生支持自動混合精度訓練,并已進入穩定階段,AMP 訓練能在 Tensor Core GPU 上實現更高的性能并節省多達 50% 的內存。

環境

Python 3.8

Pytorch 1.7.1

CUDA 11 + cudnn 8

NVIDIA GeFore RTX 3070

ps:后續使用移動端的3070,或者3080結合我目前訓練的分類網絡來測試實際效果

原理

關于低精度計算

當前的深度學習框架大都采用的都是FP32來進行權重參數的存儲,比如Python float的類型為雙精度浮點數 FP64,PyTorch Tensor的默認類型為單精度浮點數FP32。

隨著模型越來越大,加速訓練模型的需求就產生了。在深度學習模型中使用FP32主要存在幾個問題,第一模型尺寸大,訓練的時候對顯卡的顯存要求高;第二模型訓練速度慢;第三模型推理速度慢。

其解決方案就是使用低精度計算對模型進行優化。

推理過程中的模型優化目前比較成熟的方案就是FP16量化和INT8量化,NVIDIA TensorRT等框架就可以支持,這里不再贅述。訓練方面的方案就是混合精度訓練,它的基本思想很簡單: 精度減半(FP32→ FP16) ,訓練時間減半。

與單精度浮點數float32(32bit,4個字節)相比,半精度浮點數float16僅有16bit,2個字節組成。

可以很明顯的看到,使用FP16可以解決或者緩解上面FP32的兩個問題:顯存占用更少:通用的模型FP16占用的內存只需原來的一半,訓練的時候可以使用更大的batchsize。

計算速度更快:有論文指出半精度的計算吞吐量可以是單精度的 2-8 倍。

從上到下依次為 fp16、fp32 、fp64

當前很多NVIDIA GPU搭載了專門為快速FP16矩陣運算設計的特殊用途Tensor Core,比如Tesla P100,Tesla V100、Tesla A100、GTX 20XX 和RTX 30XX等。

Tensor Core是一種矩陣乘累加的計算單元,每個Tensor Core每個時鐘執行64個浮點混合精度操作(FP16矩陣相乘和FP32累加),英偉達宣稱使用Tensor Core進行矩陣運算可以輕易的提速,同時降低一半的顯存訪問和存儲。

隨著Tensor Core的普及FP16計算也一步步走向成熟,低精度計算也是未來深度學習的一個重要趨勢。

Tensor Core 的 4x4x4 矩陣乘法與累加

Volta GV100 Tensor Core 流程圖

自動混合精度訓練

不同于在推理過程中直接削減權重精度,在模型訓練的過程中,直接使用半精度進行計算會導致的兩個問題的處理:舍入誤差(Rounding Error)和溢出錯誤(Grad Overflow / Underflow)。

舍入誤差: float16的最大舍入誤差約為 (~2 ^-10 ),比float32的最大舍入誤差(~2 ^-23) 要大不少。 對足夠小的浮點數執行的任何操作都會將該值四舍五入到零,在反向傳播中很多甚至大多數梯度更新值都非常小,但不為零。 在反向傳播中舍入誤差累積可以把這些數字變成0或者 nan, 這會導致不準確的梯度更新,影響網絡的收斂。

溢出錯誤: 由于float16的有效的動態范圍約為 ( 5.96×10^-8 ~ 6.55×10^4),比單精度的float32(1.4x10^-45 ~ 1.7x10^38)要狹窄很多,精度下降(小數點后16相比較小數點后8位要精確的多)會導致得到的值大于或者小于fp16的有效動態范圍,也就是上溢出或者下溢出。

在深度學習中,由于激活函數的的梯度往往要比權重梯度小,更易出現下溢出的情況。2018年ICLR論文 Mixed Precision Training 中提到,簡單的在每個地方使用FP16會損失掉梯度更新小于2^-24的值——大約占他們的示例網絡所有梯度更新的5%。

解決方案就是使用混合精度訓練(Mixed Precision)和損失縮放(Loss Scaling):

1、混合精度訓練:

混合精度訓練是一種通過在FP16上執行盡可能多的操作來大幅度減少神經網絡訓練時間的技術,在像線性層或是卷積操作上,FP16運算較快,但像Reduction運算又需要 FP32的動態范圍。通過混合精度訓練的方式,便可以在部分運算操作使用FP16,另一部分則使用 FP32,混合精度功能會嘗試為每個運算使用相匹配的數據類型,在內存中用FP16做儲存和乘法從而加速計算,用FP32做累加避免舍入誤差。這樣在權重更新的時候就不會出現舍入誤差導致更新失敗,混合精度訓練的策略有效地緩解了舍入誤差的問題。

2、損失縮放:

即使用了混合精度訓練,還是會存在無法收斂的情況,原因是激活梯度的值太小,造成了下溢出。損失縮放是指在執行反向傳播之前,將損失函數的輸出乘以某個標量數(論文建議從8開始)。 乘性增加的損失值產生乘性增加的梯度更新值,提升許多梯度更新值到超過FP16的安全閾值2^-24。 只要確保在應用梯度更新之前撤消縮放,并且不要選擇一個太大的縮放以至于產生inf權重更新(上溢出) ,從而導致網絡向相反的方向發散。

使用Pytorch AMP

Pytorch原生的amp模式使用起來相當簡單,只需要從torch.cuda.amp導入GradScaler和 autocast這兩個函數即可。torch.cuda.amp的名字意味著這個功能只能在cuda上使用,事實上,這個功能正是NVIDIA的開發人員貢獻到PyTorch項目中的。

Pytorch在amp模式下維護兩個權重矩陣的副本,一個主副本用 FP32,一個半精度副本用 FP16。 梯度更新使用FP16矩陣計算,但更新于 FP32矩陣。 這使得應用梯度更新更加安全。

autocast上下文管理器實現了 FP32到FP16的轉換,它會自動判別哪些層可以進行FP16哪些層不可以。 GradScaler對梯度更新計算(檢查是否溢出)和優化器(將丟棄的batches轉換為 no-op)進行控制,通過放大loss的值來防止梯度的溢出。

在訓練中的具體使用方法如下所示:

def train():
    batch_size = 8
    epochs = 10
    lr = 1e-3
    size = 256
    num_class = 35
    use_amp = True 
    device = 'cuda' if torch.cuda.is_available() else 'cpu' 
    print('torch version: {}'.format(torch.__version__))
    print('amp:           {}'.format(use_amp))
    print('device:        {}'.format(device))
    print('epochs:        {}'.format(epochs))
    print('learn rate:    {}'.format(lr))
    print('batch size:    {}'.format(batch_size))
 
    net = ERFNet(num_classes=num_class).to(device) 
    train_data = CityScapesDataset('D:\\dataset\\cityscapes',
                                   'D:\\dataset\\cityscapes\\trainImages.txt',
                                   'D:\\dataset\\cityscapes\\trainLabels.txt',
                                   size, num_class)
    val_data = CityScapesDataset('D:\\dataset\\cityscapes',
                                 'D:\\dataset\\cityscapes\\valImages.txt',
                                 'D:\\dataset\\cityscapes\\valLabels.txt',
                                 size, num_class)
 
    train_dataloader = DataLoader(train_data, batch_size=batch_size, shuffle=False, num_workers=8)
    val_dataloader = DataLoader(val_data, batch_size=batch_size, shuffle=False, num_workers=4)
 
    opt = torch.optim.Adam(net.parameters(), lr=lr)
    criterion = torch.nn.CrossEntropyLoss(ignore_index=255)
 
    if use_amp:
        scaler = torch.cuda.amp.GradScaler() 
    writer = SummaryWriter("summary") 
    train_loss = AverageMeter()
    val_acc = AverageMeter()
    val_miou = AverageMeter()
 
    for epoch in range(0, epochs):
        train_loss.reset()
        val_acc.reset()
        val_miou.reset()
 
        with tqdm(total=train_data.__len__(), unit='img', desc="Epoch {}/{}".format(epoch + 1, epochs)) as pbar:
            # train
            net.train()
            for img, mask in train_dataloader:
                img = img.to(device)
                mask = mask.to(device)
                n = img.size()[0] 
                opt.zero_grad()
 
                if use_amp:
                    with torch.cuda.amp.autocast():
                        output = net(img)
                        loss = criterion(output, mask)
 
                    scaler.scale(loss).backward()
                    scaler.step(opt)
                    scaler.update()
                else:
                    output = net(img)
                    loss = criterion(output, mask)
                    loss.backward()
                    opt.step() 
                train_loss.update(loss.item(), n)
 
                pbar.set_postfix(**{"loss": train_loss.avg})
                pbar.update(img.size()[0])
 
            writer.add_scalar('train_loss', train_loss.avg, epoch)
            # eval
            net.eval()
            for img, mask in val_dataloader:
                img = img.to(device)
                mask = mask
                n = img.size()[0] 
                output = net(img) 
                pred_mask = torch.softmax(output, dim=1)
                pred_mask = pred_mask.detach().cpu().numpy()
                pred_mask = np.argmax(pred_mask, axis=1)
                true_mask = mask.numpy()
                acc, acc_cls, mean_iu, fwavacc = evaluate(pred_mask, true_mask, num_class)
 
                val_acc.update(acc)
                val_miou.update(mean_iu)
 
            writer.add_scalar('val_acc', val_acc.avg, epoch)
            writer.add_scalar('val_miou', val_miou.avg, epoch) 
            pbar.set_postfix(**{"loss": train_loss.avg, "val_acc": val_acc.avg, "val_miou": val_miou.avg})

實驗

硬件使用NVIDIA Geforce RTX 3070作為測試卡,這塊卡有184個Tensor Core,能比較好的支持amp模式。

模型使用ERFNet分割模型作為基準,cityscapes作為測試數據,10個epoch下的測試效果如下所示:

在模型的訓練性能方面,amp模式下的平均訓練時間并沒有明顯節省,甚至還略低于正常模式。

顯存的占用大約節省了25%,對于需要大量顯存的模型來說這個提升還是相當可觀的。

理論上訓練速度應該也是有提升的,到Pytorch的GitHub issue里翻了一下,好像30系顯卡會存在速度提不上來的問題,不太清楚是驅動支持不到位還是軟件適配不到位。

Metrics time memory
AMP 66.72s 2.5G
NO_AMP 65.64s 3.3G

amp

no_amp

在模型的精度方面,在不進行數據shuffle的情況下統計了10個epoch下兩種模式的train_loss和val_acc,可以看出不管是訓練還是推理,amp模式并沒有帶來明顯的精度損失。

cmp

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • pytorch隨機采樣操作SubsetRandomSampler()
  • 一文弄懂Pytorch的DataLoader, DataSet, Sampler之間的關系
  • pytorch sampler對數據進行采樣的實現
  • 在Pytorch中使用樣本權重(sample_weight)的正確方法

標簽:銅川 阿里 黑龍江 潛江 株洲 常德 呂梁 通遼

巨人網絡通訊聲明:本文標題《pytorch 如何使用amp進行混合精度訓練》,本文關鍵詞  pytorch,如何,使用,amp,進行,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《pytorch 如何使用amp進行混合精度訓練》相關的同類信息!
  • 本頁收集關于pytorch 如何使用amp進行混合精度訓練的相關信息資訊供網民參考!
  • 推薦文章
    青青在线视频免费观看| 鲁丝片一区二区三区| 久久久亚洲精品一区二区三区| 亚洲国产成人va在线观看麻豆| 中文字幕一区二区精品| 美女视频一区在线观看| 99九九99九九九99九他书对| 欧美日韩成人在线观看| 99久久综合色| 欧美人与禽zoz0善交| 91久久久在线| 精品久久久久久久久久| 综合网在线观看| 91xxx视频| 日韩精品极品在线观看播放免费视频| 天堂久久一区二区三区| 波多野结衣xxxx| 91国产美女视频| 自拍偷拍国产精品| 欧美一级片免费在线观看| 一区二区三区视频| 亚洲激情 国产| 国产在线播精品第三| 艳妇乳肉亭妇荡乳av| 国产精品一区二区三区久久久| 亚洲尤物视频在线| 亚洲无码精品国产| 欧美日韩中文在线视频| 欧美成人精品激情在线观看| 久久综合99re88久久爱| 午夜免费激情视频| 亚洲精品无人区| 亚洲天堂男人天堂女人天堂| 国产一区二区三区美女| 美国黄色特级片| 日本精品一区| 亚洲人成在线免费观看| 白白色 亚洲乱淫| 亚洲不卡在线播放| 美国av在线播放| 深夜精品寂寞黄网站在线观看| 久久久久久久久伊人| 人妻久久一区二区| 欧美日韩一级在线| 久久久999精品视频| 中文字幕亚洲精品在线观看| 午夜精品久久久久久久蜜桃| 东京热加勒比无码少妇| 欧美中文字幕第一页| 污片在线观看一区二区| 天堂在线资源库| 亚洲成人av免费在线观看| 国产成人精品一区二区三区福利| 日韩精品中文字幕一区二区三区 | 国产男女无遮挡猛进猛出| 成人精品久久久| 日韩一区二区三区电影在线观看| 国产剧情一区二区三区| 青草影院在线观看| 精品人妻少妇一区二区| 国产97色在线| 欧美一区二区在线播放| 成人sese在线| 中文字幕第四页| www.色欧美| 国产精品免费区二区三区观看| 亚洲国产欧美一区二区三区同亚洲| 91在线观看免费视频| 69xxxx国产| 三级黄色片免费观看| 国产二区一区| 宅男66日本亚洲欧美视频| 国产精品国产精品国产专区不蜜| 99久久精品国产色欲| 熟妇人妻久久中文字幕| 一区二区精品在线| 国产91精品久久久| 欧美一区二区在线免费播放 | 免费看av软件| 7777精品视频| 欧美高清视频在线高清观看mv色露露十八 | 欧美一区三区三区高中清蜜桃| 在线观看日韩精品| 成人性生交大片| 波多野结衣视频网址| 潘金莲一级淫片aaaaa| 日本一区不卡| 18性欧美xxxⅹ性满足| 91麻豆精品国产91久久久更新时间| 成人免费视频国产在线观看| 中文字幕你懂的| 国产在线观看无码免费视频| 欧美人与动牲交xxxxbbbb| 国产精品普通话| 日韩成人av在线| 亚洲一区在线观看免费观看电影高清| 麻豆久久久久久| 韩国av中文字幕| 日本少妇毛茸茸| 国产freexxxx性播放麻豆| 成人在线一区二区| 中文字幕亚洲自拍| 欧洲在线/亚洲| 久久久久久一级片| 手机看片1024日韩| 国产精品111| 日本精品一二三区| 人人妻人人澡人人爽欧美一区 | 亚洲天堂国产视频| 日韩一区二区三区资源| 国产精品99久久久久久人 | 欧美日韩一区二区三区免费| 91精品国产91久久| 日韩精品视频免费| 色婷婷久久久久swag精品| 26uuu另类欧美| 狂野欧美一区| 国产一区二区视频免费| 精品人妻无码一区二区三区换脸| 国产精品丝袜久久久久久消防器材| 国产三区精品| 欧美壮男野外gaytube| 亚洲欧美成人在线| 欧美日韩和欧美的一区二区| 1000精品久久久久久久久| 国产一区二区三区国产| 国产成人三级一区二区在线观看一 | 亚洲福利视频在线| 欧美性猛交xxxx乱大交蜜桃| 欧美国产97人人爽人人喊| 精品综合免费视频观看| 国产三级第一页| 国产大片中文字幕在线观看| 亚洲天堂久久新| 久热精品在线播放| 久久久天堂国产精品| 精品国产乱码久久久久久蜜柚| 欧美专区日韩视频| 日韩在线观看av| 亚洲精品久久久久国产| 欧美丝袜第三区| 亚洲一区二区三区激情| 久久综合丝袜日本网| 久久国产精品99久久人人澡| www.综合色| 夜夜爽妓女8888视频免费观看| 国产精品精品软件男同| 亚洲精品女人久久久| 黄色片视频在线| 国产原创中文在线观看 | 亚洲人成人无码网www国产| 国产精品自在自线| 欧美 日韩 国产 激情| 强开小嫩苞一区二区三区网站| 成人在线资源网址| 国产精品专区第二| 欧美专区日韩视频| 国内精品久久影院| 久热精品视频在线观看一区| 国产丝袜一区二区三区免费视频| 色8久久人人97超碰香蕉987| 亚洲一区二区三区在线看| 久久精品一区二区三区av| 成人亚洲一区二区一| 精久久久久久久久久久| 日韩不卡在线观看日韩不卡视频| 成人福利小视频| 国产精品无码白浆高潮| 欧美日韩 一区二区三区| 国产精品午夜影院| 久久午夜无码鲁丝片| 日韩三级在线观看视频| 国产一区第一页| 国产探花视频在线播放| 色综合99久久久无码国产精品| 国产网站无遮挡| 免费a v网站| 精品人妻一区二区三区日产| 熟妇高潮一区二区| 欧美xxxxx精品| 亚洲成人av免费在线观看| 污片免费在线观看| 中文字幕在线免费看线人 | 亚洲精品成人久久久| 精品捆绑美女sm三区| 精品国产乱子伦一区| 亚洲第一二三四五区| 日韩成人在线视频| 亚洲午夜精品视频| 日韩中文在线中文网在线观看| 少妇高潮久久77777| 久久久国产精品一区| 久久99亚洲精品| 91av视频在线播放| 国产成人一区二区三区| 国产欧美日韩专区发布| 亚洲va欧美va国产综合剧情| 成人片在线免费看| 蜜桃网站成人| 中文有码久久| 国产主播自拍av| 50路60路老熟妇啪啪| 午夜精品中文字幕| 精品人妻一区二区免费| 精品人妻互换一区二区三区| 欧洲性xxxx| 久久99久久98精品免观看软件| 日本熟女一区二区| 最近中文字幕免费在线观看| 99久久精品国产色欲| 久热国产精品| 国产盗摄精品一区二区三区在线| proumb性欧美在线观看| 久久精品网站免费观看| 亚洲欧洲一区二区三区| 欧美日韩免费在线| 在线综合视频播放| 亚洲欧洲日韩国产| 色综合五月天导航| 国产精品天天狠天天看| 国产尤物99| 男同互操gay射视频在线看| 黄色免费福利视频| 91精品国产三级| www..com.cn蕾丝视频在线观看免费版 | www国产无套内射com| www.色就是色| 亚洲精品视频大全| 久久9999久久免费精品国产| 一级全黄少妇性色生活片| 视频在线观看91| 99国产精品视频免费观看| 亚洲人成精品久久久久| 欧美性猛片xxxx免费看久爱| 日韩精品www| 97在线观看视频| 国产成人亚洲欧美| 91免费国产精品| 天天综合天天添夜夜添狠狠添| 一区二区黄色片| 国产香蕉视频在线| 欧美一区二区三区激情| 波多野结衣在线aⅴ中文字幕不卡| 亚洲欧美日韩一区二区三区在线观看| 在线视频欧美区| 精品亚洲国产成av人片传媒 | 亚洲第一精品夜夜躁人人躁 | 精品福利av导航| 欧美黑人xxxx| a级国产乱理论片在线观看99| 性欧美18一19内谢| 成人不卡免费视频| 99久久婷婷国产综合| 国产精品久久婷婷| 国产精品综合一区二区三区| 亚洲欧美自拍偷拍色图| 制服丝袜亚洲精品中文字幕| 久久亚洲影音av资源网| 91久久国产综合久久蜜月精品| 视频一区二区视频| 中文字幕亚洲日本| 日韩欧美三级在线观看| 日韩一区欧美二区| 亚洲欧洲日韩一区二区三区| 欧美一区欧美二区| 97在线观看视频| 欧美亚洲国产免费| 久久这里只精品| 久久久久亚洲AV| 久久婷婷激情| 中文字幕在线一区| 精品国产免费人成电影在线观看四季 | 蜜桃视频在线观看成人| 中文字幕成人在线视频| 曰本女人与公拘交酡| 天天色综合av| 日韩理论在线观看| 亚洲激情视频在线播放| 国产精品爱久久久久久久| 亚洲一区二区三区加勒比| 免费不卡av网站| 国产精品美女久久久久av爽| 蜜桃视频在线一区| 亚洲一区二区欧美激情| 一区二区三区动漫| av在线不卡一区| 久久黄色片网站| 99热只有这里有精品| 国产一区中文字幕| 色婷婷久久综合| 国内精品久久久久影院优| 亚洲aⅴ天堂av在线电影软件| 色综合久久久无码中文字幕波多| 久久国产黄色片| 成人综合婷婷国产精品久久 | 国产精品久久久久久久久久| 超薄肉色丝袜足j调教99| 一卡二卡三卡四卡| 亚洲精品一区二区三区四区 | 国产乱人伦精品一区二区在线观看 | 亚洲日本aⅴ片在线观看香蕉| 亚洲最大福利网站| 欧美wwwwwww| 婷婷激情五月综合| 久久蜜臀中文字幕| 日韩精品在线免费观看| 国产v亚洲v天堂无码| 99视频在线观看视频| 中文字幕乱伦视频| 久久精品综合网| 亚洲美腿欧美激情另类| 国产一区二区三区高清| wwwww在线观看| 国产男男gay网站| 亚洲三级久久久| www.久久久久| 中文字幕久久综合| 女性裸体视频网站| 韩国欧美一区二区| 91麻豆精品久久久久蜜臀| 91精品视频免费观看| 亚洲免费在线播放视频| 国产精品一级二级| 一区二区三区国产精品| 欧美美最猛性xxxxxx| 日本高清视频免费在线观看| 青春草免费视频| 99久久伊人网影院| 亚洲男人的天堂在线播放| 久久久久久久久久久久久9999| 欧美一区二区免费在线观看| 色呦呦中文字幕| 色欧美88888久久久久久影院| 日本在线精品视频| 浓精h攵女乱爱av| 国产精品欧美综合亚洲| 亚洲午夜在线电影| 欧美一级淫片aaaaaaa视频| 欧美精品一区二区三区免费播放| 亚洲永久精品一区| 亚洲精品乱码久久久久久 | 亚洲激情视频在线观看| 欧美日韩三区四区| 欧美aaa级片| 成人午夜私人影院| 亚洲免费影视第一页| 亚洲伊人婷婷| 久草精品视频在线观看| 国产欧美日韩另类一区| 久久福利视频网| 欧美韩国日本在线| 精品国自产拍在线观看| 日本乱码高清不卡字幕| 91在线观看免费高清完整版在线观看| 伊人免费视频二| 日韩精品一区第一页| 日韩精品一区国产麻豆| 茄子视频成人在线观看 | 欧美激情一二三| 熟女少妇精品一区二区| 精品国精品国产自在久不卡| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 国产精品一区二区久久久久| 日本一区二区在线观看视频| 麻豆91小视频| 亚洲级视频在线观看免费1级| 亚洲高清在线播放| 日韩精品一区二区av| 最好看的中文字幕久久| 日韩av电影院| 黄色激情在线观看| 国产一区二区中文字幕| 国产一区二区三区视频免费| 国产资源在线免费观看| 亚洲视频中文字幕在线观看| 色哦色哦哦色天天综合| 久草一区二区| 日本少妇久久久| 亚洲国产成人高清精品| 亚洲www在线| 国产精品精品软件男同| 中文字幕中文字幕一区| 国产精品高潮呻吟久久av无限 | 色窝窝无码一区二区三区成人网站 | 久久久午夜精品福利内容| 成人综合在线视频| 欧美精品激情在线观看| 成人三级做爰av| 国产黄色精品网站| 久久综合色88| 日日夜夜精品视频免费观看| 国产精品一区二区久激情瑜伽| 中文字幕久久精品| 色片在线免费观看| 久久精品国产免费| 少妇高潮久久77777| 久久久久久久高清| 国产乱理伦片在线观看夜一区| 久久久成人的性感天堂| 污污视频在线免费| 白白色 亚洲乱淫| 欧美与黑人午夜性猛交久久久| 97人妻精品一区二区三区免| 久久久国产精品午夜一区ai换脸| 欧美在线视频网站| 先锋影音av在线| 亚洲精品中文字幕乱码三区| 国产日韩久久| 91视频久久久| 日韩视频一区二区三区在线播放|