国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频

收藏 | GPU多卡并行訓(xùn)練總結(jié)

共 9617字,需瀏覽 20分鐘

 ·

2021-08-28 20:06

點(diǎn)擊上方視學(xué)算法”,選擇加"星標(biāo)"或“置頂

重磅干貨,第一時(shí)間送達(dá)

僅作學(xué)術(shù)分享,不代表本公眾號(hào)立場(chǎng),侵權(quán)聯(lián)系刪除
轉(zhuǎn)載于:記憶的迷谷@知乎(已授權(quán))
來源 | https://zhuanlan.zhihu.com/p/402198819
編輯 | 極市平臺(tái)

為什么要使用多GPU并行訓(xùn)練

簡單來說,有兩種原因:第一種是模型在一塊GPU上放不下,兩塊或多塊GPU上就能運(yùn)行完整的模型(如早期的AlexNet)。第二種是多塊GPU并行計(jì)算可以達(dá)到加速訓(xùn)練的效果。想要成為“煉丹大師“,多GPU并行訓(xùn)練是不可或缺的技能。

常見的多GPU訓(xùn)練方法:

1.模型并行方式:如果模型特別大,GPU顯存不夠,無法將一個(gè)顯存放在GPU上,需要把網(wǎng)絡(luò)的不同模塊放在不同GPU上,這樣可以訓(xùn)練比較大的網(wǎng)絡(luò)。(下圖左半部分)

2.數(shù)據(jù)并行方式:將整個(gè)模型放在一塊GPU里,再復(fù)制到每一塊GPU上,同時(shí)進(jìn)行正向傳播和反向誤差傳播。相當(dāng)于加大了batch_size。(下圖右半部分)

在pytorch1.7 + cuda10 + TeslaV100的環(huán)境下,使用ResNet34,batch_size=16, SGD對(duì)花草數(shù)據(jù)集訓(xùn)練的情況如下:使用一塊GPU需要9s一個(gè)epoch,使用兩塊GPU是5.5s, 8塊是2s。這里有一個(gè)問題,為什么運(yùn)行時(shí)間不是9/8≈1.1s ? 因?yàn)槭褂肎PU數(shù)量越多,設(shè)備之間的通訊會(huì)越來越復(fù)雜,所以隨著GPU數(shù)量的增加,訓(xùn)練速度的提升也是遞減的。

誤差梯度如何在不同設(shè)備之間通信?

在每個(gè)GPU訓(xùn)練step結(jié)束后,將每塊GPU的損失梯度求平均,而不是每塊GPU各計(jì)算各的。

BN如何在不同設(shè)備之間同步?

假設(shè)batch_size=2,每個(gè)GPU計(jì)算的均值和方差都針對(duì)這兩個(gè)樣本而言的。而BN的特性是:batch_size越大,均值和方差越接近與整個(gè)數(shù)據(jù)集的均值和方差,效果越好。使用多塊GPU時(shí),會(huì)計(jì)算每個(gè)BN層在所有設(shè)備上輸入的均值和方差。如果GPU1和GPU2都分別得到兩個(gè)特征層,那么兩塊GPU一共計(jì)算4個(gè)特征層的均值和方差,可以認(rèn)為batch_size=4。注意:如果不用同步BN,而是每個(gè)設(shè)備計(jì)算自己的批次數(shù)據(jù)的均值方差,效果與單GPU一致,僅僅能提升訓(xùn)練速度;如果使用同步BN,效果會(huì)有一定提升,但是會(huì)損失一部分并行速度。

下圖為單GPU、以及是否使用同步BN訓(xùn)練的三種情況,可以看到使用同步BN(橙線)比不使用同步BN(藍(lán)線)總體效果要好一些,不過訓(xùn)練時(shí)間也會(huì)更長。使用單GPU(黑線)和不使用同步BN的效果是差不多的。

 兩種GPU訓(xùn)練方法:DataParallel 和 DistributedDataParallel:

  • DataParallel是單進(jìn)程多線程的,僅僅能工作在單機(jī)中。而DistributedDataParallel是多進(jìn)程的,可以工作在單機(jī)或多機(jī)器中。
  • DataParallel通常會(huì)慢于DistributedDataParallel。所以目前主流的方法是DistributedDataParallel。

pytorch中常見的GPU啟動(dòng)方式:

注:distributed.launch方法如果開始訓(xùn)練后,手動(dòng)終止程序,最好先看下顯存占用情況,有小概率進(jìn)程沒kill的情況,會(huì)占用一部分GPU顯存資源。

下面以分類問題為基準(zhǔn),詳細(xì)介紹使用DistributedDataParallel時(shí)的過程:

首先要初始化各進(jìn)程環(huán)境:

def init_distributed_mode(args):
# 如果是多機(jī)多卡的機(jī)器,WORLD_SIZE代表使用的機(jī)器數(shù),RANK對(duì)應(yīng)第幾臺(tái)機(jī)器
# 如果是單機(jī)多卡的機(jī)器,WORLD_SIZE代表有幾塊GPU,RANK和LOCAL_RANK代表第幾塊GPU
if'RANK'in os.environ and'WORLD_SIZE'in os.environ:
args.rank = int(os.environ["RANK"])
args.world_size = int(os.environ['WORLD_SIZE'])
# LOCAL_RANK代表某個(gè)機(jī)器上第幾塊GPU
args.gpu = int(os.environ['LOCAL_RANK'])
elif'SLURM_PROCID'in os.environ:
args.rank = int(os.environ['SLURM_PROCID'])
args.gpu = args.rank % torch.cuda.device_count()
else:
print('Not using distributed mode')
args.distributed = False
return

args.distributed = True

torch.cuda.set_device(args.gpu) # 對(duì)當(dāng)前進(jìn)程指定使用的GPU
args.dist_backend = 'nccl'# 通信后端,nvidia GPU推薦使用NCCL
dist.barrier() # 等待每個(gè)GPU都運(yùn)行完這個(gè)地方以后再繼續(xù)

在main函數(shù)初始階段,進(jìn)行以下初始化操作。需要注意的是,學(xué)習(xí)率需要根據(jù)使用GPU的張數(shù)增加。在這里使用簡單的倍增方法。

def main(args):
if torch.cuda.is_available() isFalse:
raise EnvironmentError("not find GPU device for training.")

# 初始化各進(jìn)程環(huán)境
init_distributed_mode(args=args)

rank = args.rank
device = torch.device(args.device)
batch_size = args.batch_size
num_classes = args.num_classes
weights_path = args.weights
args.lr *= args.world_size # 學(xué)習(xí)率要根據(jù)并行GPU的數(shù)倍增

實(shí)例化數(shù)據(jù)集可以使用單卡相同的方法,但在sample樣本時(shí),和單機(jī)不同,需要使用DistributedSampler和BatchSampler。

#給每個(gè)rank對(duì)應(yīng)的進(jìn)程分配訓(xùn)練的樣本索引
train_sampler=torch.utils.data.distributed.DistributedSampler(train_data_set)
val_sampler=torch.utils.data.distributed.DistributedSampler(val_data_set)
#將樣本索引每batch_size個(gè)元素組成一個(gè)list
train_batch_sampler=torch.utils.data.BatchSampler(
train_sampler,batch_size,drop_last=True)

DistributedSampler原理如圖所示:假設(shè)當(dāng)前數(shù)據(jù)集有0~10共11個(gè)樣本,使用2塊GPU計(jì)算。首先打亂數(shù)據(jù)順序,然后用 11/2 =6(向上取整),然后6乘以GPU個(gè)數(shù)2 = 12,因?yàn)橹挥?1個(gè)數(shù)據(jù),所以再把第一個(gè)數(shù)據(jù)(索引為6的數(shù)據(jù))補(bǔ)到末尾,現(xiàn)在就有12個(gè)數(shù)據(jù)可以均勻分到每塊GPU。然后分配數(shù)據(jù):間隔將數(shù)據(jù)分配到不同的GPU中。

BatchSampler原理: DistributedSmpler將數(shù)據(jù)分配到兩個(gè)GPU上,以第一個(gè)GPU為例,分到的數(shù)據(jù)是6,9,10,1,8,7,假設(shè)batch_size=2,就按順序把數(shù)據(jù)兩兩一組,在訓(xùn)練時(shí),每次獲取一個(gè)batch的數(shù)據(jù),就從組織好的一個(gè)個(gè)batch中取到。注意:只對(duì)訓(xùn)練集處理,驗(yàn)證集不使用BatchSampler。

接下來使用定義好的數(shù)據(jù)集和sampler方法加載數(shù)據(jù):

 train_loader = torch.utils.data.DataLoader(train_data_set,
batch_sampler=train_batch_sampler,
pin_memory=True, # 直接加載到顯存中,達(dá)到加速效果
num_workers=nw,
collate_fn=train_data_set.collate_fn)

val_loader = torch.utils.data.DataLoader(val_data_set,
batch_size=batch_size,
sampler=val_sampler,
pin_memory=True,
num_workers=nw,
collate_fn=val_data_set.collate_fn)

如果有預(yù)訓(xùn)練權(quán)重的話,需要保證每塊GPU加載的權(quán)重是一模一樣的。需要在主進(jìn)程保存模型初始化權(quán)重,在不同設(shè)備上載入主進(jìn)程保存的權(quán)重。這樣才能保證每塊GOU上加載的權(quán)重是一致的:

# 實(shí)例化模型
model = resnet34(num_classes=num_classes).to(device)

# 如果存在預(yù)訓(xùn)練權(quán)重則載入
if os.path.exists(weights_path):
weights_dict = torch.load(weights_path, map_location=device)
# 簡單對(duì)比每層的權(quán)重參數(shù)個(gè)數(shù)是否一致
load_weights_dict = {k: v for k, v in weights_dict.items()
if model.state_dict()[k].numel() == v.numel()}
model.load_state_dict(load_weights_dict, strict=False)
else:
checkpoint_path = os.path.join(tempfile.gettempdir(), "initial_weights.pt")
# 如果不存在預(yù)訓(xùn)練權(quán)重,需要將第一個(gè)進(jìn)程中的權(quán)重保存,然后其他進(jìn)程載入,保持初始化權(quán)重一致
if rank == 0:
torch.save(model.state_dict(), checkpoint_path)

dist.barrier()
# 這里注意,一定要指定map_location參數(shù),否則會(huì)導(dǎo)致第一塊GPU占用更多資源
model.load_state_dict(torch.load(checkpoint_path, map_location=device))

如果需要凍結(jié)模型權(quán)重,和單GPU基本沒有差別。如果不需要凍結(jié)權(quán)重,可以選擇是否同步BN層。然后再把模型包裝成DDP模型,就可以方便進(jìn)程之間的通信了。多GPU和單GPU的優(yōu)化器設(shè)置沒有差別,這里不再贅述。

# 是否凍結(jié)權(quán)重
if args.freeze_layers:
for name, para in model.named_parameters():
# 除最后的全連接層外,其他權(quán)重全部凍結(jié)
if"fc"notin name:
para.requires_grad_(False)
else:
# 只有訓(xùn)練帶有BN結(jié)構(gòu)的網(wǎng)絡(luò)時(shí)使用SyncBatchNorm采用意義
if args.syncBN:
# 使用SyncBatchNorm后訓(xùn)練會(huì)更耗時(shí)
model = torch.nn.SyncBatchNorm.convert_sync_batchnorm(model).to(device)

# 轉(zhuǎn)為DDP模型
model = torch.nn.parallel.DistributedDataParallel(model, device_ids=[args.gpu])

# optimizer使用SGD+余弦淬火策略
pg = [p for p in model.parameters() if p.requires_grad]
optimizer = optim.SGD(pg, lr=args.lr, momentum=0.9, weight_decay=0.005)
lf = lambda x: ((1 + math.cos(x * math.pi / args.epochs)) / 2) * (1 - args.lrf) + args.lrf # cosine
scheduler = lr_scheduler.LambdaLR(optimizer, lr_lambda=lf)

與單GPU不同的地方:rain_sampler.set_epoch(epoch),這行代碼會(huì)在每次迭代的時(shí)候獲得一個(gè)不同的生成器,每一輪開始迭代獲取數(shù)據(jù)之前設(shè)置隨機(jī)種子,通過改變傳進(jìn)的epoch參數(shù)改變打亂數(shù)據(jù)順序。通過設(shè)置不同的隨機(jī)種子,可以讓不同GPU每輪拿到的數(shù)據(jù)不同。后面的部分和單GPU相同。

for epoch in range(args.epochs):
train_sampler.set_epoch(epoch)

mean_loss = train_one_epoch(model=model,
optimizer=optimizer,
data_loader=train_loader,
device=device,
epoch=epoch)

scheduler.step()

sum_num = evaluate(model=model,
data_loader=val_loader,
device=device)
acc = sum_num / val_sampler.total_size

我們?cè)敿?xì)看看每個(gè)epoch是訓(xùn)練時(shí)和單GPU訓(xùn)練的差異(上面的train_one_epoch)

def train_one_epoch(model, optimizer, data_loader, device, epoch):
model.train()
loss_function = torch.nn.CrossEntropyLoss()
mean_loss = torch.zeros(1).to(device)
optimizer.zero_grad()

# 在進(jìn)程0中打印訓(xùn)練進(jìn)度
if is_main_process():
data_loader = tqdm(data_loader)

for step, data in enumerate(data_loader):
images, labels = data

pred = model(images.to(device))

loss = loss_function(pred, labels.to(device))
loss.backward()
loss = reduce_value(loss, average=True) # 在單GPU中不起作用,多GPU時(shí),獲得所有GPU的loss的均值。
mean_loss = (mean_loss * step + loss.detach()) / (step + 1) # update mean losses

# 在進(jìn)程0中打印平均loss
if is_main_process():
data_loader.desc = "[epoch {}] mean loss {}".format(epoch, round(mean_loss.item(), 3))

ifnot torch.isfinite(loss):
print('WARNING: non-finite loss, ending training ', loss)
sys.exit(1)

optimizer.step()
optimizer.zero_grad()

# 等待所有進(jìn)程計(jì)算完畢
if device != torch.device("cpu"):
torch.cuda.synchronize(device)

return mean_loss.item()

def reduce_value(value, average=True):
world_size = get_world_size()
if world_size < 2: # 單GPU的情況
return value

with torch.no_grad():
dist.all_reduce(value) # 對(duì)不同設(shè)備之間的value求和
if average: # 如果需要求平均,獲得多塊GPU計(jì)算loss的均值
value /= world_size

return value

接下來看一下驗(yàn)證階段的情況,和單GPU最大的額不同之處是預(yù)測(cè)正確樣本個(gè)數(shù)的地方。

	@torch.no_grad()
def evaluate(model, data_loader, device):
model.eval()

# 用于存儲(chǔ)預(yù)測(cè)正確的樣本個(gè)數(shù),每塊GPU都會(huì)計(jì)算自己正確樣本的數(shù)量
sum_num = torch.zeros(1).to(device)

# 在進(jìn)程0中打印驗(yàn)證進(jìn)度
if is_main_process():
data_loader = tqdm(data_loader)

for step, data in enumerate(data_loader):
images, labels = data
pred = model(images.to(device))
pred = torch.max(pred, dim=1)[1]
sum_num += torch.eq(pred, labels.to(device)).sum()

# 等待所有進(jìn)程計(jì)算完畢
if device != torch.device("cpu"):
torch.cuda.synchronize(device)

sum_num = reduce_value(sum_num, average=False) # 預(yù)測(cè)正確樣本個(gè)數(shù)

return sum_num.item()

需要注意的是:保存模型的權(quán)重需要在主進(jìn)程中進(jìn)行保存。

if rank == 0:
print("[epoch {}] accuracy: {}".format(epoch, round(acc, 3)))
tags = ["loss", "accuracy", "learning_rate"]
tb_writer.add_scalar(tags[0], mean_loss, epoch)
tb_writer.add_scalar(tags[1], acc, epoch)
tb_writer.add_scalar(tags[2], optimizer.param_groups[0]["lr"], epoch)

torch.save(model.module.state_dict(), "./weights/model-{}.pth".format(epoch))

如果從頭開始訓(xùn)練,主進(jìn)程生成的初始化權(quán)重是以臨時(shí)文件的形式保存,需要訓(xùn)練完后移除掉。最后還需要撤銷進(jìn)程組。

if rank == 0:# 刪除臨時(shí)緩存文件        if os.path.exists(checkpoint_path) is True:            os.remove(checkpoint_path)    dist.destroy_process_group()  # 撤銷進(jìn)程組,釋放資源

鳴謝:本博客內(nèi)容借鑒于up主:霹靂吧啦Wz


點(diǎn)個(gè)在看 paper不斷!

瀏覽 59
點(diǎn)贊
評(píng)論
收藏
分享

手機(jī)掃一掃分享

分享
舉報(bào)
評(píng)論
圖片
表情
推薦
點(diǎn)贊
評(píng)論
收藏
分享

手機(jī)掃一掃分享

分享
舉報(bào)

感谢您访问我们的网站,您可能还对以下资源感兴趣:

国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频 91探花精品偷拍在线播放| av在线资源播放| 免费av中文字幕| 唐嫣一级婬片A片AAA| 骚白虎一区| 五月天婷婷激情| 日韩国产中文字幕| 蜜臀导航| 91乱子伦国产乱子伦!| 欧美激情爱爱| 91久久亚洲| 婷婷五月天激情视频| 久久精品操| 国产乱子伦-区二区三区| 国产精品无码免费视频| 免费国产A片| 杨门女将婬乱史1—6| 污污污污污www网站免费观看| 国产精品美女视频| 香蕉伊人视频| 一本到在线视频| 大香蕉最新视频| 香蕉综合在线| 大鷄巴成人A片视频| 成人H动漫精品一区二区无码| 九九中文字幕| 午夜精品18视频国产| 韩国无码中文| www.日韩av| 无码不卡一区| 中文字幕www一区| 免费黄视频在线观看| 国产在线观看不卡| 色五月在线观看| 国产在线播放av| 欧美日韩性色无码免费| 激情人妻网站| 青青青亚州视频在线| 欧洲第一无人区观看| 成人av免费观看| 天天草视频| 夜夜夜叫天天天做| 亚洲小说区图片区| 一区二区三区AV| 欧美午夜福利在线观看| 69AV在线视频| 伊人黄片| 日韩天堂在线播放| 亚洲一卡| www.日韩av| 69国产成人精品二区| 国内精品久久久久久久久98| 亚洲A∨无码无在线观看| 亚洲小穴| 日本黄色视频网址| 91小视频在线观看| 青草综合| 影音先锋天堂| 国产免费精彩视频| 国产女人操逼视频| 国产综合久久| 白浆四溢av| 精品交换一区二区三区无码| 亚洲福利免费观看| 欧美操b视频| 人人妻人人澡人人爽人人爽| 高清无码视频18| 最新中文字幕免费MV第一季歌词 | 黄色福利在线观看| 超碰免费在线| 日韩视频免费观看高清完整版在线观| 天堂在线视频| 国产操逼网址| 亚洲国产毛片| 中文AV在线播放| 蜜臀久久久久久999| 黄色免费网站在线观看| 老司机精品视频在线观看| 特一级黄片| 亚洲AV无一区二区三区久久| 天天干视频| 波多野结衣毛片| 在线你懂的| 中文原创麻豆传媒md0052| 国产乱伦免费视频| 日韩在线视频网站| 欧美日韩成人在线| 韩国深夜福利视频| 免费看黄色的网站| Av一区二区三区| 开心激情站| 国产精品色情A级片| 国产日韩欧美综合精品在线观看| 欧美一级免费A片| 久久久穴| 午夜社区| 欧美黄网站在线观看| 天堂色综合| 看黄色一级片| 亚洲免费在线观看视频| 狠狠躁日日躁夜夜躁A片视频| 一色综合| 操批视频| 三级无码视频| 丁香色婷婷五月天| 男女操逼视频网站| 99内射| 成人午夜黄色| 懂色av蜜臀av粉嫩av分| 成人午夜在线视频| 北条麻妃无码在线播放| 国产一级黄色毛片| 99热国产在线观看| 影音先锋成人在线| 中文字幕乱码亚洲无线码按摩| 国产精品在线免费观看| A片在线观看免费| 黄片免费大全| 欧美日韩国产成人综合| 美日韩无码| 国产AV一区二区三区四区| 日韩欧美视频一区国产欧美在线 | 黑人无码一二三四五区| 天天射天天操天天干| 国产香蕉在线| 在线不欧美| 日韩一级免费观看| 国产淫语| 日韩视频一二三| 黄色片网站免费观看| 欧美久久久| 一区二区高清无码视频| 高清无码小视频| 456亚洲影院| 大香蕉伊人成人网| 亚洲黄色视频在线| 国产免费乱伦| 亚洲精品成人无码熟妇在线| 亚州天堂| 亚洲性爱手机版| 91吴梦梦一区二区传媒| 亚洲精品成人电影| 九九中文字幕| 青青草公开视频| www.啪啪| 日本无码视频在线| 高清无码人妻| 色情小电影免费网站观看网址在线播 | 热久久综合网站| 亚洲成人影音| 欧美老女人操逼群| 欧美日韩国产中文字幕| 天堂无码视频在线播放| 亚洲一区高清| 黄色高清无码| 91亚洲国产成人精品一区二区三 | 骚婷婷| 精品久久久久久久| 日韩精品在线视频观看| 国产精品操逼视频| 五月婷婷综合激情| 黄网站免费观看| 9l视频自拍蝌蚪9l视频成人| 欧一美一婬一伦一区二区三区黑人-亚| 91在线网站| 亚洲aⅤ| 综合站欧美精品| 日韩一区二区在线视频| 国产A级成人婬片1976| 97免费在线观看视频| 色啪视频| www.操操操| 一级A片免费观看| 国产精品嫩草久久久久yw193 | 免费av中文字幕| 超碰精品在线| 亚欧视频在线观看| 欧美中文字幕| 人成在线视频| 亚洲精品A| 久久福利网| 先锋资源AV| 黄色视频毛片一一| 中文字幕网在线| 日韩一级成人片| 色欲av在线| 精品女人| 精品乱子伦一区二区三区毛| 人人摸人人射| 中文免费高清在线| 91足浴店按摩漂亮少妇| 国产成人在线精品| av久草| 天堂网av2025| 亚洲精品成人无码| 大茄子熟女AV导航| 成人性生活A级毛片网站| 久久色播| 成人免费视频性爱| A片免费在线播放| 中文字幕国产综合| XXXXⅩHD亚洲人HD| 久久久久久成人无码| 男女拍拍免费视频| 黄色天堂天天看| 国产欧美日韩一区二区三区| 国产成人三级在线播放| 欧美视频一区二区三区| 久操视频免费在线观看| 日本黄色大全| 在线看黄色片| 日本黄色片视频| 日韩人妻精品无码| 四川少妇BBBB| 亚洲婷婷在线视频| 欧美3P视频| 天天插天天插| 91久久久久久久久久| 亚洲中文无码在线| 中文字幕在线日亚洲9| 九九热视频在线| 午夜性爱福利| 亚洲图片欧美另类| 色综合九九| 久久不卡| 北条麻妃在线观看| 久久一二三四| 午夜成人黄色电影| 日本中文字幕在线| 69婷婷国产精品| 自慰喷水在线观看| 日本黄色电影网址| 欧洲成人在线观看| 中文字幕AV一区| 青青草在线观看免费| 国产美女裸体网站| 丁香六月综合激情| 天堂综合网久久| 国产精品999| 午夜成人在线观看| 国产丰满| 伊人影院在线免费观看| 久久爱成人| 中文子幕免费毛片| 日本黄色高清视频| 日本一级理论片在线大全| 永久免费一区二区三区| 国产婷婷色一区二区在线观看| 中文字幕丰满的翔田千里| 婷婷五月天青草| 婷婷内射| 五月天婷婷丁香网| 美女久久久久| 俺去啦俺去也| 久久天堂影院| 香蕉视频在线看| H片免费在线观看| 青青草网址| 亚洲成a人无码| 综合伊人| 欧美性猛交XXXX乱大交3| 国产热99| 北条麻妃二区三区| 无毛无码| 最新人妻| 无码在线免费观看视频| 夜夜狠狠擅视频| 狠狠插狠狠操| 成人黄色视频网| 38D蜜桃臀| 你懂的视频| 国产午夜无码福利视频| 日韩一二三区| 日韩人妻在线观看| 大香蕉尹在线| 欧美国产另类| 午夜成人国产| 欧美日韩一区二区三区视频| 丁香花在线小说免费阅读| 色第一页| 国产熟女一区二区三区五月婷| 7777av| av在线免费观看网站| 人人做人人做人人做,人人做全句下一| 天堂色综合| 欧美极品少妇| 国产一级婬乱片免费| 2024无码| V片免费看| 色眯眯久久爱| 欧美色图网站| 国产美女高潮| 91啦丨露脸丨熟女| 丁香五月在线观看| 成人在线视频观看| 五月av| 国产精品观看| 国产女同性系列| 五月丁香性爱| 人妻熟妇乱子伦精品无码专区毛片| 日本翔田千里奶水| 爱搞视频在线播放| 成人午夜激情| 麻豆精品在线| 国产日产亚洲精品| 色五月在线观看| 日韩A√| 国精产品久拍自产在线网站| 毛片毛片毛片毛片毛片毛片| 日韩久久电影| 婷婷色综合| 91久久婷婷| 亚洲一区二区在线视频| 91精品国产一区二区| 美女天天干| 亚洲免费观看高清完整版| 狠狠干b| 国产一区二区免费| 美女肏| 日韩免费无码视频| 97人人插| 久操视频在线免费观看| 亚洲国产婷婷香蕉A片| 亚洲AV成人精品一区二区三区 | 欧美A级视频在线观看| 日韩高清AV| 最好看的MV中文字幕国语电影 | www.欧美精品| 欧美激情伊人| 国产一级黄色大片| 仓井空一区二区三区| 国产人体视频| 日本久久精品18| 亚洲成人久久久| 青青草免费公开视频| 91无码人妻传媒tv| 99精品视频在线观看免费| 果冻传媒一区二区三区| 天天干视频| 欧美日日| 九九热播精品| 国产精品久久久久的角色| 91人妻人人澡人人爽人人精品一 | 三级片网站大全| 东方AV在线观看| 安徽妇搡BBBB搡BBBB小说| 大帝AV| 欧美激情亚洲无码| 国产精品宾馆在线| 蜜臀av一区二区| 国产青青| 丁香婷婷色五月| 熟女一区二区| 北条麻妃视频在线| 国产一级特黄aaa大片| 手机看片欧美+日韩+国产| 亚洲成人电影一区| 日本一级大毛片a一| 操一操影院| 日韩无码三级片| 夜夜夜操操操| 3D动漫精品啪啪一区二区| 亚洲jizzjizz| 这里精品| 丁香婷婷激情| 成人做爰黄A片免费看直播室动漫| 91搞搞| 亚日韩视频| 无码三级av| 精品人妻二区三区蜜桃| 亚洲逼逼| 人人爱人人爽| 国产TS丝袜人妖系列视频| 亚洲第一中文字幕网| 久久538| 无码专区av| aaa免费视频| 51成人网站| 性猛交AAAA片免费观看直播| 免费观看黄色网| 国产A级毛片久久久久久| 天天添| 色老汉视频| 骚妇一区| 国产精品在线免费观看| 黄色片视频在线观看| 中文字幕一区二区三区四区| 黄色香蕉网站| 色天天干| 波多野结衣亚洲视频| 久久99老妇伦国产熟女| 亚洲中文字幕av天堂| 欧美色图在线观看视频| 久久精品91| 亚洲AV电影在线观看| 国产欧美综合三级伦| 拍真实国产伦偷精品| 日韩性爱在线| 欧美精品一区二区少妇免费A片| 伊人成人网视频| 亚洲另类天堂| 欧美日韩一区二区三区| 中文字幕无码Av在线| 一区二区三区电影| 大香蕉在线免| 激情五月激情综合网| 亚洲欧美一区二区三区在线| 一区视频| 小早川怜子精品一区二区| www.人人摸| 91视频久久| 玖热精品| 91丨国产丨熟女熟女| 大香蕉av一区二区三区在线观看| 一级片黄片| 蜜芽av在线| 天堂在线视频| 欧美操美女| 福利毛片| 天天视频狠狠狠狠| 日韩中文字幕无码中字字幕| 国产一区二区三区视频| 一级黄片免费| 草久视频| 五香丁香天堂网| 天天视频亚洲| 免费看成人片| 99在线视频播放| 国产色网站| 日韩欧美综合一区| 天天爽夜夜| 国产在线一区二区| 久久中文字幕人妻| 91精品国产三级| 日韩小视频| 一区二区三区不卡在线| 日日爱爱| 亚洲无码理论片| 日韩操逼网站| 亚洲最新无码视频| 欧美成人网站在线| 黄色一区二区三区| 丁香五月天激情视频| 岛国精品在线播放| 美女中文字幕| 国产熟妇毛多久久久久一区| 亚洲精品97| 色情片在线观看| 国产成人精品a视频| 国产亚洲精品码| 精品国产乱码久久久久夜深人妻| 水果派中文解说AⅤ| 九九这里有精品| 国产精品久久久久的角色| 久一视频| 日韩在线1| AⅤ在线| 国产精品剧情| 一级国产欧美成人A片| 成人a片在线免费观看| 久久免费视屏| 久久免费成人| 91人妻人人人人爽| 黄色av无码| 欧美黄页| 亚洲无码操逼视频| 久草视频观看| 超碰免费视| 加勒比综合| 多啪啪免费视频| 国产视频福利| 亚洲成人色色| 爱爱免费视频| 久久无码一区| 久操手机在线| 哪里能看毛片| 久久综合婷婷| 69视频网| 色逼逼网| 嫩BBB嗓BBBB榛BBBB| 五月天无码在线| 久久水密桃| 无码人妻一区二区三区免费n鬼沢| 蜜臀久久99久久久久久宅男| 日韩人妻无码视频| 亚欧综合在线| 丁香婷婷色| 亚洲高清福利视频| 大香蕉777| AV网站在线免费观看| 91久久性奴调教| 亚洲一区在线播放| 九九精品在线视频| 日韩人妻精品一区二区| 中文字幕久久无码| 五月天色色网站| 成人A视频| 成人免费网站黄| 亚洲区综合| 超碰人人艹| 刘玥精品国产一区二区三区| 狠狠狠久久久| 91在线无码精品秘入口| 日本天堂在线视频| 性饥渴欧美老妇XXXXX| 色噜噜在线| 一级爱爱爱| 超碰观看| 天天操夜夜爽| 豆花视频logo| 中文字幕+乱码+中文乱码视频在线观看 | 欧美aaaaaa| 国产成人无码一区二区在线| 51AV在线| 色五月视频在线| 色哟哟AV| 一级片视频在线观看| 息子交尾一区二区三区| 亚洲熟女一区二区三区妖精| 在线观看欧美日韩| 大地影视中文第三页最新在线观看| 久久伊人在线| 国产无遮挡又黄又爽免费网站| 一级a一级a爰片免费| 亚洲操逼AV| 嫩BBB嗓BBBB榛BBBB| 人人操在线播放| 黄色视频网站在线看| 91一级A片在线观看| 亚洲成人视频在线观看| 亚洲第一页在线| 高清无码免费看| 久久久精品在线| 高清av免费| 久久系列| 国产精品操| 色综合999| 99热在线观看者| 欧美性爱天天| 欧美日韩黄片| 日韩毛片网| ThePorn-成人网站入口| 日本黄A三级三级三级| 日韩中文字幕无码人妻| 日韩在线免费| 日本A片视频| 九色PORN视频成人蝌蚪自拍| 91综合视频在线播放| 狠狠做深爱婷婷久久综合一区 | 日韩无码视频一区| 毛片A片| 亚洲AV秘无码苍井空| 在线观看黄视频| A级视频免费观看| www.777熟女人妻| 国产香蕉视屏| 人人色人人| 中文字幕人妻日韩在线| 黄色三级毛片| 亚洲高清成人| 欧美日韩一区二区三区四区 | 99这里只有精品| 91av| 69成人免费视频| 天天爽夜夜| 国产无码性爱| 国产精品久久在线| 国产在线欧美| 好逼天天操| 日本家庭乱伦视频| 男女日日批黄色三级| 亚洲一区二区三区无码| 91探花足浴店少妇在线| 在线播放JUY-925被丈夫上司侵犯的第7天 | 日韩AV在线天堂| 国产AV日韩AⅤ亚洲AV中文| 999日本不卡影院| 亚洲日韩一区| 日韩国产一区| 久草这里只有精品| 国产va在线观看| 欧美熟妇精品黑人巨大一二三区| 黄色小视频在线免费看| 北条麻纪无码视频| 亚洲超碰在线观看| 99国产免费| 日本亚洲国产| 亚洲国产欧美在线| 天天夜夜久久| 五月天婷婷在线视频| 婷婷日韩在线| 怡红院成人AV| 97爱爱视频| 91福利资源| 99性爱网| 做爱视频91| 久久三级片电影| 欧美色图网址| 大香蕉伊人电影| 亚洲午夜福利一区二区三区| 西西www444无码大胆| 国产变态另类| 国产成人tv| 日韩成人在线看| 日韩AV无码专区亚洲AV紧身裤 | 麻豆视频一区二区| 日韩毛片网| 69AV在线视频| 操中国老女人| 五月AV| 亚洲三级视频| 毛片毛片毛片| 一区二区在线视频| 99久久99久国产黄毛片| 日本欧美在线观看高清| 操女人逼AV| 亚洲一级免费在线观看| 中文字幕乱码亚洲无线码按摩| 国产激情123区| 在线亚洲免费观看| 91视频大全| 69AV免费视频| 日本爱爱免费播放视频| 一本无码视频| 一级A片免费| www男人天堂| 久久精品国产99精品国产亚洲性色 | 日本A在线观看| 黄色综合网| 亚洲成人福利| 日韩色情片| 亚洲天堂久久| 柒私黄片| 91丨九色丨蝌蚪丨对白| 日本精品视频在线| 在线观看AV网站| 久久9久| 日韩成人视频在线| 日批免费网站| 久久亚洲天堂| 操逼毛片| 激情aaa| 欧洲a视频| 国产成人黄色电影| 大香蕉欧美在线| 国产福利一区二区| 欧美精品一二三| 国产激情自拍| 操操操操操操操操逼| 91日韩无码| 亚洲视频福利| 欧美日色| 高清无码视频在线免费观看| 在线小视频| 亚洲AV无码成人网站国产网站| 在线免费黄色网址| 波多野结衣天堂| 一级特黄录像免费播放下载软件| 99免费在线观看视频| 91在线播放视频| 欧洲天堂在线视频网站| 人妻公日日澡久久久| 亚洲欧洲日本在线| 欧美第五页| 成人片在线| 午夜精品秘一区二区三区| 淫色综合| 日韩一区二区三| 成人福利| 岛国av无码免费| 性爱AV天堂| 国产三级自拍视频| 成人免看一级a一片| 狼友自拍| 97人人插| 大香蕉伊人电影| 爆乳一区二区三区| 国产成人精品一区二三区熟女在线 | 日韩久久久久| 久久综合五月| 韩国成人啪啪无码高潮| 日本特级黄色毛片| 91人妻人人澡人人爽人人DVD | 亚洲AV秘无码不卡在线观看| 欧美黄片免费在线观看| 一级毛AA片| 午夜激情五月天| 色福利网| 亚洲精品秘一区二区三小| 亚洲午夜无码精品专区| 欧美性夜黄A片爽爽免费视频| 人人摸人人操人人爽| 91亚洲欧美| 综合久久av| 亚洲性爱一级片| 精品國產一區二區三區久久蜜月| 色鬼综合网| 无码国产一区二区三区四区五区| 无码射精电影| 小早川怜子精品一区二区| 停停五月天| 插插菊花综合网| 98无码人妻精品一区二区三区 | 日韩在线一| xxx综合网| 国产真人无码| 337p西西人体大胆瓣开下部| 免费黄色网址啊不卡| 自拍偷拍激情视频| 日韩AV小说| 亚洲av小电影| 亚洲精品乱码久久久久久| 在线人妻| 97超碰中文字幕| 91乱子伦国产乱子伦海的味道| 国产主播av| 中文字幕人妻系列| 天天天天干| 国产精品久久久久久久9999| 日韩精品成人电影| 亚洲激情综合视频| 欧美精产国品一区二区区别 | 91麻豆精品国产| 日韩中文字幕在线观看| 免费一级AAAAA片在线播放| 99免费精品视频| 日韩Va| 麻豆二区| 日韩一级中文字幕| 九九视频免费观看| 五月天青青草超碰免费公开在线观看 | 久久综合在线| JUY-579被丈夫的上司侵犯后的第7天,我 | 国产精品久久久久久久久久久久久久久久| 国产成人AV在线播放| 人妻北条麻妃在线| 久草大| 亚洲一区二区网站| 亚洲va欧洲va国产va不卡| 性爱网站免费看| 国产一级麻豆| 久久亚洲中文字幕乱码| av中文字幕无码| 韩国精品久久久| 97精品欧美91久久久久久久| 亚洲AV电影在线观看| 撸一撸在线观看| 夜夜骚AV一二三区无码| 婷婷高清无码| 黄色视频在线免费看| 成人做爰黄A片免费视频网站野外 国产成人午夜精品无码区久久麻豆 | 国产福利AV| 天天色粽合合合合合合合| 97资源在线| 91蝌蚪91九色| 成人片网址| 麻豆一区在线| www日韩| 91人妻人人澡人人爽精品| 色婷婷天天操天天干| 午夜福利国产| 一区性爱| 国产91精品探花一区二区| 中文字幕高清无码在线播放| 国产AV在| 成人久久大香蕉| 中文字幕免费视频在线观看| 911国产视频| 久操AV| 五月天综合久久| 亚洲成人在线免费观看| 人人操人人操人人操人人操| 麻豆精品| 国产黄色视频免费在线观看| 日本一级特黄电影| 你懂得在线观看| 国产日韩欧美成人| 高清无码视频在线播放| 国产h在线播放| 国产一级18片视频| 91精片| 能看的黄色视频| 国产高清自拍视频| 久久精彩免费视频| 精品人妻无码| 亚洲成人免费观看| 91麻豆一区二区| 麻豆mdapp01.tⅴ| 国产中文字幕av| 日韩免费福利视频| 国产资源在线观看| 激情国产精品| 二区无码| 69国产精品成人无码视频色| 国产免费激情视频| 五月天久久久| 神马午夜精品91| 91丨露脸丨熟女精品| 韩日一区二区| 欧美A黄片| 国产精品久久久久国产A级| 五月丁香激情视频| 影音先锋男人资源网| 亚洲成a人无码| 成人片毛片| 91AV视频| 极品人妻疯狂3p超刺激| 青青青亚州视频在线| 国产AV无码一区| 成人免费AV| 国产一级A片| 黄色av免费| 特级艺体西西444WWw| 丰滿人妻一区二区三| 人成免费网站| www.蜜桃| 一级A片免费视频| 操逼操逼逼| 先锋影音成人资源| 日韩无码二级| 人人干人人看| 国精产品一区一区三区| 在线黄色AV| 天堂在线9| 91人人妻人人做人人爽| 美日韩视频欧美一区二区视频| 国产精视频| 日韩欧美成人在线观看| 东京热av一区二区| 麻豆91免费视频| 国产77777| 三级片网站大全| 日韩乱妇| 免费三级片网址| 人人操人人干人人妻| 女人18特级毛片。| 中文字幕乱码人妻二区三区| 中文字幕无码日韩| www国产在线| 无码婬片A片AAA毛片艳谭| 99久热| 麻豆91精品人妻成人无码| 免费观看黄色小视频| 欧美亚洲成人在线观看| 无码日逼视频| np高辣调教视频| 亚色天堂| www天天干| 国产高清视频在线播放| www.欧美视频| 欧美黄网站在线观看| 天天日天天日天天日| 丁香五月天激情| 亚州AV无码| 西西4444WWW无码精品| 亚洲操色| 色悠悠国产| 18禁网站免费观看| 91人妻一区二区三区无不码超满 | 久久婷婷婬片A片AAA| 4438黄色| 欧美+日韩+国产+成人+在线| 亚洲jiZZjiZZ日本少妇| 香蕉大综合| 日韩人妻无码专区一区二区| 亚洲色图在线观看| xxx综合网| 无码群交东京热| 国产又爽又黄免费网站校园里| av一区二区三区四区| 亚洲无码www| 免费无码又爽又黄又刺激网站 | 粉嫩99精品99久久久久久夜| 国产不卡在线视频| 亚洲天堂在线免费| 日韩一区二区三区四区久久久精品有吗 | 午夜操逼网| 国产第一精品| 熟妇高潮| 波多野结衣一二三区| 1插菊花网| jt33免费观看高清| 波多野结衣AV在线观看| 水多多成人免费A片| 精品少妇无码视频| 精品人妻一区二区三区日产乱码| 日韩aaaa| 在线观看黄a| 欧美成人看片| 肉片无遮挡一区二区三区免费观看视频 | 大荫蒂hd大荫蒂视频| AV无码电影| 黄色二区| 操大香蕉| 99婷婷| 国产午夜福利电影| 综合色国产精品欧美在线| 国产精品18在线| 国产喷潮| 大香蕉在线视频观看|