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

LLM實踐系列-詳談Tokenizer訓練細節

發布于 2024-10-15 13:42
瀏覽
0收藏

經過了數據收集、篩選、去重,馬上就可以開始訓練實驗了。但是在實驗之前,我們還需要先獲取一個語言模型的基石:分詞器(Tokenizer)。Tokenizer 的作用是對一條文本數據進行切分、詞表映射,得到這條文本的token序列。

用開源 Tokenizer 還是自己訓練

Tokenizer可以自己訓練,也可以從目前開源的模型中扒一個來用,用開源Tokenizer有幾個點需要著重關注:

  • 壓縮率:壓縮率決定了文本向量化后的長度,壓縮率越高,向量后數據越短,訓練和推理效率越高,但是對訓練數據的數量要求也越大,主流的tokenizer對漢字的壓縮率都在1.5-1.6之間,也就是1.5-1.6個漢字劃分為一個token。
  • token覆蓋率:token覆蓋率不用糾結細節,只需要關注是否有你的目標語種的token,比如llama的tokenizer中文就很少,相應地中文上壓縮率就比較低,token向字節流的退化率比較高,也一定程度的反應了中文訓練數據不多。
  • 預留token數量:預留token也叫特殊token,一般寫作reserved_token、unused_token,paded_token,都是一個意思。這些token是指不會出現在自然語料中,僅保留為后續post train階段的一些特殊用途使用。比如任務隔離、角色隔離、function call的特殊指令、agent特殊指令等等。預留token最好足夠,100-1000為佳。如果下載的tokenizer預留token不夠,可以手動添加。
  • 詞表大小:目前開源的tokenizer詞表大小一般在8萬或15萬左右。詞表越大,壓縮率一般也越高,同時模型的embedding層和logits層也會更大,對顯存資源敏感的需要注意一下。

有開源tokenizer,訓練自己的tokenizer意義何在?用自己的數據訓練的 tokenizer,在同詞表大小的情況下,會比開源tokenizer有更高的壓縮率(也不會高太多),可以一定程度降低訓練和推理成本。另外更主觀一點的原因是,訓tokenizer是個很基礎的工作,訓不訓一定程度上反映了團隊的技術棧是否全面。還有一點需要注意的是,不同壓縮率的tokenizer訓練的模型loss可能有差別,但是性能不會有太大差別。

經典的分詞器有WordPiece 、subword-nmt、Unigram等等,但是這些并不是本文的重點,本文主要說目前最流行的兩種tokenizer:BPE和BBPE。

BPE(Byte Pair Encoding)

BPE是目前大模型主流的兩種分詞法之一,訓練過程總結成一句話就是:迭代合并當前最高頻的token對,直到到達預設詞表大小上限。舉個具體的例子來說,假設我要訓練一個詞表大小是12的tokenizer,訓練語料就是下面這句話:

“海水潮潮潮潮潮潮落,浮云長長長長長長長消”

1、 這句話首先會按字拆分成:海 水 潮 潮 潮 潮 潮 潮 落 , 浮 云 長 長 長 長 長 長 長 消。

我沒數錯的話算上逗號應該是總共有9個不重復的字。這些字會被當作初始token,加入詞表。現在我們離目標詞表大小還差12-9=3個token,下面開始迭代合并。

2、 統計當前已經加入詞表的所有token兩兩組合在訓練語料中出現的次數。

這里有兩點注意,首先是“當前”,也就是說每次迭代加入新token后,下一次統計兩兩組合要算上這個新token。其次是“所有token兩兩組合”,也就是既要統計A token與B token的組合,也要統計A token與自身的組合。比如上面這個句子,我們要統計“海水”、“水潮”、“潮潮”、”潮落“....這些所有兩兩組合出現的次數。

3、 取兩兩組合中出現次數最高的那一個,作為新token加入詞表,同時記錄下這個token的合成路徑。

比如上面“潮潮”和“長長”是出現次數最高的組合,都出現了5次,那么我們取更早出現的“潮潮”作為本次要加入詞表的新token,同時記錄下”潮“+”潮“=”潮潮“。現在詞表大小為10。

4、 如果詞表沒有達到設定的上限12,那么就迭代執行2-3步。

再一次統計兩兩組合出現次數,這一次最多的就是剛才并列第一的“長長”。當然也不要忘記上一步剛加入的“潮潮”這個token,他可以和前面的token組成“水潮潮”,也可以和后面的token組成“潮潮潮”,不過次數都不如“長長”。所以這一次加入詞表的是“長長”。

再迭代一次,再統計組合,此時次數最多的是“潮潮”+“潮” 組成的“潮潮潮”,以及“長長”+“長”組成的“長長長”,分別出現4次。按照之前的原則,取次數最多且更靠前的“潮潮潮”加入詞表,此時詞表大小為12,訓練停止,我們已經得到了大小為12,在“海水潮潮潮潮潮潮落,浮云長長長長長長長消”上訓練的分詞器。

BPE的訓練過程還是很簡單很好理解的,但是還是有一些需要注意的地方。上面的解釋中有兩個我刻意嚴謹表達的點,一個是「取次數最多且更靠前的“潮潮潮”加入詞表」,另一個是「“潮潮”+“潮” 組成的“潮潮潮”,以及“長長”+“長”組成的“長長長”」。前者想說明token加入詞表的順序是有先后的,是有優先級的,后者說明token的合成路徑方式需要嚴格遵循,改變詞表可能導致錯誤的合成路徑。

特意強調這個是因為我看到一些改詞表的開源工作其實是有問題的。舉個我看到的實際的例子,有一個地名”烏魯木齊“,假設詞表中包含”烏魯“和”魯木“兩個token。首先說可不可能出現這倆token?完全可能,如果我的訓練語料是下面這樣的就會出現這兩個token:

烏魯
烏魯
魯木
魯木
齊

這個語料訓出來的tokenizer詞表大概率是這樣的:「烏」「魯」「木」「齊」「烏魯」「魯木」

如果詞表里烏魯這個token在前,分詞結果就是 「烏魯」「 木」「 齊」,如果是魯木這個token在前,分詞結果就是「烏」「魯木」「齊」。分詞結果是不一樣的。如果拿到一個訓練過的模型,改一改詞表順序,肯能會導致分詞結果的不一致,模型可能完全沒有見過這樣的token,導致一些無法理解的怪異生成結果。

再說合成路徑,如果我的詞表是 「烏」「魯」「木」「齊」「烏魯」「木齊」,后來擴增了詞表,增加了「烏魯」+「木」=「烏魯木」,和「烏魯木」+「齊」=「烏魯木齊」兩個token,「烏魯木齊」這個token是合成不出來的,因為「木齊」在「烏魯木」之前,所以優先合成「木齊」,而不是「烏魯木」,那么沒有「烏魯木」,自然無法合成「烏魯木齊」。如果要進行詞表刪減、擴增,或者兩個tokenizer進行合并,尤其要注意這個問題。

BBPE(Byte-Level Byte Pair Encoding)

BBPE和BPE大體上是一樣的,區別在于BPE把文本看作字符集合,第一步是按照字符切分獲得初始token,BBPE把文本看作是二進制編碼,按照8bit切分獲得原始token。比如還是上面那句話,會先轉成utf8編碼:

“海水潮潮潮潮潮潮落,浮云長長長長長長長消” =>

"\xe6\xb5\xb7\xe6\xb0\xb4\xe6\xbd\xae\xe6\xbd\xae\xe6\xbd\xae\xe6\xbd\xae\xe6\xbd\xae\xe6\xbd\xae\xe8\x90\xbd\x2c..."

然后取每一個2位16進制數作為初始token,也就是「\xe6」「\xb5」「\xb7」...這些。剩下的統計兩兩組合、合成路徑都和BPE是一樣的,不過都是在二進制層面去合并。我們知道utf8是變長編碼,ascii字符在utf8中的編碼長度是1,也就是剛好一個2位16進制數。比如我上面句子里的逗號對應的utf8編碼是“\x2c”。所以ascii字符一定會作為一個基礎字符加入詞表,而且也不會被拆分,所以英文單詞、數字這種ascii字符組成的詞,一定是整數個token表示的。但是漢字的編碼長度大部分是3,比如“海”的編碼是“\xe6\xb5\xb7”,這就導致漢字在bbpe的詞表中并不一定是1個、2個字這種整數個token組成。可能是3/2個token表示一個漢字。

BBPE與BPE的對比

從流行度來說,BPE是去年、前年大家普遍使用的方法,而BBPE是去年底到今年的模型主要使用的方法。GPT2使用的tokenizer也是BBPE。

從編碼的角度,有一些文章說BBPE對比BPE的優勢是不存在OOV問題,字符只要能轉utf8,就一定能被BBPE表示,但是實際執行起來并不是,因為大部分BPE的庫也支持bytes退化,遇到超出詞表范圍的字符,也會退化到二進制表示。這么看下來BBPE剩下的優點就是多語種下、token切分更均勻。畢竟一個中文能占3/2個token了。

從實現的角度,BPE的tokenizer用sentencepice庫的居多,BBPE用huggingface的tokenizers庫的居多,但是sentencepice庫產出的tokenizer.model本質是一個protobuf文件,可以用protobuf庫讀出這個tokenizer原始的訓練參數,甚至帶著訓練語料的磁盤路徑,不太安全。

訓練參數

除了最基本的詞表大小外,實際訓練的tokenizer還有一些可配置關鍵參數。我比較喜歡讀google的文檔,就拿sentencepice的訓練參數來介紹了,兩個庫的可配置參數其實差不多,可以類比。

--vocab_size

tokenizer預設的詞表大小。最終模型訓練的時候,我們一般會確保embedding層的shape可以被128整除,這個一方面是為了量化考慮,一方面是為了序列并行考慮。所以可以在這一步直接設置一個能被128整除的詞表大小,也可以這里不設置,等tokenizer訓練完了加一些特殊token,補到128的倍數。另外詞表大小也決定了壓縮率。

--character_coverage

字符覆蓋率。這個表示在最一開始,初始單字token要覆蓋訓練語料中全部token的百分之多少。如果是1,表示所有token只要出現就加入初始詞表,這會導致詞表的單字token過多。一般可以設置0.9998、0.9999,表示初始單字token要覆蓋訓練集字符的99.99%

--max_sentencepiece_length

單一token最多多少個字符組成,一般設為2、4、6,8或以上就比較大了,不太推薦,可能會出現低頻超長token。

--split_digits

是否做數字的一致性切分,說白了就是數字和其他token是否可以組合成新token,還是數字必須一個字符一個token不做合并。早期一些工作認為開了對數學任務有好處,但是從我的實驗上來看,是可以打開,但不是必須。數字在自然界是均勻分布的,也就是說1、2、3還是111、222、132、863數量其實是差不多的,所以就算不開一致性切分,這些token也都應該在詞表里。只要模型訓練充分,模型是能分辨111和1 1 1是一個東西的。我一直認為不應該對語言模型的泛化抱有太樂觀的態度,它就只能說出見過的話。所以我不指望在欠訓練的模型上,依賴一致性切分提高數學能力。當然這是理想情況,如果數據集準備的不充分,不能保證所有這些數字都出現在詞表里,可以手動把0-9999添加到詞表里,這樣既保持一致性,又能提高壓縮率。說個題外話,前段時間知乎上流行討論為什么9.11>9.8,我認為就是token欠訓練,又剛好沒有泛化過來。為什么沒有泛化過來呢?因為真的有9.11大于9.8的時候。python3.11就大于python3.8

--allow_whitespace_only_pieces

允許多個空格作為一個token,一般是允許,主要是為了排版,比如python的代碼排版。當然也可以不開,手動把1-20個空格組成的token添加到詞表里。

-user_defined_symbols

這個主要就是為了配置之前說的特殊token,可以預留幾百比如<reserved_0> <reserved_1> ...,如果要手動添加數字的一致切分和連續空格token,也可以在這里加

--byte_fallback

之前說的二進制退化,讓BPE當半個BBPE用

--remove_extra_whitespaces

是否刪除多余空格,這個一般改為False,不要讓tokenizer隨便動我們的空格。

--unk_id 、--bos_id、--eos_id、--pad_id 、 --unk_piece、--bos_piece、--eos_piece、--pad_piece

指定控制字符和ID,這里面現在我們一般只用pad和eos。在訓練的時候文檔或者一個turn的末尾增加一個eos token。需要做padding補齊的時候拼pad token,也可以直接用eos token當補齊token。不過建議四個都設置上,也算是致敬一下之前的NLPer

番外篇1:tokenizer與loss

不同tokenizer的壓縮率,每個token的信息量是不同的,這就導致不同tokenizer在同一份數據下訓練出來的模型loss不一樣。假設不考慮訓練tokenizer的語料質量差異,那么tokenizer的壓縮率越高,同一個文本分詞后產生的token越少,整句話的平均loss就越高。相反壓縮率越低,一句話的loss通常也越低。但是實際推理起來,兩種tokenizer訓出來的模型效果差異不大,所以更多的還是從效率和成本的角度考慮壓縮率的取舍吧。

再引申一下,從這一點上不禁讓我們升起一個疑惑,loss能代表模型性能嗎?答案是不行。其實同loss不同tokenizer、同loss不同參數量的模型性能都不一樣。這個具體可以等寫到scaling law擬合、模型性能預測或者continue pretraining的時候再討論。

番外篇2:看一看真實的tokenizer

再拿qwen2的tokenizer舉例,qwen2的tokenizer時BBPE,重要文件有這么幾個:

LLM實踐系列-詳談Tokenizer訓練細節-AI.x社區圖片

merges.txt就是保存合成路徑的文件,里面看上去會有一些像亂碼的東西:

LLM實踐系列-詳談Tokenizer訓練細節-AI.x社區圖片

這些其實是轉義后的控制字符。前面也說了BBPE的初始token是2位16進制數。如果直接存這些二進制字符,可能被翻譯成ascii碼中的控制字符,比如換行制表符之類的,所以這里坐了下轉義。

vocab.json是每次token的映射id,tokenizer_config.json里面可以配置一下控制字符。tokenizer訓練完之后如果想加特殊字符,也可以在這里配置。

番外篇3:詞表增減問題

詞表的修改最好發生在模型訓練之前,包括tokenizer合并、添加特殊token、自定義token等等,這其中還尤其要注意增加詞表。語言模型訓練的時候,計算logits時是hidden_states和所有token的logits_weight的乘積,softmax也是所有token的歸一,刪除詞表相當于減小歸一化的分母,會導致最后sample時的概率發生變化。添加token則跟要小心,如果添加的token未經訓練,可能導致歸一化后亂掉。如果添加的token初始化的不好,比如正常token是1e-2,新增加的token是1e-23量級,rms norm會回傳給embedding層一個大概在1e21量級的梯度。這個時候如果你開了梯度裁切,在求梯度的模長的時候1e21求平方直接變成inf,再歸一化其他token,所有token梯度都會變成0,這樣你不太看得出來報錯,但是embedding實際一點沒訓。

再有就是前文強調過的,注意處理合成路徑和token順序的沖突問題。

本文轉載自 ??NLP工作站??,作者: 真中合歡????

收藏
回復
舉報
回復
相關推薦
97caopron在线视频| 国产精品国产精品国产专区| 女厕嘘嘘一区二区在线播放 | 中文字幕免费高| 精品国产无码一区二区| 国产精品一卡| 久久综合电影一区| 可以直接看的无码av| 欧美成人精品一区二区综合免费| 午夜影院在线视频| 另类成人小视频在线| 国内精久久久久久久久久人| 精品无码在线观看| 国产高清亚洲| 在线看国产一区二区| 久久香蕉视频网站| 成全电影播放在线观看国语| 成人在线视频一区二区| 国产精品综合不卡av| 九九热国产视频| 99re6这里只有精品| 日韩成人中文字幕在线观看| 中文字幕第22页| 日本精品网站| 欧美日韩在线第一页| 好吊色这里只有精品| 福利在线观看| 久久综合久久综合久久综合| 高清国产一区| 99精品在线视频观看| 青青草国产成人av片免费| 国自在线精品视频| 久久精品一区二区三| 日韩一区二区在线免费| 亚洲男人av电影| 亚洲中文字幕一区| 91在线一区| 日韩一级免费观看| 中文字幕一区二区在线观看视频 | 色综合天天在线| 成人在线国产视频| yellow91字幕网在线| 国产精品久久久爽爽爽麻豆色哟哟| 美女被啪啪一区二区| 少妇av在线播放| 成人听书哪个软件好| 国产91精品一区二区绿帽| 国产成人精品无码高潮| 狠狠色丁香婷婷综合久久片| 成人黄色在线观看| 97人妻精品一区二区三区动漫| 日韩电影在线免费看| 国产精品91在线观看| 中文字幕精品视频在线观看| 视频在线在亚洲| 国产精品久久久久久久久久三级 | 狠狠色伊人亚洲综合成人| 国产乱肥老妇国产一区二| 中文字幕a级片| 激情另类小说区图片区视频区| 国产一区二区香蕉| 999av视频| 国产成人免费高清| 国产一区二区三区四区hd| 少妇高潮一区二区三区99小说| 成人教育av在线| 99久久精品无码一区二区毛片| 五月天中文字幕| 狠狠色丁香婷婷综合| 99国产盗摄| 婷婷视频在线观看| 久久久久久毛片| 伊人久久av导航| 丁香花视频在线观看| 五月天激情综合| 天天碰免费视频| 欧美专区视频| 亚洲精品av在线| 日韩欧美黄色网址| 欧美激情自拍| 欧美一级bbbbb性bbbb喷潮片| 免费av中文字幕| 国产在线观看一区二区| 国产女人水真多18毛片18精品| 香蕉av一区二区三区| 国产清纯在线一区二区www| 日韩精品一区二区三区四区五区 | 少妇性l交大片7724com| 红杏视频成人| 最新国产成人av网站网址麻豆| 久久久久99精品成人片试看| 国产日韩高清一区二区三区在线| 国产精品久久久久免费a∨大胸| 国产精品热久久| aaa欧美色吧激情视频| 亚洲在线色站| 日韩深夜视频| 日韩写真欧美这视频| 亚洲一区二区三区蜜桃| 9191国语精品高清在线| 538国产精品一区二区在线| 日本三级一区二区三区| 东方欧美亚洲色图在线| 亚洲欧美国产不卡| 久久青草伊人| 日韩一区二区三区四区| 中字幕一区二区三区乱码| 欧美精品三级| 国产精品网红福利| 香蕉久久一区二区三区| 一区二区三区日本| 亚洲黄色a v| 欧美黄色录像| 久久97精品久久久久久久不卡| 日韩欧美国产另类| caoporm超碰国产精品| 国产精品av免费| 欧美日韩在线精品一区二区三区激情综合| 精品少妇一区二区三区在线视频| 91无套直看片红桃在线观看| 亚洲永久字幕| 国产精品免费视频一区二区| 成人免费观看视频大全| 欧美日韩一区二区在线视频| 成人免费av片| 99精品视频免费观看| 99re视频| 在线三级电影| 欧美男生操女生| 91激情视频在线观看| 亚洲在线网站| 久久人人九九| 桃色av一区二区| 亚洲国产婷婷香蕉久久久久久| 中文字幕av播放| 日av在线不卡| 亚洲图片小说在线| 久久久人成影片一区二区三区在哪下载 | 亚洲黄色免费电影| 看看黄色一级片| 97精品一区二区| 国产美女扒开尿口久久久| a√在线中文网新版址在线| 色综合中文字幕| 国产熟妇久久777777| 媚黑女一区二区| 奇米精品在线| 国产极品久久久久久久久波多结野| 亚洲美女又黄又爽在线观看| 天天干天天干天天干天天| 91视频com| 日韩有码免费视频| 成人精品中文字幕| 国产精品视频内| 国产天堂在线| 欧美日本免费一区二区三区| 一区二区国产精品精华液| 国产在线精品不卡| a级黄色片免费| 精品伊人久久久| 奇米四色中文综合久久| 91在线视频| 欧美精品亚洲一区二区在线播放| 久久黄色小视频| 99久久99久久久精品齐齐| 国产一区亚洲二区三区| 成人在线一区| 99re视频| 性欧美hd调教| 久久精品中文字幕电影| 成人午夜免费福利| 色激情天天射综合网| 成人性视频免费看| 国产白丝网站精品污在线入口| 无码人妻少妇伦在线电影| 欧美一区二区三区红桃小说| 国产精品aaa| h片在线免费观看| 亚洲国产美女精品久久久久∴| 成人h动漫精品一区二区下载| 最新热久久免费视频| 亚洲一级Av无码毛片久久精品| 西西裸体人体做爰大胆久久久| 涩涩涩999| 一区二区三区在线资源| 日本不卡高字幕在线2019| 欧美日韩在线资源| 亚洲第一在线视频| 亚洲免费视频二区| 亚洲一区在线看| 久久久久无码精品国产sm果冻| 国精产品一区一区三区mba视频| 大陆av在线播放| 久久国产电影| 激情欧美一区二区三区中文字幕| 日韩高清不卡| 久久久亚洲精品视频| 97电影在线看视频| 精品国产凹凸成av人网站| 夜夜狠狠擅视频| 欧美性猛交xxxx乱大交极品| 精品亚洲乱码一区二区 | 717成人午夜免费福利电影| 日本道在线观看| 亚洲精品视频在线观看免费| 天堂久久精品忘忧草| 成人免费视频网站在线观看| 亚洲欧美自拍另类日韩| 99精品热6080yy久久| 欧洲xxxxx| 日韩精品免费| 乱色588欧美| youjizz欧美| 国产精品专区第二| 欧美色片在线观看| 91精品国产91久久久久| 午夜羞羞小视频在线观看| 中文字幕综合在线| 国产高清在线看| 亚洲精品天天看| 日本黄色一区二区三区| 91精品国产综合久久久久| 国产日韩在线免费观看| 日韩欧美中文在线| 欧美一二三区视频| 亚洲最新视频在线播放| 日本精品在线免费观看| 中文子幕无线码一区tr| 能免费看av的网站| 久久―日本道色综合久久| 97精品人妻一区二区三区蜜桃| 国产一区视频网站| 国产一级免费大片| 久久91精品国产91久久小草| 婷婷丁香激情网| 久久青草久久| 狠狠爱免费视频| 国产美女精品| 成年人黄色片视频| 美女久久一区| 亚洲天堂av线| 美女一区二区久久| 香蕉视频999| 狠狠色狠狠色综合系列| 青娱乐国产精品视频| 国内成人精品2018免费看| 欧美熟妇另类久久久久久多毛| 国产综合久久久久久久久久久久| 91香蕉视频在线观看视频| 国产一区二区三区久久久| 日韩欧美中文在线视频| 国产99久久久久| 艳妇乳肉亭妇荡乳av| 91社区在线播放| 午夜影院黄色片| 亚洲天堂网中文字| 青青草原免费观看| 亚洲国产综合在线| 欧美亚洲精品天堂| 欧美无砖专区一中文字| 一级片免费观看视频| 欧美一卡二卡在线观看| 蜜桃av噜噜一区二区三区麻豆| 欧美精品一区二区在线观看| 色播色播色播色播色播在线| 亚洲一级免费视频| 日本激情在线观看| 欧美—级a级欧美特级ar全黄| 96av在线| 国产精品狼人色视频一区| 羞羞视频在线观看一区二区| 成人在线中文字幕| 老牛精品亚洲成av人片| 日韩av电影免费播放| 欧美国产专区| 人妻有码中文字幕| 精品影视av免费| 中文字幕第九页| 国产精品午夜电影| 激情五月婷婷在线| 91福利小视频| 国产suv一区二区| 亚洲男人天堂网| av在线影院| 日韩av电影免费观看高清| 伊人国产精品| 好吊色欧美一区二区三区四区| 国产一区二区三区探花| 国产又粗又大又爽的视频| 久久精品毛片| 好吊操视频这里只有精品| 久久久久久久久久久久久女国产乱 | 久久中文字幕av| 成年人午夜视频在线观看| 日本中文字幕一区二区有限公司| 麻豆精品国产传媒| 国产欧美日韩精品a在线观看| 免费一级肉体全黄毛片| 欧美私人免费视频| 熟妇人妻av无码一区二区三区| 日韩在线观看免费网站| 天堂√8在线中文| 不卡日韩av| 99热国内精品| 激情五月开心婷婷| 岛国精品在线观看| 丰满少妇被猛烈进入一区二区| 色婷婷亚洲精品| 欧美 日韩 国产 成人 在线| 久久精品国产成人| 女生影院久久| 国内一区在线| 欧美人成在线| 伊人色在线视频| 国产精品素人一区二区| 黄色一级视频免费看| 亚洲高清福利视频| 先锋成人av| 91九色视频在线观看| 日韩在线观看| 天天碰免费视频| 国产欧美一区二区精品久导航| 亚州国产精品视频| 精品久久久久一区| 51xtv成人影院| 91精品视频免费看| 久久社区一区| 久久综合伊人77777麻豆最新章节| 99re热这里只有精品免费视频| 久久午夜无码鲁丝片午夜精品| 欧美一区二区精美| 国产激情在线视频| 91精品视频免费看| 中文字幕一区二区精品区| 亚洲高清免费在线观看| 欧美激情一区二区在线| 男人天堂av在线播放| 亚洲欧美成人精品| av综合电影网站| 秋霞毛片久久久久久久久| 亚洲一区二区伦理| 91av在线免费| 欧美丝袜第一区| 欧美精品久久久久久久久久丰满| 欧美亚州一区二区三区| 色先锋久久影院av| 无遮挡又爽又刺激的视频| 久久久99久久| 探花国产精品一区二区| 中文字幕免费精品一区| 久久精品国产福利| 一区二区日本| 国产一区在线精品| 18精品爽视频在线观看| 亚洲国产精品久久久| 手机在线观看av| 日本视频一区二区在线观看| 麻豆免费看一区二区三区| 国产美女久久久久久| 欧美成人精品二区三区99精品| 久久不射影院| 欧美一区二区综合| 久久精品国产久精国产爱| 久久精品黄色片| 亚洲成人久久久| 小黄鸭精品aⅴ导航网站入口| 亚洲综合av一区| 国产999精品久久久久久绿帽| 日韩av电影网| 国产一区二区美女视频| 精品视频成人| 精品国产免费av| 国产精品久久久久久久久图文区 | 欧美久久亚洲| 亚洲 高清 成人 动漫| 国产女主播一区| 国产黄色美女视频| 欧美尤物巨大精品爽| 色999国产精品| 精品人妻伦一二三区久| 在线一区二区视频| 少女频道在线观看免费播放电视剧| 精品视频一区二区三区四区| 蜜臀a∨国产成人精品| 青青操国产视频| 亚洲香蕉在线观看| 亚洲网址在线观看| 三级a在线观看| 亚洲成a人v欧美综合天堂| 亚洲欧美视频一区二区| 国产精品日本一区二区| 免费成人av在线播放| 日韩欧美亚洲一区二区三区| 中文字幕日韩精品在线| 国产精品毛片av| 国产成人美女视频| 欧美性猛交xxxx富婆弯腰| a级网站在线播放| 亚洲精品成人自拍| 99久精品国产|