精品欧美一区二区三区在线观看 _久久久久国色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)

一区二区视频在线| 99精品在线| 色国产综合视频| 欧洲国产精品| 亚洲中文字幕一区二区| 最新国产精品| 日韩精品在线观看视频| 五月天av在线播放| 丁香花高清在线观看完整版| 久久久美女艺术照精彩视频福利播放| 国产精品视频专区| 久久精品国产亚洲av高清色欲| 亚洲国产合集| 制服丝袜成人动漫| 日本成年人网址| 天天影视久久综合| 91丨九色丨蝌蚪丨老版| 成人午夜两性视频| 日日骚av一区二区| 欧美国产免费| 亚洲天堂网在线观看| 国产黑丝在线视频| 欧美日韩五区| 亚洲一区二区美女| 亚洲日本理论电影| 天堂在线中文字幕| 国产成人精品网址| 国产欧美一区二区三区四区 | 国产精品jk白丝蜜臀av小说| 欧美亚洲动漫另类| 一本大道熟女人妻中文字幕在线| 久久日韩视频| 久久精品一区二区三区四区| 国产精品免费区二区三区观看| 中文字幕一区二区三区免费看| 日韩午夜在线| 欧美激情a在线| 久艹在线观看视频| 欧洲乱码伦视频免费| 亚洲激情小视频| xxx中文字幕| 玖玖精品在线| 欧美手机在线视频| 欧美伦理片在线看| 色综合一本到久久亚洲91| 欧美日韩另类字幕中文| 人人干视频在线| 女同视频在线观看| 亚洲线精品一区二区三区| 法国空姐在线观看免费| 日本在线免费| 国产精品福利一区二区三区| 亚洲福利av在线| 国产福利在线| 国产拍揄自揄精品视频麻豆| 色女人综合av| 91电影在线播放| 国产精品天干天干在观线| 色播五月综合| 日韩精品黄色| 一区二区三区丝袜| 国产suv精品一区二区883| 亚洲国产成人二区| 在线观看免费中文字幕| 四虎永久精品在线| 欧美性猛交xxxx| 日本福利视频网站| 成人影视在线播放| 国产精品久久精品日日| 亚洲精品二区| 大胆av不用播放器在线播放| 久久免费电影网| 久久一区二区三区欧美亚洲| 无码精品人妻一区二区| 香港伦理在线| 国产一区二区三区在线观看免费视频 | 天天碰免费视频 | 伊人久久综合97精品| 国产特黄级aaaaa片免| 欧美一区 二区| 亚洲精品成人免费| 黄色国产在线观看| 九九热爱视频精品视频| 亚洲天堂男人天堂| 中国1级黄色片| 午夜av一区| 欧美日韩国产123| 国产精品99re| 亚洲欧美日韩一区在线观看| 日本一区二区三区四区视频| 无码人妻久久一区二区三区 | www.爱久久| 亚洲激情视频在线播放| 亚欧洲乱码视频| 激情综合网站| 久久久精品日本| 久久精品国产av一区二区三区| 亚洲激情亚洲| 国产精品专区h在线观看| 国产精品综合在线| 不卡的电视剧免费网站有什么| 精品国产综合久久| 粉嫩一区二区三区国产精品| 中文字幕五月欧美| 一区二区三区四区五区精品| 欧美男男激情videos| 欧美在线视频日韩| 男女视频在线观看网站| 欧美成人专区| 69堂精品视频| 国产精品久久9| 亚洲婷婷综合网| 三级毛片在线免费看| 国产高清在线精品| 久久久综合亚洲91久久98| 97电影在线| 亚洲午夜国产一区99re久久| 999精彩视频| 精品嫩草影院| 日韩性生活视频| 日韩xxxxxxxxx| 美女在线一区二区| 激情久久av| 久久精品视频免费看 | 日本三级欧美三级| 青草国产精品久久久久久| 国产成人黄色av| 亚洲乱码在线观看| 91欧美一区二区| aa视频在线播放| 国产成年精品| 国产亚洲美女久久| 日韩欧美国产亚洲| 国产一区二区h| 热re99久久精品国产99热| 啪啪免费视频一区| 欧美精品一卡二卡| 亚洲精品国产熟女久久久| 极品中文字幕一区| 成人精品网站在线观看| 欧美精品少妇| 亚洲国产va精品久久久不卡综合| 91插插插插插插插插| 日韩极品少妇| 久久久久久国产三级电影| 91久久精品国产91性色69| 久久网这里都是精品| www.好吊操| 极品国产人妖chinesets亚洲人妖 激情亚洲另类图片区小说区 | 97久久精品人人爽人人爽蜜臀| 好色先生视频污| av一级在线观看| 日本美女一区二区| 久久99精品久久久久久久青青日本| 国内精品久久久久久野外| 在线一区二区三区做爰视频网站| 欧美熟妇精品一区二区蜜桃视频| 欧美精选一区| 91色精品视频在线| 黄色片网站在线| 91精品中文字幕一区二区三区| 欧美福利第一页| 久久综合中文| 欧美午夜精品理论片a级大开眼界| av蜜臀在线| 亚洲第一区中文99精品| 久久精品亚洲无码| 国产成人免费视频| 久久综合久久网| 风间由美中文字幕在线看视频国产欧美| 久久国产精品久久久| 国产欧美一区二区三区视频在线观看 | 国产精品欧美一区二区三区奶水| 男人的天堂在线免费视频| 日韩欧美a级成人黄色| 一本色道综合久久欧美日韩精品| 亚洲一级黄色| 精品国产免费久久久久久尖叫 | 国产69精品99久久久久久宅男| 成人小说亚洲一区二区三区| 亚洲成av人片在www色猫咪| 小毛片在线观看| 一本色道久久综合| 蜜桃av噜噜一区二区三| 91看片一区| 久久精品美女视频网站| 国产视频在线观看视频| 伊人夜夜躁av伊人久久| 欧美xxxx×黑人性爽| 亚洲每日在线| 日韩av一区二区三区美女毛片| 97精品国产综合久久久动漫日韩 | 国产精品无码网站| 日韩制服丝袜av| 正在播放久久| 美女呻吟一区| 国产精品男人爽免费视频1| 麻豆视频在线观看免费网站| 精品黑人一区二区三区久久 | 国产福利在线看| 91精品国产色综合久久| 欧美亚韩一区二区三区| 国产亚洲一本大道中文在线| 国产欧美一区二| 欧美日韩精品免费观看视频完整| 欧美久久久久久一卡四| 超碰国产精品一区二页| 高清亚洲成在人网站天堂| 国产一区二区三区福利| 欧美一级爆毛片| 国产又大又黄又粗| 亚洲免费看黄网站| 亚洲av成人无码一二三在线观看| 久久av老司机精品网站导航| 女人帮男人橹视频播放| 精品国产乱码久久久| 亚洲一区二区三区在线视频| 日韩伦理福利| 欧美国产精品人人做人人爱| 你懂的在线视频| 91精品国产综合久久久久久久| 日韩污视频在线观看| 中文字幕中文乱码欧美一区二区| 亚洲欧美高清在线| 美女一区二区三区在线观看| 日本a视频在线观看| 欧美mv日韩| 精品国产一区二区三区久久久久久| 伊人国产精品| 日本精品久久中文字幕佐佐木| www在线观看播放免费视频日本| 亚洲毛片在线免费观看| www.97av| 欧美精品v国产精品v日韩精品| 国产精品7777| √…a在线天堂一区| 黄色片网站免费| 91在线云播放| 中文字幕第九页| 国产精品亚洲一区二区三区在线| 久久精品免费网站| 国产精品丝袜xxxxxxx| 久久精品xxx| 91精品一区二区三区综合| 欧美第一黄网| 久久久伦理片| 国产亚洲一区二区三区在线播放 | 欧美在线不卡视频| 日操夜操天天操| 一区二区欧美在线观看| www青青草原| 亚洲视频一区在线| 青青青视频在线免费观看| www一区二区| 99久久国产精| 99久久精品情趣| www.久久com| 丁香桃色午夜亚洲一区二区三区| 亚洲av毛片在线观看| 国产一区二区精品久久99| 欧美激情国内自拍| 精品在线免费视频| 91网址在线观看精品| 国产一区二区成人久久免费影院| 超碰在线资源站| 国内精品国产三级国产a久久| 亚洲欧洲日本精品| 日韩av一二三| 无需播放器的av| 美女精品自拍一二三四| 九色porny自拍| 免费精品视频在线| 中文字幕22页| 国产精品综合视频| 国产精品成人免费一区久久羞羞| 国产成人av资源| 日本人添下边视频免费| 99在线精品视频| a级大片在线观看| 国产精品无遮挡| 小嫩苞一区二区三区| 亚洲男同1069视频| 国产精品30p| 欧美怡红院视频| 97人人爽人人爽人人爽| 欧美成人艳星乳罩| 日韩欧美在线观看一区二区| 一区二区三区精品99久久| 日本在线观看视频| 午夜精品久久久久久久99热| 草草视频在线观看| 国产精品777| 99久久久国产| 国产欧美日韩在线播放| 精品欧美午夜寂寞影院| 一区二区三区我不卡| 欧美日韩午夜| 亚洲国产精品毛片av不卡在线| 久久国产尿小便嘘嘘| 亚洲 自拍 另类 欧美 丝袜| 成人免费看黄yyy456| 五月婷婷欧美激情| 夜夜嗨av一区二区三区中文字幕| 成人午夜淫片100集| 欧美日韩一区二区三区高清| 成 人片 黄 色 大 片| 亚洲国产日韩精品在线| a级在线观看| 日本久久91av| 亚洲日本va中文字幕| 日本午夜精品一区二区| 亚洲欧美文学| 黄色a级在线观看| 日本免费色视频| 国产三级视频在线| 日韩精品一区二区三区四区视频| 亚洲h视频在线观看| 在线视频国产日韩| 日韩影视在线| 国产精品第1页| 成人性生交大片免费看中文视频| 亚洲男人第一av网站| 亚洲大尺度视频| 亚洲欧洲一区二区三区久久| 羞羞网站在线看| 欧美在线视频观看| 国产suv精品一区| 一本久久a久久精品vr综合| 国产午夜精品一区二区三区欧美| 亚洲av无日韩毛片久久| 国产视频在线观看一区二区三区| 国产极品国产极品| 欧美精品在线观看一区二区| 你懂的视频在线免费| 久久久久免费视频| 外国成人毛片| 欧美一区二区三区精美影视 | 丁香社区五月天| 精品国产乱码久久久久久老虎| www黄在线观看| 国产精品久久久久久久久免费| 欧美日韩大片免费观看| 久久久久久久久久久综合| 久久99精品国产.久久久久久| 中文字幕在线1| 欧美综合在线视频| 日本亚洲一区| 午夜精品一区二区三区在线| 成人h动漫免费观看网站| 欧美少妇一区二区三区| 久久精品免费看| 欧美三级视频网站| 91精品福利视频| 免费人成黄页在线观看忧物| 欧美一级淫片aaaaaaa视频| 国产欧美日韩在线一区二区| 欧美爱爱视频免费看| 成人午夜在线播放| 精品无码m3u8在线观看| 欧美成人女星排名| 捆绑调教日本一区二区三区| 国产精品国产一区二区| 欧美日韩伊人| 香蕉久久久久久av成人| 一区二区三区免费网站| 国产乱人乱偷精品视频a人人澡| 日韩在线观看免费全集电视剧网站| 性欧美freehd18| 日韩高清av电影| 精品无人码麻豆乱码1区2区 | 亚洲一区二区av电影| 懂色av一区二区三区四区| 国色天香2019中文字幕在线观看| 女人av一区| 另类小说第一页| 国产精品的网站| 国产日本精品视频| 欧美成人在线网站| 日韩深夜影院| 国产激情在线观看视频| 中文字幕欧美国产| 91麻豆一区二区| 久久天堂电影网| 日韩综合一区二区三区| 水蜜桃在线免费观看| 成人深夜视频在线观看| 久久黄色精品视频| 在线日韩欧美视频| 国产aⅴ精品一区二区四区| 北条麻妃在线视频观看| 欧美国产一区二区| 国产成人精品毛片| 欧美亚洲视频在线观看| 香蕉久久网站| 精品人妻伦一二三区久| 色婷婷av一区| av香蕉成人| 精品国产乱码久久久久| 国产精品影视在线| 青青草免费观看视频|