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

相同的 LLM 在「不同 GPU 上」會產(chǎn)生不同輸出?為什么? 原創(chuàng)

發(fā)布于 2024-8-9 09:44
瀏覽
0收藏

編者按: 在大語言模型(LLMs)的部署及其相關(guān)的算力擴容過程中,更換 GPU 是否也可能會對模型的輸出產(chǎn)生重大影響?這個問題的答案對于確保 LLMs 在不同硬件環(huán)境下的一致性和可靠性至關(guān)重要。

我們今天為大家?guī)淼倪@篇文章,作者的核心觀點是:即使在相同的開發(fā)環(huán)境、系統(tǒng)配置和隨機種子下,不同的 GPU 也會導致 LLMs 產(chǎn)生不同的模型輸出。

作者通過實驗證明,在使用 Nvidia Tesla T4 和 Nvidia A10G 兩種不同 GPU 的情況下,Mistral-7b-v0.1 模型對相同的輸入產(chǎn)生了不同的輸出。這種差異主要源于 GPU 在并行計算處理、硬件架構(gòu)和模型量化的影響等方面的不同。隨著提示詞長度的增加,這種不準確性會被放大,因為更長的提示詞需要進行更多計算,從而加劇了不準確性的傳播。在使用多個 GPU 擴展時,如果采用模型分片策略,理論上可能會因計算分布的不同而導致結(jié)果產(chǎn)生變化,但實踐中 PyTorch 的設(shè)計似乎保證了結(jié)果的一致性。

作者 | Anis Zakari

編譯 | 岳揚

大多數(shù)技術(shù)工程師都了解,依賴庫或依賴組件的版本不同都可能會導致系統(tǒng)行為產(chǎn)生變化。但在大語言模型(Large Language Models)領(lǐng)域,由于算力需求巨大,在訓練和推理任務中我們都極度依賴 GPU。然而,很少有人真正意識到,更換 GPU 也會對 LLMs 的輸出產(chǎn)生影響。

假如你想創(chuàng)建兩個完全一致的開發(fā)環(huán)境:

  • 可以指定依賴庫或組件的版本。
  • 可以使用 Dockerization。
  • 可以將 LLMs 的 temperature 設(shè)置為 0。
  • 可以選擇任意的隨機種子。 但是,如果使用的不是完全相同的 GPU 型號,以上所有努力都將白費。

本文將進行一次實驗來強調(diào)這一現(xiàn)象,說明差異出現(xiàn)的位置及其原因。

Note:如果對實驗過程的重現(xiàn)或具體代碼不感興趣,可以跳過本文展示代碼片段,直接閱讀“7. 為什么同樣的 inputs 和同樣的 LLMs 在兩塊不同 GPU 上生成的模型響應會有如此大的差別?”這部分內(nèi)容。即便不看前面的代碼片段,Conclusion 部分仍然有助于我們理解其中的原理。

01 為什么要寫這篇文章?

有一天,我和一些人討論為什么 OpenAI 和 Anthropic 的那些模型在設(shè)計時沒有被構(gòu)建為確定性的系統(tǒng)。我解釋說,它們可能采用了混合專家模型(Mixture of Experts, MoE)方法<sup>[1]</sup>,偶爾不會將 tokens 路由給最優(yōu)的專家模型,因為這些專家模型可能正忙于處理其他 tokens,所以可能會導致模型響應的不一致。

另一個因素可能是 OpenAI 為了提高效率而對 queries 進行了批量處理。batches size 會根據(jù)傳入的 queries 數(shù)量而變化,可能會改變 GPU 的計算策略,從而導致不同的模型響應。

當有人指出,“不同的 GPU 也可能導致出現(xiàn)不同的模型響應,不是嗎?”時,我們之間的對話開始變得耐人尋味起來了。

仔細想一想……當我們使用 OpenAI API 時,實際上是有一臺遠程服務器幫我們執(zhí)行計算并返回模型響應。現(xiàn)在,如果這臺機器并非總是在相同的算力基礎(chǔ)設(shè)施上運行,那么最終得到的模型響應就不會相同。

想到這一點,可能就會出現(xiàn)其他問題:

  • 如果有一個在生產(chǎn)開發(fā)環(huán)境中運行的 LLM app,并且需要將其擴展到擁有不同 GPU 的其他實例,是否會出現(xiàn)很嚴重的問題?
  • 如果開發(fā)環(huán)境(development environment)中的 GPU 與生產(chǎn)環(huán)境(production environment)存在大量不同之處,會怎么樣?

這些問題促使我想設(shè)置一個實驗來突出這一現(xiàn)象,并探究它可能造成的影響有多大。

02 配置實驗環(huán)境

為了突出這一現(xiàn)象,我將設(shè)置兩個完全相同的開發(fā)環(huán)境,它們唯一的區(qū)別在于其所使用的 GPU:第一個開發(fā)環(huán)境中使用的是 Nvidia Tesla T4,第二個開發(fā)環(huán)境使用的便是 Nvidia A10G。然后,我們將使用 Mistral-7b-v0.1 進行測試,看看會發(fā)生什么。

要在 notebook 中運行實驗,請按照以下步驟操作。

2.1 配置開發(fā)環(huán)境(Setup the environment)

1. 配置 CUDA 版本

相同的 LLM 在「不同 GPU 上」會產(chǎn)生不同輸出?為什么?-AI.x社區(qū)

2. 配置 transformers 和其他依賴

相同的 LLM 在「不同 GPU 上」會產(chǎn)生不同輸出?為什么?-AI.x社區(qū)

3. 設(shè)置隨機種子(random seeds)

相同的 LLM 在「不同 GPU 上」會產(chǎn)生不同輸出?為什么?-AI.x社區(qū)

注釋 1:

僅設(shè)置 transformers.set_seed 應該就足夠了,但我還是想要確保萬無一失。

注釋 2:

本例使用的是 Python 3.10。

2.2 加載 Mistral 模型

要從 Hugging Face 中加載 Mistral-7B-v0.1 模型,我們需要在環(huán)境變量 HF_TOKEN 中設(shè)置 Hugging Face tokens。

本文將會使用量化版本的模型,降低計算精度來減少 GPU 的內(nèi)存占用。

相同的 LLM 在「不同 GPU 上」會產(chǎn)生不同輸出?為什么?-AI.x社區(qū)

2.3 使用 transformers 庫中的 pipeline

我們將使用 transformers 庫中的 pipeline 來簡化從大語言模型(LLMs)生成模型響應的過程。

為了確保模型輸出是可預測和一致的,我們希望從大語言模型的 vocabulary 中持續(xù)預測出最有可能的 tokens,因此我們可以將 top_k 設(shè)置為 1 或?qū)?temperature 設(shè)置為接近 0 的值。

此外,為了簡單起見,我們將把 max_new_tokens 參數(shù)設(shè)置為 1,這樣 LLMs 就能只用單個 token 完成提示詞。

相同的 LLM 在「不同 GPU 上」會產(chǎn)生不同輸出?為什么?-AI.x社區(qū)

當給出提示詞序列 “I enjoy walking in the” 時,大語言模型(LLMs)只會生成一個單詞:“woods”。如果大語言模型(LLMs)正確地生成并輸出了這個單詞,我們就可以繼續(xù)進行實驗了。

03 實驗結(jié)果:T4 vs A10G

為了能夠使用這兩塊 GPU,我通過 AWS SageMaker 啟動了 ml.g4dn.xlarge (T4) 和 ml.g5.xlarge (A10G) 實例。

讓我們嘗試運行一個簡單的 query :

相同的 LLM 在「不同 GPU 上」會產(chǎn)生不同輸出?為什么?-AI.x社區(qū)

相同的 LLM 在「不同 GPU 上」會產(chǎn)生不同輸出?為什么?-AI.x社區(qū)

T4 和 A10G 給我的模型響應是一樣的:

相同的 LLM 在「不同 GPU 上」會產(chǎn)生不同輸出?為什么?-AI.x社區(qū)

到目前為止一切進展順利。不過,這只是一個簡短的 query 。在 RAG(檢索增強生成)的應用場景里,我們通常會處理成千上萬個 tokens 。現(xiàn)在讓我們使用在 Hugging Face 上托管的 llama-2-arxiv-papers-chunked 數(shù)據(jù)集來進行更大規(guī)模的 query 測試。

在下面的代碼示例中,我將模仿 RAG 的工作方式,使用數(shù)據(jù)集索引 0、4518、4519 和 799 處獲取的文本片段。其中第 4518 和 4519 個數(shù)據(jù)塊(chunks)討論了 “Llama 2”,而其他片段則沒有提及。我們期待 LLMs 能基于這些上下文信息回答:“Llama 2 有什么特別之處?”該提示詞大概有 1,400 個 tokens 長。

相同的 LLM 在「不同 GPU 上」會產(chǎn)生不同輸出?為什么?-AI.x社區(qū)

T4 模型的輸出如下:

相同的 LLM 在「不同 GPU 上」會產(chǎn)生不同輸出?為什么?-AI.x社區(qū)

A10G 模型的輸出如下:

相同的 LLM 在「不同 GPU 上」會產(chǎn)生不同輸出?為什么?-AI.x社區(qū)

確實很有趣。乍一看,由于兩個模型響應開頭相同,區(qū)別卻不太明顯。但在“等等(etc)……”之后,兩者就有所差異了。

T4 模型輸出如下:“etc… This also means you can trust the output more since everything inside will be consistent across different runs!…”

A10G 模型輸出如下:“etc… This also means you can be more confident when asking questions specifically related to topics covered within those texts…”

04 T4 Colab vs T4 SageMaker

想知道使用相同 GPU 的兩個開發(fā)環(huán)境是否會產(chǎn)生相同的模型輸出?我進行了一系列測試,結(jié)果確實完全相同。

05 為什么相同的用戶輸入(inputs)和相同的 LLMs 在兩個 GPUs 上生成的答案會如此不同?

最終,這些模型響應因為 LLMs 的自回歸特性而變得截然不同。由于下一個 token 是根據(jù)之前的 tokens 選擇的,任何細微的變化都會引發(fā)一連串的連鎖反應,就像蝴蝶效應(butterfly effect)一樣。

請注意,這些模型響應并沒有像提示詞中所要求的那樣基于所提供的上下文。LLMs 并沒有完全遵循指導性提示詞(instructions),但這并不是很重要。

因為我們假設(shè) LLMs 總是基于前面的 tokens 選擇概率(probabilities)最高的 token,所以我們可以肯定,區(qū)別在于如何在 GPU 上計算該概率(probabilities),下面讓我們來看一看如何計算該概率~

06 計算 tokens 的選擇概率(probabilities)

為了打印出每個被選中 token 的概率,我們將繞過常規(guī)處理流程(pipeline),直接使用 tokenizer 和 model.generate 方法。這樣我們就能設(shè)置 return_dict_in_generate=Trueoutput_scores=True。接著,我們就可以進行計算(compute)操作、對其進行歸一化操作(normalize),并將 transition scores(譯者注:在自然語言處理領(lǐng)域,尤其是使用自回歸模型生成文本時,模型會為每個 next token 分配一個概率分數(shù),這個分數(shù)反映了該 token 作為 tokens 序列中 next token 的可能性大小。) 轉(zhuǎn)換為概率(probabilities)。

相同的 LLM 在「不同 GPU 上」會產(chǎn)生不同輸出?為什么?-AI.x社區(qū)

上述代碼會顯示每個 token 的 ID、解碼后的 token 以及其對應的概率(probability)。此處我只列出相關(guān)的模型輸出內(nèi)容,因為完整的內(nèi)容非常長。

T4 Output:

相同的 LLM 在「不同 GPU 上」會產(chǎn)生不同輸出?為什么?-AI.x社區(qū)

A10G Output:

相同的 LLM 在「不同 GPU 上」會產(chǎn)生不同輸出?為什么?-AI.x社區(qū)

好了,現(xiàn)在事情變得越來越有趣了。T4 和 A10G 上的概率值(probabilities)并不完全一致。一般情況下,這樣并不會影響 tokens 的排序序列(無法在生成的 tokens 序列中察覺到任何不同),但有時候確實會造成影響。

例如,在 T4 模型中,“trust” 出現(xiàn)的概率為 18.74 %,而在 A10G 上,“be” 出現(xiàn)的概率則更高,達到了 18.62 %。從這一點來看,由于大語言模型的自回歸特性,生成的內(nèi)容將會出現(xiàn)偏差(diverge)。

注釋:量化大語言模型會降低計算精度(calculation precision),導致這類差異變得更為常見。

現(xiàn)在,一個非常合理的問題就出現(xiàn)了:“為什么計算結(jié)果會因為 GPU 的不同而產(chǎn)生差異呢?”

07 為什么 GPU 不同,模型運算結(jié)果也不同?

雖然我不是 CUDA expert(譯者注:這類人能夠熟練使用 CUDA C/C++ 編程語言來開發(fā)高性能的并行計算應用,并了解如何優(yōu)化 GPU 上的計算任務來獲得最佳性能。),但我進行過一些研究。不同 GPU 之間的計算差異可以歸因于以下幾個因素:

并行計算處理(Parallel Computation Handling):

GPUs 的特點是能夠高效地并行處理大量的計算任務。然而,不同 GPU 在管理這些并行任務時可能會有所差異,從而影響到運算順序以及內(nèi)存的訪問方式。

這一點非常重要,因為在編程過程中,即使是數(shù)值大小相差很大的簡單加法也可能是 non-associative,從而影響到精確計算(precise calculations)的準確性。所謂 “Non-associativity” 是指:(a + b) + c ≠ a + (b + c)。

相同的 LLM 在「不同 GPU 上」會產(chǎn)生不同輸出?為什么?-AI.x社區(qū)

因此,計算任務會被分割開來,獨立進行處理,然后以 non-associative 方式組合在一起。因此,這些部分的內(nèi)容如何重新組合會影響到最終結(jié)果。

這里有一個關(guān)于 non-associative computation 的簡單示例:

相同的 LLM 在「不同 GPU 上」會產(chǎn)生不同輸出?為什么?-AI.x社區(qū)

對于大語言模型(LLMs),數(shù)百萬次的計算可能會因為重復出現(xiàn)的微小誤差而導致出現(xiàn)偏差(diverge),進而影響到序列生成過程中的字詞選擇。

硬件架構(gòu)(Hardware Architecture):

不同型號的 GPU,如 Nvidia Tesla T4 和 Nvidia A10G ,具備不同的硬件架構(gòu)。這些硬件架構(gòu)能夠優(yōu)化模型各個方面的性能,包括并行處理能力(parallel processing capabilities)、內(nèi)存帶寬(memory bandwidth)和計算單元(compute units)。

例如,T4 模型采用了 Turing<sup>[2]</sup> 架構(gòu),而 A10G 模型基于 Ampere<sup>[3]</sup> 架構(gòu)。

不同的模型架構(gòu)意味著在浮點運算(floating-point arithmetic)、內(nèi)存訪問模式(memory access patterns)和其他底層操作上有著不同的實現(xiàn)方式。即使這些實現(xiàn)方式(implementations)存在細微差別,也可能會導致計算結(jié)果出現(xiàn)差異。

例如,與針對更高計算精度而進行優(yōu)化的模型架構(gòu)相比,為了計算速度而優(yōu)化的模型架構(gòu)可能會產(chǎn)生不同的模型響應,即便兩者都在執(zhí)行相同的浮點運算。

模型量化的影響(Quantization Effects):

通過模型量化(Quantizing)來降低計算精度可以節(jié)省內(nèi)存資源和計算資源,但這樣做也會引入額外的誤差源(sources of error)。這些誤差的影響因 GPU 對低精度運算(lower precision arithmetic)的處理方式不同而不同。

由于模型量化(quantization)過程中涉及到對數(shù)值的近似處理,因此不同的 GPU 在處理這些近似值時可能會有所差異,從而最終會導致 token 的預測概率產(chǎn)生變化。

08 使用多個 GPU 水平擴展 LLMs 時需要注意什么?

這個問題問得非常好,非常感謝!: )

如果只是簡單地增加相同型號的 GPU 數(shù)量(例如,從單個 A10G GPU 擴展到擁有 4 個 A10G GPU 的實例),是否還有必要擔心?

使用多個 GPU 進行推理時,有幾種策略可供選擇:

  • 第一種策略是,如果模型可以裝入 GPU 中,可以在每個 GPU 上加載一份模型副本。例如,如果向 pipeline 發(fā)送四條查詢語句(queries),每條查詢語句(queries)可以由不同的 GPU 來處理。這樣,我們將得到與僅使用一個 GPU 時相同的輸出內(nèi)容,但吞吐量會有所提高。
  • 第二種策略通常用于因為模型太大一個 GPU 無法裝入的情況,可以采用模型分片策略(sharding),將模型的權(quán)重分布到各個 GPU 上。雖然從理論上講,這種做法可能會因為計算(computation)的分布(distribution)和執(zhí)行(execution)的不同而導致模型響應產(chǎn)生變化,但在實踐測試中,使用模型切片技術(shù)得到的序列(sequences)和概率(probabilities)與單個 GPU 上得到的結(jié)果是一致的。我猜測這是因為 PyTorch 在設(shè)計時考慮到了 deterministic operations(譯者注:那些每次在相同輸入下都能產(chǎn)生相同輸出的操作過程。)。

09 Conclusion

我們已經(jīng)證明了,即便是相同的開發(fā)環(huán)境(environment)、系統(tǒng)配置(settings)和隨機種子(seed),不同的 GPU 也會導致 LLMs 產(chǎn)生不同的結(jié)果。隨著提示詞長度的增長,這種不準確性(inaccuracies)也會隨之增加,因為更長的提示詞需要更多的算力,這會加劇不準確性(inaccuracies)的傳播并促進兩個 GPU 之間的差異。此外,在進行模型量化的情況下,這種效應更加顯著。

我并不是說這種情況一定是災難性的,但這是我們在處理 LLMs 的部署時需要注意的一個因素。

如果我們開發(fā)時使用的 GPU 與生產(chǎn)環(huán)境中使用的 GPU 不同,應該設(shè)置測試實驗確保性能仍然保持在可接受的范圍內(nèi)。如果我們計劃將 LLMs 擴展到擁有不同 GPU 的新實例上,這一點也很重要。

如果你堅持讀到了最后,那我可太高興了,希望你會喜歡這篇文章。如果你喜歡的話,希望你能給我點贊,鼓勵我繼續(xù)寫作,也歡迎在評論區(qū)中分享你的想法。


Anis Zakari

I’m a passionate ML/AI Engineer based in Paris. I am particularly interested in NLP, LLM, Software Engineering and Cloud Engineering subjects

文中鏈接

[1]https://standardscaler.com/2024/03/06/the-non-determinism-of-openai-and-anthropic-models/

[2]https://www.nvidia.com/fr-fr/geforce/turing/

[3]https://www.nvidia.com/fr-fr/data-center/ampere-architecture/

原文鏈接:

https://medium.com/@anis.zakari/changing-the-gpu-is-changing-the-behaviour-of-your-llm-0e6dd8dfaaae

?著作權(quán)歸作者所有,如需轉(zhuǎn)載,請注明出處,否則將追究法律責任
已于2024-8-22 10:24:46修改
收藏
回復
舉報
3條回復
按時間正序
/
按時間倒序
火鳳凰931
火鳳凰931

圖片沒有顯示,求更新

回復
2024-8-9 10:36:01
Baihai_IDP
Baihai_IDP 回復了 火鳳凰931
圖片沒有顯示,求更新

您好,我這邊顯示正常呀~

回復
2024-8-15 11:26:32
火鳳凰931
火鳳凰931

我這里的展示效果

回復
2025-6-25 13:53:18
回復
相關(guān)推薦
精品动漫av| 亚洲欧美小说色综合小说一区| 久久国产乱子精品免费女| 色妞在线综合亚洲欧美| 亚洲AV成人精品| 美女露胸视频在线观看| 国产日韩欧美在线一区| 成人一区二区电影| 久久午夜免费视频| 日韩欧美高清在线播放| 日韩欧美一区二区视频| 日韩av资源在线| 51xtv成人影院| 成人天堂资源www在线| 欧美制服第一页| 国产精品视频一区二区在线观看 | 成人a在线视频| 精品视频一区二区在线观看| 欧美精品第一区| 日韩亚洲欧美在线观看| 国产a级片免费观看| a篇片在线观看网站| 2020国产精品自拍| 亚洲伊人一本大道中文字幕| 伦av综合一区| 欧美日韩亚洲一区| 这里精品视频免费| 男女一区二区三区| 亚洲国产一区二区久久| 狠狠久久亚洲欧美专区| 国产精品88久久久久久妇女| 国产乱理伦片a级在线观看| 国产成人精品三级| 国产精品久久久久av免费| 国产无遮挡又黄又爽| 我不卡影院28| 中文字幕精品在线| 加勒比一区二区| 国产精品视屏| 日韩美女在线视频| 肉色超薄丝袜脚交| 日韩美女在线| 欧美在线色视频| 男人天堂999| gogo高清在线播放免费| 亚洲最新视频在线播放| 制服丝袜综合日韩欧美| 成年人视频免费在线观看| 91香蕉视频黄| 激情小说网站亚洲综合网| 成人h动漫精品一区二区无码| 久久精品999| 国产精品网站视频| 中文字幕在线观看第二页| 日韩和欧美一区二区| 日韩美女在线观看| 精品国产午夜福利| 麻豆九一精品爱看视频在线观看免费| 97精品国产97久久久久久春色| 免费视频一二三区| 狠狠爱成人网| 久久久久久久香蕉网| 豆国产97在线 | 亚洲| 欧美亚洲不卡| 欧美韩国理论所午夜片917电影| 午夜免费激情视频| 国产精品久久| 性亚洲最疯狂xxxx高清| 日韩视频在线观看一区| 老司机免费视频久久| 国产精品电影观看| 一区二区视频网| 久久99久久久久| 亚洲一区二区三区视频播放| 性欧美videos另类hd| 成人18精品视频| 欧美精品久久| jyzzz在线观看视频| 国产精品第一页第二页第三页| 伊人久久大香线蕉综合75| 成人免费网址| 亚洲成人午夜电影| 国产日韩成人内射视频| 久久久加勒比| 日韩精品在线一区| 精品中文字幕在线播放| 欧美猛男同性videos| 色偷偷偷亚洲综合网另类| 国产性生活大片| 亚洲国产婷婷| 国产精品爽爽爽| 国产夫妻自拍av| 97久久超碰国产精品| 视频一区不卡| 美女精品导航| 91九色02白丝porn| 小日子的在线观看免费第8集| 国产精伦一区二区三区| 亚洲一级一级97网| 欧美精品一区二区蜜桃| 久久精品卡一| 91嫩草在线| 精品无人乱码| 一区二区三区在线不卡| 大肉大捧一进一出好爽动态图| 四虎精品永久免费| 亚洲精品一区二区三区精华液| 亚洲自拍偷拍图| 国产在线不卡| 国产精品视频久久久| 好男人在线视频www| 欧美国产精品专区| 国产手机免费视频| 欧美少妇激情| 日韩精品极品在线观看播放免费视频| 国产精品免费在线视频| 国产日韩亚洲欧美精品| 91在线视频精品| 国产在线三区| 午夜欧美视频在线观看| 久久久精品高清| 香蕉精品久久| 欧美激情精品久久久久久蜜臀| 日韩欧美三级视频| 国产一区美女在线| 人偷久久久久久久偷女厕| 岛国av在线播放| 欧美一区二区三区在| 蜜桃传媒一区二区亚洲| 99视频一区| 国产经品一区二区| av大大超碰在线| 欧美另类高清zo欧美| 欧美做受xxxxxⅹ性视频| 亚洲精品123区| 99久久无色码| caoporn免费在线视频| 欧美日韩免费观看一区二区三区| 精品人妻一区二区三区香蕉 | 国产亚洲福利社区一区| 国产视频九色蝌蚪| av成人app永久免费| 久久综合伊人77777尤物| 中文字幕在线视频第一页| 欧美精彩视频一区二区三区| 国产中文字幕免费观看| 欧美亚洲国产日韩| 久久久这里只有精品视频| 精品国产av一区二区| 亚洲嫩草精品久久| 制服丝袜中文字幕第一页 | 神马国产精品影院av| jizz国产在线| 欧美极品另类videosde| 自拍偷拍 国产| 极品美女一区二区三区| 国产精品成人播放| aaa在线免费观看| 精品污污网站免费看| 特级西西人体高清大胆| 久久国产精品色婷婷| 黄频视频在线观看| 精品久久国产一区| 欧美猛交免费看| 亚洲乱熟女一区二区| 亚洲成人资源在线| 亚洲一区二区三区无码久久| 久久不射网站| 亚洲 国产 欧美一区| 自拍偷拍欧美日韩| 色综合久综合久久综合久鬼88| 国精产品乱码一区一区三区四区| 五月婷婷欧美视频| 美女爆乳18禁www久久久久久| 日本美女视频一区二区| 在线视频福利一区| 18国产精品| 欧美在线一区二区视频| 日韩在线观看www| 欧美一区二区三区四区在线观看 | av在线资源网| 欧美丰满嫩嫩电影| 成人免费看片98| 久久综合色8888| 校园春色 亚洲色图| 最新国产精品| 久久人人97超碰人人澡爱香蕉| 日本综合视频| 欧美成人激情视频| 天堂网www中文在线| 欧美日韩在线一区二区| 久久久精品国产sm调教网站| 91看片淫黄大片一级在线观看| 视色视频在线观看| 亚洲网址在线| 日韩一区二区电影在线观看| 亚洲啊v在线免费视频| 5566成人精品视频免费| 黄色网址在线免费播放| 亚洲精品中文字幕有码专区| 国产精品久久久久久免费| 激情成人在线视频| 三级全黄做爰视频| 久久影院午夜片一区| 久久aaaa片一区二区| 老牛影视一区二区三区| 国产乱子伦精品视频| 久久99视频| 国产99午夜精品一区二区三区| 日韩电影免费观| 欧美精品久久一区二区| 一广人看www在线观看免费视频| 亚洲精品一区二区三区影院 | 粉嫩一区二区| 欧美乱大交xxxxx| 91涩漫在线观看| 日韩电影免费观看中文字幕| 国产剧情久久久| 在线精品视频一区二区三四| 国产一级做a爰片在线看免费| 国产精品成人免费在线| 特级西西人体wwwww| 国产一区二区三区视频在线播放| 欧美伦理片在线看| 一区二区毛片| 国产一区二区三区乱码| 午夜精品毛片| 日本不卡久久| 天美av一区二区三区久久| 国产91精品一区二区绿帽| 超碰国产精品一区二页| 国产精品久久久久77777| 免费成人在线电影| 久久免费视频网站| 欧美日韩在线视频免费观看| 久久久精品欧美| 日本福利在线| 最好看的2019年中文视频| 九九在线视频| 精品亚洲永久免费精品| 天天操天天干天天操| 亚洲成人黄色在线观看| 成人小说亚洲一区二区三区| 日韩午夜小视频| 99久久精品国产色欲| 91精品国产高清一区二区三区| 91精品国产乱码久久久久| 欧美天堂一区二区三区| 自拍偷拍福利视频| 欧美色手机在线观看| 最近中文字幕在线观看视频| 欧美亚洲国产一区二区三区va| 精品不卡一区二区| 一本久道中文字幕精品亚洲嫩| 99热国产在线观看| 欧美日韩亚洲精品内裤| 黄色一级片免费在线观看| 国产精品女主播| 青青青在线免费观看| 亚洲欧洲成人精品av97| 亚洲一二三四五六区| 国产精品美女久久久久久2018| www色com| 国产精品成人一区二区艾草| 国产在线免费看| 综合激情成人伊人| 欧美成欧美va| 亚洲国产日韩a在线播放性色| 精品无码久久久久| 亚洲福利国产精品| 国产一级片毛片| 欧美在线一二三四区| 国产精品视频a| 日韩免费在线观看| 天堂成人在线| 自拍偷拍亚洲在线| av免费看在线| 欧美性在线观看| 成人mm视频在线观看| 99爱精品视频| 亚洲精品3区| 亚洲制服中文| 国产一在线精品一区在线观看| 欧美在线观看成人| 久久er精品视频| 污污免费在线观看| 久久久高清一区二区三区| a一级免费视频| 精品国产1区2区| 国产亚洲久一区二区| 日韩一区二区三区四区| 午夜在线视频免费| 日韩一中文字幕| av中文资源在线资源免费观看| 国产精品免费福利| 我要色综合中文字幕| 欧美日本韩国一区二区三区| 91精品电影| 国内外成人激情视频| 国产一区二区三区美女| 国产精品三级在线观看无码| 中文字幕在线一区免费| 国产精品999在线观看| 欧美精品久久99| 天堂在线观看av| 精品久久久av| 天天免费亚洲黑人免费| www 成人av com| 国产影视一区| 国产精品无码人妻一区二区在线| 久久成人免费日本黄色| 亚洲av无码一区二区二三区| 亚洲久草在线视频| 综合久久中文字幕| 亚洲毛茸茸少妇高潮呻吟| 国产原创在线观看| 国产精品精品视频| 红杏视频成人| 无颜之月在线看| 美女网站视频久久| 日韩av一二区| 亚洲va国产va欧美va观看| 国产又黄又大又爽| 尤物精品国产第一福利三区| 麻豆理论在线观看| 5g影院天天爽成人免费下载| 成人同人动漫免费观看| 日韩中文字幕三区| 成人av资源在线| 久草视频手机在线观看| 欧美二区三区91| 成人午夜影视| 国产精品成人一区二区三区吃奶| 看全色黄大色大片免费久久久| 免费人成自慰网站| 国产福利91精品| 国产精品久久久久久久精| 欧美另类高清zo欧美| 免费人成在线观看播放视频| 国产精品久久久久久久久| 日韩啪啪网站| 成年人视频观看| 99久久精品久久久久久清纯| 国产亚洲欧美精品久久久久久| 91精品国产色综合久久ai换脸| 在线免费观看的av网站| 国产精品在线看| 色小子综合网| 亚洲一区二区三区四区五区| 国产精品人成在线观看免费| 一区二区视频网站| 中文字幕亚洲情99在线| 国产毛片精品久久| 伊人色综合久久天天五月婷| 久久超碰97中文字幕| 看免费黄色录像| 日韩一二在线观看| 黄色的视频在线观看| 国产区一区二区| 国产精品一区亚洲| 蜜桃无码一区二区三区| 欧美怡红院视频| 免费av不卡| 99re视频在线播放| 99精品福利视频| 97人妻精品一区二区免费| 91久久免费观看| 色三级在线观看| 2019国产精品视频| 亚洲经典在线| 欧美人与性囗牲恔配| 欧美日韩精品一二三区| 自拍亚洲图区| 精品无人区一区二区三区| 老牛嫩草一区二区三区日本 | 久久综合丝袜日本网| 成人免费一区二区三区| 欧美日韩国产成人在线观看| 欧美wwwwww| 亚洲一区在线不卡| 一级女性全黄久久生活片免费| 婷婷色在线视频| 国产精品狠色婷| 一区二区中文| 亚洲色图欧美日韩| 在线国产亚洲欧美| 青草视频在线免费直播| 欧美高清一区二区| 精品一区二区三区免费播放| 久久久久亚洲av成人片| 亚洲欧美999| 国产欧美88| 午夜精品久久久内射近拍高清 | 在线国产伦理一区| 成人黄色大片在线观看| 亚洲精品无码久久久久| 欧美激情xxxx性bbbb| 第九色区aⅴ天堂久久香| 亚洲一级Av无码毛片久久精品| 日本高清免费不卡视频|