国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

從零復現Llama3代碼庫爆火,大神Kapathy一鍵三連,GitHub狂攬2k+ 精華

發布于 2024-5-21 09:23
瀏覽
0收藏

讓大神Andrej Karpathy一鍵三連??(點贊+轉發+評論),一個教你從頭開始實現Llama3的代碼庫爆火。


X上轉贊收藏量超6.8k,GitHub攬星2k+。

從零復現Llama3代碼庫爆火,大神Kapathy一鍵三連,GitHub狂攬2k+-AI.x社區

火就火在,它教你從頭用Meta開源的權重進行推理,詳細解釋和展開了注意力機制中多個頭的矩陣乘法、位置編碼以及所有中間層


換句話說,他解釋了每行代碼都在干啥。

從零復現Llama3代碼庫爆火,大神Kapathy一鍵三連,GitHub狂攬2k+-AI.x社區

Karpathy看后直呼打造者Nishant Aklecha(后文暫稱“納哥”)是個有品的人:

從零復現Llama3代碼庫爆火,大神Kapathy一鍵三連,GitHub狂攬2k+-AI.x社區

完全展開后,比起模塊相互嵌套和調用時,更容易理解每一步具體在做什么。

從零復現Llama3代碼庫爆火,大神Kapathy一鍵三連,GitHub狂攬2k+-AI.x社區

網友們對其也是贊不絕口,紛紛致敬:

從零復現Llama3代碼庫爆火,大神Kapathy一鍵三連,GitHub狂攬2k+-AI.x社區


從零復現Llama3代碼庫爆火,大神Kapathy一鍵三連,GitHub狂攬2k+-AI.x社區


從零復現Llama3代碼庫爆火,大神Kapathy一鍵三連,GitHub狂攬2k+-AI.x社區

話不多說,一起來看納哥是如何手把手教的。


(量子位在不改變原意的基礎上,進行了編譯整理)

從頭實現llama3

在運行納哥提供的文件前,大伙兒需要預先下載Meta官方提供的Llama3模型權重。

從零復現Llama3代碼庫爆火,大神Kapathy一鍵三連,GitHub狂攬2k+-AI.x社區

納哥表示自己沒搞分詞器,推薦用Karpathy的現成簡潔版BPE代碼。

從零復現Llama3代碼庫爆火,大神Kapathy一鍵三連,GitHub狂攬2k+-AI.x社區

從零復現Llama3代碼庫爆火,大神Kapathy一鍵三連,GitHub狂攬2k+-AI.x社區

PS:

“字節級(byte-level)”BPE算法,在UTF-8編碼的字符串上運行,廣泛應用于大模型分詞。Karpathy提供的這個代碼庫包含兩個分詞器,都能在給定文本上訓練分詞器的詞匯表和合并規則、將文本編碼為token、將token解碼為文本。

從零復現Llama3代碼庫爆火,大神Kapathy一鍵三連,GitHub狂攬2k+-AI.x社區

讀取模型文件的方式通常取決于model classes的編寫方式以及class中變量的命名。但由于納哥是從頭開始實現Llama3,所以將逐個張量地讀取文件內容。

從零復現Llama3代碼庫爆火,大神Kapathy一鍵三連,GitHub狂攬2k+-AI.x社區

從零復現Llama3代碼庫爆火,大神Kapathy一鍵三連,GitHub狂攬2k+-AI.x社區

通過此配置可以推斷出模型的結構和參數信息,例如模型包含的Transformer層數、多頭注意力塊中的頭數,以及詞匯表的大小等細節。

從零復現Llama3代碼庫爆火,大神Kapathy一鍵三連,GitHub狂攬2k+-AI.x社區

將文本轉換為token時,納哥使用tiktoken作為分詞器。

從零復現Llama3代碼庫爆火,大神Kapathy一鍵三連,GitHub狂攬2k+-AI.x社區

從零復現Llama3代碼庫爆火,大神Kapathy一鍵三連,GitHub狂攬2k+-AI.x社區

接下來,納哥展示了在代碼中將token轉換為高維的嵌入表示。這是代碼庫中唯一使用內置神經網絡模塊的部分。


[17x1]的token矩陣變成了[17x4096]的嵌入矩陣。也就是說,每個token被轉換為一個長度為4096的嵌入向量,總共有17個這樣的嵌入向量。

從零復現Llama3代碼庫爆火,大神Kapathy一鍵三連,GitHub狂攬2k+-AI.x社區

從零復現Llama3代碼庫爆火,大神Kapathy一鍵三連,GitHub狂攬2k+-AI.x社區

然后,納哥對嵌入進行RMS歸一化。經過這一步后,嵌入的形狀不會改變,只有數值被歸一化了。納哥強調需要一個norm_eps,避免意外將RMS值設為0導致除以0的錯誤。


以下是公式:

從零復現Llama3代碼庫爆火,大神Kapathy一鍵三連,GitHub狂攬2k+-AI.x社區

從零復現Llama3代碼庫爆火,大神Kapathy一鍵三連,GitHub狂攬2k+-AI.x社區

構建Transformer的第一層,進行歸一化處理,從模型字典中訪問layer.0(即第一層)。歸一化之后,張量的形狀仍然是[17x4096],與嵌入時相同,但數值已被歸一化。

從零復現Llama3代碼庫爆火,大神Kapathy一鍵三連,GitHub狂攬2k+-AI.x社區

從零復現Llama3代碼庫爆火,大神Kapathy一鍵三連,GitHub狂攬2k+-AI.x社區

跟著納哥從頭實現注意力機制,加載Transformer第一層的注意力頭。


從模型中加載query、key、value和output向量時,它們的形狀分別是 [4096x4096]、[1024x4096]、[1024x4096] 和 [4096x4096]。


納哥表示乍一看有點奇怪,因為理想情況是每個注意力頭的q、k、v和o向量是獨立的。而代碼作者將它們捆綁在一起,是為了方便并行計算注意力頭的矩陣乘法。


把所有這些向量解包開來:

從零復現Llama3代碼庫爆火,大神Kapathy一鍵三連,GitHub狂攬2k+-AI.x社區

從零復現Llama3代碼庫爆火,大神Kapathy一鍵三連,GitHub狂攬2k+-AI.x社區

下一步,納哥將從多個注意力頭中解包query,解包后的形狀是[32x128x4096],32是Llama3中的注意力頭數量,128是query向量的大小,4096是token嵌入的大小。

從零復現Llama3代碼庫爆火,大神Kapathy一鍵三連,GitHub狂攬2k+-AI.x社區

在這里,納哥訪問了第一層第一個注意力頭的query權重矩陣,query權重矩陣的大小是[128x4096]。

從零復現Llama3代碼庫爆火,大神Kapathy一鍵三連,GitHub狂攬2k+-AI.x社區

將query權重矩陣與token嵌入相乘,獲得每個token的query向量。結果的形狀為[17x128],有17個token,每個token對應一個長度為128的query向量。

從零復現Llama3代碼庫爆火,大神Kapathy一鍵三連,GitHub狂攬2k+-AI.x社區

從零復現Llama3代碼庫爆火,大神Kapathy一鍵三連,GitHub狂攬2k+-AI.x社區

接下來需要位置編碼。


現在已經為prompt中的每個token生成了query向量,但每個單獨的query向量并不知道它在prompt中的具體位置。


例如,query:“the answer to the ultimate question of life, the universe, and everything is ”(生命、宇宙和一切的終極問題的答案是)。


在這個prompt中,使用了三次”the”,需要根據它們在prompt中的位置,使這三個”the”token的query向量有所不同(每個向量的大小為[1x128])。


通過使用RoPE(旋轉位置嵌入)來進行這些旋轉操作。

從零復現Llama3代碼庫爆火,大神Kapathy一鍵三連,GitHub狂攬2k+-AI.x社區

從零復現Llama3代碼庫爆火,大神Kapathy一鍵三連,GitHub狂攬2k+-AI.x社區

上一步中,納哥將query向量分成對,并對每一對應用一個旋轉角度偏移。


由此,得到的向量大小為 [17x64x2],這是將長度為128的query向量對每個prompt中的token分成64對。這64對中的每一對都會根據m*(theta) 進行旋轉,其中m是要旋轉query的token的位置。

從零復現Llama3代碼庫爆火,大神Kapathy一鍵三連,GitHub狂攬2k+-AI.x社區

使用復數的點積來旋轉一個向量:

從零復現Llama3代碼庫爆火,大神Kapathy一鍵三連,GitHub狂攬2k+-AI.x社區

從零復現Llama3代碼庫爆火,大神Kapathy一鍵三連,GitHub狂攬2k+-AI.x社區

從零復現Llama3代碼庫爆火,大神Kapathy一鍵三連,GitHub狂攬2k+-AI.x社區

從零復現Llama3代碼庫爆火,大神Kapathy一鍵三連,GitHub狂攬2k+-AI.x社區

現在每個token的query元素都有一個復數(角度變化向量),可以將query向量(之前分成的對)轉換為復數,然后通過點積根據位置旋轉query向量。

從零復現Llama3代碼庫爆火,大神Kapathy一鍵三連,GitHub狂攬2k+-AI.x社區

獲得旋轉后的向量后,可以通過將復數重新視為實數來得到成對的query向量。

從零復現Llama3代碼庫爆火,大神Kapathy一鍵三連,GitHub狂攬2k+-AI.x社區

旋轉后的對現在已經合并,有一個新的query向量(旋轉后的query向量),其形狀為[17x128],其中17是token的數量,128是query向量的維度。

從零復現Llama3代碼庫爆火,大神Kapathy一鍵三連,GitHub狂攬2k+-AI.x社區

key與query幾乎相同。

從零復現Llama3代碼庫爆火,大神Kapathy一鍵三連,GitHub狂攬2k+-AI.x社區

納哥表示自己不會詳細講解key的數學原理,只需要記住以下幾點:


key生成的key向量維度也是128;key的權重只有query的四分之一,這是因為key的權重在同一時間內被4個頭共享,來減少計算量;key也會旋轉添加位置信息,原因與query相同。

從零復現Llama3代碼庫爆火,大神Kapathy一鍵三連,GitHub狂攬2k+-AI.x社區

從零復現Llama3代碼庫爆火,大神Kapathy一鍵三連,GitHub狂攬2k+-AI.x社區

此時,納哥已經為每個token獲得了旋轉后的query和key。每個query和key現在的形狀都是[17x128]。

從零復現Llama3代碼庫爆火,大神Kapathy一鍵三連,GitHub狂攬2k+-AI.x社區

下一步,納哥將對query矩陣和key矩陣進行相乘操作。這樣做會生成一個評分矩陣,將每個token關聯起來。這些評分描述了每個token的query與每個token的key之間的相關性,這就是自注意力機制。


注意力評分矩陣(qk_per_token)的形狀為[17x17],其中17是prompt中的token數量。

從零復現Llama3代碼庫爆火,大神Kapathy一鍵三連,GitHub狂攬2k+-AI.x社區

從零復現Llama3代碼庫爆火,大神Kapathy一鍵三連,GitHub狂攬2k+-AI.x社區

接下來需要對query key評分進行掩碼處理。在Llama3的訓練過程中,未來token的qk評分是被掩碼的,只通過過去的token來預測token。


因此,在推理時,要將未來的token評分設置為0。

從零復現Llama3代碼庫爆火,大神Kapathy一鍵三連,GitHub狂攬2k+-AI.x社區

從零復現Llama3代碼庫爆火,大神Kapathy一鍵三連,GitHub狂攬2k+-AI.x社區

從零復現Llama3代碼庫爆火,大神Kapathy一鍵三連,GitHub狂攬2k+-AI.x社區

從零復現Llama3代碼庫爆火,大神Kapathy一鍵三連,GitHub狂攬2k+-AI.x社區

從零復現Llama3代碼庫爆火,大神Kapathy一鍵三連,GitHub狂攬2k+-AI.x社區


從零復現Llama3代碼庫爆火,大神Kapathy一鍵三連,GitHub狂攬2k+-AI.x社區

從零復現Llama3代碼庫爆火,大神Kapathy一鍵三連,GitHub狂攬2k+-AI.x社區

從零復現Llama3代碼庫爆火,大神Kapathy一鍵三連,GitHub狂攬2k+-AI.x社區

接下來是value,接近注意力機制的最后一步。

從零復現Llama3代碼庫爆火,大神Kapathy一鍵三連,GitHub狂攬2k+-AI.x社區

這些評分(0-1)用于確定每個token使用多少value矩陣。

和key一樣,value的權重也在每4個注意力頭之間共享,所以下面value權重矩陣的形狀是[8x128x4096]。

從零復現Llama3代碼庫爆火,大神Kapathy一鍵三連,GitHub狂攬2k+-AI.x社區

第一層,第一個注意力頭的value權重矩陣如下所示:

從零復現Llama3代碼庫爆火,大神Kapathy一鍵三連,GitHub狂攬2k+-AI.x社區

然后是value向量。

從零復現Llama3代碼庫爆火,大神Kapathy一鍵三連,GitHub狂攬2k+-AI.x社區

使用value權重來獲取每個token的注意力值,矩陣的大小是[17x128],其中17是prompt中的token數量,128是每個token的value向量的維度。

從零復現Llama3代碼庫爆火,大神Kapathy一鍵三連,GitHub狂攬2k+-AI.x社區

注意力:與每個token的value相乘后得到的注意力向量的形狀為[17x128]。

從零復現Llama3代碼庫爆火,大神Kapathy一鍵三連,GitHub狂攬2k+-AI.x社區

從零復現Llama3代碼庫爆火,大神Kapathy一鍵三連,GitHub狂攬2k+-AI.x社區

現在有了第一層第一個頭的注意力value。然后納哥運行一個循環,對第一層的每個頭執行與上面的計算完全相同的數學運算。

從零復現Llama3代碼庫爆火,大神Kapathy一鍵三連,GitHub狂攬2k+-AI.x社區

從零復現Llama3代碼庫爆火,大神Kapathy一鍵三連,GitHub狂攬2k+-AI.x社區

然后得到了第一層所有32個頭的qkv_attention矩陣,接下來將所有注意力得分合并成一個大小為[17x4096]的大矩陣。

從零復現Llama3代碼庫爆火,大神Kapathy一鍵三連,GitHub狂攬2k+-AI.x社區

從零復現Llama3代碼庫爆火,大神Kapathy一鍵三連,GitHub狂攬2k+-AI.x社區

對于第0層注意力機制的最后步驟,其一是將注意力得分矩陣與權重矩陣相乘。

從零復現Llama3代碼庫爆火,大神Kapathy一鍵三連,GitHub狂攬2k+-AI.x社區

從零復現Llama3代碼庫爆火,大神Kapathy一鍵三連,GitHub狂攬2k+-AI.x社區

這是一個簡單的線性層,所以只需進行矩陣乘法。

從零復現Llama3代碼庫爆火,大神Kapathy一鍵三連,GitHub狂攬2k+-AI.x社區

從零復現Llama3代碼庫爆火,大神Kapathy一鍵三連,GitHub狂攬2k+-AI.x社區

現在得到了注意力機制后的嵌入value變化,應該被添加到原始的token嵌入中。

從零復現Llama3代碼庫爆火,大神Kapathy一鍵三連,GitHub狂攬2k+-AI.x社區

對嵌入增量進行歸一化處理,然后通過嵌入增量運行一個前饋神經網絡。

從零復現Llama3代碼庫爆火,大神Kapathy一鍵三連,GitHub狂攬2k+-AI.x社區

從零復現Llama3代碼庫爆火,大神Kapathy一鍵三連,GitHub狂攬2k+-AI.x社區

在Llama3中,加載前饋權重并實現前饋網絡。使用了一種名為SwiGLU的前饋網絡,這種網絡結構在模型需要的時候,能夠有效地增加非線性。

從零復現Llama3代碼庫爆火,大神Kapathy一鍵三連,GitHub狂攬2k+-AI.x社區

從零復現Llama3代碼庫爆火,大神Kapathy一鍵三連,GitHub狂攬2k+-AI.x社區

現在完成了第一層之后每個token的新嵌入。現在只剩下31層了,只需通過一個循環來完成。


納哥表示可以將這個編輯后的嵌入想象成包含了第一層中所有查詢信息的嵌入。隨著層數的增加,每一層都會對輸入的信息進行越來越復雜的處理,直到最終得到一個能夠全面了解下一個需要預測的token的嵌入。


從零復現Llama3代碼庫爆火,大神Kapathy一鍵三連,GitHub狂攬2k+-AI.x社區

之前做的所有事情,對每一層都重復一次。

從零復現Llama3代碼庫爆火,大神Kapathy一鍵三連,GitHub狂攬2k+-AI.x社區

從零復現Llama3代碼庫爆火,大神Kapathy一鍵三連,GitHub狂攬2k+-AI.x社區

然后得到了最終的嵌入,這是模型對下一個token的最優預測。這個嵌入的形狀與常規的token嵌入相同,為[17x4096],其中17是token的數量,4096是嵌入的維度。

從零復現Llama3代碼庫爆火,大神Kapathy一鍵三連,GitHub狂攬2k+-AI.x社區

從零復現Llama3代碼庫爆火,大神Kapathy一鍵三連,GitHub狂攬2k+-AI.x社區

最后,將嵌入解碼成token值。

從零復現Llama3代碼庫爆火,大神Kapathy一鍵三連,GitHub狂攬2k+-AI.x社區

使用輸出解碼器將最終的嵌入轉換成一個token。

從零復現Llama3代碼庫爆火,大神Kapathy一鍵三連,GitHub狂攬2k+-AI.x社區

接下來看納哥使用最后一個token的嵌入來預測下一個value,希望預測的結果是42。


因為根據《銀河系漫游指南》一書中的說法,42是“生命、宇宙及一切的終極問題的答案”。大多數LLM在這里都會回答42,這將驗證整個代碼的正確性。

從零復現Llama3代碼庫爆火,大神Kapathy一鍵三連,GitHub狂攬2k+-AI.x社區

模型預測下一個token的編號為2983。這個編號對應數字42嗎?

從零復現Llama3代碼庫爆火,大神Kapathy一鍵三連,GitHub狂攬2k+-AI.x社區

從零復現Llama3代碼庫爆火,大神Kapathy一鍵三連,GitHub狂攬2k+-AI.x社區

從零復現Llama3代碼庫爆火,大神Kapathy一鍵三連,GitHub狂攬2k+-AI.x社區

OK,結束。

“讓研究變得更加觸手可及”

簡單介紹一下Nishant Aklecha。

從零復現Llama3代碼庫爆火,大神Kapathy一鍵三連,GitHub狂攬2k+-AI.x社區

Nishant Aklecha是構建和改進定制語言模型平臺Glaive AI的研究員,曾任職于摩根士丹利,負責訓練和微調大語言模型。

從零復現Llama3代碼庫爆火,大神Kapathy一鍵三連,GitHub狂攬2k+-AI.x社區

此外,他還和朋友一同創立了一個研究實驗室,名為A10(AAAAAAAAAA)。

從零復現Llama3代碼庫爆火,大神Kapathy一鍵三連,GitHub狂攬2k+-AI.x社區

他們的目標可以總結成一句話:讓研究變得更加觸手可及。

從零復現Llama3代碼庫爆火,大神Kapathy一鍵三連,GitHub狂攬2k+-AI.x社區

除了放出這個代碼庫,Nishant Aklecha可謂好人做到底。


網友想更好地理解這個代碼庫的內容,Nishant直接一個YouTube視頻甩了過來:

從零復現Llama3代碼庫爆火,大神Kapathy一鍵三連,GitHub狂攬2k+-AI.x社區

之前Nishant Aklecha還曾寫過一篇Blog,詳解了潛在一致性模型(LCM),同樣收獲了不少好評。

從零復現Llama3代碼庫爆火,大神Kapathy一鍵三連,GitHub狂攬2k+-AI.x社區

啥也不說了,感興趣的家人們趕緊碼住吧。


GitHub鏈接:https://github.com/naklecha/llama3-from-scratch


本文轉自 量子位 ,作者:量子位


原文鏈接:??https://mp.weixin.qq.com/s/z2lvKwZYSzi_35YOeVWWjw??

收藏
回復
舉報
回復
相關推薦
99国产精品久久| 欧美日韩精品不卡| 亚洲人和日本人hd| 91精品久久久久久久久久久久久| 欧美久久成人| 男女裸体影院高潮| 亚洲精品日产精品乱码不卡| 天堂美国久久| 国新精品乱码一区二区三区18| 日本不卡在线视频| 97视频在线播放| 精品91在线| 日本精品久久电影| av日韩在线免费观看| 九九综合九九综合| 欧美男人天堂| 高清欧美电影在线| 尤物精品在线| 另类小说第一页| 91日韩一区二区三区| 日本成人免费| 91女人视频在线观看| 在线观看免费观看在线91| 日韩福利在线播放| 日韩av久操| 中文精品无码中文字幕无码专区| 亚洲成人精品一区二区| 久草一本av| 精品视频久久久久久| 国产中文字幕一区二区三区| 欧美精品在线免费播放| 精品乱码一区二区三区四区| 成人免费视频在线观看超级碰| 国产精品一区二区久久精品爱涩| 佐山爱痴汉视频一区二区三区 | 黄网站app在线观看下载视频大全官网 | 九九九在线观看视频| 69久久夜色精品国产69蝌蚪网| 国产精品一区二区三区av| 国产一区二区在线网站 | 国产精品视频一区国模私拍| 狠狠色综合播放一区二区| 欧美日韩一区二区三区在线视频 | 日韩av中文字幕在线| 亚洲小说图片视频| 日韩一级片一区二区| 日韩欧美中文第一页| 成人线上播放| 中文字幕久精品免| 欧美日韩高清一区二区不卡| 亚洲影院天堂中文av色| 毛片在线播放视频| 亚洲成人精品久久| 操人在线观看| 成人资源av| 亚洲综合999| 日韩欧美一级| 国产一区二区四区| 亚洲成人a**站| 亚洲国产精品第一区二区| 91久久国产综合久久蜜月精品| 久久久三级国产网站| 欧美午夜aaaaaa免费视频| 亚洲精品美女在线| 99亚洲一区二区| 亚洲国产资源| 日韩精品一区二区三区在线观看| 亚洲理论电影| 超碰av在线免费观看| 国产一区二区免费| 国产精品一卡二| 里番在线播放| 日韩久久不卡| 日韩欧美国产高清| av不卡免费看| 欧美成人精品一区二区男人看| 日韩视频免费观看高清完整版| 欧美激情国产在线| julia中文字幕久久亚洲蜜臀| 色欧美88888久久久久久影院| 日韩美女国产精品| 国产日韩一区欧美| 一本久道久久综合中文字幕| 欧美亚洲在线日韩| 色女孩综合网| 欧美成人一区二区三区片免费 | 伊人男人综合视频网| 久久1电影院| www.超碰com| 欧美日韩精品一区二区三区四区| av中字幕久久| 在线视频精品一区| 亚洲成av人片在线观看香蕉| 久久蜜桃资源一区二区老牛| 久操视频在线播放| 麻豆成人av| 亚洲大胆美女视频| 国产精品99久久久久久似苏梦涵| 国产精品粉嫩av| 68精品久久久久久欧美| 日韩精品第二页| 亚洲欧美在线观看| 外国成人在线视频| 在线观看免费毛片| 加勒比在线一区二区三区观看| 欧美日本视频在线| 久久精品国产99国产精品| 区一区二日本| 亚洲一区二区三区毛片| 国产麻豆精品95视频| 日韩高清不卡| 免费观看成人在线视频| 国产成人精品电影| 在线观看日产精品| 精品一区二区三区在线播放视频| 最近中文字幕mv2018在线高清| 国产精品成人播放| 欧美在线不卡视频| 伦理一区二区| 在线影视一区| 久久国产精品久久精品国产| 久久中文娱乐网| 国产精品va在线观看视色| 日韩久久精品一区二区三区| 亚洲欧美三级在线| 欧美国产国产综合| 女人色偷偷aa久久天堂| ****av在线网毛片| www.这里只有精品| 国产一区二区久久久| 亚洲女人初尝黑人巨大| 成人aaaa免费全部观看| av中文字幕在线观看| 日本中文字幕在线视频观看| 午夜精品一区二区三区在线视频| 丁香五六月婷婷久久激情| 久久精品官网| 国产电影一区二区| 香蕉网站在线| 国产对白在线播放| 日本伊人精品一区二区三区介绍| 欧美精品三级日韩久久| 91丨九色丨黑人外教| 在线免费观看日本欧美爱情大片| 日韩一级理论片| 粉嫩av一区二区三区免费观看 | 日本一二三区视频在线| 91黄色激情网站| 国产99精品视频| 无需播放器亚洲| 成人综合影院| 日本不卡一区二区三区高清视频| 综合色中文字幕| 欧美日韩精品电影| 性人久久久久| 直接在线观看的三级网址| 日韩激情视频网站| 在线精品一区| 狠狠色伊人亚洲综合成人| 宅男噜噜噜66国产精品免费| 在线观看麻豆视频| 国产成人免费av在线| 亚洲国产精品va在线| 一本—道久久a久久精品蜜桃| 粉嫩一区二区三区在线观看| 久久久久亚洲| 伊人久久五月天| 精品国产一区二区三区成人影院| 精品在线播放免费| 亚洲国产成人一区| 91精品入口蜜桃| 久久99精品一区二区三区| 国产成人精品三级高清久久91| 波多一区二区| 日韩av资源| 中文字幕2019第三页| 300部国产真实乱| 国产综合 伊人色| 国产成人精品视频| 麻豆国产va免费精品高清在线| 亚洲国产高清视频| 超碰91在线观看| 自拍偷自拍亚洲精品播放| 欧日韩不卡在线视频| 91短视频版在线观看www免费| 在线观看91视频| 国产一区二区片| 精品网站在线| 久久一区视频| 欧美在线免费视频| 日本私人网站在线观看| 欧美日韩有码| 精品播放一区二区| 北条麻妃一区二区三区在线观看| 日韩国产在线一区| 91日本视频在线| 日本午夜在线亚洲.国产| 日韩中文字幕精品| 亚洲美女在线视频| 亚洲精品久久久久久国产精华液|