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

Pytorch翻車記錄:單卡改多卡踩坑記!

共 9157字,需瀏覽 19分鐘

 ·

2021-01-18 17:46

↑ 點擊藍字?關(guān)注極市平臺

作者丨喲林小平
來源丨夕小瑤的賣萌屋
編輯丨極市平臺

極市導(dǎo)讀

?

本文記錄了作者嘗試單卡改多卡加速的過程中出現(xiàn)的bug記錄:一是繼承DistributedSampler的漏洞百出,二是master進程無法正常結(jié)束,作者詳細(xì)的闡述了出錯的細(xì)節(jié)以及給出了修改的方法。>>加入極市CV技術(shù)交流群,走在計算機視覺的最前沿

先說明一下背景,目前正在魔改以下這篇論文的代碼:

https://github.com/QipengGuo/GraphWriter-DGLgithub.com

由于每次完成實驗需要5個小時(baseline),自己的模型需要更久(2倍),非常不利于調(diào)參和發(fā)現(xiàn)問題,所以開始嘗試使用多卡加速。

torch.nn.DataParallel ==> 簡稱 DP

torch.nn.parallel.DistributedDataParallel ==> 簡稱DDP

一開始采用dp試圖加速,結(jié)果因為dgl的實現(xiàn)(每個batch的點都會打包進一個batch,從而不可分割),而torch.nn.DataParallel的實現(xiàn)是把一個batch切分成更小,再加上他的加速性能也不如ddp,所以我開始嘗試魔改成ddp。

另外,作者在實現(xiàn)Sampler的時候是繼承了torch.utils.data.Sampler這個類的,目的在于agenda數(shù)據(jù)集的文本長度嚴(yán)重不均衡,如下:

為了讓模型更快train完,把長度相近的文本打包成一個batch(溫馨提醒,torchtext也有相關(guān)的類 bucketiterator[1],大概形式如下:

class BucketSampler(torch.utils.data.Sampler):
def __init__(self, data_source, batch_size=32):
self.data_source = data_source
self.batch_size = batch_size

def __iter__(self):
idxs, lens, batch, middle_batch_size, long_batch_size = basesampler(self.data_source , self.batch_size)
for idx in idxs:
batch.append(idx)
mlen = max([0]+[lens[x] for x in batch])
#if (mlen<100 and len(batch) == 32) or (mlen>100 and mlen<220 and len(batch) >= 24) or (mlen>220 and len(batch)>=8) or len(batch)==32:
if (mlen<100 and len(batch) == self.batch_size) or (mlen>100 and mlen<220 and len(batch) >= middle_batch_size) or (mlen>220 and len(batch)>=long_batch_size) or len(batch)==self.batch_size:
yield batch
batch = []
if len(batch) > 0:
yield batch

def __len__(self):
return (len(self.data_source)+self.batch_size-1)//self.batch_size

這是背景。

寫bug第一步:繼承DistributedSampler的漏洞百出

我一開始理想當(dāng)然的把作者的sampler源碼crtl-cv下來,唯獨只改動了這里:

class DDPBaseBucketSampler(torch.utils.data.distributed.DistributedSampler):

隨后就發(fā)現(xiàn)了幾個問題:

  • dataloader不會發(fā)包;

  • dataloader給每個進程發(fā)的是完整的數(shù)據(jù),按武德來說,應(yīng)該是1/n的數(shù)據(jù),n為你設(shè)置的gpu數(shù)量;

然后我就開始看起了源碼[2],很快?。?/p>

 def __iter__(self) -> Iterator[T_co]:
if self.shuffle:
# deterministically shuffle based on epoch and seed
g = torch.Generator()
g.manual_seed(self.seed + self.epoch)
indices = torch.randperm(len(self.dataset), generator=g).tolist() # type: ignore
else:
indices = list(range(len(self.dataset))) # type: ignore

if not self.drop_last:
# add extra samples to make it evenly divisible
padding_size = self.total_size - len(indices)
if padding_size <= len(indices):
indices += indices[:padding_size]
else:
indices += (indices * math.ceil(padding_size / len(indices)))[:padding_size]
else:
# remove tail of data to make it evenly divisible.
indices = indices[:self.total_size]
assert len(indices) == self.total_size

# subsample
indices = indices[self.rank:self.total_size:self.num_replicas] # 這一步保證每個進程拿到的數(shù)據(jù)不同
assert len(indices) == self.num_samples

return iter(indices)

這里最關(guān)鍵的問題是是什么呢?首先在torch.utils.data.distributed.DistributedSampler里面,數(shù)據(jù)集的變量叫self.dataset而不是data_source;其次和torch.utils.data.Sampler要求你_重寫__iter__函數(shù)不同:

def __iter__(self) -> Iterator[T_co]:
raise NotImplementedError

DistributedSampler這個父類里有部分實現(xiàn),如果你沒有考慮到這部分,就自然會出現(xiàn)每個進程拿到的數(shù)據(jù)都是all的情況。

于是我重寫了我的DDPBaseBucketSampler類:

def basesampler(lens, indices, batch_size):
# the magic number comes from the author's code
t1 = []
t2 = []
t3 = []
for i, l in enumerate(lens):
if (l<100):
t1.append(indices[i])
elif (l>100 and l<220):
t2.append(indices[i])
else:
t3.append(indices[i])
datas = [t1,t2,t3]
random.shuffle(datas)
idxs = sum(datas, [])
batch = []

#為了保證不爆卡,我們給不同長度的數(shù)據(jù)上保護鎖
middle_batch_size = min(int(batch_size * 0.75) , 32)
long_batch_size = min(int(batch_size * 0.5) , 24)

return idxs, batch, middle_batch_size, long_batch_size

class DDPBaseBucketSampler(torch.utils.data.distributed.DistributedSampler):
'''
這里要注意和單GPU的sampler類同步
'''
def __init__(self, dataset, num_replicas, rank, shuffle=True, batch_size=32):
super(DDPBaseBucketSampler, self).__init__(dataset, num_replicas, rank, shuffle)
self.batch_size = batch_size

def __iter__(self):
# deterministically shuffle based on epoch
g = torch.Generator()
g.manual_seed(self.epoch)
#print('here is pytorch code and you can delete it in the /home/lzk/anaconda3/lib/python3.7/site-packages/torch/utils/data')
if self.shuffle:
indices = torch.randperm(len(self.dataset), generator=g).tolist()
else:
indices = list(range(len(self.dataset)))
# add extra samples to make it evenly divisible
indices += indices[:(self.total_size - len(indices))]
assert len(indices) == self.total_size

indices = indices[self.rank:self.total_size:self.num_replicas]
assert len(indices) == self.num_samples

# 然后我也要拿到每個數(shù)據(jù)的長度 (每個rank不同)
lens = torch.Tensor([len(x) for x in self.dataset])

idxs, batch, middle_batch_size, long_batch_size = basesampler(lens[indices], indices, self.batch_size)

for idx in idxs:
batch.append(idx)
mlen = max([0]+[lens[x] for x in batch])
#if (mlen<100 and len(batch) == 32) or (mlen>100 and mlen<220 and len(batch) >= 24) or (mlen>220 and len(batch)>=8) or len(batch)==32:
if (mlen<100 and len(batch) == self.batch_size) or (mlen>100 and mlen<220 and len(batch) >= middle_batch_size) or (mlen>220 and len(batch)>=long_batch_size) or len(batch)==self.batch_size:
yield batch
batch = []
# print('應(yīng)該出現(xiàn)2次如果是2個進程的話')
if len(batch) > 0:
yield batch

def __len__(self):
return (len(self.dataset)+self.batch_size-1)//self.batch_size

后面每個進程終于可以跑屬于自己的數(shù)據(jù)了(1/n,n=進程數(shù)量=GPU數(shù)量,單機)

緊接著問題又來了,我發(fā)現(xiàn)訓(xùn)練過程正常結(jié)束后,主進程無法退出mp.spawn()函數(shù)。

寫bug第二步,master進程無法正常結(jié)束

number workers ddp pytorch下無法正常結(jié)束。具體表現(xiàn)為,mp.spawn傳遞的函數(shù)參數(shù)可以順利運行完,但是master進程一直占著卡,不退出。一開始我懷疑是sampler函數(shù)的分發(fā)batch的機制導(dǎo)致的,什么意思呢?就是由于每個進程拿到的數(shù)據(jù)不一樣,各自進程執(zhí)行sampler類的時候,由于我規(guī)定了長度接近的文本打包在一起,所以可能master進程有一百個iter,slave只有80個,然后我馬上試了一下,很快?。?/p>

▲DDPBucketSampler(torch.utils.data.distributed.DistributedSampler)類迭代函數(shù)__iter__

▲都能夠正常打印,證明__iter__函數(shù)沒有問題

發(fā)現(xiàn)只有細(xì)微的差別,并且,程序最后都越過了這些print,應(yīng)該不會是batch數(shù)量不一致導(dǎo)致的問題。(順便指的一提的是,sampler在很早的時候就把batch打包好了)

加了摧毀進程,也于事無補

if args.is_ddp:
dist.destroy_process_group()
print('rank destroy_process_group: ' , rank)

然后只能點擊強制退出

File "train.py", line 322, in 
main(args.gpu, args)
File "/home/lzk/anaconda3/lib/python3.7/site-packages/torch/multiprocessing/spawn.py", line 171, in spawn
while not spawn_context.join():
File "/home/lzk/anaconda3/lib/python3.7/site-packages/torch/multiprocessing/spawn.py", line 77, in join
timeout=timeout,
File "/home/lzk/anaconda3/lib/python3.7/multiprocessing/connection.py", line 920, in wait
ready = selector.select(timeout)
File "/home/lzk/anaconda3/lib/python3.7/selectors.py", line 415, in select
fd_event_list = self._selector.poll(timeout)
TypeError: keyboard_interrupt_handler() takes 1 positional argument but 2 were given
^CError in atexit._run_exitfuncs:
Traceback (most recent call last):
File "/home/lzk/anaconda3/lib/python3.7/multiprocessing/popen_fork.py", line 28, in poll
pid, sts = os.waitpid(self.pid, flag)
TypeError: keyboard_interrupt_handler() takes 1 positional argument but 2 were given

代碼參考:基于Python初探Linux下的僵尸進程和孤兒進程(三)[3]、 Multiprocessing in python blocked[4]

很顯然是pytorch master進程產(chǎn)生死鎖了,變成了僵尸進程。

再探究,發(fā)現(xiàn)當(dāng)我把dataloader的number workers設(shè)為0的時候,程序可以正常結(jié)束。經(jīng)過我的注釋大法后我發(fā)現(xiàn),哪怕我把for _i , batch in enumerate(dataloader)內(nèi)的代碼全部注釋改為pass,程序還是會出現(xiàn)master無法正常結(jié)束的情況。所以問題鎖定在dataloader身上。參考:nero:PyTorch DataLoader初探[5]

另外一種想法是,mp.spawn出現(xiàn)了問題。使用此方式啟動的進程,只會執(zhí)行和 target 參數(shù)或者 run() 方法相關(guān)的代碼。Windows 平臺只能使用此方法,事實上該平臺默認(rèn)使用的也是該啟動方式。相比其他兩種方式,此方式啟動進程的效率最低。參考:Python設(shè)置進程啟動的3種方式[6]

現(xiàn)在試一下,繞開mp.spawn函數(shù),用shell腳本實現(xiàn)ddp,能不能不報錯:

python -m torch.distributed.launch --nproc_per_node=2 --nnodes=1 --node_rank=0 --master_addr="192.168.1.201" --master_port=23456 我的文件.py

參數(shù)解釋:

  • nnodes:因為是單機多卡,所以設(shè)為1,顯然node_rank 只能是0了

  • local_rank:進程在運行的時候,會利用args插入local_rank這個參數(shù)標(biāo)識進程序號

一番改動后,發(fā)現(xiàn)問題有所好轉(zhuǎn),最直觀的感受是速度快了非常多?。‖F(xiàn)在我沒有父進程的問題了,但還是在運行完所有的程序后,無法正常結(jié)束:

此時我的代碼運行到:

上面的代碼是main函數(shù),2個進程(master,salve)都可以越過barrier,其中slave順利結(jié)束,但是master卻遲遲不見蹤影:

這個時候ctrl+c終止,發(fā)現(xiàn):

順著報錯路徑去torch/distributed/launch.py, line 239找代碼:

def main():
args = parse_args()

# world size in terms of number of processes
dist_world_size = args.nproc_per_node * args.nnodes

# set PyTorch distributed related environmental variables
current_env = os.environ.copy()
current_env["MASTER_ADDR"] = args.master_addr
current_env["MASTER_PORT"] = str(args.master_port)
current_env["WORLD_SIZE"] = str(dist_world_size)

processes = []

if 'OMP_NUM_THREADS' not in os.environ and args.nproc_per_node > 1:
current_env["OMP_NUM_THREADS"] = str(1)
print("*****************************************\n"
"Setting OMP_NUM_THREADS environment variable for each process "
"to be {} in default, to avoid your system being overloaded, "
"please further tune the variable for optimal performance in "
"your application as needed. \n"
"*****************************************".format(current_env["OMP_NUM_THREADS"]))

for local_rank in range(0, args.nproc_per_node):
# each process's rank
dist_rank = args.nproc_per_node * args.node_rank + local_rank
current_env["RANK"] = str(dist_rank)
current_env["LOCAL_RANK"] = str(local_rank)

# spawn the processes
if args.use_env:
cmd = [sys.executable, "-u",
args.training_script] + args.training_script_args
else:
cmd = [sys.executable,
"-u",
args.training_script,
"--local_rank={}".format(local_rank)] + args.training_script_args

process = subprocess.Popen(cmd, env=current_env)
processes.append(process)

for process in processes:
process.wait() # 等待運行結(jié)束
if process.returncode != 0:
raise subprocess.CalledProcessError(returncode=process.returncode,
cmd=cmd)

可惡,master和dataloader到底有什么關(guān)系哇。。

這個問題終于在昨天(2020/12/22)被解決了,說來也好笑,左手是graphwriter的ddp實現(xiàn),無法正常退出,右手是minst的ddp最小例程,可以正常退出,于是我開始了刪減大法。替換了數(shù)據(jù)集,model,然后讓dataloader空轉(zhuǎn),都沒有發(fā)現(xiàn)問題,最后一步步逼近,知道我把自己的代碼這一行注釋掉以后,終于可以正常結(jié)束了:

def main(args):
############################################################
print('local_rank : ' , args.local_rank )
if args.is_ddp:
dist.init_process_group(
backend='nccl',
init_method='env://',
world_size=args.world_size,
rank=args.local_rank
)
############################################################
# torch.multiprocessing.set_sharing_strategy('file_system') 萬惡之源

os.environ["CUDA_VISIBLE_DEVICES"] = os.environ["CUDA_VISIBLE_DEVICES"].split(',')[args.local_rank]
args.device = torch.device(0)
...

為什么我當(dāng)時會加上這句話呢?因為當(dāng)時在調(diào)試number worker的時候(當(dāng)時年輕,以為越大越好,所以設(shè)置成了number workers = cpu.count()),發(fā)現(xiàn)系統(tǒng)報錯,說超出了打開文件的最大數(shù)量限制。在torch.multiprocessing的設(shè)定里,共享策略(參考pytorch中文文檔[7])默認(rèn)是File descriptor,此策略將使用文件描述符作為共享內(nèi)存句柄。當(dāng)存儲被移動到共享內(nèi)存中,一個由shm_open獲得的文件描述符被緩存。當(dāng)時,文檔還提到:

如果你的系統(tǒng)對打開的文件描述符數(shù)量有限制,并且無法提高,你應(yīng)該使用file_system策略。

所以我換成了torch.multiprocessing.set_sharing_strategy('file_system'),但是卻忽略文檔里的共享內(nèi)存泄露警告。顯然,或許這不是嚴(yán)重的問題,文檔里提到:

也有可能我所說的master進程就是這個torch_shm_manager,因為destory進程組始終無法結(jié)束0號進程:

這個BUG結(jié)束了,真開心,期待下一個BUG快快到來。


推薦閱讀



添加極市小助手微信(ID : cvmart2),備注:姓名-學(xué)校/公司-研究方向-城市(如:小極-北大-目標(biāo)檢測-深圳),即可申請加入極市目標(biāo)檢測/圖像分割/工業(yè)檢測/人臉/醫(yī)學(xué)影像/3D/SLAM/自動駕駛/超分辨率/姿態(tài)估計/ReID/GAN/圖像增強/OCR/視頻理解等技術(shù)交流群:月大咖直播分享、真實項目需求對接、求職內(nèi)推、算法競賽、干貨資訊匯總、與?10000+來自港科大、北大、清華、中科院、CMU、騰訊、百度等名校名企視覺開發(fā)者互動交流~
△長按添加極市小助手

△長按關(guān)注極市平臺,獲取最新CV干貨

覺得有用麻煩給個在看啦~??
瀏覽 371
點贊
評論
收藏
分享

手機掃一掃分享

分享
舉報
評論
圖片
表情
推薦
點贊
評論
收藏
分享

手機掃一掃分享

分享
舉報

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

国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频 国产成人午夜高潮毛片| 影音先锋日韩资源| 水蜜桃视频在线| 夜夜骚av.一区二区三区四区| 一级特黄大片录像i| 天天日天天干麻豆| 日韩无码高清视频| 日本www色| 五月婷婷丁香综合| 在线精品福利| 中文字幕在线观看视频免费| 亚洲综合激情网| 中国毛片视频| 亚洲AV秘无码一区在线| 日韩一级一级一级| 久久久大香蕉| 亚洲中文无码视频| 无码视频一区| 成人AAA片| 亚洲VA| 国产一级婬乱片AV片AAA毛片| 亚洲AV成人无码一区二区三区 | 一级A片久久久免费直播间| 亚洲人内射片又| 91无码人妻| 中文视频在线观看| 99成人国产精品视频| 国产精品乱子伦视频一区二区| 无码草逼| 大香蕉在线网站| 黄色A片免费| 五月丁香婷中文字幕| 婷婷五月激情中文字幕| 日本少妇高清视频| 大鸡巴黄色视频免费观看| 中文字幕av在线观看| 精品国产99| av无码观看| 制服丝袜大香蕉| 国产精品无码专区AV免费播放 | 黄色小视频在线观看| 免费久久久| 中文字幕在线视频免费观看| 天天免费视频| 国产乱子伦-区二区三区熟睡91 | 国产成人自拍视频在线观看| 亚洲天堂在线观看免费视频| 少妇人妻AV| 亚洲AV无码成人片在线| 激情视频在线播放| 青青操色| 黄色成年人视频在线观看| 中文亚洲精品字幕电影| 日韩毛片在线视频x| 日韩性爱一区二区| 最新国产激情视频| 亚洲精品一区二区二区的游戏情况 | 无码福利视频| 丁香花五月激情| 亚洲欧美日韩动漫| 日韩中出视频| 91网站在线播放| 激情丁香五月婷婷| av手机在线| 激情色色| 黄色动漫在线免费观看| 17c白丝喷水自慰| 青青草成人AV| 天天爽夜夜爽夜夜爽精品| 欧美一区免费| 成人福利电影| 青娱乐精品在线视频| 懂色av蜜臀av粉嫩av分| 秋霞丝鲁片一区二区三区手机在绒免| 亚洲无色| 欧美日韩成人网站| 99热这里是精品| 美日韩一区| 少婦揉BBBB揉BBBB揉| 欧美日韩性色无码免费| 97资源在线视频| 一本一道波多野结衣潮喷视频| 免费污视频在线观看| 182AV| 艹逼片| 99久久精品国产成人一区二区| 伊人色五月天| 91综合视频在线播放| 男人的天堂aa| 午夜福利视频3000| 天天躁天干天干| 亚洲中文无码电影| 成人免费视频网| 精品孕妇一区二区三区| 亚洲视频高清无码| 丰满人妻一区二区三区精品高| 欧美精品日韩在线观看| 激情视频在线免费观看| 成人中文字幕在线| 免费精品99| 欧美手机在线视频| 无码三级片在线观看| 福利二区| 欧美日韩群交| av福利在线观看| 亚洲人做受| 国产精品久久77777| 欧美日韩中文视频| 91九色蝌蚪91POR成人| 草逼视频网站| 亚洲丁香网| 久久久久久久无码| 成人性爱在线| 国产黄A片免费网站免费| 国产三级黄片| 在线二区| 国产系列每日更新| 黄色精品久久| 人妻少妇精品视频一区二区三区| 亚洲视频天天射| 亚洲色图五月天| 婷婷五月天性爱| 日韩欧美精品| 日本爽妇网| 黄频在线观看| 欧美A片视频| 五月丁香啪啪啪| 综合成人在线| 西西人体BBBBBB| 97人妻精品一区二区三区软件| 亚洲日韩国产成人精品久久| 五月天婷婷激情视频| 可以免费观看的av| 草久视频| 久热在线| 天天澡天天爽日日AV| 做爱视频网站18| 色婷婷电影网| ThePorn精品无码| 色综合久久久| 怮交小拗女小嫩苞视频| 一道本一区| 久久不卡| 色94色.欧美.setu| 色五月婷婷五月天激情| 亚洲国产视频一区| 中文字幕在线中文| 99热播| 亚洲区视频| 51福利视频| 三级电影久久麻豆| 丁香视频在线观看| 成人精品一区日本无码网站suv| 无码草逼| 日韩精品视频一区二区| 双飞少妇| 狠狠撸天天日| 亚洲精品18在线观看| 超碰九九热| 成人片毛片| 久久久久性爱| 国产精品1| 亚洲小电影| 精品国产成人| 国产天堂在线观看| 东京热黄色| 天天人人精品| 激情六月| 韩国成人无码视频| 无码热| 欧美在线色| 丁香在线视频| 91人人妻| 亚洲AAAAAA| 热久久最新地址| 91看片看婬黄大片女跟女| 在线无码不卡| 天天日天天干天天日| 国产操逼网站| 北条麻妃二区三区| 免费人成视频在线| 2025精品视频| 日本久久电影| 日本一节片在线播放| 黄一区二区| 亚洲国产成人一区二区| 春宵福利导航| 99人妻视频| 久久水密桃| 在线观看操逼| 亚洲三级在线视频| 成人无码网站| 综合欧美国产视频二区| 思思热免费视频| 国产18毛片18水多精品| 日韩精品五区| 免费一级无码婬片A片AAA毛片 | 国产一区免费视频| 国产高潮又爽又无遮挡又免费| 在线观看网址你懂的| 中文字幕亞洲高清手機版第617| 爆操约了良家| 六月婷婷在线| 黑人猛躁白人BBBBBBBBB| 四川美人搡BBw搡BBw| 一级黄色电影免费观看| 亚洲精品国产精品国自产在线| 中国无码专区| 北京熟妇搡BBBB搡BBBB电影 | 苏妲己一级婬片A片| 操逼毛片视频| 一曲二曲三曲在线观看中文字| 欧美九九九| 人人爽爽人人| 国产毛片久久久久久久| 欧美日韩中文字幕| 亚洲一区| 国产一级黄色大片| 粉嫩99精品99久久久久久夜| jizzjizzjizzjizz| 中文字幕视频在线免费观看| 中文无码一区二区三区四区| 91国产视频在线观看| 小骚逼操死你| 欧美操日本| 国产丰满| 欧美视频中文字幕| 天天操天天干欧美精品| 超碰九九热| 久久丝袜视频| 久久免费高清视频| 国产精品乱码一区二区三区| 成人电影久久久| 青青草97国产精品麻豆| 成人免看一级a一片| 久久视频免费在线观看| 中文字幕99| 日韩一级黄片| 日韩无码高清免费| 2025av天堂网| 久久天天| 久久久久亚洲AV无码成人片| 人妻精品在线| 国产福利小视频| 伊人久久久久久久久久久| 成人欧美在线观看| 国产乱婬AAAA片视频| 91视频熟女| 大香蕉大香蕉视频网| 高清无码视频在线播放| 久久草草热国产精| 99色99| 黄页网站在线免费观看| 久久天堂影院| 亚洲成人视频在线免费观看| 88av在线| 夜夜操夜夜撸| 国产秘精品一区二区三区免费 | 欧美成人猛片AAAAAAA| 黄色视频网站日本| 日韩一区在线播放| 黄片视频免费在线观看| 免费高清无码在线| 超碰人人爱国产视| www黄片| 熟女人妻在线视频| 国产精品18禁| 国产牛牛在线| 伊香蕉大综综综合| 99精品视频在线观看免费| 亚洲九九在线| 欧一美一婬一伦一区二区三区自慰, | 91欧美精品成人综合在线观看| 亚洲无码专区在线观看| 午夜成人三级| www.日韩AV| 久热精品视频在线观看| 国产一级黄色毛片| 国产永久精品| 亚洲操逼网| 亚洲一区二区免费视频| 在线播放JUY-925被丈夫上司侵犯的第7天| 国产激情免费| 大香蕉在线网站| 欧美丰满人妻免费视频人| 色婷婷AV在线观看| 喷水在线观看| 日韩欧美不卡色不卡| 毛片动态图| 五月丁香综合激情| 夜夜操夜夜撸| 日本爽妇网| 操逼不卡视频| 91丨九色丨国产在线| 51成人网站免费| 亚洲Av无码午夜国产精品色软件 | 尤物网站在线观看| 老司机无码视频| 爱爱免费视频| www.午夜| 翔田千里被躁120分钟| 中文字幕A片| 国产精品毛片久久久久久久| 日韩精品视频免费| av无码观看| 免费AV资源在线观看| 久久成人电影院| 男女操逼免费观看| 影音先锋国产av| 天天综合视频| 操逼逼片| 黄色无码网站| 久久国产香蕉| 一级黄色电影网| 怡红院麻豆| www四虎com| 午夜午夜福利理论片在线播放 | 蜜臀久久99精品久久久久酒店更新时间 | 麻豆视频一区二区三区| 无码一区二区三区免费| 国产成人福利| 亚州毛片| 国产激情综合在线| 日韩肏逼| 国产人妻中文字幕| 北条麻妃无码播放| 亚洲欧洲在线播放| 黄色网页在线免费观看| 久久99久久视频| 国产精品成人无码专区| 成人AV免费| 最新黄色av| 狠狠干亚洲视频| 欧美日韩精品一区二区三区视频播放| 国产AV大全| 黄色大片在线| 自拍超碰| 97国产精品手机| 先锋影音在线资源| 男人的天堂网页| 婷婷五月天AV| 九九九九综合| 一本大道东京热av无码| 日本欧美一区二区三区| 精产国品一区二区区别| 久久尹人| 俺来也俺去也| 国产精品综合| 99re国产| 日本男人天堂| 一本大道香蕉av久久精东影业| 粗长哭叫打桩H体育生| 性感91影院| 国产成人高清视频| 中文字幕1| 美女掰穴| 亚洲乱码一区| 乖我硬了让老子cao你小视频| 成人午夜A片免费看| 日本视频一区二区三区| 一本免费视频| 久久久亚洲熟妇熟女| 欧美日韩在线观看一区二区三区 | 亚洲色图欧美在线| 无码一区二区三区免费| 亚洲AV一二三区| 91性爱| 久久婷婷六月| 人妻无码中文久久久久专区| 成人高清无码视频| 日韩和的一区二区| 成人网站av| 99天天视频| 无码视频免费看| 91欧美精品成人综合在线观看| 大香蕉久草| 亚洲国产中文字幕| 亲孑伦XXXⅹ熟女| 三级国产| 九九人妻| 日韩一级| 婷婷精品国产一区二区三区日韩| 人妻丝袜蕾丝高跟双飞| 97人妻精品一区二区三区视频 | 肏屄免费视频| 国产91探花精品一区二区| 肏屄视频在线观看| 国产第一精品| 成人性视频Aⅴ| 韩日无码视频| 亚洲免费视频网站| 欧美日韩成人电影| 特黄AAAAAAAAA真人毛片| 国产清纯可爱美女自卫裸贷偷情| 无套免费视频欧美| 91精品国产乱码久久久| 国产婷婷久久| 91人妻人人澡人人添人人爽| 狼人亚洲伊人| 欧美日韩国产中文字幕| 视频一区在线播放| 九九九亚洲| 蜜桃av无码一区三区| 丁香婷婷色五月激情综合三级三级片欧美日韩国 | 无码视频网| 国产性爱免费视频| 婷婷五月天丁香| 欧美色图综合| 亚洲视频三区| 亚洲sese| 蜜臀久久99精品久久久久久婷婷| 人妻精品一二三| 黄色A片免费看| 日韩AV手机在线观看| 亚洲成人在线免费观看| 成人午夜精品无码区| 亚洲中文字幕人妻。| 日韩黄色电影网址| 97成人精品| 中文字幕av在线播放| 亚洲无码在线视频观看| 国产亚洲综合无码| 蜜桃久久99精品久久久酒店| 12—13女人毛片毛片| 免费一级婬片AAA片毛片A级| 国产成人免费观看| 手机在线操B视频| 中文字幕免费视频在线播放| 无码成人午夜在线影院| 日本A∨在线| 中文字幕视频一区| 午夜乱论| 伊人三级片| 黄色在线观看免费| 超碰人人爱国产视| 91精品91久久久中77777| 久久久久久av| 久久牛牛| 91无码高清视频| 五月天激情婷婷| 自拍偷拍精品视频| AV电影天堂网| 成人网站在线免费| 综合色网站| 91一级A片在线观看| 日韩在线免费| 国产精品大全| 久久99高清| 99热国产| 色婷婷一级A片AAA毛片| 特写毛茸茸BBwBBwBBw| 懂色av粉嫩AV蜜臀AV| 丰满人妻一区二区三区不卡二| 欧美多人| 懂色成人视频在线观看| 北条麻妃人妻中文无码| 久久9视频| 老太奶性BBwBBw侧所| 婷婷成人电影| 麻豆精品一区二区| 无码国精品一区二区免费蜜桃| 91无码人妻传媒tv| 免费播放婬乱男女婬视频国产| AV电影在线免费观看| 91av视频在线观看| 日韩中文在线视频| 一区二区三级片| 99色播| 亚洲精品福利视频| 午夜成人在线视频| 五月天啪啪视频| 国产免费黄色| 黄色成人网站在线| 一级电影视频去去去| 91视频熟女| 亚洲色情视频| 亚洲无码成人视频| 欧美性猛交XXXXⅩXX| 亚州一级成人片| 特级西西WWW888| JlZZJLZZ亚洲美女18| 热久精品| 亚洲中文字幕av天堂| 亚洲无码一区二区在线观看| 熟妇熟女一区二区三区| 免费观看日韩无码视频| 手机看片福利| 一本一道无码免费看视频| WWW.亚洲无码| 91在线成人视频| 精品熟女| 日韩精品三级片| 91超碰免费在线| 国产欧美一区二区三区特黄手机版 | 亚洲手机在线| 国产又大又黄| 性无码区| 裸体黄色一极大片| 精品视频在线播放| 黄片在线免费观看视频| 亚洲AV秘成人久久无码海归| 688AV秘无码一区二区| 五月婷婷色| www.国产在线| 成人久久久久一级大黄毛片中国 | 人人操人人网站| 亚洲高清无码视频| 在线永久看片免费的视频| 亚洲少妇无码| 色资源在线观看| 五月亚洲六月婷婷| 欧美成人精品欧美一级乱黄| 最近2019中文字幕mv第三季歌词 | 99热超碰在线| 伊人在线视频观看| 91亚洲精华国产精华精华液| 色色免费黄色视频| 日日干夜夜操| 一区二区国产精品| 三级片男人的天堂| 欧美色图视频在线观看| 色色网站免费| 特一级黄色片| 伊人网大香| 无码av一区二区| 国产操逼无码| 日韩99热| 99国产在线| 老司机无码视频| 成人在线不卡| 国产愉拍91九色国产愉拍| 亚洲A片视频| 日韩中文性受视频| 国产乱婬AAAA片视频| 久久亚洲av| 亚洲第一视频在线观看| 日韩中文字幕国产| 日韩七区| 人人妻人人澡人人爽久久con | 苍井空一区| 大香蕉黄色网| 欧美日韩色| 黄色福利视频在线观看| 日韩最新高清无码| 黄色网址av| 一级片免费| 亚洲v天堂| 国产V视频| 成人免费三级| 中文字幕免费av| 国产伊人自拍| 伊人网站| 天天干天天添| 亚洲精品乱码久久久久久蜜桃91| 亚洲人天堂| 无码视频在线免费播放| 六月婷婷在线| 操操插插| 最新国产激情视频| 天天干天天爽| 午夜香蕉| 99精品久久久久久无码| 精品日韩一区二区三区| 激情操逼视频| 屁屁影院CCYYCOM发布地 | 夜夜福利| 青青草原免费在线视频| 日韩乱码| 成人123区| 成人视频免费观看18| 双飞少妇| 久久亚洲欧美| 日韩操B视频| 老司机一区二区三区| 无码视频在线免费播放| 午夜私人福利| 欧美操大逼| 蜜桃久久久久久久| 亚洲天堂在线视频| 殴美老妇BBBBBBBBB| A片小视频| 51av在线| 杨贵妃一级婬片90分钟| 特级西西444www高清大胆免费看 | 欧美在线免费视频| 99久久国产热无码精品免费| 欧美一区二区三区系列电影| 性欧美丰满熟妇XXXX性久久久| 成人操B视频在线观看| 亚洲第一成人网站| 91操操| 91偷拍视频| 欧美亚洲天堂网| 三级无码在线| 中文字幕+乱码+中文字幕电视剧| 青青草精品在线视频| 影音先锋av在线资源| 日韩欧美大片在线观看| 高清无码内射视频| 日本一级片中文字幕| 亚洲图片在线播放| 美女视频一区二区三区| 91成人片| 无码一二区| 中文字幕在线观看亚洲| 五月婷婷在线播放| 人人看人人做| 免费视频一二三区| 桃色一区| 成人黄色av| 北条麻妃人妻中文字幕91影视| 久久永久免费视频| 农村三级片| 激情无码精品| 黄色av免费网站| 国产亚洲无码激情前后夹击| 激情日韩| 国产超级无码高清在线视频观看| 亚洲一区二区三区免费视频| 国产热视频| 国产一区二区久久| 亚洲成人69| 玖玖爱资源站| 亚洲va在线∨a天堂va欧美va| 麻豆传媒视频观看| 老熟女17页一91| 免费AV在线| 国产三级网站| 波多野结衣网址| 美女天天操| 亚洲高清无码视频在线观看| 国产视频中文字幕| 操碰视频| 无码黑人| 欧美青青草| 欧美级毛片一进一出| 黄色性爱小说| 国产亚洲欧美在线| 色色亚洲| 911亚洲精品| 久久爆乳一区二区三区| 国产AV三级片| 在线观看黄色电影| 一道本无吗一区| 欧美激情综合色综合啪啪五月| 91蜜桃在线| 日本乱伦视频| 五月天丁香社区| 国产第一页在线观看| 免费在线观看A片| 欧美日韩激情| 青青草国产| 日韩黄色一级片| 波多野结衣av在线| 久久久久久久久久久久久久久久久久久久| 国产在线拍揄自揄拍无码视频| 91丨人妻丨国产丨丝袜| 天堂a中文在线| 人人妻人人爽| 色色激情视频| 亚洲国产97| 亚洲激情视频网站| 噜噜噜网| 好吊妞操| 九热视频| 在线观看亚| 免费黄色成人| 日韩AV无码成人精品| 日韩夜夜操| 精品人妻午夜| 超碰免费人妻| 2018人人操| 九九操逼| 人妻少妇一区二区三区| 人人澡人人澡人人澡| 国产一页| 欧美日韩精品| 亚洲乱妇| 一道本一区二区三区免费视频| 国产和日韩中文字幕| 蜜桃网站视频| 在线免费高清无码| 中文字幕在线无码观看| 精品无码免费视频| 日韩黄色电影视频| 东京热黄色电影| 777777国产7777777| 久久午夜福利电影| 国产玖玖| 99色在线| 亚洲精品蜜桃| 日本在线免费观看| 日韩无码专区| 性欧美成人播放77777| 五月天丁香成人| 亚洲操逼图片| 91av一区二区三区| 国产精品久久免费| 91在线无码精品秘入口男同| 91成人无码看片在线观看网址| 丰满老妇高潮一级A片| 在线看v| 操逼动漫| 免费av网站| 国产精品久久久久久亚洲毛片| 亚洲国产成人精品激情在线| 欧美系列在线| 99国产综合| 狼人一区二区| 日韩精品人妻无码| 中国老熟女重囗味HDXX| 亚洲中文字幕在线免费观看视频 | 国产黄色视频在线观看免费| 中文字幕天天干| 天天操b| 操逼综合| 青娱乐极品久久| 日韩精品一区二区三免费视频| 色婷婷Av一区| 无码波多野结衣| 波多野结衣一二三区| 日韩AV无码一区二区三区 | 欧美激情一区二区| 丝袜制服中文字幕无码专区| 无码人妻精品一区二区50| 成人综合大香蕉| 亚洲二区视频| 成人午夜在线观看| 欧美极品视频| 日韩欧美成人电影| 国产日韩欧美在线观看| 日本无码久久嗯啊流水| 在线观看免费黄视频| 亚洲熟妇AV日韩熟妇在线| 内射熟妇| 成人精品水蜜桃| 91人妻无码成人精品一区二区| 成人无码www在线看免费| 怡春院中文字幕| 91美女操逼视频| 夜间福利视频| www.丁香五月| 91青青草视频| 婷婷五月天激情四射| avav无码| 久久久精品无码| 大地中文资源5页的更新内容| 亚洲AV永久无码成人| 二区在线观看| 亚洲黄色大片| 黄色大片久草| 大香蕉伊人手机在线| 亚洲ww国产a大作| 亚洲黄色成人| 亚洲AV无码电影| AV免费网站| 久久无码影视| 你懂的在线免费观看| 国产精品久久久久久无码人妻| 国产成人高清无码| 91人妻中文字幕在线精品| 五月天av在线观看| 国产欧美一区二区三区特黄手机版| 99国产免费视频| 天天日天天日天天干| 人人妻人人爽人人精品| 中文字幕精品无码亚| 乱伦99| 国产精品一区av| 热久久伊人| 最新在线中文字幕| 国产成人久久777777黄蓉| 2019狠狠操| 91av一区二区三区| AV性爱在线| 亚洲,制服,综合,中文| 伊人大香蕉视频| 亚洲AV秘无码一区在线| 国产小视频在线免费观看| 91无码人妻一区二区| 国产h在线观看| 深爱激情五月天| 成人福利免费视频| 国产成人网站免费观看| 手机av免费| 欧美亚韩一区二区三区| 成人无码视频在线| 激情自拍偷拍| 在线观看黄色网| 人人操AV| 操女人逼AV| 日韩毛片在线免费观看| yw在线播放| 久热官网| 逼特逼| 在线中文AV| 在线观看黄视频| 亲子乱一区二区三区视频| 亚洲第一成人网站| 99都是精品| 亚洲综合日韩| 成人国产AV| 色AV高清| 97在线资源| 无码日韩人妻精品久久蜜桃| 国产激情网| 综合色国产精品欧美在线| 亚洲香蕉视频网站| 在线激情网站| 97碰碰碰| 免费精品黄色网页| 免费的黄色视频在线观看| 黄色视频在线观看免费网站 | 国产精品9999久久久久仙踪林 | 日韩成人性爱网站| 日本乱伦网| 亚洲一区在线播放| 女人特级毛片18| 日本国产黄色| 日一日干一干| 91蜜臀| 大鸡巴操B视频| 另类欧美色图| 白浆av| 蝌蚪窝在线免费观看视频| 色综合成人| 玖玖成人电影| 亚洲成人在线播放| 国产精品国产三级国产专区52 | 黄色激情av| 久久精品视频一区| 五月综合久久| 开心激情播播网| 日韩一级毛| 九色PORNY国产成人| 另类老妇性BBBWBBW| 青青久视频| 国产女人18毛片水真多1| 国产91人妻| 成人手机在线视频| 日韩无码AV一区二区| 在线国产视频| 成人中文字幕无码| R四虎18| 黄片入口| 国产寡妇亲子伦一区二区三区四区 | 伊人久久在线| 国产乱子伦一区二区三区免看| 国产色吧| 懂色av粉嫩AV蜜臀AV| 日韩在线中文字幕| 91人妻网| 美女三片| 成av人片一区二区三区久久| 永久免费看片视频| 开心四房播播第四婷婷| AV无码网| 香蕉网址| 国产免费一区二区三区网站免费| 亚洲黄色在线观看视频| 久久九九国产| 国产激情欧洲在线观看一区二区三区| 国产精品被狂躁到高潮| 视频一区二区三区免费| 小日本91在线观看| 国产高清第一页| 东京热国产| 久久伊人中文字幕| 日本国产视频| AV无码网站| 啪啪啪av| 特黄特色大片BBBB| 国产黄片在线免费观看| 婷婷色大师| 99精品色| 无码成人AV在线看免费| 久久人视频| www.精品视频| 伊人久久狼人| 国产美女一区| 日本免费黄色电影| 国产91页| 天天插一插| 97伊人| 黄片网站免费在线观看| 欧美日韩中文字幕| 日韩大码无码| 99精品免费在线观看| 亚洲免费在线观看视频| 中日韩精品A片中文字幕| 亚洲中文字幕在线看| 精品无码产区一区二| 五月婷婷综合激情| 免费在线看黄网站| 粉嫩一区二区三区四区| 精品无码一区二区Av蜜桃| 97干干| 狠狠撸天天操| 亚洲在线视频免费观看| 日韩AV无码免费|