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

機(jī)器學(xué)習(xí)輕量化加速的五大核心技術(shù)突破?

譯文 精選
人工智能
本文將深入研究修剪、量化、蒸餾等輕量化機(jī)器學(xué)習(xí)的五種核心技術(shù),從而使你的神經(jīng)網(wǎng)絡(luò)更高效、更易于部署。

譯者 | 朱先忠

審校 | 重樓

簡(jiǎn)介

無論你是在準(zhǔn)備面試,還是在工作中構(gòu)建機(jī)器學(xué)習(xí)系統(tǒng),模型壓縮都已成為一項(xiàng)必備技能。在大語言模型(LLM)時(shí)代,模型規(guī)模越來越大,如何壓縮這些模型以使其更高效、更小巧、更易于在輕量級(jí)機(jī)器上使用,這一挑戰(zhàn)從未如此嚴(yán)峻。

在本文中,我將介紹每位機(jī)器學(xué)習(xí)從業(yè)者都應(yīng)該理解和掌握的四種基本壓縮技術(shù)。我將探討剪枝、量化、低秩分解和知識(shí)蒸餾,每種方法都各有優(yōu)勢(shì)。我還將為每種方法添加一些精簡(jiǎn)的PyTorch代碼示例。

模型剪枝

剪枝可能是最直觀的壓縮技術(shù)。其原理非常簡(jiǎn)單:移除網(wǎng)絡(luò)的一些權(quán)重,可以是隨機(jī)移除,也可以是移除“不太重要”的權(quán)重。當(dāng)然,在神經(jīng)網(wǎng)絡(luò)中,“移除”權(quán)重指的是將權(quán)重設(shè)置為零。

模型修剪(圖片來自作者和ChatGPT,創(chuàng)作靈感來自于【引文3】)

結(jié)構(gòu)化與非結(jié)構(gòu)化修剪

讓我們從一個(gè)簡(jiǎn)單的啟發(fā)式方法開始:刪除小于閾值的權(quán)重。

當(dāng)然,這并不理想,因?yàn)槲覀冃枰业揭环N方法來找到適合我們問題的閾值!更實(shí)際的方法是刪除某一層中幅度(范數(shù))最小的指定比例的權(quán)重。在單層中實(shí)現(xiàn)剪枝有兩種常見的方法:

  • 結(jié)構(gòu)化修剪:刪除網(wǎng)絡(luò)的整個(gè)組件(例如,來自權(quán)重張量的隨機(jī)行,或卷積層中的隨機(jī)通道)。
  • 非結(jié)構(gòu)化剪枝:刪除單個(gè)權(quán)重,無論其位置和張量的結(jié)構(gòu)如何。

我們也可以將上述兩種方法中的任意一種用于全局剪枝。這將移除多個(gè)層中選定比例的權(quán)重,并且根據(jù)每層參數(shù)的數(shù)量,移除率可能會(huì)有所不同。

PyTorch使這變得非常簡(jiǎn)單(順便說一下,你可以在我的GitHub代碼倉庫中找到所有代碼片段)。

import torch.nn.utils.prune as prune

# 1. 隨機(jī)非結(jié)構(gòu)化剪枝(隨機(jī)選取20%的權(quán)重)
prune.random_unstructured(model.layer, name="weight", amount=0.2) 

# 2.L1-范數(shù)非結(jié)構(gòu)化剪枝(最小權(quán)重的20%)
prune.l1_unstructured(model.layer, name="weight", amount=0.2)

# 3. 全局非結(jié)構(gòu)化剪枝(按L1范數(shù)計(jì)算,各層權(quán)重的40%)
prune.global_unstructured(
 [(model.layer1, "weight"), (model.layer2, "weight")],
 pruning_method=prune.L1Unstructured,
 amount=0.4
) 

# 4. 結(jié)構(gòu)化修剪(刪除L2范數(shù)最低的30%行)
prune.ln_structured(model.layer, name="weight", amount=0.3, n=2, dim=0)

注意:如果你上過統(tǒng)計(jì)學(xué)課,你可能學(xué)過一些正則化方法,它們也會(huì)在訓(xùn)練過程中隱式地使用L0或L1范數(shù)正則化來修剪一些權(quán)重。修剪與此不同,因?yàn)樗亲鳛槟P蛪嚎s后的一項(xiàng)技術(shù)應(yīng)用的。

剪枝為何有效?彩票假說

基于ChatGPT生成的圖像

我想用“彩票假說”來結(jié)束本節(jié)。它既是剪枝的一個(gè)應(yīng)用,也對(duì)移除權(quán)重如何能夠改進(jìn)模型進(jìn)行了有趣的解釋。我建議你閱讀一下相關(guān)論文(引文7)以了解更多詳細(xì)信息。

論文作者采用了以下程序:

  • 訓(xùn)練完整模型,直至收斂
  • 修剪最小幅度的權(quán)重(例如10%)
  • 將剩余權(quán)重重置為其原始初始化值
  • 重新訓(xùn)練這個(gè)修剪后的網(wǎng)絡(luò)
  • 重復(fù)該過程多次

重復(fù)30次之后,最終得到的參數(shù)只有原始參數(shù)的0.930(約4%)。令人驚訝的是,這個(gè)網(wǎng)絡(luò)的表現(xiàn)竟然和原始網(wǎng)絡(luò)一樣好。

這表明存在重要的參數(shù)冗余。換句話說,存在一個(gè)子網(wǎng)絡(luò)(“彩票”)實(shí)際上完成了大部分工作!

結(jié)論是:修剪是揭示這個(gè)子網(wǎng)絡(luò)的一種方法。

量化

修剪的重點(diǎn)是完全刪除參數(shù),而量化則采用不同的方法:降低每個(gè)參數(shù)的精度。

請(qǐng)記住,計(jì)算機(jī)中的每個(gè)數(shù)字都是以位序列的形式存儲(chǔ)的。float32值使用32位(參見下圖),而8位整數(shù)(int8)僅使用8位。

float32數(shù)字如何用32位表示的示例(圖片來自作者和ChatGPT,創(chuàng)作靈感來自引文2)

大多數(shù)深度學(xué)習(xí)模型都使用32位浮點(diǎn)數(shù)(FP32)進(jìn)行訓(xùn)練。量化會(huì)將這些高精度值轉(zhuǎn)換為低精度格式,例如16位浮點(diǎn)數(shù)(FP16)、8位整數(shù)(INT8),甚至4位表示。

這里的節(jié)省是顯而易見的:INT8所需的內(nèi)存比FP32少75%。但是,我們?nèi)绾卧诓黄茐哪P托阅艿那闆r下實(shí)際執(zhí)行這種轉(zhuǎn)換呢?

量化背后的數(shù)學(xué)

要將浮點(diǎn)數(shù)轉(zhuǎn)換為整數(shù)表示,我們需要將連續(xù)的數(shù)值范圍映射到一組離散的整數(shù)。對(duì)于INT8量化,我們將其映射到256個(gè)可能的值(從-128到127)。

假設(shè)我們的權(quán)重在-1.0和1.0之間標(biāo)準(zhǔn)化(在深度學(xué)習(xí)中很常見):

然后,量化值由下式給出:

這里,zero_point=0因?yàn)槲覀兿M?映射到0。然后,我們可以將這個(gè)值四舍五入到最接近的整數(shù),以獲得-127到128之間的整數(shù)。

而且,你猜對(duì)了:為了將整數(shù)恢復(fù)為浮點(diǎn)數(shù),我們可以使用逆運(yùn)算:

注意:實(shí)際上,縮放因子是根據(jù)我們量化的范圍值確定的。

如何應(yīng)用量化?

量化可以應(yīng)用于不同的階段,并采用不同的策略。以下是一些值得了解的技巧:(下文中的“激活”一詞指的是每一層的輸出值)

  • 訓(xùn)練后量化(PTQ):A.靜態(tài)量化:離線量化權(quán)重和激活(訓(xùn)練之后和推理之前)。
    B.動(dòng)態(tài)量化:離線量化權(quán)重,但在推理過程中動(dòng)態(tài)激活。這與離線量化不同,因?yàn)榭s放因子是根據(jù)推理過程中迄今為止看到的值確定的。
  • 量化感知訓(xùn)練(QAT):通過對(duì)值進(jìn)行舍入來模擬訓(xùn)練過程中的量化,但計(jì)算仍然使用浮點(diǎn)數(shù)進(jìn)行。這使得模型學(xué)習(xí)到對(duì)量化更具魯棒性的權(quán)重,這些權(quán)重將在訓(xùn)練后應(yīng)用。其底層思想是添加一些“假”操作:x -> dequantize(quantize(x)),這個(gè)新值接近x,但仍有助于模型容忍8位舍入和削波噪聲。
import torch.quantization as tq

# 1. 訓(xùn)練后靜態(tài)量化(權(quán)重+離線激活)
model.eval()
model.qconfig = tq.get_default_qconfig('fbgemm') # 分配靜態(tài)量化配置
tq.prepare(model, inplace=True)
# 我們需要使用校準(zhǔn)數(shù)據(jù)集來確定值的范圍
with torch.no_grad():
 for data, _ in calibration_data:
 model(data)
tq.convert(model, inplace=True) # 轉(zhuǎn)換為全int8模型

# 2.訓(xùn)練后動(dòng)態(tài)量化(權(quán)重離線,激活實(shí)時(shí))
dynamic_model = tq.quantize_dynamic(
 model,
 {torch.nn.Linear, torch.nn.LSTM}, # layers to quantize
 dtype=torch.qint8
)

# 3. 量化感知訓(xùn)練(QAT)
model.train()
model.qconfig = tq.get_default_qat_qconfig('fbgemm') # 設(shè)置QAT配置
tq.prepare_qat(model, inplace=True) #插入假量子模塊
# [here, train or fine?tune the model as usual]
qat_model = tq.convert(model.eval(), inplace=False) # 在QAT之后轉(zhuǎn)換為真正的int8

量化非常靈活!你可以對(duì)模型的不同部分應(yīng)用不同的精度級(jí)別。例如,你可以將大多數(shù)線性層量化為8位,以實(shí)現(xiàn)最大速度和內(nèi)存節(jié)省,同時(shí)將關(guān)鍵組件(例如注意力頭或批量規(guī)范層)保留為16位或全精度。

低秩分解

現(xiàn)在我們來談?wù)劦椭确纸狻环N隨著LLM的興起而流行的方法。

【關(guān)鍵觀察點(diǎn)】神經(jīng)網(wǎng)絡(luò)中許多權(quán)重矩陣的有效秩遠(yuǎn)低于其維度所暗示的秩。簡(jiǎn)而言之,這意味著參數(shù)中存在大量冗余。

注意:如果你曾經(jīng)使用過主成分分析(PCA)進(jìn)行降維,那么你已經(jīng)遇到過一種低秩近似的形式。主成分分析(PCA)將大矩陣分解為較小、低秩因子的乘積,從而盡可能多地保留信息。

低秩分解背后的線性代數(shù)

取權(quán)重矩陣W。每個(gè)實(shí)數(shù)矩陣都可以用奇異值分解(SVD)來表示:

其中Σ是一個(gè)奇異值非增階的對(duì)角矩陣。正系數(shù)的數(shù)量實(shí)際上對(duì)應(yīng)于矩陣W的秩。

秩為r的矩陣的SVD可視化(圖片來自作者和ChatGPT,創(chuàng)作靈感來自引文5)

為了用秩k<r的矩陣近似W,我們可以選擇sigma的k個(gè)最大元素,以及相應(yīng)的U和V的前k列和前k行:

看看新矩陣如何分解為A與B的乘積,現(xiàn)在參數(shù)總數(shù)是m*k+k*n=k*(m+n)而不是m*n!這是一個(gè)巨大的進(jìn)步,尤其是當(dāng)k遠(yuǎn)小于m和時(shí)n。

實(shí)際上,它相當(dāng)于用兩個(gè)連續(xù)的線性層x→Wx替換線性層x→A(Bx)。

在PyTorch中

我們可以在訓(xùn)練前應(yīng)用低秩分解(將每個(gè)線性層參數(shù)化為兩個(gè)較小的矩陣——這并非真正的壓縮方法,而是一種設(shè)計(jì)選擇),也可以在訓(xùn)練后應(yīng)用(對(duì)權(quán)重矩陣應(yīng)用截?cái)嗥娈愔捣纸猓5诙N方法是迄今為止最常見的方法,如下所示。

import torch

# 1.提取重量并選擇秩
W = model.layer.weight.data # (m, n)
k = 64 # 期望的秩

# 2. 近似低秩SVD
U, S, V = torch.svd_lowrank(W, q=k) # U: (m, k), S: (k, k), V: (n, k)

# 3. 構(gòu)造因子矩陣A和B
A = U * S.sqrt() # [m, k]
B = V.t() * S.sqrt().unsqueeze(1) # [k, n]

# 4. 替換為兩個(gè)線性層,并插入矩陣A和B
orig = model.layer
model.layer = torch.nn.Sequential(
 torch.nn.Linear(orig.in_features, k, bias=False),
 torch.nn.Linear(k, orig.out_features, bias=False),
)
model.layer[0].weight.data.copy_(B)
model.layer[1].weight.data.copy_(A)

LoRA:低秩近似的應(yīng)用

LoRA微調(diào):W是固定的,A和B經(jīng)過訓(xùn)練(來源:引文1)

我認(rèn)為有必要提一下LoRA:如果你一直關(guān)注LLM微調(diào)的發(fā)展,你可能聽說過LoRA(低秩自適應(yīng))。雖然LoRA嚴(yán)格來說不是一種壓縮技術(shù),但它因能夠有效地適應(yīng)大型語言模型并使微調(diào)非常高效而變得非常流行。

這個(gè)想法很簡(jiǎn)單:在微調(diào)過程中,LoRA不會(huì)修改原始模型權(quán)重W,而是凍結(jié)它們并學(xué)習(xí)可訓(xùn)練的低秩更新:

其中,A和B是低秩矩陣。這使得僅使用一小部分參數(shù)就可以實(shí)現(xiàn)特定任務(wù)的自適應(yīng)。

甚至更好:QLoRA通過將量化與低秩自適應(yīng)相結(jié)合,進(jìn)一步實(shí)現(xiàn)了這一點(diǎn)!

再次強(qiáng)調(diào),這是一種非常靈活的技術(shù),可以應(yīng)用于各個(gè)階段。通常,LoRA僅應(yīng)用于特定的層(例如,注意力層的權(quán)重)。

知識(shí)蒸餾

知識(shí)蒸餾過程(圖片來自作者和ChatGPT,創(chuàng)作靈感來自引文4)

知識(shí)蒸餾與我們迄今為止所見的方法截然不同。它不是修改現(xiàn)有模型的參數(shù),而是將“知識(shí)”從一個(gè)龐大而復(fù)雜的模型(“老師”)遷移到一個(gè)規(guī)模更小、更高效的模型(“學(xué)生”)。其目標(biāo)是訓(xùn)練學(xué)生模型模仿老師的行為并復(fù)制其表現(xiàn),這通常比從頭開始解決原始問題更容易。

蒸餾損失

我們來解釋一下分類問題中的一些概念:

  • 教師模型通常是一個(gè)大型、復(fù)雜的模型,可以在當(dāng)前任務(wù)中取得高性能。
  • 學(xué)生模型是第二個(gè)較小的模型,具有不同的架構(gòu),但針對(duì)相同的任務(wù)進(jìn)行定制。
  • 軟目標(biāo):這些是教師模型的預(yù)測(cè)(概率,而不是標(biāo)簽!)。學(xué)生模型將使用它們來模仿教師的行為。請(qǐng)注意,我們使用原始預(yù)測(cè)而不是標(biāo)簽,因?yàn)樗鼈円舶嘘P(guān)預(yù)測(cè)置信度的信息。
  • 溫度:除了教師模型的預(yù)測(cè)之外,我們還在softmax函數(shù)中使用了一個(gè)系數(shù)T(稱為溫度),以便從軟目標(biāo)中提取更多信息。增加T可以柔化分布,并幫助學(xué)生模型更加重視錯(cuò)誤的預(yù)測(cè)。

實(shí)踐中,訓(xùn)練學(xué)生模型非常簡(jiǎn)單。我們將常規(guī)損失(基于硬標(biāo)簽的標(biāo)準(zhǔn)交叉熵?fù)p失)與“蒸餾”損失(基于教師的軟目標(biāo))結(jié)合起來:

蒸餾損失只不過是教師分布和學(xué)生分布之間的KL散度(你可以將其視為兩個(gè)分布之間距離的度量)。

至于其他方法,可以并且鼓勵(lì)根據(jù)用例調(diào)整此框架:例如,還可以比較學(xué)生和教師模型之間網(wǎng)絡(luò)中的中間層的logit和激活,而不僅僅是比較最終輸出。

實(shí)踐中的知識(shí)蒸餾

與之前的技術(shù)類似,有兩種選擇:

  • 離線蒸餾:預(yù)先訓(xùn)練好的教師模型是固定的,并訓(xùn)練一個(gè)單獨(dú)的學(xué)生模型來模仿它。這兩個(gè)模型完全獨(dú)立,并且在蒸餾過程中教師的權(quán)重保持不變。
  • 在線蒸餾:兩個(gè)模型同時(shí)訓(xùn)練,知識(shí)轉(zhuǎn)移發(fā)生在聯(lián)合訓(xùn)練過程中。

下面是應(yīng)用離線蒸餾的簡(jiǎn)單方法(本文的最后一個(gè)代碼塊):

import torch.nn.functional as F

def distillation_loss_fn(student_logits, teacher_logits, labels, temperature=2.0, alpha=0.5):
 # 帶有硬標(biāo)簽的標(biāo)準(zhǔn)交叉熵?fù)p失
 student_loss = F.cross_entropy(student_logits, labels)

 # 軟目標(biāo)的蒸餾損失(KL散度)
 soft_teacher_probs = F.softmax(teacher_logits / temperature, dim=-1)
 soft_student_log_probs = F.log_softmax(student_logits / temperature, dim=-1)

  # kl_div需要將對(duì)數(shù)概率作為第一個(gè)參數(shù)的輸入!
 distill_loss = F.kl_div(
 soft_student_log_probs,
 soft_teacher_probs.detach(), #不為教師計(jì)算梯度
 reductinotallow='batchmean'
 ) * (temperature ** 2) # 可選,縮放因子

 #根據(jù)公式計(jì)算損失
 total_loss = alpha * student_loss + (1 - alpha) * distill_loss
 return total_loss

teacher_model.eval()
student_model.train()
with torch.no_grad():
 teacher_logits = teacher_model(inputs)
  student_logits = student_model(inputs)
  loss = distillation_loss_fn(student_logits, teacher_logits, labels, temperature=T, alpha=alpha)
  loss.backward()
  optimizer.step()

結(jié)論

感謝你閱讀本文!在LLM時(shí)代,由于參數(shù)數(shù)量高達(dá)數(shù)十億甚至數(shù)萬億,模型壓縮已成為一個(gè)基本概念,幾乎在每種情況下都至關(guān)重要,可以提高模型的效率和易部署性。

但正如我們所見,模型壓縮不僅僅是為了減小模型大小,而是為了做出深思熟慮的設(shè)計(jì)決策。無論是選擇在線還是離線方法,壓縮整個(gè)網(wǎng)絡(luò),還是針對(duì)特定的層或通道,每種選擇都會(huì)顯著影響性能和可用性。現(xiàn)在,大多數(shù)模型都結(jié)合了其中幾種技術(shù)(例如,查看這個(gè)模型)。

除了向你介紹主要方法之外,我希望本文還能激發(fā)你進(jìn)行實(shí)驗(yàn)并開發(fā)自己的創(chuàng)造性解決方案!

不要忘記查看我的GitHub存儲(chǔ)庫,你可以在其中找到所有代碼片段以及本文討論的四種壓縮方法的并排比較。

參考文獻(xiàn)

【1】Hu, E.等人,2021。《大型語言模型的低秩自適應(yīng)》(Low-rank Adaptation of Large Language Models)。arXiv preprint arXiv:2106.09685。

【2】Lightning AI。《使用混合精度技術(shù)加速大型語言模型。》(Accelerating Large Language Models with Mixed Precision Techniques)。Lightning AI博客。

【3】TensorFlow博客。《TensorFlow模型優(yōu)化工具包中的剪枝API》(Pruning API in TensorFlow Model Optimization Toolkit)。TensorFlow博客,2019年5月。

【4】Toward AI。《知識(shí)蒸餾的簡(jiǎn)單介紹》(A Gentle Introduction to Knowledge Distillation)。Towards AI,2022年8月。

【5】Ju, A。《ML算法:奇異值分解(SVD)》(ML Algorithm: Singular Value Decomposition (SVD))。LinkedIn Pulse。

【6】Algorithmic Simplicity。《這就是大型語言模型能夠理解世界的原因》(THIS is why large language models can understand the world)。YouTube,2023年4月。

【7】Frankle, J.與Carbin, M。(2019)。《彩票假設(shè):尋找稀疏、可訓(xùn)練的神經(jīng)網(wǎng)絡(luò)》(The Lottery Ticket Hypothesis: Finding Sparse, Trainable Neural Networks)。arXiv preprint arXiv:1803.03635。

譯者介紹

朱先忠,51CTO社區(qū)編輯,51CTO專家博客、講師,濰坊一所高校計(jì)算機(jī)教師,自由編程界老兵一枚。

原文標(biāo)題:Model Compression: Make Your Machine Learning Models Lighter and Faster,作者:Maxime Wolf

責(zé)任編輯:姜華 來源: 51CTO內(nèi)容精選
相關(guān)推薦

2017-04-26 23:10:03

數(shù)據(jù)組織數(shù)據(jù)庫

2020-12-11 13:27:12

大數(shù)據(jù)大數(shù)據(jù)技術(shù)

2019-04-30 13:54:55

大數(shù)據(jù)Hadoop數(shù)據(jù)清洗

2010-08-10 09:28:00

云計(jì)算核心技術(shù)

2020-10-13 07:00:00

機(jī)器學(xué)習(xí)人工智能

2025-08-25 07:00:00

大語言模型LLM人工智能

2016-02-25 09:31:02

2018-11-16 14:58:24

WAN數(shù)據(jù)加速廣域網(wǎng)

2011-10-08 10:36:53

芯片云計(jì)算

2022-03-24 23:06:25

大數(shù)據(jù)技術(shù)應(yīng)用

2018-07-10 15:46:57

機(jī)器翻譯語言翻譯

2015-04-27 13:23:42

無線技術(shù)ZigBeeUWB

2009-03-19 09:55:00

OFDM無線通信技術(shù)

2022-08-30 18:13:38

機(jī)器學(xué)習(xí)

2025-06-30 08:21:58

2020-10-15 08:00:00

機(jī)器學(xué)習(xí)開源

2020-04-06 20:11:26

區(qū)塊鏈分布式核心技術(shù)

2017-12-25 10:34:18

技術(shù)預(yù)測(cè)機(jī)遇

2009-06-15 17:54:50

Java核心技術(shù)

2016-12-12 09:01:47

Amazon Go核心技術(shù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

亚洲综合免费观看高清完整版| 国产欧美高清视频在线| 亚洲欧美自拍偷拍| 97人人模人人爽视频一区二区 | 三级中文字幕在线观看| 国产在线精品一区二区夜色 | 中文字幕在线永久| 裤袜国产欧美精品一区| 99天天综合性| 国产精品免费看久久久香蕉| 国产suv一区二区三区| 欧美精品中文字幕亚洲专区| 欧美午夜一区二区| 色姑娘综合av| 成人福利小视频| 午夜在线视频观看日韩17c| 日韩大陆欧美高清视频区| 欧美 日韩 国产精品| 香蕉视频911| 久草中文综合在线| 日本久久亚洲电影| 久久久久久久蜜桃| 第四色成人网| 亚洲国产精品成人精品| 91成人在线观看喷潮教学| p色视频免费在线观看| 成人午夜视频在线观看| 国产拍精品一二三| 五月天婷婷激情| 黄色一区二区三区四区| 爽爽爽爽爽爽爽成人免费观看| 日本超碰在线观看| 欧美大片1688| 亚洲动漫第一页| 成年人三级视频| 成人在线观看网站| 99久久国产综合色|国产精品| 日本高清不卡在线| 国产亚洲成人av| 欧美岛国激情| 国产亚洲欧美日韩美女| 老司机福利av| 日韩精品丝袜美腿| 同产精品九九九| 国产一区二区三区在线免费| 日韩伦理在线观看| 中文字幕av一区二区三区免费看 | 一区二区三区视频免费看| 888久久久| 精品久久久久久久久久久久久久久久久| 9色porny| 亚洲羞羞网站| 一区二区三区在线高清| 国产精品夜夜夜爽张柏芝| 成人免费高清在线播放| 国产欧美日本一区视频| 日本一区视频在线| 国产探花精品一区二区| 经典三级在线一区| 66m—66摸成人免费视频| 亚洲欧美在线观看视频| 在线高清一区| 91精品国产一区| 国产专区第一页| 午夜在线观看免费一区| 国产a∨精品一区二区三区不卡| 欧美大片xxxx| 亚洲女同中文字幕| 欧美高清视频在线播放| 久久97人妻无码一区二区三区| 国产最新精品| 最近2019年日本中文免费字幕| 91传媒理伦片在线观看| 精品欧美午夜寂寞影院| 精品网站999www| 超碰人人cao| 韩国女主播一区二区三区| 日韩av在线网址| 人妻av无码一区二区三区| 久久精品播放| 欧美高跟鞋交xxxxhd| 日韩激情在线播放| 日韩专区中文字幕一区二区| 国产日韩欧美日韩| 亚洲欧美国产高清va在线播放| 免费观看成人av| 亚洲a成v人在线观看| 亚洲免费黄色片| 久久婷婷国产综合精品青草| 国产乱码一区| 国产69久久| 亚洲精品美腿丝袜| av观看免费在线| 国外成人福利视频| 精品国精品自拍自在线| 谁有免费的黄色网址| 偷拍欧美精品| 欧美有码在线观看| 国产九色在线播放九色| 久久99精品久久久久久久久久久久| 国产成人一区二区在线| 99精品免费观看| 久久综合色天天久久综合图片| 国产日韩三区| aaa在线观看| 亚洲综合另类小说| 欧美大尺度做爰床戏| 88久久精品| 中文字幕欧美国内| 天天操天天摸天天干| 国产精品综合av一区二区国产馆| 91欧美日韩一区| 天天操天天干天天爱| 国产精品不卡一区二区三区| 一区二区免费电影| av官网在线播放| 日本久久电影网| 午夜福利三级理论电影 | 日韩欧美亚洲一二三区| 中文字幕一区二区在线观看视频 | 一区二区在线观看免费视频播放| 佐佐木明希av| 日日夜夜天天综合| 日韩av网站在线| 九九视频在线观看| 国产日韩精品视频一区二区三区 | 亚洲国产欧美一区二区三区同亚洲| 欧美日韩一区二区区| 成人h动漫免费观看网站| 精品免费视频一区二区| 免费一级suv好看的国产网站| 国产精品久久久久久久| 欧美日韩电影在线观看| 国产一区二区波多野结衣| 久久综合99re88久久爱| 国产日韩欧美精品在线观看| 经典三级久久| 日韩专区在线播放| 黄色网址中文字幕| 久久亚洲二区三区| 国产美女网站在线观看| 亚洲精品一区二区三区中文字幕| 日韩免费在线观看| www.日本高清| 亚洲精品欧洲| 国产一区喷水| 国产社区精品视频| 日韩av有码在线| 谁有免费的黄色网址| 午夜亚洲精品| 久久一区二区三区欧美亚洲| 国产盗摄——sm在线视频| 精品日韩在线一区| 高清中文字幕mv的电影| 欧美视频导航| 99视频网站| 黄色羞羞视频在线观看| 精品久久久久一区| 久久免费少妇高潮99精品| 夫妻av一区二区| 六月婷婷激情综合| 国产精品任我爽爆在线播放| 久久理论片午夜琪琪电影网| 色窝窝无码一区二区三区| 五月婷婷久久丁香| 中文字幕一区二区人妻在线不卡| 欧美极品在线观看| 国产精品久久久av| 亚洲国产精品国自产拍久久| 亚洲伊人色欲综合网| 国产精品一区二区无码对白| 一区二区动漫| 日本欧美精品久久久| 国产一区一一区高清不卡| 欧美成人伊人久久综合网| 国产中文字字幕乱码无限| av电影在线观看不卡| 免费日韩视频在线观看| 色综合久久网| 日韩av快播网址| 成年人在线观看| 福利一区视频在线观看| xxxxx在线观看| 久久99久国产精品黄毛片色诱| 日本一区二区三区在线视频| 婷婷久久免费视频| 在线观看国产精品日韩av| 国产又粗又黄视频| 亚洲国产精品综合小说图片区| 欧美色图校园春色| 中文精品在线| 一区国产精品| 六月丁香久久丫| 国产噜噜噜噜噜久久久久久久久| 黄色美女网站在线观看| 在线成人av网站| 国产精品老女人| 国产精品久久久久影视| 久草视频福利在线| 蜜桃视频免费观看一区| 日本香蕉视频在线观看| 国产一区二区欧美| 97夜夜澡人人双人人人喊| 日韩av首页| 久久久久久久激情视频| 69av在线| 日韩电影中文字幕在线观看| 国产精品热久久| 欧美性69xxxx肥| 国产亚洲精品女人久久久久久| 国产精品亚洲成人| 国产一级不卡毛片| 在线看片欧美| 综合操久久久| 国产精品三级| 黑人巨大精品欧美一区二区小视频 | 天堂成人av| 国产一区二区三区欧美| 天天综合永久入口| 欧美一级久久久久久久大片| 中文字幕免费高清网站| 午夜欧美大尺度福利影院在线看| 天天干天天草天天| 亚洲综合欧美| 成人免费毛片在线观看| 先锋资源久久| 亚洲精品一区二区三| 香蕉久久夜色精品国产更新时间| 4438全国亚洲精品在线观看视频| 亚洲av片在线观看| 日韩欧美一二三四区| 性色av一区二区三区四区| 欧美午夜精品久久久久久久| 国产系列精品av| 久久毛片高清国产| 中文字幕人妻熟女在线| 国产宾馆实践打屁股91| 午夜福利123| 久久精品99国产精品| 国产理论在线播放| 永久亚洲成a人片777777| 亚洲一区二区精品在线观看| 欧美国产中文高清| 国产综合久久久久| 韩国理伦片久久电影网| 国产一区欧美二区三区| 国产情侣一区二区三区| 国产在线视频一区| 精品捆绑调教一区二区三区| 久久久这里只有精品视频| av免费不卡| 97精品国产97久久久久久免费| 亚洲精品承认| 久久精品最新地址| 精品国产99久久久久久| 亚洲乱码国产乱码精品精| 天天在线女人的天堂视频| 日韩激情第一页| 黄色在线视频观看网站| 国产亚洲欧美日韩美女| 拍真实国产伦偷精品| 久久综合亚洲社区| 女子免费在线观看视频www| 亚洲一区二区国产| 91露出在线| 久久视频免费观看| 女人黄色免费在线观看| 91国内揄拍国内精品对白| 亚洲欧美电影| 国产精品美女www| 91精品麻豆| 福利精品视频| 婷婷成人综合| 亚洲一卡二卡| 国内精品久久久久久久97牛牛 | 精品三级av在线导航| 国产亚洲精品自在久久| 免费观看不卡av| 一区二区三区四区视频在线| 亚洲色图88| 日本少妇高潮喷水视频| 日本成人超碰在线观看| 国产又粗又猛大又黄又爽| 99久久er热在这里只有精品15 | 日本国产中文字幕| 一区二区毛片| 午夜免费福利在线| 国产成人在线免费| 能免费看av的网站| 亚洲日本在线观看| 久久久久亚洲av成人毛片韩| 欧美日韩国产免费一区二区 | 欧美高清视频一二三区| 性生交生活影碟片| 日韩精品一区二区三区四区视频| 国产熟女一区二区丰满| 日韩高清中文字幕| 日本电影在线观看网站| 97国产一区二区精品久久呦| 日韩精品一级毛片在线播放| 韩国一区二区三区美女美女秀 | 国产精品扒开腿做爽爽爽软件| dy888午夜| 久久国产福利| 精产国品一区二区三区| 国产99精品在线观看| 在线观看国产精品一区| 国产精品视频免费| www.av免费| 亚洲一区二区三区四区五区中文 | 欧美午夜性色大片在线观看| 国产乱国产乱老熟| 欧美一区二区精品| www.av在线播放| 欧美在线一级视频| 国产在线播放精品| 中文字幕在线中文| 亚洲美女少妇无套啪啪呻吟| 不用播放器的免费av| 久久久久高清精品| 91香蕉在线视频| 欧美大胆人体bbbb| 97超碰在线公开在线看免费| 国产精品男女猛烈高潮激情| 亚洲国产精品嫩草影院久久av| 日韩一本精品| 西西裸体人体做爰大胆久久久| 天天干天天干天天干天天干天天干| 极品少妇xxxx精品少妇| 国产jjizz一区二区三区视频| 亚洲人亚洲人成电影网站色| 午夜精品免费观看| 亚洲精品在线看| 性欧美18xxxhd| 91精品久久久久久久久久久| 国产精品国产| 黄色a级片免费看| 国产精品亚洲人在线观看| 久久精品成人av| 精品久久香蕉国产线看观看gif| 337p粉嫩色噜噜噜大肥臀| 日韩av影视综合网| 涩涩视频在线| 蜜桃av色综合| 美女久久一区| 国产精品扒开腿做爽爽| 一区二区三区日韩在线观看| av手机免费看| 久久69精品久久久久久国产越南| 亚洲最大成人| 欧美成人一区二区在线| 久久久噜噜噜| 国产成人福利在线| 欧美性受xxxx| 外国精品视频在线观看| 88国产精品欧美一区二区三区| 国产高清亚洲| 色一情一乱一乱一区91| 国产成人精品免费网站| 国产精品999久久久| 亚洲国产精品成人av| 涩涩视频网站在线观看| 日韩欧美手机在线| 老司机精品视频在线| 国产免费一区二区三区网站免费| 一区二区三区国产豹纹内裤在线| 在线视频免费观看一区| 久久精品国产96久久久香蕉| 欧美黄视频在线观看| 日本午夜激情视频| 久久久国产精华| 在线免费观看av片| 欧美成人亚洲成人日韩成人| 国产精品tv| 日本www.色| 亚洲精品国产高清久久伦理二区| 一级片在线免费播放| 久久精品在线视频| 国产成人aa在线观看网站站| 国内外成人激情视频| av一二三不卡影片| 久久久久久国产精品免费播放| 欧美二区在线观看| free性欧美16hd| 日产精品高清视频免费| 精品一区二区三区香蕉蜜桃 | 一区二区三区视频免费| 欧美另类激情| 久久亚洲国产成人精品无码区| 国产黄色成人av| 国产专区第一页| 久久精品久久久久久| 日韩av三区| 国产高清999| 色哟哟亚洲精品| 中文字幕有码在线观看| 91久久精品国产91久久性色tv| 亚洲h色精品| 亚洲熟妇一区二区三区| 欧美高清视频www夜色资源网|