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

大模型 LLM.int8() 量化技術原理與代碼實現

人工智能
本文將深入探討量化的基本原理,介紹LLM.int8()大模型量化方法,并通過具體的代碼實戰來展示如何實現模型的量化,以便在各種設備上高效運行這些模型。

大語言模型LLM因其龐大的參數規模,往往難以在消費級硬件上直接運行。這些模型的參數量可能達到數十億級別(主要是權重),這些參數不僅存儲成本高,推理階段的計算量也很大。通常需要顯存較大的GPU來加速推理過程。

因此,越來越多的研究開始關注如何縮小模型,比如改進訓練方法或引入適配器模塊。其中一項關鍵技術便是量化(quantization)。

本文將深入探討量化的基本原理,介紹LLM.int8()大模型量化方法,并通過具體的代碼實戰來展示如何實現模型的量化,以便在各種設備上高效運行這些模型。

基礎知識

1.數值表示

模型推理過程中,激活值是輸入和權重之積,因此權重數量越多,激活值也會越大。

因此,我們需要盡可能高效表示數十億個值,從而盡可能減少存儲參數所需的空間。

大語言模型中參數數值,通常被表示為浮點數。浮點數(floating-point numbers,簡稱 floats)是一種用于表示帶有小數點的正數或負數的數據類型。

在計算機科學中,浮點數通常遵循IEEE-754標準進行存儲。這一標準定義了浮點數的結構,包括符號位、指數位和尾數位三個組成部分。其中,

  • 符號位(Sign Bit):決定了浮點數的正負。
  • 指數位(Exponent Bits):表示浮點數的指數部分。
  • 尾數位(Fraction Bits):表示小數點后的數值部分。

三部分結合起來,即可根據一組bit值計算出所表示的數值。使用的位數越多,表示的數值值通常越精確。

  • 半精度浮點數(Half-Precision Floats, FP16):使用16位來表示一個浮點數,其中包括1位符號位、5位指數位和10位尾數位。

  • 單精度浮點數(Single-Precision Floats, FP32):使用32位來表示一個浮點數,其中包括1位符號位、8位指數位和23位尾數位。

2.動態范圍與精度

動態范圍(Dynamic Range):指的是可表示的最大值與最小值之間的范圍。可用的位數越多,動態范圍也就越廣。

精度(Precision):指兩個相鄰可表示值之間的差距。可用的位數越多,精度也就越高。

對于給定的浮點數表示形式,我們可以計算出存儲特定數值所需的內存大小。例如,對于32位浮點數(FP32),每個數值占用4字節(8位/字節),而對于16位浮點數(FP16),每個數值占用2字節。

假設模型有N個參數,每個參數使用B位表示,則模型的內存需求(以字節為單位)可以用以下公式計算:

在實際應用中,除了模型本身的參數外,推理過程中的內存/顯存需求還受到其他因素的影響,例如:

  • 上下文大小:對于序列模型而言,處理的序列長度會影響內存需求。
  • 模型架構:不同的模型架構可能會有不同的內存使用模式。

對于一個包含700億參數的模型,如果使用32位浮點數表示,所需的內存為:

如果改為使用16位浮點數表示,所需的內存將減少一半:

由此可見,將模型參數的表示位數最小化,即量化(不僅是推理,還有訓練過程)能夠顯著減少內存需求,但這也意味著精度的降低,可能會對模型的準確性產生負面影響。

「因此,量化技術的目標是在保持模型準確性的同時盡可能減少表示數值所需的位數。」

二、什么是模型量化?

所謂模型量化,其實就是將模型參數的精度從較高位寬(如FP16、FP32、BF16,一般是浮點運算)轉換為較低位寬(如Int8、Int4,一般是整數運算),從而降低模型存儲大小及顯存占用、提升推理性能。

三、量化分類

模型量化可從以下幾方面分類:

(1) 根據量化時機

  • 訓練時量化(Quantization-Aware Training, QAT),需要模型重新訓練。
  • 訓練后量化(Post Training Quantization,PTQ),可以量化預訓練好的模型。不需要重新訓練。

(2) 根據映射函數是否為線性

  • 線性量化
  • 非線性量化

(3) 根據量化的粒度(共享量化參數的范圍)

  • Tensor粒度(per-tensor):整個矩陣一起量化。
  • Token粒度(per-token)和Channel粒度(per-channel):每行/每列單獨量化,X的每一行代表一個Token,W的每一列代表一個Channel。
  • Group粒度(per-group):兩者的折衷,多行/多列分為一組,每組分別量化。

(4) 根據量化范圍

  • 只量化權重(Weight Only):只量化模型權重,推理時是INT乘FLOAT。
  • 權重與激活同時量化(Weight and Activation):這里的激活實際是就是每一層的輸入,對于矩陣乘法Y = WX,同時量化W和X,推理時是INT乘INT。

目前Weight and Activation可以做到Int8(或者叫W8A8,Weight 8bit Activition 8bit)與FP16水平相當,而Weight Only方向INT4(W4A16)已經可以做到與FP16相差無幾,INT3(W3A16)也很接近了。實際上,這兩個方向并不是互斥的,我們完全可以同時應用兩種方式,只是工程比較復雜,暫時還沒有成熟的框架。

?

(5) 根據存儲一個權重元素所需的位數

  • 8bit量化
  • 4bit量化
  • 2bit量化
  • 1bit量化

四、量化方案

1.LLM.int8()

(1) LLM.int8()量化算法

INT8量化的基本思想是將浮點數通過縮放因子scale映射到范圍在[-128, 127]內的8位整數表示

量化公式如下:

其中:

  • Xq表示量化后的整數。
  • Xf表示量化前的浮點數。
  • scale表示縮放因子。
  • Round 表示四舍五入為整數。
  • Clip表示將結果截斷到[-128, 127]范圍內。

縮放因子scale的計算公式:

其中,表示浮點數最大絕對值。

反量化的過程為:

如下圖所示為通過該方式實現量化-反量化的示例。假設使用absmax quantization技術對向量[1.2, -0.5, -4.3, 1.2, -3.1, 0.8, 2.4, 5.4]進行量化。首先找到絕對值最大值5.4。Int8的取值范圍是[-127, 127],所以量化因子為127/5.4=23.5。因此向量會被量化成[28, -12, -101, 28, -73, 19, 56, 127]。

為了還原原始值,可以使用全精度的int8數值除以量化因子23.5。但是它們在量化過程中是四舍五入取整過的,會損失一些精度。

為了不區分int8格式的正負符號,我們需要減去最小值,然后再使用最大值作為量化因子。具體實現如下:

對于給定的向量或矩陣,首先找到最小值,并減去最小值:

找到X'的絕對最大值,使用絕對最大值作為量化因子:

這類似于zero-point量化,但不同之處在于,zero-point量化會確保全精度數值0仍然轉換為整數0,從而在數值0處保證不會有量化損失。

LLM.int8()算法的具體步驟:

  • 從矩陣隱藏層中,以列為單位,抽取值大于確定閾值的異常值(outliers)。
  • 分別通過FP16精度對outliers的部分做矩陣乘法,通過量化int8精度對其他的做矩陣乘法。
  • 將量化的部分恢復成FP16,然后將兩部分合在一起。

「為什么要單獨抽出異常值(outliers)?」

在大規模模型中,數值超出全局閾值范圍的被稱為outliers。8位精度的數據是壓縮的,因此量化一個含有幾個大數值的向量會導致大量錯誤的結果。例如,如果一個向量中有幾個數值遠大于其他數值,那么量化這些數值會導致其他數值被壓縮到零,從而產生較大的誤差。

Transformer 架構的模型會將所有的內置特征連接組合在一起。因此,這些量化錯誤會在多層網絡的傳播中逐步混合在一起,導致整體性能的下降。

為了解決這些問題,混合精度量化技術應運而生。這種技術將大數值的特征拆分出來,進行更有效的量化和混合精度計算。

(2) LLM.int8()量化實現

如下是在Transformers庫中集成nuances庫,利用bitsandbytes庫提供的8位量化功能,將模型轉換為int8精度。

第一步:導入庫

import torch
import torch.nn as nn
import bitsandbytes as bnb
from bnb.nn import Linear8bitLt

在自己的數據集和任務上訓練模型了,最后保存模型定義自己的模型。可以從任何精度(FP16,BF16,FP32)轉換至int8。但模型的輸入需要是FP16精度。所以下面為FP16精度的模型。

fp16_model = nn.Sequential(
    nn.Linear(64, 64),
    nn.Linear(64, 64)
)

第三步:在自己的數據集和任務上訓練模型,最后保存模型

# 訓練模型
[... train the model ...]

# 保存模型
torch.save(fp16_model.state_dict(), "model.pt")

第四步:定義一個int8精度的模型。

int8_model = nn.Sequential(
    Linear8bitLt(64, 64, has_fp16_weights=False),
    Linear8bitLt(64, 64, has_fp16_weights=False)
)

這里加入has_fp16_weights的參數是很重要的。因為它默認會被設置為True,這意味著它會被作為Int8/FP16混合精度訓練。然而,我們關心的是use has_fp16_weights=False時的計算內存占用。

第五步:加載模型并量化至int8精度。

int8_model.load_state_dict(torch.load("model.pt"))
int8_model = int8_model.to(0)  # 量化

int8_model = int8_model.to(0) 將模型存入顯卡,會執行量化。

如果在其之前打印int8_model[0]的權重,可得到FP16的精度值。

print("Before quantization:")
print(int8_model[0].weight)


Parameter containing:
tensor([[ 0.0031, -0.0438, 0.0494, ..., -0.0046, -0.0410, 0.0436],
        [-0.1013, 0.0394, 0.0787, ..., 0.0986, 0.0595, 0.0162],
        [-0.0859, -0.1227, -0.1209, ..., 0.1158, 0.0186, -0.0530],
        ...,
        [ 0.0804, 0.0725, 0.0638, ..., -0.0487, -0.0524, -0.1076],
        [-0.0200, -0.0406, 0.0663, ..., 0.0123, 0.0551, -0.0121],
        [-0.0041, 0.0865, -0.0013, ..., -0.0427, -0.0764, 0.1189]],
 dtype=torch.float16)

如果在其之后打印int8_model[0]的權重,可得到INT8的精度值。

print("After quantization:")
print(int8_model[0].weight)
Parameter containing:
tensor([[ 3, -47, 54, ..., -5, -44, 47],
        [-104, 40, 81, ..., 101, 61, 17],
        [ -89, -127, -125, ..., 120, 19, -55],
        ...,
        [ 82, 74, 65, ..., -49, -53, -109],
        [ -21, -42, 68, ..., 13, 57, -12],
        [ -4, 88, -1, ..., -43, -78, 121]],
 device='cuda:0', dtype=torch.int8, requires_grad=True)

由此可見,權重值被壓縮了,分布在[-127,127]之間。

如需恢復FP16精度,則:

print("Restored FP16 precision:")
print((int8_model[0].weight.CB * int8_model[0].weight.SCB) / 127)

然后得到:

tensor([[ 0.0028, -0.0459, 0.0522, ..., -0.0049, -0.0428, 0.0462],
        [-0.0960, 0.0391, 0.0782, ..., 0.0994, 0.0593, 0.0167],
        [-0.0822, -0.1240, -0.1207, ..., 0.1181, 0.0185, -0.0541],
        ..., 
        [ 0.0757, 0.0723, 0.0628, ..., -0.0482, -0.0516, -0.1072],
        [-0.0194, -0.0410, 0.0657, ..., 0.0128, 0.0554, -0.0118], 
        [-0.0037, 0.0859, -0.0010, ..., -0.0423, -0.0759, 0.1190]],
 device='cuda:0')

這和原始的FP16精度權重非常接近。

第六步:在同一個顯卡上用FP16精度計算模型。

input_ = torch.randn(64, dtype=torch.float16)
hidden_states = int8_model(input_.to(torch.device('cuda', 0)))

第七步:集成到Transformer庫。

使用accelerate庫初始化模型。當處理大型模型時,accelerate庫提供了很多便利,特別是在內存管理和模型初始化方面。init_empty_weights方法可以幫助任何模型在初始化時不占用任何內存。

import torch.nn as nn
from accelerate import init_empty_weights
with init_empty_weights():
    model = nn.Sequential([nn.Linear(100000, 100000) for _ in range(1000)]) # This will take ~0 RAM!

修改.from_pretrained。當調用函數.from_pretrained時,會內置將所有參數調用torch.nn.Parameter,這不符合功能模塊Linear8bitLt。因此,將Actor生成的

module._parameters[name] = nn.Parameter(module._parameters[name].to(torch.device("meta")))

修改為:

param_cls = type(module._parameters[name])
kwargs = module._parameters[name].__dict__
module._parameters[name] = param_cls(module._parameters[name].to(torch.device("meta")), **kwargs)

替換 nn.Linear 層為 Linear8bitLt 層

def replace_8bit_linear(model, threshold=6.0, module_to_not_convert="lm_head"):
    for name, module in model.named_children():
        if len(list(module.children())) > 0:
            replace_8bit_linear(module, threshold, module_to_not_convert)

        if isinstance(module, nn.Linear) and name != module_to_not_convert:
            with init_empty_weights():
                model._modules[name] = bnb.nn.Linear8bitLt(
                    module.in_features,
                    module.out_features,
                    module.bias is not None,
                    # 參數has_fp16_weights需要被設置為False,從而直接加載模型權重為int8精度。
                    has_fp16_weights=False,
                    threshold=threshold
                )
    return model
model = replace_8bit_linear(model, threshold=6.0)
責任編輯:趙寧寧 來源: 小喵學AI
相關推薦

2024-08-19 02:35:00

模型量化深度學習

2024-09-13 16:47:06

模型量化AI

2025-11-17 08:00:00

LLMAWQGPTQ

2024-04-07 14:28:48

邊緣計算LLM人工智能

2025-03-27 02:50:00

2025-03-04 01:00:00

LLM架構數據訓練

2023-10-06 20:30:33

大模型LLMtoken

2024-09-02 12:30:30

2024-06-18 14:01:17

2024-04-02 07:25:19

大語言模型青少年編程NLG

2024-07-09 11:01:24

2024-07-31 14:08:00

2025-10-15 01:15:00

模型壓縮剪枝蒸餾

2024-04-25 14:40:47

2025-05-29 08:30:00

LLM大語言模型AI

2024-07-31 08:14:17

2015-09-25 09:56:37

負載均衡

2025-08-25 07:00:00

大語言模型LLM人工智能

2024-10-22 09:17:07

2017-05-16 15:33:42

Python網絡爬蟲核心技術框架
點贊
收藏

51CTO技術棧公眾號

欧美sm一区| 亚洲第一色网站| 欧美日韩激情| 欧美一区二区网站| 青草网在线观看| 欧美一区二区三区成人片在线| 久久久夜精品| 久久精品这里热有精品| 在线xxxxx| 成人在线不卡| 性欧美大战久久久久久久久| 色播亚洲婷婷| 四虎在线视频免费观看| 日日欢夜夜爽一区| 久久免费国产视频| 林心如三级全黄裸体| 国产suv精品一区二区四区视频| 色综合久久精品| 国产一区二区三区乱码| av每日在线更新| 成人网在线免费视频| 国产精品久久久久久久久久久新郎 | 精品成人私密视频| 国产一区二区在线免费播放| 91黄页在线观看| 自拍偷拍国产精品| 欧美在线播放一区二区| 亚洲av少妇一区二区在线观看| 免费一级片91| 欧美性视频网站| 精品视频久久久久| 一区二区三区四区日韩| 亚洲视频第一页| 亚洲黄色免费在线观看| ccyy激情综合| 日韩午夜电影av| 污污的视频免费观看| 美女福利一区二区三区| 精品久久久久久亚洲精品| 女人被男人躁得好爽免费视频 | 精品久久久久久中文字幕2017| 99热99re6国产在线播放| 亚洲人被黑人高潮完整版| 亚洲精品久久区二区三区蜜桃臀 | 久久久久久亚洲综合影院红桃| 成人在线观看av| 99久久精品免费看国产交换| 久久精品国产免费看久久精品| 国产极品jizzhd欧美| 少妇一级淫片免费放中国| 欧美特黄一区| 欧美黑人性猛交| 久久久久久久久久99| 欧美暴力喷水在线| 欧美黑人狂野猛交老妇| 国产一级做a爱免费视频| 一区二区亚洲精品| 国产综合在线看| 五月婷婷开心网| 亚洲一区成人| 日韩女优在线播放| 中文精品久久久久人妻不卡| 日韩激情中文字幕| 国产有码在线一区二区视频| 国产精品久久婷婷| 国产成人综合在线观看| 国产精品加勒比| 午夜影院在线视频| 久久久噜噜噜久噜久久综合| 日本一区二区不卡高清更新| 日本中文字幕在线播放| 亚洲男人的天堂在线观看| 欧洲精品视频在线| 久草在线视频福利| 欧美性猛xxx| 性刺激的欧美三级视频| 国产精品一区免费在线| 亚洲成人免费在线视频| 欧美性猛交xxxx乱| 国产精品国产一区| 69视频在线播放| 国产精品xxxxxx| 国产馆精品极品| 麻豆一区区三区四区产品精品蜜桃| 电影av在线| 尤物av一区二区| 免费在线激情视频| 色综合视频一区二区三区日韩| 日韩欧美国产1| 日韩人妻一区二区三区| 亚洲精品国产偷自在线观看| 97视频在线观看成人| 五月婷婷丁香在线| 国产91精品露脸国语对白| 精品国产综合久久| 欧美激情黑人| 欧美日韩中文在线| 亚洲精品成人在线播放| 全球av集中精品导航福利| 色播久久人人爽人人爽人人片视av| 青娱乐国产在线| 视频在线在亚洲| 亚洲综合视频1区| 手机看片福利在线观看| 亚洲欧美另类小说| 国产精品乱码久久久久| 99这里只有精品视频| 亚洲最新视频在线| 日本网站免费观看| 国产一区二区三区精品欧美日韩一区二区三区 | 成人在线视频成人| 亚洲成人动漫精品| 51自拍视频在线观看| 久久成人av| 久久久久久成人| 国产精品天天操| 国产午夜精品美女毛片视频| 真实国产乱子伦对白视频| 99久久伊人| 亚洲精品www| 免费看一级一片| 久久成人免费电影| 欧美久久久久久一卡四| 97在线超碰| 欧美www视频| 久久久久亚洲AV成人| 蜜桃视频一区二区三区| 欧美一区二区三区在线免费观看| 动漫一区二区| 欧美成人精品高清在线播放| 久久国产波多野结衣| 日本午夜一区二区| 欧美在线视频一区二区三区| 特黄毛片在线观看| 亚洲国产成人精品久久久国产成人一区 | 琪琪第一精品导航| 婷婷开心激情网| 午夜精品久久久久影视| 丰满少妇xbxb毛片日本| 欧美日韩精选| 91在线视频九色| av网站在线免费| 91麻豆精品国产91久久久资源速度 | 欧美专区日韩视频| 亚州精品国产精品乱码不99按摩| 亚洲一区电影777| 亚洲性图第一页| 欧美午夜不卡影院在线观看完整版免费| 国产日本欧美一区二区三区在线 | www.污视频| 亚洲综合激情网| 精品无码人妻少妇久久久久久| 国产精品xvideos88| 国产精品久久国产精品| 不卡av免费观看| 日韩精品免费电影| 美女又爽又黄免费视频| 国产调教视频一区| 一级在线免费视频| 91精品国产调教在线观看| 国产在线视频一区| 色婷婷在线播放| 亚洲国产成人精品电影| 无码人妻丰满熟妇区五十路| 欧美极品少妇xxxxⅹ高跟鞋| 欧美大片久久久| 国产综合自拍| 久久精品二区| 97成人超碰| 欧美另类69精品久久久久9999| 亚洲成熟女性毛茸茸| 日韩欧美国产高清91| 奇米网一区二区| 国产白丝精品91爽爽久久 | 老鸭窝一区二区久久精品| 三级网在线观看| 久久精品色综合| 国产精品69精品一区二区三区| 日本www在线观看| 精品乱码亚洲一区二区不卡| 午夜婷婷在线观看| 亚洲欧美二区三区| 国产精品无码网站| 蜜臀av一区二区| 天堂8在线天堂资源bt| 国产日产一区| 亚洲aa中文字幕| 最近在线中文字幕| 久久资源免费视频| 性感美女福利视频| 欧美日韩电影在线播放| 日本在线视频免费观看| 国产精品毛片无遮挡高清| 亚洲精品激情视频| 久久国产乱子精品免费女| 无码熟妇人妻av在线电影| 欧美三级美国一级| 国产精品免费一区二区三区四区| 色婷婷综合久久久中字幕精品久久 | 二区三区四区视频| 久久欧美一区二区| 真实乱偷全部视频| 美女在线视频一区| 国产午夜大地久久| 欧美激情91| 视频一区视频二区视频三区视频四区国产 | 五月天国产一区| 久久久久观看| 91欧美激情另类亚洲| 美女写真久久影院| 91精品成人久久| a级影片在线观看| 在线观看视频亚洲| 亚洲av成人无码网天堂| 日韩一区二区在线看片| 亚洲一区 中文字幕| 欧美视频不卡中文| 国产一级一片免费播放放a| 亚洲欧洲精品天堂一级| 四虎永久免费在线观看| 成人av资源在线观看| 日本高清免费观看| 久久国产人妖系列| 中文字幕22页| 久久尤物视频| 少妇高潮喷水久久久久久久久久| 欧美午夜国产| 国产 国语对白 露脸| 欧美丰满日韩| 亚洲综合视频一区| 日韩欧美视频专区| 午夜精品短视频| 免费毛片在线不卡| 欧美动漫一区二区| 欧美亚洲tv| 久久国产欧美精品| 亚洲毛片免费看| 免费精品视频一区| 校园春色另类视频| 久久久久久久久久码影片| 国产精品qvod| 精品久久蜜桃| 色婷婷综合久久久久久| 久久99欧美| 蜜桃a∨噜噜一区二区三区| 欧美xxxx黑人又粗又长密月| 全球av集中精品导航福利| 久久爱av电影| 欧美**字幕| 日韩区国产区| 日韩国产一区| 欧美少妇一级片| 欧美一区免费| 国产综合中文字幕| 亚洲欧美日韩视频二区| 欧美日韩在线视频一区二区三区| 天堂va蜜桃一区二区三区漫画版| 久久综合久久色| 免费一级片91| 四虎国产精品永久免费观看视频| 国产馆精品极品| 亚洲av无码一区二区三区观看| 99re6这里只有精品视频在线观看| 超碰97在线资源站| 国产亚洲精品精华液| 2014亚洲天堂| 亚洲一区二区美女| 一级黄色免费网站| 欧美日韩国产综合一区二区| 国产一区二区三区四区视频| 欧美成人免费网站| 国产永久免费高清在线观看| www.亚洲男人天堂| 欧美黑人猛交的在线视频| 2024亚洲男人天堂| a∨色狠狠一区二区三区| 成人精品视频99在线观看免费| 日韩精品亚洲专区在线观看| 精品国产乱码久久久久软件| 欧美亚洲国产精品久久| 亚洲国产精品女人| 亚洲小说区图片区| 狠狠操精品视频| 国产精品亚洲一区二区三区妖精| 97人妻精品一区二区三区免 | 福利一区和二区| 国产精品毛片一区视频| 欧美日韩国产一区二区三区不卡| 国产精品igao激情视频 | 欧美做受高潮电影o| 国产一区二区三区免费在线| 久久久久se| 午夜精品视频一区二区三区在线看| av在线免费观看国产| 免播放器亚洲一区| 蜜臀av一区二区三区有限公司| 亚洲欧美综合另类在线卡通| 黄色一级片免费在线观看| 日韩视频一区二区在线观看| 国产在线超碰| 欧美亚洲视频在线看网址| 免费一级欧美片在线观看网站| 欧洲精品码一区二区三区免费看| 国内自拍一区| 色呦色呦色精品| 久久精品一二三| 国产一级做a爰片在线看免费| 欧美日本韩国一区二区三区视频 | 欧美日韩大尺度| 菠萝蜜视频在线观看一区| tube国产麻豆| 欧美日韩国产天堂| 久久精品国产亚洲a∨麻豆| 欧美日本国产在线| 久久91超碰青草在哪里看| 久久久精品动漫| 午夜精品亚洲| 亚洲涩涩在线观看| 国产亚洲一区二区三区四区 | 四虎精品在线| 欧美黄色片免费观看| 日韩午夜视频在线| 亚洲精品第一区二区三区| 亚洲另类自拍| 日韩大片一区二区| 91视频.com| 国产精品2020| 精品国产乱码久久久久久闺蜜| 中文日本在线观看| 国产精品偷伦免费视频观看的| 青青视频一区二区| 五月天在线免费视频| 麻豆精品国产传媒mv男同| 免费毛片视频网站| 色婷婷综合久久久久中文一区二区 | 日本伦理一区二区| 91欧美激情另类亚洲| 亚洲精品极品少妇16p| 色综合天天色综合| 国产精品美女久久久久av爽李琼| 黄色片中文字幕| 亚洲精品久久久久久久久久久久 | 国产一区二区三区四区五区| 2018国产在线| 床上的激情91.| 男女啊啊啊视频| 亚洲精品久久久久久久久久久久| 久久国产精品黑丝| 97欧洲一区二区精品免费| 91超碰成人| 免费不卡av网站| 亚洲欧美另类综合偷拍| 亚洲AV无码国产精品午夜字幕| 欧美日韩国产成人| 农村少妇一区二区三区四区五区| 日韩精品在线观看av| 97久久超碰国产精品| 久久99国产综合精品免费| 亚洲人成人99网站| 久久精品嫩草影院| 一区二区免费在线视频| 国产精品一区二区黑丝| 久久久精品人妻一区二区三区四 | 欧美在线性视频| 国产免费久久| 网站一区二区三区| 亚洲免费观看视频| 丁香六月色婷婷| 日本亚洲欧美成人| 国产欧美日韩| 日日鲁鲁鲁夜夜爽爽狠狠视频97| 国产欧美1区2区3区| 一级黄色片在线| 久久久久久久爱| 色婷婷综合久久久久久| 国产超碰在线播放| 一区二区在线观看视频| 日韩一级片免费看| 久久青草精品视频免费观看| 日韩中文av| 男人天堂999| 亚洲日本在线看| 国产综合无码一区二区色蜜蜜| 国产盗摄xxxx视频xxx69| 久久免费大视频| 成人性生活免费看| 日本韩国欧美在线| a级大胆欧美人体大胆666| 蜜桃麻豆www久久国产精品| 国产成人午夜精品影院观看视频| 日韩av一区二区在线播放| 亚洲视频日韩精品| 成人动态视频| 成人性视频欧美一区二区三区| 一区二区欧美视频| 极品白浆推特女神在线观看| 99国内精品久久久久久久软件| 亚洲在线一区| www.av视频| 亚洲视频日韩精品|