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

Unsloth揭秘:如何將模型微調(diào)效率提升2-5倍 精華

發(fā)布于 2024-10-30 15:08
瀏覽
0收藏
在當(dāng)今人工智能快速發(fā)展的時代,語言模型的應(yīng)用越來越廣泛。然而,要將預(yù)訓(xùn)練的語言模型應(yīng)用到具體的任務(wù)中,往往需要進(jìn)行微調(diào)。Unsloth 作為一個預(yù)訓(xùn)練模型微調(diào)框架,因其出色的性能和獨特的技術(shù)特點,受到了眾多開發(fā)者的關(guān)注。本文將深入探討 Unsloth 的相關(guān)內(nèi)容,幫助讀者全面了解這個強大的工具。

一、Unsloth 簡介

Unsloth 是一個專門為模型微調(diào)而設(shè)計的框架,它旨在解決模型微調(diào)過程中常見的訓(xùn)練速度慢、顯存占用高等問題。通過一系列創(chuàng)新的技術(shù)和優(yōu)化策略,Unsloth 能夠顯著提高模型微調(diào)的效率,使得開發(fā)者能夠在更短的時間內(nèi)獲得更好的模型性能。

二、Unsloth 的主要優(yōu)勢

1. 快速的訓(xùn)練速度

在對主流模型(如 llama - 3、qwen2、mistral 等)進(jìn)行微調(diào)時,Unsloth 展現(xiàn)出了令人矚目的訓(xùn)練速度提升。相比其他傳統(tǒng)的微調(diào)方法,它的速度可以提高 2 至 5 倍。這意味著開發(fā)者能夠更快地完成模型的訓(xùn)練過程,大大縮短了開發(fā)周期。例如,在處理大規(guī)模文本數(shù)據(jù)時,Unsloth 能夠迅速收斂,減少了訓(xùn)練時間,讓開發(fā)者能夠更快地看到模型的效果。

2. 低顯存占用

顯存占用是模型微調(diào)過程中一個關(guān)鍵的問題,尤其是對于一些資源有限的設(shè)備。Unsloth 巧妙地解決了這個問題,它最大能夠減少約 70%的顯存使用量。這使得即使在顯存有限的硬件上,如一些中低端的 GPU 設(shè)備,也能夠順利進(jìn)行模型微調(diào)訓(xùn)練。這一優(yōu)勢為更多開發(fā)者提供了機會,讓他們能夠在不同的硬件環(huán)境下開展工作,而不必?fù)?dān)心硬件資源的限制。

三、Unsloth 的技術(shù)特點

1. 強大的兼容性

Unsloth 支持多種硬件設(shè)置,涵蓋了從 Nvidia Tesla T4 到 H100 等不同型號的 GPU。不僅如此,它還擴展到了 AMD 和英特爾 GPU 的兼容性,這為使用不同硬件的開發(fā)者提供了極大的便利。無論你使用的是哪種 GPU 設(shè)備,都可以嘗試使用 Unsloth 進(jìn)行模型微調(diào)。這種廣泛的兼容性使得 Unsloth 能夠在不同的硬件平臺上發(fā)揮出其優(yōu)勢,為開發(fā)者提供了更多的選擇。

2. 優(yōu)化的內(nèi)存使用

Unsloth 采用了智能權(quán)重上投等開創(chuàng)性技術(shù),在 QLoRA 過程中減少了權(quán)重上投的必要性,從而有效地優(yōu)化了內(nèi)存使用。通過這種方式,它能夠更好地利用硬件資源,提高模型訓(xùn)練的效率。此外,Unsloth 還能夠迅速利用 BFloat16,提高 16 位訓(xùn)練的穩(wěn)定性,進(jìn)一步加快了 QLoRA 的微調(diào)過程。這種對內(nèi)存和計算資源的精細(xì)管理,使得 Unsloth 在處理大規(guī)模模型和數(shù)據(jù)時表現(xiàn)出色。

四、Unsloth 的使用體驗

1.安裝 Unsloth

安裝 Unsloth 相對簡單,你可以通過以下命令進(jìn)行安裝:`pip install "unsloth(cu121 - torch230)@git + https://github.com/unslothai/unsloth.git"`。當(dāng)然,具體的安裝命令可能會因環(huán)境和需求的不同而有所差異。在安裝過程中,建議參考官方文檔,以確保安裝的順利進(jìn)行。

pip install "unsloth[colab-new] @ git+https://github.com/unslothai/unsloth.git"

執(zhí)行如下:

2.鏡像設(shè)置

由于網(wǎng)絡(luò)原因,可能無法訪問huggingface上的資源,可以使用國內(nèi)的鏡像站。???https://hf-mirror.com??

1)安裝依賴

pip install -U huggingface_hub

2)設(shè)置環(huán)境變量

import os


os.environ['HF_ENDPOINT'] = 'https://hf-mirror.com'

3.模型加載

from unsloth import FastLanguageModel
import torch
max_seq_length = 2048 # Choose any! We auto support RoPE Scaling internally!
dtype = None # None for auto detection. Float16 for Tesla T4, V100, Bfloat16 for Ampere+
load_in_4bit = True # Use 4bit quantization to reduce memory usage. Can be False.
# 4bit pre quantized models we support for 4x faster downloading + no OOMs.
fourbit_models = [
  "unsloth/Meta-Llama-3.1-8B-bnb-4bit",      # Llama-3.1 2x faster
  "unsloth/Meta-Llama-3.1-8B-Instruct-bnb-4bit",
  "unsloth/Meta-Llama-3.1-70B-bnb-4bit",
  "unsloth/Meta-Llama-3.1-405B-bnb-4bit",    # 4bit for 405b!
  "unsloth/Mistral-Small-Instruct-2409",     # Mistral 22b 2x faster!
  "unsloth/mistral-7b-instruct-v0.3-bnb-4bit",
  "unsloth/Phi-3.5-mini-instruct",           # Phi-3.5 2x faster!
  "unsloth/Phi-3-medium-4k-instruct",
  "unsloth/gemma-2-9b-bnb-4bit",
  "unsloth/gemma-2-27b-bnb-4bit",            # Gemma 2x faster!
  "unsloth/Llama-3.2-1B-bnb-4bit",           # NEW! Llama 3.2 models
  "unsloth/Llama-3.2-1B-Instruct-bnb-4bit",
  "unsloth/Llama-3.2-3B-bnb-4bit",
  "unsloth/Llama-3.2-3B-Instruct-bnb-4bit",
] # More models at https://huggingface.co/unsloth


model, tokenizer = FastLanguageModel.from_pretrained(
  model_name = "unsloth/Llama-3.2-3B-Instruct", # or choose "unsloth/Llama-3.2-1B-Instruct"
  max_seq_length = max_seq_length,
  dtype = dtype,
  load_in_4bit = load_in_4bit,
  # token = "hf_...", # use one if using gated models like meta-llama/Llama-2-7b-hf
)

加載如下:

4.LoRA 配置

model = FastLanguageModel.get_peft_model(
  model,
  r = 16, # Choose any number > 0 ! Suggested 8, 16, 32, 64, 128
  target_modules = ["q_proj", "k_proj", "v_proj", "o_proj",
  "gate_proj", "up_proj", "down_proj",],
  lora_alpha = 16,
  lora_dropout = 0, # Supports any, but = 0 is optimized
  bias = "none",    # Supports any, but = "none" is optimized
  # [NEW] "unsloth" uses 30% less VRAM, fits 2x larger batch sizes!
  use_gradient_checkpointing = "unsloth", # True or "unsloth" for very long context
  random_state = 3407,
  use_rslora = False,  # We support rank stabilized LoRA
  loftq_config = None, # And LoftQ
)

5.數(shù)據(jù)集準(zhǔn)備

使用 Maxime Labonne 的 ShareGPT 風(fēng)格的 FineTome-100k 數(shù)據(jù)集。

??https://huggingface.co/datasets/mlabonne/FineTome-100k??

將 ("from", "value")格式,替換為("role", "content") 格式

from unsloth.chat_templates import get_chat_template


tokenizer = get_chat_template(
    tokenizer,
    chat_template = "llama-3.1",
)


def formatting_prompts_func(examples):
    convos = examples["conversations"]
    texts = [tokenizer.apply_chat_template(convo, tokenize = False, add_generation_prompt = False) for convo in convos]
    return { "text" : texts, }
pass


from datasets import load_dataset
dataset = load_dataset("mlabonne/FineTome-100k", split = "train")

數(shù)據(jù)集讀取

我們現(xiàn)在使用`standardize_sharegpt`將sharegpt風(fēng)格的數(shù)據(jù)集轉(zhuǎn)換為HuggingFace的通用格式。

```

{"from": "system", "value": "You are an assistant"}

{"from": "human", "value": "What is 2+2?"}

{"from": "gpt", "value": "It's 4."}

```

to

```

{"role": "system", "content": "You are an assistant"}

{"role": "user", "content": "What is 2+2?"}

{"role": "assistant", "content": "It's 4."}

```

from unsloth.chat_templates import standardize_sharegpt
dataset = standardize_sharegpt(dataset)
dataset = dataset.map(formatting_prompts_func, batched = True,)

抽查第5條記錄的數(shù)據(jù)格式

dataset[5]["conversations"]

輸出:

[{'content': 'How do astronomers determine the original wavelength of light emitted by a celestial body at rest, which is necessary for measuring its speed using the Doppler effect?',
'role': 'user'},
{'content': 'Astronomers make use of the unique spectral fingerprints of elements found in stars. These elements emit and absorb light at specific, known wavelengths, forming an absorption spectrum. By analyzing the light received from distant stars and comparing it to the laboratory-measured spectra of these elements, astronomers can identify the shifts in these wavelengths due to the Doppler effect. The observed shift tells them the extent to which the light has been redshifted or blueshifted, thereby allowing them to calculate the speed of the star along the line of sight relative to Earth.',
'role': 'assistant'}]

查看第5條記錄,模板格式化后的效果

dataset[5]["text"]

輸出:

'<|begin_of_text|><|start_header_id|>system<|end_header_id|>\n\nCutting Knowledge Date: December 2023\nToday Date: 26 July 2024\n\n<|eot_id|><|start_header_id|>user<|end_header_id|>\n\nHow do astronomers determine the original wavelength of light emitted by a celestial body at rest, which is necessary for measuring its speed using the Doppler effect?<|eot_id|><|start_header_id|>assistant<|end_header_id|>\n\nAstronomers make use of the unique spectral fingerprints of elements found in stars. These elements emit and absorb light at specific, known wavelengths, forming an absorption spectrum. By analyzing the light received from distant stars and comparing it to the laboratory-measured spectra of these elements, astronomers can identify the shifts in these wavelengths due to the Doppler effect. The observed shift tells them the extent to which the light has been redshifted or blueshifted, thereby allowing them to calculate the speed of the star along the line of sight relative to Earth.<|eot_id|>'

6.模型訓(xùn)練

配置訓(xùn)練參數(shù)

from trl import SFTTrainer
from transformers import TrainingArguments, DataCollatorForSeq2Seq
from unsloth import is_bfloat16_supported


trainer = SFTTrainer(
    model = model,
    tokenizer = tokenizer,
    train_dataset = dataset,
    dataset_text_field = "text",
    max_seq_length = max_seq_length,
    data_collator = DataCollatorForSeq2Seq(tokenizer = tokenizer),
    dataset_num_proc = 2,
    packing = False, # Can make training 5x faster for short sequences.
    args = TrainingArguments(
        per_device_train_batch_size = 2,
        gradient_accumulation_steps = 4,
        warmup_steps = 5,
        # num_train_epochs = 1, # Set this for 1 full training run.
        max_steps = 60,
        learning_rate = 2e-4,
        fp16 = not is_bfloat16_supported(),
        bf16 = is_bfloat16_supported(),
        logging_steps = 1,
        optim = "adamw_8bit",
        weight_decay = 0.01,
        lr_scheduler_type = "linear",
        seed = 3407,
        output_dir = "outputs",
    ),
)

使用 Unsloth 的方法只在助手輸出上進(jìn)行訓(xùn)練,而忽略用戶用戶的inputs

from unsloth.chat_templates import train_on_responses_only
trainer = train_on_responses_only(
    trainer,
    instruction_part = "<|start_header_id|>user<|end_header_id|>\n\n",
    response_part = "<|start_header_id|>assistant<|end_header_id|>\n\n",
)

檢查的掩碼處理后的,輸入的input_ids

tokenizer.decode(trainer.train_dataset[5]["input_ids"])

輸出:

'<|begin_of_text|><|start_header_id|>system<|end_header_id|>\n\nCutting Knowledge Date: December 2023\nToday Date: 26 July 2024\n\n<|eot_id|><|start_header_id|>user<|end_header_id|>\n\nHow do astronomers determine the original wavelength of light emitted by a celestial body at rest, which is necessary for measuring its speed using the Doppler effect?<|eot_id|><|start_header_id|>assistant<|end_header_id|>\n\nAstronomers make use of the unique spectral fingerprints of elements found in stars. These elements emit and absorb light at specific, known wavelengths, forming an absorption spectrum. By analyzing the light received from distant stars and comparing it to the laboratory-measured spectra of these elements, astronomers can identify the shifts in these wavelengths due to the Doppler effect. The observed shift tells them the extent to which the light has been redshifted or blueshifted, thereby allowing them to calculate the speed of the star along the line of sight relative to Earth.<|eot_id|>'

檢查的掩碼處理后,輸入的labels

space = tokenizer(" ", add_special_tokens = False).input_ids[0]


tokenizer.decode([space if x == -100 else x for x in trainer.train_dataset[5]["labels"]])

輸出:

' \n\nAstronomers make use of the unique spectral fingerprints of elements found in stars. These elements emit and absorb light at specific, known wavelengths, forming an absorption spectrum. By analyzing the light received from distant stars and comparing it to the laboratory-measured spectra of these elements, astronomers can identify the shifts in these wavelengths due to the Doppler effect. The observed shift tells them the extent to which the light has been redshifted or blueshifted, thereby allowing them to calculate the speed of the star along the line of sight relative to Earth.<|eot_id|>'

我們可以看到系統(tǒng)和指令提示已成功屏蔽!

開始模型訓(xùn)練

trainer_stats = trainer.train()

訓(xùn)練效果如下:

7.模型推理

from unsloth.chat_templates import get_chat_template


tokenizer = get_chat_template(
  tokenizer,
  chat_template = "llama-3.1",
)
FastLanguageModel.for_inference(model) # Enable native 2x faster inference


messages = [
  {"role": "user", "content": "Continue the fibonnaci sequence: 1, 1, 2, 3, 5, 8,"},
]


inputs = tokenizer.apply_chat_template(
  messages,
  tokenize = True,
  add_generation_prompt = True, # Must add for generation
  return_tensors = "pt",
).to("cuda")


outputs = model.generate(input_ids = inputs, max_new_tokens = 64, use_cache = True,
  temperature = 1.5, min_p = 0.1)


tokenizer.batch_decode(outputs)

輸出:

['<|begin_of_text|><|start_header_id|>system<|end_header_id|>\n\nCutting Knowledge Date: December 2023\nToday Date: 26 July 2024\n\n<|eot_id|><|start_header_id|>user<|end_header_id|>\n\nContinue the fibonnaci sequence: 1, 1, 2, 3, 5, 8,<|eot_id|><|start_header_id|>assistant<|end_header_id|>\n\nThe next two terms would be 13 and 21.\n\nFibonacci Sequence: 1, 1, 2, 3, 5, 8, 13, 21.<|eot_id|>']

8.保存微調(diào)模型

model.save_pretrained("lora_model") # Local saving
tokenizer.save_pretrained("lora_model")

9.加載微調(diào)模型并推理

if False:
    from unsloth import FastLanguageModel
    model, tokenizer = FastLanguageModel.from_pretrained(
        model_name = "lora_model", # YOUR MODEL YOU USED FOR TRAINING
        max_seq_length = max_seq_length,
        dtype = dtype,
        load_in_4bit = load_in_4bit,
    )
    FastLanguageModel.for_inference(model) # Enable native 2x faster inference


messages = [
    {"role": "user", "content": "Describe a tall tower in the capital of France."},
]
inputs = tokenizer.apply_chat_template(
    messages,
    tokenize = True,
    add_generation_prompt = True, # Must add for generation
    return_tensors = "pt",
).to("cuda")


from transformers import TextStreamer
text_streamer = TextStreamer(tokenizer, skip_prompt = True)
_ = model.generate(input_ids = inputs, streamer = text_streamer, max_new_tokens = 128,
                   use_cache = True, temperature = 1.5, min_p = 0.1)

推理結(jié)果如下:

The Eiffel Tower is a famous tall structure located in Paris, the capital of France. It was built for the 1889 World's Fair and stands at a height of 324 meters (1,063 feet) high. The Eiffel Tower has become a symbol of Paris and is often referred to as the Iron Lady. Its construction was designed by Gustave Eiffel, a French engineer, and it was intended to be a temporary structure. However, it has remained standing for over a century and has become an iconic landmark in the city.<|eot_id|>

五、Unsloth 在實際項目中的應(yīng)用

Unsloth 的高效性和靈活性使其在眾多領(lǐng)域都有著廣泛的應(yīng)用前景。

在自然語言處理任務(wù)中,如文本分類、情感分析、機器翻譯等,Unsloth 可以幫助開發(fā)者快速微調(diào)預(yù)訓(xùn)練模型,以適應(yīng)不同的數(shù)據(jù)集和任務(wù)需求。通過減少訓(xùn)練時間和顯存占用,開發(fā)者可以更高效地進(jìn)行實驗和優(yōu)化,提高模型的性能。

在對話系統(tǒng)開發(fā)中,Unsloth 能夠讓開發(fā)者快速訓(xùn)練出個性化的對話模型。通過對大規(guī)模對話數(shù)據(jù)的微調(diào),模型可以更好地理解用戶的輸入,并生成更加自然和準(zhǔn)確的回復(fù)。這對于構(gòu)建智能客服、聊天機器人等應(yīng)用具有重要意義。

此外,在內(nèi)容生成領(lǐng)域,如文章寫作、故事創(chuàng)作等方面,Unsloth 也可以發(fā)揮其優(yōu)勢。開發(fā)者可以利用 Unsloth 微調(diào)語言模型,使其能夠根據(jù)給定的主題或提示生成高質(zhì)量的文本內(nèi)容。

六、總結(jié)與展望

Unsloth 作為一個強大的預(yù)訓(xùn)練模型微調(diào)框架,為開發(fā)者提供了高效、便捷的模型微調(diào)解決方案。它的快速訓(xùn)練速度、低顯存占用以及廣泛的兼容性等優(yōu)勢,使其在人工智能領(lǐng)域具有重要的地位。通過合理地使用 Unsloth,開發(fā)者可以更加輕松地將預(yù)訓(xùn)練模型應(yīng)用到實際項目中,推動人工智能技術(shù)的發(fā)展和應(yīng)用。

當(dāng)然,Unsloth 也在不斷發(fā)展和完善中。未來,我們可以期待它在更多方面的創(chuàng)新和突破,為模型微調(diào)帶來更多的驚喜和可能性。同時,我們也希望更多的開發(fā)者能夠關(guān)注和使用 Unsloth,共同探索人工智能的無限潛力。

本文轉(zhuǎn)載自??小兵的AI視界??,作者: 小兵 ????

收藏
回復(fù)
舉報
回復(fù)
相關(guān)推薦
中文字幕在线看片| 国产chinese精品一区二区| 久久久久久久久久久久久久久久av| av网站免费在线播放| 在线视频你懂得| 欧美变态网站| 亚洲蜜臀av乱码久久精品 | 9191在线视频| 国产在线观看黄| 国产劲爆久久| 亚洲欧美日韩成人高清在线一区| 波多野结衣久草一区| 黄色录像一级片| 国产精品专区免费| 99精品偷自拍| 午夜精品久久久99热福利| 欧洲在线免费视频| 欧美高清视频| 日本成人中文字幕| 国产一区二区黑人欧美xxxx| 波多野结衣家庭教师在线| 亚洲精品久久久狠狠狠爱| 999成人精品视频线3| 欧美天堂一区二区三区| 视频一区视频二区视频| 亚洲不卡视频在线观看| 亚洲日本va午夜在线电影| 亚洲精品日韩专区silk| 青青草原亚洲| 一区二区三区麻豆| 日韩成人免费| 欧美色区777第一页| 亚洲精品在线视频观看| 一区二区自拍偷拍| 天天综合网网欲色| 日韩女优av电影| 免费在线黄网站| 人妻少妇精品无码专区| 在线欧美亚洲| 亚洲韩国日本中文字幕| 日本免费黄视频| 国产一级片在线| 成人免费视频视频| **欧美日韩vr在线| 亚洲国产精品成人综合久久久| 九九色在线视频| 美国三级日本三级久久99| 日韩在线播放一区| 欧美日韩一区二区区别是什么 | 91视频 -- 69xx| 久久99亚洲网美利坚合众国| 精品在线视频一区| 九九精品在线播放| 久久久久亚洲AV成人无码国产| 91资源在线观看| 久久男人中文字幕资源站| 国产不卡在线观看| 亚洲熟女少妇一区二区| 91嫩草精品| 一本大道久久a久久综合| 日韩国产精品一区二区三区| 亚洲最大成人av| 日本aⅴ免费视频一区二区三区| 18性欧美xxxⅹ性满足| 国产精品16p| 国产成人1区| 欧美久久久久中文字幕| 欧美乱大交xxxxx潮喷l头像| 免费毛片在线| 国产精品综合在线视频| 51视频国产精品一区二区| 亚洲一级片在线播放| 日韩在线精品强乱中文字幕| 欧美性20hd另类| 一区二区三区av在线| 好吊色在线观看| 日韩二区三区四区| 欧美黄色三级网站| 中文字幕第24页| 精品一区二区三区在线| 欧美一级在线观看| 黄色片在线免费| 午夜成年人在线免费视频| 91美女在线观看| 亚洲一区二区少妇| 丰满熟女人妻一区二区三| 日韩主播视频在线| 成人免费福利视频| 天天综合网入口| 一本精品一区二区三区| 亚洲欧美中文在线视频| av不卡中文字幕| 六九午夜精品视频| 欧美小视频在线观看| 九热视频在线观看| 国产激情一区| 欧美揉bbbbb揉bbbbb| 五月天婷婷影视| 四虎成人在线| 欧美性xxxxx| 性猛交ⅹ×××乱大交| 午夜影院一区| 欧美日韩免费一区二区三区视频| 久久网站免费视频| 欧美极品在线| 亚洲成人动漫在线播放| 无码人妻少妇色欲av一区二区| 成人av资源网址| 一区二区三区视频在线| 91精彩刺激对白露脸偷拍| 成人福利免费在线观看| 国产一区二区免费| 久久av高潮av无码av喷吹| 午夜激情久久| 国产亚洲精品久久久| 破处女黄色一级片| 在线一区免费| 国产成人精品在线| 成人久久久精品国产乱码一区二区 | 性亚洲最疯狂xxxx高清| 中文字幕在线网站| 99久精品国产| 精品人妻大屁股白浆无码| 亚洲精品国产嫩草在线观看| 午夜影院久久久| 9色porny| 久久91视频| 亚洲精品在线91| www.中文字幕av| 午夜精品婷婷| 久久久久久久国产精品视频| 久久精品www| 麻豆国产精品一区二区三区 | 欧美男gay| 亚洲片国产一区一级在线观看| 国产av无码专区亚洲av毛网站| 丝袜美腿亚洲色图| 国产精品日韩在线播放| 亚洲一级视频在线观看| 99国产精品久久久久久久久久久| 老司机午夜网站| 日本无删减在线| 在线不卡一区二区| 青青草自拍偷拍| 亚洲九九在线| 国产精品手机播放| 精品国产乱码一区二区三| 成人美女视频在线观看18| 久久久一二三四| 人人澡人人添人人爽一区二区| 欧美性生活久久| 在线观看日本中文字幕| 一本到12不卡视频在线dvd| 国产精品免费视频xxxx| 久久久久国产精品嫩草影院| 亚洲国产aⅴ成人精品无吗| 欧美成人一区二区在线观看| 1204国产成人精品视频| 欧美成人免费全部| 成年人午夜视频| 日本美女一区二区| 亚洲精品日韩在线观看| 成人国产综合| 亚洲福利视频二区| 日韩精品一区二区av| 蜜桃av一区二区三区电影| 91免费精品国偷自产在线| 你懂的网站在线| 午夜国产精品影院在线观看| 高清中文字幕mv的电影| 欧美三区不卡| 国产精品美女久久| 亚洲视频tv| 婷婷国产在线综合| 中文字幕久久av| 日韩伦理一区二区三区| 免费91麻豆精品国产自产在线观看| 91麻豆一区二区| 久久色成人在线| 成人午夜激情av| 99久久婷婷国产综合精品电影√| 91久久久久久久久| 国产盗摄一区二区| 欧美精品1区2区| 欧美激情图片小说| 91免费视频网址| 狠狠操狠狠干视频| 影音先锋久久久| 日韩hmxxxx| 一区二区亚洲视频| 国产成人精品av在线| 蜜桃视频在线观看www社区| 日韩一区二区精品| 蜜桃av免费观看| 国产另类ts人妖一区二区| 少妇高潮喷水在线观看| 久久久久九九精品影院| 在线观看国产精品91| 国产精品-色哟哟| 国产精品美女视频| 久草精品在线播放| 欧美一区 二区| 国产精品一区二区在线| wwwwxxxx在线观看| 中文字幕欧美亚洲| 无码人妻精品一区二区三区不卡 | 日韩av资源| 亚洲超碰精品一区二区| 男人舔女人下部高潮全视频| 国产伦精品一区二区三区免费| 国产原创中文在线观看| 久久综合99| 久久久免费看| 日本一区二区乱| 国产精品久久国产精品99gif| 亚洲欧美日本在线观看| 亚洲1区2区3区视频| 五月天精品在线| 97超碰欧美中文字幕| 国产精品探花在线播放| 久热精品视频| 国产不卡一区二区视频| 亚洲激情五月| 亚洲精品成人a8198a| 色综合www| 99精品在线直播| 日本精品久久| 久久久91精品| www.黄色av| 欧美日韩亚洲综合一区 | 伊人成人网在线看| 欧美一级免费在线观看| 精品黄色一级片| 欧美午夜免费| 成人在线免费电影网站| 91国内精品久久| 青草av在线| 久久综合免费视频| 欧美 日韩 国产 在线| 欧美日本免费一区二区三区| 无码视频在线观看| 欧美日韩国产一区二区三区| 一道本在线观看| 99久久国产综合精品色伊| aaaaa黄色片| 国产麻豆精品在线| 涩多多在线观看| 韩国成人在线视频| 成人黄色av片| 一区在线视频| 国产69精品久久久久999小说| 欧美喷水视频| 国产一区二区片| 欧美日韩国产在线一区| 在线观看av的网址| 欧美精品97| 无码熟妇人妻av在线电影| 亚洲永久精品唐人导航网址| 国产精品丝袜久久久久久高清| 在线免费三级电影网站| 欧美在线www| 芒果视频成人app| 国产精品久久av| 四虎国产精品免费久久| 成人美女av在线直播| 国产专区精品| 国产高清在线精品一区二区三区| 亚洲国产高清在线观看| caoporn国产精品免费公开| 伊人精品综合| 久99久视频| 国产精品亚洲人成在99www| 视频在线精品一区| 性xxxx欧美老肥妇牲乱| 日本一级黄视频| 日韩1区在线| 青春草在线视频免费观看| 国产精品v亚洲精品v日韩精品| 日韩av一区二区三区美女毛片| 国产日产一区 | 亚洲1卡2卡3卡4卡乱码精品| 超碰日本道色综合久久综合| 四虎影院观看视频在线观看| 亚州精品天堂中文字幕| 中文字幕在线免费观看视频| 国产精品久久久久久久app| 香蕉久久一区| 国产在线精品一区二区中文 | 一本久道久久综合中文字幕| 午夜视频网站在线观看| 欧美一区日本一区韩国一区| 蜜桃在线一区二区| 伊人青青综合网站| 91麻豆国产福利在线观看宅福利| 亚洲色图美腿丝袜| 老司机午夜在线| 中文字幕亚洲第一| 亚洲综合图区| 日本免费一区二区三区视频观看| 黄色美女视频在线观看| 日韩av电影中文字幕| 电影一区二区三区久久免费观看| 不卡一区二区三区四区五区| 一本色道久久综合狠狠躁的番外| 一本色道久久综合亚洲二区三区 | 亚洲午夜精品久久久久久人妖| 青青国产91久久久久久| 国产女主播在线播放| 国产日产欧产精品推荐色| 亚洲国产第一区| 97超碰欧美中文字幕| 日本午夜在线观看| 亚洲人123区| 中国毛片直接看| 狠狠躁天天躁日日躁欧美| 国产又大又长又粗| 亚洲欧美日韩视频一区| 欧美777四色影视在线| 日韩有码在线视频| 自拍偷自拍亚洲精品被多人伦好爽| 91久久大香伊蕉在人线| 91在线一区| 成年人免费观看的视频| 天堂va蜜桃一区二区三区| 少妇欧美激情一区二区三区| 国产目拍亚洲精品99久久精品| www.黄色在线| 中文字幕av一区 二区| 国产大屁股喷水视频在线观看| 性感美女极品91精品| www.av黄色| 久久亚洲私人国产精品va| 日韩av超清在线观看| 国产精品视频免费观看| 欧美人与动xxxxz0oz| 欧美日韩中文字幕在线播放 | 国产精品久久久久91| 欧美久久香蕉| 无码中文字幕色专区| 国产传媒欧美日韩成人| 蜜臀av粉嫩av懂色av| 91小视频在线观看| 国产一级一级片| 精品欧美一区二区久久| 天堂av在线资源| 中文字幕精品网| 成人福利av| 欧美日韩综合网| 欧美专区一区二区三区| 天美星空大象mv在线观看视频| 久久综合色一综合色88| 日韩无码精品一区二区三区| 精品国产欧美一区二区| 男人天堂亚洲二区| 欧美诱惑福利视频| 天美av一区二区三区久久| 日本欧美黄色片| 99精品久久只有精品| 国产精品第9页| 日韩精品在线免费观看| 男人av在线播放| 欧美二区三区| 日韩高清一区在线| 91社区视频在线观看| 欧美色视频一区| 国产精品实拍| 成人三级在线| 亚洲黄网站黄| 免费av不卡在线| 亚洲日本护士毛茸茸| 精品国产黄色片| 国内精品小视频在线观看| ww久久综合久中文字幕| 一本一道久久久a久久久精品91| 麻豆国产精品视频| 麻豆天美蜜桃91| 亚洲精品一区二区三区影院| 高清在线视频不卡| 精品综合久久| 自拍偷拍欧美专区| 丰满人妻一区二区三区大胸| 亚洲国产成人av网| 欧美女优在线观看| 成人福利视频网| 在线成人av| 国产真人做爰视频免费| 6080午夜不卡| 爱爱爱免费视频在线观看| 欧美—级高清免费播放| 国产香蕉精品| 最近中文字幕一区二区| 91麻豆文化传媒在线观看| 波多野结衣一二区| 国产午夜精品麻豆| 欧美视频在线视频精品| 精品国产一区二区三区无码| 国产婷婷色一区二区三区| av中文在线观看| 久久影院免费观看| 日韩精品福利一区二区三区|