精品欧美一区二区三区在线观看 _久久久久国色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)推薦
日本视频一区二区三区| 欧美电影免费网站| 一区二区三区日韩欧美| 成人动漫在线观看视频| 青青视频在线免费观看| 四季av在线一区二区三区| 日韩午夜av一区| 116极品美女午夜一级| 日韩黄色影院| av亚洲精华国产精华精华| 国产精品成人aaaaa网站| 99成人在线观看| 西瓜成人精品人成网站| 欧美日韩一区在线| 精品久久一二三| 国产调教视频在线观看| www国产成人免费观看视频 深夜成人网| 国产精品亚洲欧美导航| 色婷婷在线观看视频| 婷婷亚洲图片| 夜夜嗨av一区二区三区四区| 亚洲熟女一区二区三区| 四虎国产精品成人免费影视| 天天综合日日夜夜精品| 一区二区视频在线观看| 女人偷人在线视频| 国产成人自拍高清视频在线免费播放| 国产精品91久久久久久| 黄色小说在线观看视频| 91精品天堂福利在线观看| 国产亚洲激情视频在线| 少妇一级淫片免费放播放| 亚洲国产天堂| 欧美性猛交xxxxxx富婆| 久久精品国产精品亚洲色婷婷| sm国产在线调教视频| 国产精品欧美一级免费| 日本公妇乱淫免费视频一区三区| 高清毛片aaaaaaaaa片| 国产综合久久久久影院| 国产精品一区电影| wwwwww在线观看| 久久精品国语| 欧美一区二区三区艳史| 亚洲欧美在线视频免费| 国产一在线精品一区在线观看| www亚洲欧美| 国产精品suv一区二区88| 欧美三级美国一级| 国产亚洲在线播放| 偷拍夫妻性生活| 国产精品一区二区av日韩在线| 日韩经典中文字幕| 久久午夜夜伦鲁鲁片| 欧美激情网址| 精品中文字幕久久久久久| www.超碰97| 久久av免费看| 中文字幕欧美日韩va免费视频| a天堂中文字幕| 日本午夜一区| 久久亚洲国产精品| 青青青在线免费观看| 91超碰国产精品| 色综合五月天导航| 日韩少妇裸体做爰视频| 国产精品日韩欧美一区| 日韩av电影免费观看高清| 无码人妻一区二区三区免费| 日韩福利电影在线| 国产精品久久久一区| 中文字幕在线播放av| 寂寞少妇一区二区三区| 91久久精品国产91久久性色tv| 丰满人妻一区二区三区无码av| 成人精品国产福利| 日本一区二区三区免费观看| 超碰免费在线| 亚洲精品国产精品乱码不99| 大陆av在线播放| 亚洲女色av| 欧美日韩国产精品成人| 捷克做爰xxxⅹ性视频| 视频一区中文字幕精品| 亚洲国产精品免费| 成人黄色免费网址| 日韩综合精品| 久久久久成人网| 丁香社区五月天| 国产在线麻豆精品观看| 国产区日韩欧美| 成人亚洲综合天堂| 亚洲午夜在线电影| 在线免费观看av的网站| 亚洲91网站| 亚洲人成网7777777国产| 日韩福利小视频| 亚洲一区亚洲| 91在线免费看片| 九色在线视频| 亚洲自拍偷拍综合| 美女网站色免费| 国产精品丝袜在线播放| 在线看日韩欧美| 91蜜桃视频在线观看| 久久精品999| 精品亚洲欧美日韩| а√天堂资源地址在线下载| 欧美性videos高清精品| 女人扒开腿免费视频app| 视频小说一区二区| 欧美激情xxxx| 国产精品美女一区| 久久久青草青青国产亚洲免观| 老司机午夜网站| 日韩在线影院| 亚洲国产小视频在线观看| 久久精品日韩无码| 午夜在线精品偷拍| 国产精品精品软件视频| 免费的黄网站在线观看| 91极品视觉盛宴| 99久久免费看精品国产一区| 中文字幕人成人乱码| 国产精品91在线观看| 日韩在线视频免费| 樱桃视频在线观看一区| 日韩在线不卡一区| 成人嫩草影院| 日本一本a高清免费不卡| 天天射,天天干| 夜夜精品视频一区二区| 国产性生活一级片| 久久成人综合| 国产精品视频1区| 成人影院免费观看| 欧美在线你懂得| 天天躁日日躁aaaa视频| 国产精品一卡| 麻豆精品传媒视频| 台湾佬中文娱乐网欧美电影| 精品国产髙清在线看国产毛片| 国产探花在线免费观看| 国产制服丝袜一区| 欧美三级午夜理伦三级老人| 日本成人一区二区| 久久夜色精品国产亚洲aⅴ| 在线免费看av的网站| 国产精品色噜噜| 鲁一鲁一鲁一鲁一av| 成久久久网站| 国产在线视频91| 高h视频在线观看| 欧美一区日韩一区| 欧美黄色一区二区三区| 国产99久久久精品| 国产精品无码免费专区午夜| 高清精品视频| 奇米四色中文综合久久| 第一页在线观看| 欧美日韩国产大片| 久久久久久久久久久久久女过产乱| 久久国产精品72免费观看| 正在播放亚洲| 91精品啪在线观看国产爱臀| 久久久免费电影| 日本一区二区三区在线观看视频| 色综合色综合色综合| 你懂得视频在线观看| 久久97超碰色| 亚洲理论电影在线观看| 日本欧美高清| 国产精品一区二区三区毛片淫片| 免费av网站在线看| 精品国产精品网麻豆系列| 国产99久久久| 国产精品久久久久婷婷二区次| 热久久久久久久久| 日韩午夜av在线| 亚洲一区不卡在线| 成人线上播放| 国产精品极品在线| 亚洲资源一区| 亚洲美女精品久久| 国产精品国产精品国产专区| 午夜日韩在线电影| 青青操在线播放| 成av人片一区二区| 亚洲一级片免费| 在线不卡视频| 亚洲激情一区二区三区| 中文一区二区三区四区| 国产精品成人国产乱一区| av在线免费网址| 日韩av一区在线观看| 亚洲一区二区影视| 精品久久久久久亚洲国产300| 欧美三级视频网站| 成人免费不卡视频| 污网站免费在线| 亚洲清纯自拍| 国产免费一区二区三区四在线播放| 成人香蕉社区| 91在线免费看网站| 成人日韩精品| 992tv成人免费视频| 毛片免费不卡| 亚洲视频欧洲视频| 人妻精品一区二区三区| 欧美精品久久久久久久久老牛影院| 久久夜色精品亚洲| 一区二区三区在线播| 亚洲日本精品视频| 91丨九色丨蝌蚪丨老版| 中国老熟女重囗味hdxx| 蜜臀av一区二区| 欧美激情国产精品日韩| 亚洲网站啪啪| a级片一区二区| 日韩电影一区| 日韩高清三级| 久草精品在线| 久久久国产精品一区二区三区| 久久伦理中文字幕| 91九色单男在线观看| 欧美影视资讯| 国产精品白丝jk喷水视频一区| 婷婷电影在线观看| 久久久久久亚洲| 日本一本在线免费福利| 久久夜色精品国产亚洲aⅴ| 欧美一区二区三区| 色噜噜狠狠狠综合曰曰曰88av | 欧美精品在线一区二区三区| 伊人手机在线视频| 欧美日韩国产激情| 国产精品第二十页| 亚洲一区二区免费视频| 丰满少妇高潮久久三区| 亚洲人成小说网站色在线 | 亚洲一区二区三区四区五区黄 | 国产男人精品视频| 精品免费av一区二区三区| 国产精国产精品| 中文字幕av一区二区三区佐山爱| 热99精品只有里视频精品| 偷拍自拍在线看| 57pao国产成人免费| 是的av在线| 日韩av男人的天堂| 四虎4545www国产精品| 国产精品久久久久久久电影| 成人啊v在线| 成人国产精品一区二区| 成人网av.com/| 操一操视频一区| 国偷自产视频一区二区久| 乱一区二区三区在线播放| 天美av一区二区三区久久| 欧美一区二区在线| 日韩电影一区| 欧美黄网在线观看| 亚洲免费播放| 黑鬼大战白妞高潮喷白浆| 青青草精品视频| 天天干天天色天天干| 国产黄色精品网站| 国产精品300页| 欧美国产日韩a欧美在线观看 | 婷婷久久综合九色综合绿巨人 | 久久精品国产第一区二区三区最新章节 | 无码人妻精品一区二区中文| 国产精品国产三级国产有无不卡| 久久中文免费视频| 欧美性猛交xxxx| 97精品人妻一区二区三区| 精品国产免费一区二区三区四区| 午夜福利理论片在线观看| 色婷婷**av毛片一区| 污视频网站免费在线观看| 欧美有码在线观看视频| 日本黄色成人| 九9re精品视频在线观看re6 | av电影在线观看一区| 女女互磨互喷水高潮les呻吟 | 日产精品久久久| 欧美精品123区| 天天射天天色天天干| 视频直播国产精品| 国产中文在线播放| 91久久久久久| 最新亚洲精品| 国产精品8888| 日本伊人色综合网| 69亚洲乱人伦| 中文字幕综合网| 日日噜噜噜噜人人爽亚洲精品| 欧美高清性hdvideosex| 三级av在线播放| 欧美激情a在线| 亚洲最大的免费视频网站| 鲁鲁视频www一区二区| 亚洲视频观看| 男生操女生视频在线观看| 久久久蜜臀国产一区二区| 精品无码人妻一区二区三区品| 欧美综合视频在线观看| 天堂网www中文在线| 久久中文字幕一区| 视频一区在线免费看| 精品国产一区二区三区四区vr| 图片区亚洲欧美小说区| 亚洲精品高清无码视频| www..com久久爱| 国产一级二级毛片| 67194成人在线观看| 麻豆app在线观看| 91精品国产精品| 99久久香蕉| 国风产精品一区二区| 老司机精品视频在线| 波多野结衣av在线观看| 疯狂做受xxxx高潮欧美日本| 丰满人妻av一区二区三区| 久久久国产91| 一区在线不卡| 在线视频福利一区| 蜜臀精品一区二区三区在线观看| 一本色道久久综合亚洲精品图片| 亚洲福利视频导航| 开心激情综合网| 久久久久久久久久久国产| 欧州一区二区三区| 亚洲小说欧美另类激情| 久久国产精品色婷婷| 一级片黄色录像| 欧美日韩国产综合视频在线观看| 阿v免费在线观看| 国产精品爽爽爽爽爽爽在线观看| 北条麻妃国产九九九精品小说| 国产精品人人妻人人爽人人牛| 久久五月婷婷丁香社区| caoporn国产| 亚洲人在线视频| 偷拍视频一区二区三区| 日本一区美女| 日本不卡视频在线| 羞羞在线观看视频| 欧美一区二区三区视频免费播放| 国产在线二区| 粉嫩av一区二区三区免费观看| 国产字幕视频一区二区| 中文字幕无码毛片免费看| 亚洲国产精品精华液网站| 天堂av2024| 日本亚洲欧洲色α| 91影院成人| 初高中福利视频网站| 亚洲成av人片一区二区三区| 亚洲aⅴ在线观看| 国产精品日韩欧美综合| 手机亚洲手机国产手机日韩| 女人高潮一级片| 亚洲国产aⅴ天堂久久| 日韩一级在线播放| 国产99久久精品一区二区永久免费| 成人在线免费视频观看| 97超碰人人看| 黑丝美女久久久| 成年人在线观看| julia一区二区中文久久94| 一本一道久久综合狠狠老精东影业| 国产三级av在线播放| 欧美高清www午色夜在线视频| 日本乱理伦在线| 欧美日韩免费观看一区| 国产中文一区二区三区| 天天插天天操天天干| 在线成人中文字幕| 日韩中文字幕视频网| 日韩有码免费视频| 亚洲私人影院在线观看| 熟妇人妻av无码一区二区三区| 国产精品福利片| 国产精品啊啊啊| 99久久久无码国产精品不卡| 精品国产乱码久久久久久图片| 日本免费久久| 成人一区二区av| 日本一区二区不卡视频| 精品人妻一区二区三区换脸明星| 欧美一级大片在线观看| 国产精品88久久久久久| 特级西西人体wwwww| 91精品婷婷国产综合久久竹菊| 九色porny丨入口在线| 人人妻人人澡人人爽精品欧美一区| 99这里只有久久精品视频| 11024精品一区二区三区日韩| 欧美最顶级的aⅴ艳星|