精品欧美一区二区三区在线观看 _久久久久国色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)推薦
久久久久久综合网| 在线播放 亚洲| 中文字幕国产在线观看| 青青草国产免费一区二区下载| 欧美日韩精品欧美日韩精品一综合| 中文字幕一区二区三区四区五区人| 性欧美videos另类hd| 亚洲一区久久| 久久综合久久八八| www.自拍偷拍| 日韩精品中文字幕一区二区 | 粉嫩av一区二区三区| 欧洲成人免费aa| 中文字幕在线观看2018| 亚洲人成网www| 日韩一区二区免费电影| 久久人妻精品白浆国产 | 欧州一区二区| 精品少妇一区二区三区免费观看| 可以免费在线看黄的网站| 日本一本在线免费福利| 国产精品久久久久一区二区三区 | 91精品久久久久久久久| 国产精品不卡av| 午夜精品毛片| 亚洲天堂2020| 中文字幕日韩三级片| 国产精品成人3p一区二区三区| 欧美性高跟鞋xxxxhd| www.-级毛片线天内射视视| 高h视频在线| 91免费看`日韩一区二区| 国产不卡一区二区三区在线观看| 欧美 亚洲 另类 激情 另类| 亚洲综合国产| 国外色69视频在线观看| 欧美成人免费看| 亚洲不卡av不卡一区二区| 国产一区二区三区丝袜| 久久人人爽人人爽人人片| 波多野结衣在线一区二区| 91精品国产91久久久久久最新毛片| 我看黄色一级片| 99久久综合国产精品二区| 福利视频导航一区| www在线观看免费| 成人免费一区二区三区牛牛| 亚洲免费大片在线观看| 国产人妻互换一区二区| 国产在线激情| 亚洲欧美激情小说另类| 国产精品美女在线播放| 久久综合之合合综合久久| 国产精品美女久久久久久| 涩涩涩999| av中文在线| 国产精品久久久久久久久久免费看| 日韩av一区二区三区在线 | 成人亚洲精品| 欧美精品久久久久久久久老牛影院 | 99一区二区| 午夜老司机福利| 成人精品电影在线观看| 国产精品v欧美精品∨日韩| 亚洲av无码一区二区三区性色| 国产成人在线视频网址| av在线不卡一区| 六月丁香综合网| 成人av午夜电影| 欧美日韩一区二区三区免费| 福利成人在线观看| 中文字幕视频一区| 99热都是精品| 久草免费在线视频| 色综合久久久久综合体| 第四色婷婷基地| 日韩城人网站| 精品国产凹凸成av人网站| 亚洲国产综合视频| 欧美一二区在线观看| 久久精品99久久久香蕉| 久久久久久蜜桃| 亚欧成人精品| 国产欧美精品xxxx另类| 国产高清免费av| 久久新电视剧免费观看| 亚洲一二三区精品| 久久大胆人体| 欧美在线播放高清精品| 亚洲性图第一页| 希岛爱理av免费一区二区| 日韩在线一区二区三区免费视频| 加勒比av在线播放| 巨乳诱惑日韩免费av| 成人有码在线视频| 无码国产色欲xxxx视频| 亚洲欧洲三级电影| 亚洲熟妇av一区二区三区漫画| 福利视频亚洲| 精品久久久久久亚洲综合网| 日韩女同一区二区三区 | 亚洲熟妇无码另类久久久| 日本中文字幕一区二区| 精品国产乱码久久久久久久| 国产精成人品免费观看| 精品电影一区| 国产裸体写真av一区二区| 天堂成人在线观看| 中文字幕中文字幕一区| 成年人视频观看| 久久久久九九精品影院| 亚洲天堂第一页| 久久免费精彩视频| 久久av资源网| 欧美在线视频一区二区三区| 免费不卡av| 欧美日本一区二区三区| 国产手机在线观看| 亚洲理论在线| 成人av中文| 老司机在线看片网av| 色美美综合视频| 国产二级一片内射视频播放| 综合久久综合| 国产精品自拍网| 成人亚洲综合天堂| 色综合咪咪久久| 国产在线观看无码免费视频| 亚洲视频综合| www.成人av| 在线免费观看污| 欧美电影一区二区| 懂色av蜜桃av| 日韩av网站免费在线| 久久久综合香蕉尹人综合网 | 国产精品久久久久久久app| 男人天堂av网| 亚洲国产精品一区二区www| 国产免费中文字幕| 久久视频国产| 91精品久久久久久久久久| 69久久久久| 欧美日韩一区三区| 国产18无套直看片| 日本午夜精品视频在线观看 | 国产高清在线观看| 欧美视频裸体精品| 毛片网站免费观看| 男女av一区三区二区色多| 快播日韩欧美| 日韩成人av电影| 亚洲视频在线观看网站| 无码人妻精品一区二区50| 久久蜜臀精品av| 日韩av一二三四| 成久久久网站| 国产日本欧美视频| 超碰在线caoporn| 欧美日韩国产美女| 国产精品嫩草影院俄罗斯| 国产一区二区在线观看免费| 伊人再见免费在线观看高清版 | 国产一级二级三级视频| 成人天堂资源www在线| 欧美成人三级在线视频| 亚洲色图丝袜| 国产欧美一区二区三区视频| 超碰超碰在线| 亚洲黄色av女优在线观看| 国产区一区二区三| 欧美国产激情二区三区| 99精品999| 91久久午夜| 日本精品一区二区三区不卡无字幕 | 亚洲高清视频的网址| 喷水视频在线观看| 日韩国产欧美在线视频| 自拍偷拍99| 波多野结衣一区二区三区免费视频| 欧美一区二区三区图| 色多多视频在线观看| 欧美电影免费提供在线观看| 圆产精品久久久久久久久久久| 国产亚洲成av人在线观看导航| 一区二区三区四区毛片| 野花国产精品入口| 亚洲欧美一区二区原创| 99re91这里只有精品| 日韩免费观看网站| 亚洲男同gay网站| 亚洲天堂精品在线| 亚洲精品视频91| 欧美在线视频全部完| 久久免费播放视频| 国产精品欧美久久久久无广告 | 亚洲人成网77777色在线播放 | 免费在线观看的毛片| 亚洲h色精品| 欧美亚洲精品日韩| 在线综合色站| 国产精品视频在线观看| av中文在线资源库| 精品久久久av| 国产玉足榨精视频在线观看| 日韩欧美专区在线| 亚洲高清视频免费观看| 午夜精品一区在线观看| 日韩一区二区三区四区视频| 91女厕偷拍女厕偷拍高清| 亚洲精品国产久| 奇米色777欧美一区二区| 国产一区二区视频播放| 欧美一区二区| 亚洲精品日韩成人| 一道本一区二区三区| 俄罗斯精品一区二区| 祥仔av免费一区二区三区四区| 性色av一区二区三区红粉影视| 黄在线免费看| 中文字幕亚洲色图| 青春有你2免费观看完整版在线播放高清| 欧美一区二区三区喷汁尤物| 中文字幕 欧美激情| 欧美视频在线观看免费| 日本免费一二三区| 一区二区三区丝袜| 爱爱视频免费在线观看| 中文字幕精品一区| 欧美特黄一区二区三区| av一区二区三区在线| 老熟女高潮一区二区三区| 狠狠狠色丁香婷婷综合激情| 日日躁夜夜躁aaaabbbb| 日本午夜精品一区二区三区电影| 美女av免费在线观看| 亚洲经典三级| 国产 日韩 亚洲 欧美| 欧美日韩精品一本二本三本| 精品国产三级a∨在线| 91成人观看| 中国老女人av| 亚洲精品午夜av福利久久蜜桃| 伊人色综合久久天天五月婷| 97久久夜色精品国产| 色吧亚洲视频| 日韩在线欧美| 免费久久久久久| 99久久亚洲精品蜜臀| dy888午夜| 亚洲一区色图| 免费看欧美黑人毛片| 亚洲国产99| 男人天堂999| 日韩激情av在线| 亚洲一区二区在线视频观看| 狠狠色丁香婷综合久久| 91香蕉国产线在线观看| 国产成人欧美日韩在线电影| 妖精视频一区二区| thepron国产精品| 国产全是老熟女太爽了| 国产精品乱子久久久久| 黑鬼狂亚洲人videos| 夜夜嗨av一区二区三区中文字幕| 日本少妇毛茸茸高潮| 欧美日韩在线另类| 九九热最新视频| 欧美精品99久久久**| a毛片在线免费观看| 精品99999| 九色视频在线播放| 久久久成人av| www.色在线| 国产精品女人久久久久久| 国产精品成人**免费视频| 精品国产福利| 日韩av专区| 国产a级黄色大片| 久久aⅴ乱码一区二区三区| av在线网址导航| 成人午夜视频福利| 欧美激情 一区| 亚洲午夜久久久久久久久电影网 | 欧美aaaaa性bbbbb小妇| 国产精品h在线观看| 日韩精品三级| 欧美一区2区三区4区公司二百 | 少妇高潮毛片色欲ava片| 日韩精品亚洲专区| 日本天堂在线播放| 国产亚洲一区二区三区| 91视频综合网| 欧美性xxxx极品hd满灌| www.国产精品视频| 国产亚洲精品综合一区91| 在线观看a级片| 国产成人亚洲综合青青| 亚洲视频精选| 亚洲在线欧美| 老鸭窝91久久精品色噜噜导演| 色男人天堂av| 国产精品网站在线观看| 日韩伦理在线视频| 91精品国产aⅴ一区二区| 国产在线观看免费| 性欧美激情精品| av日韩久久| 日本一区二区三不卡| 亚洲高清成人| 亚洲高清av一区二区三区| 国产欧美一二三区| wwwxxx亚洲| 日韩欧美专区在线| 免费看a在线观看| 国产成人精品在线观看| 精品素人av| 2021国产视频| 国产一区视频在线看| 国产馆在线观看| 日本韩国欧美国产| 青青久草在线| 97视频免费看| 超碰精品在线| 毛片av在线播放| 国产乱码精品一区二区三区五月婷| 一区二区伦理片| 欧美色欧美亚洲高清在线视频| 成人免费一级视频| 欧美老少做受xxxx高潮| 国产欧美视频在线| 99亚洲精品视频| 久久精品99国产精品日本| 国产三级在线观看完整版| 在线免费观看成人短视频| 女人天堂在线| 青青青国产精品一区二区| 欧美黑人做爰爽爽爽| 激情综合在线观看| 91免费小视频| 香蕉污视频在线观看| 亚洲男人天堂2023| 91精品影视| 亚洲国产一区二区精品视频| 日韩电影在线免费| 日本免费www| 欧美日韩免费高清一区色橹橹| av在线电影网| 91久久久久久久久| 911精品美国片911久久久 | 国产91av在线播放| 在线观看国产欧美| 欧美xxxx性| 亚洲黄色网址在线观看| 国产精品综合网| 国产精品18p| 精品亚洲aⅴ在线观看| av综合电影网站| 亚洲精美视频| 国产在线一区二区综合免费视频| wwwav国产| 亚洲国产精品女人久久久| 韩日毛片在线观看| 日韩免费电影一区二区| 久久99久久精品| 久久久久99精品成人片毛片| 亚洲第一福利视频| 日韩大尺度黄色| 宅男av一区二区三区| 国产不卡视频在线播放| 亚洲天堂av片| 日韩在线免费视频| 亚洲精品影片| 国产第一页视频| 最新日韩av在线| 欧美一区二区三区黄片| 国产成人精品电影| 中文字幕一区二区三区在线视频| 妖精视频一区二区| 欧美午夜一区二区| 男人天堂亚洲天堂 | 希岛爱理av一区二区三区| 中文字幕乱视频| 欧美写真视频网站| 欧美人与禽猛交乱配| 日本午夜精品一区二区三区| 国产伦精品一区二区三区视频青涩| 亚洲另类欧美日韩| 日韩小视频在线| 欧美尿孔扩张虐视频| 国产欧美一区二| 欧美日韩免费在线观看| 国产原厂视频在线观看| 欧美xxxx黑人又粗又长精品| 精品亚洲欧美一区| 中文字幕亚洲精品在线| 久久精品久久精品亚洲人| 婷婷激情久久| 麻豆av免费看| 精品视频在线免费看| 新版的欧美在线视频|