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

大模型預(yù)訓(xùn)練代碼實(shí)戰(zhàn)教程

發(fā)布于 2025-6-6 07:05
瀏覽
0收藏

任務(wù)介紹

本文使用一個簡單的數(shù)據(jù)集,展示大模型預(yù)訓(xùn)練與有監(jiān)督微調(diào)過程。無論是大模型的預(yù)訓(xùn)練還是有監(jiān)督微調(diào),其損失值的計(jì)算過程都是與下一個要預(yù)測的詞計(jì)算損失。

預(yù)訓(xùn)練損失值的計(jì)算,即從第一個字開始每個字都與下一個字計(jì)算損失;

有監(jiān)督微調(diào)與預(yù)訓(xùn)練唯一不同的點(diǎn),便是不對指令與用戶的輸入文本計(jì)算損失,實(shí)際操作就是把用戶輸入文本在訓(xùn)練過程中遮罩掉,把對應(yīng)的 label 的值設(shè)置為-100。這是因?yàn)椴幌M竽P蛯W(xué)會,如何生成的用戶的問題。

當(dāng)前文章介紹預(yù)訓(xùn)練,下篇文章介紹有監(jiān)督微調(diào)

本文不使用 llamafactory 等,大模型微調(diào)工具,上述工具把大模型微調(diào)的過程都封裝到底層了。只使用 transformers庫的AutoTrain實(shí)現(xiàn)大模型的微調(diào)。

開源地址:

??https://github.com/JieShenAI/csdn/tree/main/25/02/pre_train??

原始數(shù)據(jù)集

將使用下述5條數(shù)據(jù)微調(diào)大模型,對比一下,預(yù)訓(xùn)練與有監(jiān)督微調(diào)的區(qū)別。

[
  {
    "instruct": "請你給哪吒寫一首詩:",
    "input": "哪吒降世,意氣飛揚(yáng)。\n逆天改命,破障沖霄。",
    "label": "紅綾纏腕,風(fēng)火踏浪。\n不屈不悔,笑傲蒼茫。"
  },
  {
    "instruct": "請你給敖丙寫一首詩:",
    "input": "碧海生龍子,云中舞雪霜。",
    "label": "恩仇難兩忘,何處是家鄉(xiāng)?"
  },
  {
    "instruct": "請你給殷夫人寫一首詩:",
    "input": "十月懷胎盼子生,柔心鐵骨兩相承。",
    "label": "甘將慈愛護(hù)天地,不懼風(fēng)雷不懼征。"
  },
  {
    "instruct": "請你給太乙真人寫一首詩:",
    "input": "仙風(fēng)道骨,騎獸遨游。",
    "label": "爐中煉術(shù),指點(diǎn)神童。"
  },
  {
    "instruct": "請你給申公豹寫一首詩:",
    "input": "陰謀藏心,步步為營。\n狂傲不羈,志向高冥。",
    "label": "欲翻天命,終難遂行。\n困局自招,悔恨難平。"
  }
]

下述是標(biāo)準(zhǔn)的有監(jiān)督微調(diào)的數(shù)據(jù)格式,使用 ??apply_chat_template?? 方法,告知模型哪些是系統(tǒng)提示詞、用戶問題、模型的回答。

d = {
    "instruct": "請你給哪吒寫一首詩:",
    "input": "哪吒降世,意氣飛揚(yáng)。\n逆天改命,破障沖霄。",
    "label": "紅綾纏腕,風(fēng)火踏浪。\n不屈不悔,笑傲蒼茫。",
}
messages = [
    {
        "role": "system",
        "content": "You are Qwen, created by Alibaba Cloud. You are a helpful assistant.",
    },
    {
        "role": "user",
        "content": d["instruct"] + d["input"],
    },
    {
        "role": "assistant",
        "content": d["label"],
    },
]
text = tokenizer.apply_chat_template(
    messages,
    tokenize=False,
    # add_generation_prompt=True
)
print(text)

輸出:

<|im_start|>system
You are Qwen, created by Alibaba Cloud. You are a helpful assistant.<|im_end|>
<|im_start|>user
請你給哪吒寫一首詩:哪吒降世,意氣飛揚(yáng)。
逆天改命,破障沖霄。<|im_end|>
<|im_start|>assistant
紅綾纏腕,風(fēng)火踏浪。
不屈不悔,笑傲蒼茫。<|im_end|>

上述是數(shù)據(jù) template的構(gòu)造,每個大模型的template不一樣,但很多大模型微調(diào)工具(llamafactory等)都會自動構(gòu)造template,無需太擔(dān)心。

本文是大模型預(yù)訓(xùn)練與有監(jiān)督微調(diào)的手搓簡化版本,數(shù)據(jù)構(gòu)造不使用template,設(shè)置預(yù)訓(xùn)練和有監(jiān)督微調(diào)的輸入文本一樣,都是把 ??instruct + input + label?? 拼接起來,在結(jié)尾添加一個結(jié)束符號。

instruct + input + label + tokenizer.eos_token

在結(jié)尾需要添加 ??tokenizer.eos_token?? 停止符號,這是為了讓大模型學(xué)會停止文本生成。不然在大模型推理的時候,大模型就會一直往后生成文本,直到達(dá)到模型最大的生成的長度才會停止。

預(yù)訓(xùn)練代碼實(shí)戰(zhàn)

from typing import List, Dict, Sequence
import torch
import transformers
from transformers import TrainingArguments, Trainer
from torch.utils.data import Dataset
from dataclasses import dataclass

IGNORE_INDEX = -100
device = "cuda:0" if torch.cuda.is_available() else "cpu"

??IGNORE_INDEX??? -100, 在 ??label?? 中被標(biāo)注為-100表示不參與 loss 計(jì)算。

from transformers import AutoModelForCausalLM, AutoTokenizer

model_dir = r"Qwen/Qwen2.5-0.5B"

model = AutoModelForCausalLM.from_pretrained(model_dir)
model = model.to("cuda:0")

tokenizer = AutoTokenizer.from_pretrained(model_dir, padding_side="right")

大模型預(yù)訓(xùn)練代碼實(shí)戰(zhàn)教程-AI.x社區(qū)

據(jù)上圖所示,發(fā)現(xiàn) Qwen 模型 文本填充與文本結(jié)束符 是同一個符號。這給后續(xù)計(jì)算文本停止符號的 loss計(jì)算 帶來了麻煩。

這里的討論可以忽略,如果想加深對 填充符號、文本停止符號、generate停止符的理解,可以閱讀下述文本:

如果 文本填充與文本結(jié)束符 是同一個符號,那么在 label 中,就不能把全部的填充符號都設(shè)置為-100,因?yàn)槟P偷奶畛浞柵c文本生成的停止符號是同一個字符。如果全部設(shè)置為-100,都不計(jì)算 loss,會導(dǎo)致模型學(xué)不會生成文本結(jié)束符號。當(dāng)然也可以選擇對所有的文本填充符號都計(jì)算 loss,這會導(dǎo)致模型學(xué)會在生成填充符號之后,下一個字符繼續(xù)生成填充符號。

踩坑經(jīng)歷:我曾經(jīng)在微調(diào)模型的時候,遇到一種情況,大模型在經(jīng)過微調(diào)后,文本生成結(jié)束了還在一直輸出??[PAD]???符號。這個原因就是沒有把填充符號??[PAD]???的 label 設(shè)置為-100,導(dǎo)致大模型學(xué)會了在遇到[PAD]之后,下一個詞依然輸出[PAD]。同時也沒有把??[PAD]??,作為停止符號,添加到generate方法的停止詞中,這才導(dǎo)致了一直生成[PAD]的情況出現(xiàn)。

總而言之,Qwen的填充符與停止符是同一個符號沒有問題。在模型調(diào)用generate方法生成文本時,雖然模型會一直生成填充符號,但是填充符號同時也是停止符號,模型也會停止文本生成。

由于本文不使用框架訓(xùn)練模型,可以更自由一點(diǎn),故自定義填充符為??[PAD]??:

tokenizer.add_special_tokens({
    "pad_token": "[PAD]"
})

tokenizer.pad_token, tokenizer.pad_token_id

輸出:

('[PAD]', 151665)

自定義數(shù)據(jù)集 

class PreTrainDataset(Dataset):

    def __init__(self, data: List):
        super().__init__()
        self.data = data

    def __len__(self):
        return len(self.data)

    def __getitem__(self, idx) -> List[Dict]:
        item = self.data[idx]
        text = item["instruct"] + item["input"] + item["label"] + tokenizer.eos_token
        return text

dataset = PreTrainDataset(data)
dataset[0]

輸出:

'請你給哪吒寫一首詩:哪吒降世,意氣飛揚(yáng)。\n逆天改命,破障沖霄。紅綾纏腕,風(fēng)火踏浪。\n不屈不悔,笑傲蒼茫。<|endoftext|>'

很多人都喜歡在自定義數(shù)據(jù)集里面完成 tokenizer,但我把這個操作留到了 ??DataCollator?? 中。

  • 如果在數(shù)據(jù)集中完成tokenizer,那么就需要在 ??DataCollator??? 對 ??input_ids??? 和 ??attention_mask?? 進(jìn)行手動填充。
  • 如果在 ??DataCollator??? 完成 tokenizer,便無需再對 ??input_ids??? 和 ??attention_mask?? 手動填充。tokenizer 會默認(rèn)把這個batch的數(shù)據(jù)處理完成。只需要手動處理 label。

@dataclass
class DataCollatorForPretrainDataset(object):
    tokenizer: transformers.PreTrainedTokenizer

    def __call__(self, items: Sequence[Dict]) -> Dict[str, torch.Tensor]:

        prompt = [item for item in items]

        prompt_tokenizer = tokenizer(
            prompt,
            return_tensors="pt",
            padding="longest",
            max_length=tokenizer.model_max_length,
            truncatinotallow=True,
        )

        labels = prompt_tokenizer["input_ids"].clone()

        # 不對 pad 計(jì)算 loss
        pad_idx = labels.eq(tokenizer.pad_token_id)
        labels[pad_idx] = -100

        prompt_tokenizer["labels"] = labels
        return prompt_tokenizer
  • ??padding="longest"?? 把數(shù)據(jù)填充到這個 batch中數(shù)據(jù)的最大長度;
  • ??max_length=tokenizer.model_max_length?? 最大長度是 tokenizer中模型是最大長度

大模型預(yù)訓(xùn)練的 ??label??很簡單,就是input_ids,做一個復(fù)制操作就行。

在進(jìn)行模型訓(xùn)練之前,測試一下, DataCollatorForPretrainDataset 處理數(shù)據(jù):

tokenizer.eos_token_id, tokenizer.pad_token_id,

輸出:

(151643, 151665)

data_collator = DataCollatorForPretrainDataset(tokenizer=tokenizer)
prompt_tokenizer = data_collator([dataset[0], dataset[1]])
prompt_tokenizer

輸出:

{'attention_mask': tensor([[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
         1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
        [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
         1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]),
'input_ids': tensor([[112720,  89012,  99459, 122157,  61443, 108462, 100045,   5122,  99459,
         122157,  99457,  99244,   3837,  36589,  99180, 115449,   8997, 100531,
          35727,  22418,  50509,   3837,  99577,  99884,  99907, 109564,   1773,
          99425, 120827, 103073, 103610,   3837,  99208,  79599, 100875,  99964,
           8997,  16530, 102683,  16530, 103020,   3837,  48738, 102744, 102635,
         100619,   1773, 151643],
        [112720,  89012, 113735, 106980,  61443, 108462, 100045,   5122, 102461,
          55135,  21287,  99465,  44729,   3837,  99718,  15946, 100066, 100167,
         105401,   1773, 100697, 100956,  99349,  77540,  99980,   3837, 114216,
          20412, 105686,  11319, 151643, 151665, 151665, 151665, 151665, 151665,
         151665, 151665, 151665, 151665, 151665, 151665, 151665, 151665, 151665,
         151665, 151665, 151665]]),
'labels': tensor([[112720,  89012,  99459, 122157,  61443, 108462, 100045,   5122,  99459,
         122157,  99457,  99244,   3837,  36589,  99180, 115449,   8997, 100531,
          35727,  22418,  50509,   3837,  99577,  99884,  99907, 109564,   1773,
          99425, 120827, 103073, 103610,   3837,  99208,  79599, 100875,  99964,
           8997,  16530, 102683,  16530, 103020,   3837,  48738, 102744, 102635,
         100619,   1773, 151643],
        [112720,  89012, 113735, 106980,  61443, 108462, 100045,   5122, 102461,
          55135,  21287,  99465,  44729,   3837,  99718,  15946, 100066, 100167,
         105401,   1773, 100697, 100956,  99349,  77540,  99980,   3837, 114216,
          20412, 105686,  11319, 151643,   -100,   -100,   -100,   -100,   -100,
           -100,   -100,   -100,   -100,   -100,   -100,   -100,   -100,   -100,
           -100,   -100,   -100]])}

??151643??? 是文本結(jié)束符號,??151665?? 是文本填充符號。

attention_mask 為1的代表有意義的文本,需要參與到向量嵌入計(jì)算中。attention_mask 為 0的一般都是填充的符號。

在 decode 模型中, labels 的shape乃至內(nèi)容,一般都與input_ids 一樣。-100代表該位置的值不參與 loss 計(jì)算。(眾所周知 decode 模型與下一個詞計(jì)算loss。labels 需要左移一位并在尾部填充-100,這個操作用戶無需關(guān)心,此操作由transformers包根據(jù)數(shù)據(jù)集中的labels自動轉(zhuǎn)換)

模型訓(xùn)練 

args = TrainingArguments(
    output_dir=r"C:\Users\username\Desktop\train_model_output\Qwen2.5-0.5B\CLM_output",
    num_train_epochs=10,
    per_device_train_batch_size=2,
    save_safetensors=True,
    logging_strategy="epoch",
    # fp16=True,
)

utput_dir:模型的保存地址,我的C盤是固態(tài)硬盤,加載訓(xùn)練完成后的模型會快一點(diǎn)。


trainer = Trainer(
    model=model,
    processing_class=tokenizer,
    args=args,
    train_dataset=dataset,
    eval_dataset=None,
    data_collator=DataCollatorForSupervisedDataset(tokenizer=tokenizer),
)

參數(shù)量估算

我選擇 ??Qwen/Qwen2.5-0.5B?? 這個模型,因?yàn)檫@個模型參數(shù)少,可以更快看到結(jié)果。

上述模型微調(diào)是全參數(shù)微調(diào),沒有使用LoRA,會導(dǎo)致顯存占用很大。

下述是顯存占用的粗略估算的過程:

1.全精度,fp32:
1B  = 10^9個參數(shù) = 10^9 x 4Byte = 4GB
由于我們是全參數(shù)微調(diào),那么最終占用的顯存是: (模型參數(shù) x1 + 梯度 x1 + Adam優(yōu)化器 x2)

0.5 x 4GB x (4) = 8GB

8 GB + batch的中間變量內(nèi)存

2.半精度, fp161B  = 10^9個參數(shù) = 10^9 x 2Byte = 2GB
由于我們是全參數(shù)微調(diào),那么最終占用的顯存是: (模型參數(shù) x1 + 梯度 x1 + Adam優(yōu)化器 x2)

0.5 x 2GB x (4) = 4GB

4 GB + batch的中間變量內(nèi)存

模型推理

使用上述訓(xùn)練完成的模型,在訓(xùn)練集的數(shù)據(jù)上進(jìn)行推理。

import torch
from transformers import AutoModelForCausalLM, AutoTokenizer

device = "cuda:0"if torch.cuda.is_available() else"cpu"

train_model = r"C:\Users\1\Desktop\train_model_output\Qwen2.5-0.5B\CLM_output"

model = AutoModelForCausalLM.from_pretrained(train_model)
model = model.to(device)
tokenizer = AutoTokenizer.from_pretrained(train_model, padding_side="right")

def infer(text):
    input_ids = tokenizer(text, return_tensors="pt").to(model.device)

    generated_ids = model.generate(**input_ids)
    generated_ids = [
        output_ids[len(input_ids) :]
        for input_ids, output_ids in zip(input_ids.input_ids, generated_ids)
    ]

    response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]
    return response

text = "請你給哪吒寫一首詩:"
infer(text)

輸出:

'哪吒降世,意氣飛揚(yáng)。\n逆天改命,破障沖霄。紅綾纏腕,風(fēng)火踏浪。\n不屈不悔,笑傲蒼茫。'

通過模型的推理結(jié)果,驗(yàn)證了大模型的預(yù)訓(xùn)練是有效果的。

參考資料??https://github.com/huggingface/transformers/blob/main/examples/pytorch/language-modeling/run_clm.py??

本文轉(zhuǎn)載自??AI悠閑區(qū)??,作者:AI悠閑區(qū)

已于2025-6-6 14:48:43修改
收藏
回復(fù)
舉報(bào)
回復(fù)
相關(guān)推薦
久久久久免费精品| 免费观看成人高| 国产免费无码一区二区视频| 天堂久久av| 欧美丝袜第一区| 亚洲春色在线| 国产成人精品免费看视频| 一区二区日本视频| www.日韩不卡电影av| 久久久久亚洲无码| 国产精品原创视频| 黄色成人在线播放| 一区二区三区电影| 亚洲av成人精品日韩在线播放| 日本aⅴ免费视频一区二区三区| 久99久在线视频| 一区二区精品免费| 国产精品白丝一区二区三区| 日本福利一区二区| 欧美久久久久久久久久久久久| 成人av毛片| 成人av第一页| 91久久综合亚洲鲁鲁五月天| 9i看片成人免费看片| 欧美三级黄美女| 亚洲人成77777在线观看网| 日本泡妞xxxx免费视频软件| 国产精品第一国产精品| 五月激情六月综合| 超碰人人爱人人| 五月天婷婷在线视频| 久久精品欧美日韩| 国产综合 伊人色| 国产成人av免费看| 免费人成在线不卡| 国产成人精品日本亚洲专区61| 欧美日韩在线视频免费| 久久国产综合| 中文字幕精品www乱入免费视频| 国产高清成人久久| 日韩中文在线| 日韩一级片网址| 国产探花在线看| 成人国产精品入口免费视频| 色综合天天综合在线视频| 777av视频| 成人超碰在线| 亚洲小说欧美激情另类| 成人在线视频一区二区三区| 成人av免费| 亚洲欧美日韩电影| 妞干网这里只有精品| 午夜精品一区| 亚洲日本在线天堂| 超级碰在线观看| 欧美hdxxxxx| 怡红院av一区二区三区| 国产一二三四区在线观看| 国产精品剧情一区二区在线观看| 综合久久给合久久狠狠狠97色| 一区二区av| 国产美女在线观看| 亚洲综合免费观看高清在线观看| 日本免费黄色小视频| 婷婷色在线播放| 亚洲高清久久久| 成人免费观看cn| 欧美黑人一区| 欧美裸体bbwbbwbbw| 国产精欧美一区二区三区白种人| 91九色成人| 欧美成人精品1314www| 2一3sex性hd| 国产成人久久| 日韩在线视频免费观看| 欧美丰满艳妇bbwbbw| 欧美日韩福利| 欧美壮男野外gaytube| 无码人妻丰满熟妇精品| 麻豆精品久久精品色综合| 亚洲最大成人免费视频| 蜜桃视频污在线观看| 久久夜色精品国产噜噜av| 亚洲精品一区二区三区av| 3d玉蒲团在线观看| 精品久久久久久中文字幕大豆网| 色婷婷综合久久久久中文字幕| 免费一级欧美在线观看视频| 日韩天堂在线观看| 国精产品一区一区三区免费视频| 日本大胆欧美| 久久久久久久久亚洲| 精品无码一区二区三区的天堂| 精品一区二区免费视频| 国产欧美一区二区视频| 一级日本在线| 亚洲 欧美综合在线网络| 网站一区二区三区| 超碰成人97| 在线激情影院一区| 久久久久亚洲av成人片| 日日摸夜夜添夜夜添亚洲女人| 成人激情视频在线播放| 色播色播色播色播色播在线 | 欧美日韩免费不卡视频一区二区三区 | 成人高清免费在线| 色综合色狠狠天天综合色| 天堂中文av在线| 中文字幕伦av一区二区邻居| 久久综合电影一区| 日批视频免费观看| 99国产欧美另类久久久精品 | 国产黄色网址在线观看| 亚洲精品午夜av福利久久蜜桃| 欧洲成人免费aa| а√天堂资源在线| 中文字幕中文乱码欧美一区二区| 国产原创popny丨九色| 精品国产亚洲一区二区三区在线| 亚洲欧美中文字幕| 精品无码免费视频| 国内精品久久久久影院一蜜桃| 免费久久99精品国产自| 9999在线视频| 欧美va亚洲va国产综合| 蜜臀av午夜精品久久| 人人狠狠综合久久亚洲| 欧美精品与人动性物交免费看| 性xxxfreexxxx性欧美| 欧美日韩电影一区| 影音先锋制服丝袜| 久久精品九九| 久久精品五月婷婷| 波多一区二区| 日韩精品一区二区三区视频| 黑人操日本美女| 老鸭窝一区二区久久精品| 日韩黄色影视| 欧美性理论片在线观看片免费| 日韩精品在线免费观看| 日韩av电影网| 岛国av在线一区| 欧美亚洲色图视频| 精品久久在线| 日韩最新在线视频| 91亚洲国产成人精品一区| 国产精品丝袜一区| 亚洲欧美日本一区二区三区| 视频在线不卡免费观看| 国产一区红桃视频| 精品欧美色视频网站在线观看| 欧美群妇大交群的观看方式| frxxee中国xxx麻豆hd| 国产一区二区在线观看免费| 久久久一二三四| 精品国产一区二| 欧美激情中文网| 日本美女一级视频| 欧美性jizz18性欧美| 韩国女同性做爰三级| 青娱乐精品在线视频| 国产精品jizz在线观看老狼| 日本一区二区三区电影免费观看| 欧美另类在线观看| 视频一区 中文字幕| 福利一区福利二区微拍刺激| 亚洲一区视频在线播放| 久久99精品久久久久婷婷| 好吊色视频988gao在线观看| 国产精品乱战久久久| 欧美与欧洲交xxxx免费观看| av免费观看一区二区| 337p亚洲精品色噜噜| 国产一级av毛片| 久久老女人爱爱| 五月天激情播播| 韩国一区二区三区在线观看| 六月婷婷久久| 亚洲伊人精品酒店| 久久久久久久久国产精品| 天堂在线视频免费| 欧美影视一区在线| 国产精品老熟女一区二区| 91亚洲国产成人精品一区二区三| wwwwww.色| 国产一区日韩一区| 久久久福利视频| 日韩欧美专区| 韩国三级电影久久久久久| 国产youjizz在线| 91精品国产入口| 天天操夜夜操视频| 亚洲免费在线视频| 男人操女人动态图| 国产一区二区三区观看| 国产精品丝袜久久久久久消防器材| 青青草成人影院| 国产亚洲欧美另类一区二区三区| 外国电影一区二区| 欧美国产日韩一区二区在线观看| 国产女主播在线写真| 欧美mv日韩mv亚洲| 中文字幕av网站| 精品日韩美女的视频高清| 九九热视频在线免费观看| 2023国产精品| 中文字幕一区二区三区人妻在线视频| 视频一区二区欧美| 欧美国产日韩激情| 国产精品x453.com| 欧美极品色图| 国产毛片久久久| 成人网在线观看| 无人区在线高清完整免费版 一区二| 欧美高清视频在线播放| 日本在线观看网站| 亚洲三级免费看| 午夜激情小视频| 精品国产91亚洲一区二区三区婷婷| 在线免费看毛片| 色综合中文综合网| 国产成人自拍视频在线| 依依成人综合视频| 极品魔鬼身材女神啪啪精品| 欧美国产1区2区| 国产精品扒开腿做爽爽| av网站免费线看精品| 免费看三级黄色片| 黑人巨大精品欧美一区| 国产九九热视频| 日韩国产一区二| 亚洲爆乳无码专区| 99精品99| 欧美成人三级在线视频| 好看的日韩av电影| 国产精品国产三级国产专区51| 久久综合国产| 一区二区av| 色综合久久一区二区三区| 日韩av一级大片| 国产成人精品免费视| 日韩成人av电影在线| 国产va免费精品观看精品视频| 久久国产精品99久久久久久丝袜| 麻豆一区一区三区四区| 国产欧美一区二区三区另类精品 | 黄色片免费在线观看视频| 欧美永久精品| 欧美日韩中文字幕在线播放| 欧美在线网站| 成人午夜免费剧场| 国产一区激情| 黄色影院一级片| 久久黄色网页| 免费看污污网站| 精品一区二区三区欧美| 色诱av手机版| aaa欧美日韩| 亚洲区自拍偷拍| 国产精品福利影院| 懂色av懂色av粉嫩av| 亚洲一区欧美一区| 国产一区二区三区影院| 色综合欧美在线视频区| 国产成人av免费| 欧美猛男男办公室激情| 性生活免费网站| 亚洲第一区中文字幕| 青青青免费视频在线2| 国产亚洲欧美aaaa| 成人免费网址| 97视频免费看| 成人午夜一级| 97影院在线午夜| 自拍偷拍一区| 在线视频91| 亚洲精选一区| 香蕉视频禁止18| 成人一区二区三区中文字幕| 波多野结衣福利| 亚洲欧美在线高清| 国产精品suv一区二区三区| 色噜噜狠狠色综合中国| 国产免费福利视频| 亚洲精品久久在线| 生活片a∨在线观看| 久久噜噜噜精品国产亚洲综合| 美女100%一区| 97久久人人超碰caoprom欧美 | 亚洲精品视频中文字幕| 欧美成人性生活视频| 国产69精品久久久久9999| 成人黄页网站视频| 国产精品一区二区欧美黑人喷潮水| 精品国产一区二区三区小蝌蚪 | 麻豆9191精品国产| 亚洲精品mv在线观看| 91色综合久久久久婷婷| 最新av电影网站| 一本色道亚洲精品aⅴ| www.四虎在线观看| 在线视频日韩精品| 538在线视频| 亚洲影院高清在线| 欧美一区二区三区高清视频| 国产av国片精品| 国产一区激情在线| 日韩视频在线观看免费视频| 午夜国产精品一区| 99精品国产99久久久久久97| 国产一区二区日韩| 欧美办公室脚交xxxx| 91九色极品视频| 日韩在线观看电影完整版高清免费悬疑悬疑| 丁香六月激情婷婷| 国产最新精品免费| 刘亦菲国产毛片bd| 欧美视频在线免费| 亚洲人妻一区二区三区| 欧美精品制服第一页| 欧美高清你懂的| 日本在线免费观看一区| 中文日韩在线| 中国免费黄色片| 亚洲精品videosex极品| 国产精品久久久国产盗摄| 国产亚洲精品日韩| 免费电影日韩网站| 九色综合婷婷综合| 中文国产一区| 日本少妇xxxx| 午夜激情久久久| 熟妇人妻系列aⅴ无码专区友真希| 欧美成aaa人片免费看| 999精品视频在线观看| 夜夜爽www精品| 麻豆精品国产91久久久久久| 免费网站在线高清观看| 欧美在线啊v一区| 91网页在线观看| 国产视频福利一区| 一区二区三区国产精华| 日韩精品视频网址| 亚洲狼人国产精品| 亚洲av无码片一区二区三区 | 亚洲高清精品中出| 日本午夜一区二区| 天天干天天操天天拍| 欧美日韩在线三级| 日韩子在线观看| 91热福利电影| 欧美午夜免费影院| 国产伦精品一区二区三区精品| 亚洲综合色自拍一区| 偷拍精品一区二区三区| 全亚洲最色的网站在线观看| 欧美日本成人| 亚洲一级免费在线观看| 亚洲色图欧美激情| 国产黄a三级三级看三级| 久久久免费精品| 久久av网址| 午夜剧场高清版免费观看 | 中日韩美女免费视频网址在线观看| 精品欧美一区二区三区在线观看 | 在线视频亚洲自拍| 国产精品亚洲专一区二区三区| 久久久久久久久97| 精品亚洲国产成av人片传媒| 色猫猫成人app| 好吊色这里只有精品| 成人高清在线视频| 一级黄色av片| 欧美成人一二三| 天堂成人娱乐在线视频免费播放网站| av视屏在线播放| 亚洲乱码日产精品bd| 天堂在线资源网| 91精品久久久久久久久青青| 国模吧视频一区| aaaaa级少妇高潮大片免费看| 欧美视频你懂的| 黄色网页在线看| 久久国产精品一区二区三区四区| 免费美女久久99| 久草国产在线观看| 亚洲大胆人体在线| 国产极品嫩模在线观看91精品| 丰满的少妇愉情hd高清果冻传媒| 91麻豆视频网站| 亚洲一区二区色| 国产91精品青草社区| 波多野结衣一区| 国产一线在线观看| 欧美丝袜丝交足nylons图片| 日日夜夜天天综合入口| 日本在线观看一区| 99视频一区二区| 国产99视频在线| 国产精品高潮视频|