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

用Unsloth微調(diào)一個老中醫(yī)大模型

發(fā)布于 2025-8-7 07:06
瀏覽
0收藏

本文介紹了如何使用Unsloth框架微調(diào)大語言模型,以《傷寒論》數(shù)據(jù)集為例訓(xùn)練一個中醫(yī)專家模型。Unsloth顯著降低了微調(diào)的資源需求。文章涵蓋了從環(huán)境配置、模型選擇、數(shù)據(jù)準(zhǔn)備到訓(xùn)練部署的完整流程,為垂直領(lǐng)域模型微調(diào)提供了實(shí)用參考。

1. 關(guān)于Unsloth

2. Unsloth 的核心優(yōu)勢

3. 使用要求

4. 安裝 Unsloth

5. 選擇模型

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

7. 開始微調(diào)

7.1 引入依賴

7.2 加載模型

7.3 加載數(shù)據(jù)集

7.4 定義 LoRA

7.5 使用 `SFTTrainer` 進(jìn)行訓(xùn)練

7.6 模型保存

7.7 訓(xùn)練過程

8. 測試微調(diào)的模型

在實(shí)際應(yīng)用中,我們常常面臨特定場景下的問題需求。此時,通過指令微調(diào)可以讓模型更好地適應(yīng)這些具體任務(wù),從而提升模型的實(shí)用性和表現(xiàn)。

比如:在醫(yī)療健康領(lǐng)域,醫(yī)生希望讓大模型更好地理解中醫(yī)診斷和治療的知識體系,從而能夠輔助分析病情、推薦中藥方劑,甚至自動生成病歷摘要。又如,在法律行業(yè),律師團(tuán)隊(duì)希望通過微調(diào),讓大模型能夠更準(zhǔn)確地解讀中國法律條文、判例和合同文本,輔助法律檢索和文書生成。此外,在教育領(lǐng)域,教師可以通過指令微調(diào),讓模型更貼合本地教材內(nèi)容,自動批改作業(yè)、生成個性化學(xué)習(xí)建議。這些場景都需要針對特定任務(wù)和數(shù)據(jù)對大模型進(jìn)行定制化微調(diào),以提升其在實(shí)際應(yīng)用中的表現(xiàn)和價值。

正好最近身體不適,并且得到一本醫(yī)療秘籍《傷寒論》,用 ??Unsloth?? 來微調(diào)一個垂直領(lǐng)域的模型出來。

完整代碼,在公眾號「AI取經(jīng)路」發(fā)消息「微調(diào)」獲取

1. 關(guān)于Unsloth

大型語言模型(LLM)的微調(diào)有很大的資源挑戰(zhàn),如高昂的內(nèi)存需求和漫長的訓(xùn)練時間。

傳統(tǒng)的微調(diào)方法,可能需要數(shù)十小時才能完成一項(xiàng)任務(wù),并且常常導(dǎo)致內(nèi)存不足問題 。這種特性限制了個人開發(fā)者和小型團(tuán)隊(duì)對 LLM 進(jìn)行定制化和優(yōu)化的能力。

Unsloth 正是為了解決這些痛點(diǎn)而誕生的。

它是一個專門為加速 LLM 微調(diào)并顯著降低內(nèi)存消耗而設(shè)計的 Python 框架 。

Unsloth 實(shí)現(xiàn)了顯著的性能提升,同時保持了與 Hugging Face 生態(tài)系統(tǒng)的完全兼容性 。這使得用戶即使在免費(fèi)的 Colab GPU 或配備 GPU 的筆記本電腦等有限硬件上,也能夠高效地進(jìn)行 LLM 微調(diào) 。

2. Unsloth 的核心優(yōu)勢

速度提升

在Alpaca 數(shù)據(jù)集上進(jìn)行了測試,使用的 batch 大小為 2,gradient accumulation steps 為 4,rank 為 32,并在所有線性層(q、k、v、o、gate、up、down)上應(yīng)用了 QLoRA

Model

VRAM

Unsloth speed

VRAM reduction

Longer context

Hugging Face + FA2

Llama 3.3 (70B)

80GB

2x

>75%

13x longer

1x

Llama 3.1 (8B)

80GB

2x

>70%

12x longer

1x

測試結(jié)果顯示,兩種模型在顯存使用上均為80GB,速度均提升了2倍。Llama 3.3的顯存減少了超過75%,能夠處理的上下文長度提升了13倍;而Llama 3.1的顯存減少了超過70%,上下文長度提升了12倍。

API 簡化

Unsloth 提供了一個簡潔的 API,顯著降低了 LLM 微調(diào)的復(fù)雜性 。它將模型加載、量化、訓(xùn)練、評估、保存、導(dǎo)出以及與 Ollama、llama.cpp 和 vLLM 等推理引擎的集成等所有工作流程進(jìn)行了簡化 。

Hugging Face 生態(tài)系統(tǒng)兼容性

Unsloth 是在 Hugging Face Transformers 庫之上構(gòu)建的,這使其能夠充分利用 Hugging Face 強(qiáng)大的生態(tài)系統(tǒng),同時添加自己的增強(qiáng)功能來簡化微調(diào)過程 。

它與 Hugging Face Hub、Transformers、PEFT 和 TRL 等組件完全兼容 。這意味著用戶可以無縫地訪問 Hugging Face 提供的豐富模型和數(shù)據(jù)集資源,并利用 Unsloth 的優(yōu)化進(jìn)行訓(xùn)練。

硬件兼容性與可訪問性

Unsloth 支持非常多的 NVIDIA GPU,從 2018 年及以后發(fā)布的型號,包括 V100、T4、Titan V、RTX 20、30、40 系列、A100 和 H100 等,最低 CUDA 能力要求為 7.0。即使是 GTX 1070 和 1080 也能工作,盡管速度較慢 。

Unsloth 可以在 Linux 和 Windows 操作系統(tǒng)上運(yùn)行 。

廣泛的模型支持

Unsloth 支持所有 Transformer 風(fēng)格的模型,包括 Llama、DeepSeek、TTS、Qwen、Mistral、Gemma 等主流 LLM。它還支持多模態(tài)模型、文本到語音 (TTS)、語音到文本 (STT) 模型、BERT 模型以及擴(kuò)散模型。

動態(tài)量化

Unsloth 引入了動態(tài) 4 位量化 (Dynamic 4-bit Quantization) 技術(shù),這是一種智能的量化策略,通過動態(tài)選擇不對某些參數(shù)進(jìn)行量化,從而在僅增加不到 10% VRAM 的情況下顯著提高準(zhǔn)確性 。

社區(qū)的活躍

從GitHub上可以看出,他的受歡迎程度非常高,目前已經(jīng)43k顆星

項(xiàng)目地址:???https://github.com/unslothai/unsloth??

3. 使用要求

支持 Linux 和 Windows。

支持 2018 年及以后的 NVIDIA 顯卡,包括 Blackwell RTX 50 系列。最低要求 CUDA 計算能力為 7.0(如 V100、T4、Titan V、RTX 20、30、40 系列,以及 A100、H100、L40 等)。GTX 1070、1080 雖然可以使用,但運(yùn)行速度較慢。

相關(guān)閱讀:???一文說清楚CUDA環(huán)境??

GPU內(nèi)存要求:

Model parameters

QLoRA (4-bit) VRAM

LoRA (16-bit) VRAM

3B

3.5 GB

8 GB

7B

5 GB

19 GB

8B

6 GB

22 GB

9B

6.5 GB

24 GB

11B

7.5 GB

29 GB

14B

8.5 GB

33 GB

27B

22GB

64GB

32B

26 GB

76 GB

40B

30GB

96GB

70B

41 GB

164 GB

81B

48GB

192GB

90B

53GB

212GB

405B

237 GB

950 GB

4. 安裝 Unsloth

# 初始化一個名為 demo-unsloth 的項(xiàng)目,并指定 Python 版本為 3.11.9
uv init demo-unsloth -p 3.11.9
# 進(jìn)入項(xiàng)目目錄
cd demo-unsloth
# 創(chuàng)建虛擬環(huán)境
uv venv
# 激活虛擬環(huán)境(Windows 下)
.venv\Scripts\activate
# 安裝 triton-windows,要求版本3.3.1.post19
uv pip install triton-windows==3.3.1.post19
# 安裝支持 CUDA 12.6 的 PyTorch 及其相關(guān)庫
uv pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu126

安裝unsloth

uv pip install unsloth

5. 選擇模型

Unsloth 支持非常多的預(yù)訓(xùn)練模型,包括 Llama、DeepSeek、TTS、Qwen、Mistral 和 Gemma 系列 LLM 3。

在選擇模型時,需要注意模型名稱的后綴。以 ??unsloth-bnb-4bit??? 結(jié)尾的模型表示它們是 Unsloth 動態(tài) 4 位量化模型,與標(biāo)準(zhǔn) ??bnb-4bit?? 模型相比,這些模型在略微增加 VRAM 使用的情況下提供了更高的精度。

??https://docs.unsloth.ai/get-started/all-our-models??


我的顯卡是RTX 2050顯卡,4GB顯存,我選一個比較小的版本 unsloth/Qwen2.5-1.5B-Instruct-bnb-4bit

下載模型:

huggingface-cli download --resume-download unsloth/Qwen2.5-1.5B-Instruct-bnb-4bit --local-dir ./ckpts/qwen2.5-1.5b-instruct-bnb-4bit

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

數(shù)據(jù)集的質(zhì)量和格式直接決定了模型微調(diào)的效果。

一個高質(zhì)量的數(shù)據(jù)集不僅需要覆蓋目標(biāo)任務(wù)的核心內(nèi)容,還應(yīng)保證問答對的準(zhǔn)確性、完整性和多樣性。

此外,數(shù)據(jù)集的規(guī)模也會影響模型的泛化能力,數(shù)據(jù)量越大、覆蓋面越廣,模型在實(shí)際應(yīng)用中的表現(xiàn)通常會更好。

因此,在微調(diào)前應(yīng)充分清洗、標(biāo)注和檢查數(shù)據(jù),確保其能夠有效支撐下游任務(wù)的訓(xùn)練需求。

因?yàn)橐?xùn)練一個老中醫(yī),所以找了一本《傷寒論》,通過工具把他拆成問答對,格式如下

[
  {
    "Question": "傷寒一日,巨陽受之會出現(xiàn)什么癥狀?",
    "Response": "傷寒一日,巨陽受之會出現(xiàn)頭項(xiàng)痛、腰脊強(qiáng)的癥狀。因?yàn)榫揸栒?,諸陽之屬也,其脈連于風(fēng)府,為諸陽主氣,所以先受邪。 "
  },
  {
    "Question": "三陰受病,厥陰受之會出現(xiàn)什么癥狀",
    "Response": "三陰受病,若厥陰受之,厥陰脈循陰器而絡(luò)于肝,會出現(xiàn)煩滿而囊縮的癥狀。 若傷寒循常無變,十二日厥陰病衰,會出現(xiàn)囊縱、少腹微下的情況。 "
  },
]

7. 開始微調(diào)

7.1 引入依賴

# 導(dǎo)入必要的庫
from unsloth import FastLanguageModel, is_bfloat16_supported
from transformers import TrainingArguments, EarlyStoppingCallback
from trl import SFTTrainer
from datasets import load_dataset

# 模型配置參數(shù)
max_seq_length = 2048  # 模型處理文本的最大序列長度,支持長文本輸入

7.2 加載模型

# 加載預(yù)訓(xùn)練模型和分詞器
model, tokenizer = FastLanguageModel.from_pretrained(
    model_name="ckpts/qwen2.5-1.5b-instruct-bnb-4bit",
    max_seq_length=max_seq_length,
    dtype=None,  # 自動檢測最佳數(shù)據(jù)類型(bfloat16或float16)
    load_in_4bit=True,  # 使用4bit量化加載模型,大幅減少顯存占用
)

7.3 加載數(shù)據(jù)集

大型語言模型需要以特定的“提示風(fēng)格”或“聊天模板”來接收輸入,以便它們能夠正確理解任務(wù)、指令、輸入和預(yù)期響應(yīng)之間的關(guān)系。

例如,一個常用的提示風(fēng)格是:

“請先閱讀下方的任務(wù)指令,再結(jié)合提供的上下文信息,生成恰當(dāng)?shù)幕貜?fù)。### 指令:{} ### 上下文:{} ### 回復(fù):{}”

有效的微調(diào)需要仔細(xì)關(guān)注輸入格式,因?yàn)樗苯佑绊懩P蛯W(xué)習(xí)的內(nèi)容和響應(yīng)方式

下面代碼中加載我們的《傷寒論》數(shù)據(jù)集( ??data/datasets-2025-08.json???),并使用 ??formatting_data??? 函數(shù)將其轉(zhuǎn)換為 Unsloth 所需的格式,此函數(shù)會結(jié)合輸入和輸出,按照 ??prompt_style??? 進(jìn)行格式化,并添加 ??EOS_TOKEN???(End-of-Sentence Token),??EOS_TOKEN?? 對于避免模型生成重復(fù)內(nèi)容至關(guān)重要。

# 定義訓(xùn)練數(shù)據(jù)格式化模板
# 使用中醫(yī)專家角色設(shè)定,專門針對《傷寒論》問答任務(wù)
train_prompt_style = """你是一位精通中醫(yī)理論的專家,特別擅長《傷寒論》的理論和實(shí)踐應(yīng)用。
請根據(jù)《傷寒論》的經(jīng)典理論,準(zhǔn)確回答以下問題。

### 問題:
{}

### 回答:
{}
"""

# 加載訓(xùn)練數(shù)據(jù)集
# 從JSON文件加載傷寒論問答數(shù)據(jù)集,包含問題和回答對
dataset = load_dataset("json", data_files="data/datasets-2025-08.json", split="train")  


def formatting_data(examples):
    """格式化數(shù)據(jù)集函數(shù),將問答對轉(zhuǎn)換為訓(xùn)練格式
    
    將原始的問題和回答對格式化為模型訓(xùn)練所需的文本格式,
    添加角色設(shè)定和結(jié)構(gòu)化模板。

    Args:
        examples: 包含Question、Response字段的數(shù)據(jù)樣本字典

    Returns:
        dict: 包含格式化后文本的字典,鍵為"text"
    """
    questions = examples["Question"]
    responses = examples["Response"]
    texts = []
    for q, r in zip(questions, responses):
        # 使用模板格式化每個問答對,并添加結(jié)束標(biāo)記
        text = train_prompt_style.format(q, r) + tokenizer.eos_token
        texts.append(text)
    # print(f"數(shù)據(jù)集: {texts}")
    return {"text": texts}


# 應(yīng)用數(shù)據(jù)格式化函數(shù)
dataset = dataset.map(formatting_data, batched=True, num_proc=1)

# 數(shù)據(jù)集分割:80%用于訓(xùn)練,20%用于驗(yàn)證
# 使用固定隨機(jī)種子確保結(jié)果可復(fù)現(xiàn)
train_test_split = dataset.train_test_split(test_size=0.2, seed=3407)
train_dataset = train_test_split['train']
eval_dataset = train_test_split['test']

print(f"數(shù)據(jù)集加載完成 - 訓(xùn)練集: {len(train_dataset)} 條, 驗(yàn)證集: {len(eval_dataset)} 條")

7.4 定義 LoRA

# 添加LoRA(Low-Rank Adaptation)權(quán)重配置
# LoRA是一種高效的微調(diào)方法,只訓(xùn)練少量參數(shù)即可適應(yīng)新任務(wù)
model = FastLanguageModel.get_peft_model(
    model,
    r=32,  # LoRA矩陣的秩,值越大表達(dá)能力越強(qiáng),但參數(shù)量也越多
    target_modules=["q_proj", "k_proj", "v_proj", "o_proj", "gate_proj", "up_proj", "down_proj", ],
    lora_alpha=64,  # LoRA縮放參數(shù)
    lora_dropout=0.1,  # LoRA dropout率,防止過擬合,值越小正則化越弱
    bias="none",  # 偏置項(xiàng)處理方式,"none"表示不訓(xùn)練偏置,節(jié)省參數(shù)
    use_gradient_checkpointing="unsloth",  # 使用Unsloth優(yōu)化的梯度檢查點(diǎn),支持超長序列
    random_state=3407,  # 隨機(jī)種子,確保結(jié)果可復(fù)現(xiàn)
    use_rslora=False,  # 是否使用Rank Stabilized LoRA,當(dāng)前使用標(biāo)準(zhǔn)LoRA
    loftq_cnotallow=None,  # LoftQ配置,用于更精確的量化
)

?7.5 使用 ???SFTTrainer?? 進(jìn)行訓(xùn)練?

# 創(chuàng)建SFT(Supervised Fine-Tuning)訓(xùn)練器
# 使用監(jiān)督學(xué)習(xí)方式微調(diào)模型,適用于問答任務(wù)
trainer = SFTTrainer(
    model=model,
    tokenizer=tokenizer,
    train_dataset=train_dataset,  # 訓(xùn)練數(shù)據(jù)集
    eval_dataset=eval_dataset,  # 驗(yàn)證數(shù)據(jù)集,用于評估模型性能
    dataset_text_field="text",  # 數(shù)據(jù)集中文本字段的名稱
    max_seq_length=max_seq_length,  # 最大序列長度
    dataset_num_proc=1,  # 數(shù)據(jù)處理進(jìn)程數(shù),設(shè)為1避免緩存沖突
    packing=False,  # 是否使用序列打包,短序列時可設(shè)為True提升5倍訓(xùn)練速度
    callbacks=[
        EarlyStoppingCallback(early_stopping_patience=3, early_stopping_threshold=0.0005),  # 早停機(jī)制,防止過擬合
    ],
    args=TrainingArguments(
        # 批次大小配置
        per_device_train_batch_size=2,  # 每個GPU的訓(xùn)練批次大小
        per_device_eval_batch_size=2,  # 每個GPU的驗(yàn)證批次大小
        
        # 梯度累積配置
        gradient_accumulation_steps=8,  # 梯度累積步數(shù),有效批次大小 = batch_size * gradient_accumulation_steps
        
        # 學(xué)習(xí)率配置
        warmup_ratio=0.15,  # 學(xué)習(xí)率預(yù)熱比例,前15%的步數(shù)用于預(yù)熱
        learning_rate=2e-5,  # 學(xué)習(xí)率,控制參數(shù)更新步長
        
        # 訓(xùn)練輪數(shù)和步數(shù)配置
        # max_steps = 200, # 最大訓(xùn)練步數(shù)(可選)
        num_train_epochs=5,  # 訓(xùn)練輪數(shù),給模型充分學(xué)習(xí)機(jī)會
        
        # 精度配置
        fp16=not is_bfloat16_supported(),  # 是否使用16位浮點(diǎn)精度訓(xùn)練
        bf16=is_bfloat16_supported(),  # 是否使用bfloat16精度訓(xùn)練(更穩(wěn)定)
        
        # 日志和監(jiān)控配置
        logging_steps=2,  # 每2步記錄一次日志
        eval_steps=10,  # 每10步進(jìn)行一次驗(yàn)證評估
        eval_strategy="steps",  # 按步數(shù)進(jìn)行驗(yàn)證
        
        # 模型保存配置
        save_steps=20,  # 每20步保存一次模型檢查點(diǎn)
        save_strategy="steps",  # 按步數(shù)保存模型
        save_total_limit=5,  # 最多保存5個檢查點(diǎn),節(jié)省存儲空間
        
        # 最佳模型配置
        load_best_model_at_end=True,  # 訓(xùn)練結(jié)束時自動加載最佳模型
        metric_for_best_model="eval_loss",  # 使用驗(yàn)證損失作為最佳模型指標(biāo)
        greater_is_better=False,  # 損失越小越好
        
        # 正則化配置
        weight_decay=0.001,  # 權(quán)重衰減,防止過擬合
        max_grad_norm=1.0,  # 梯度裁剪閾值,防止梯度爆炸
        
        # 學(xué)習(xí)率調(diào)度配置
        lr_scheduler_type="cosine",  # 使用余弦退火學(xué)習(xí)率調(diào)度器
        
        # 優(yōu)化器配置
        optim="adamw_8bit",  # 使用8位AdamW優(yōu)化器,節(jié)省顯存
        
        # 數(shù)據(jù)加載配置
        dataloader_num_workers=0,  # 數(shù)據(jù)加載器工作進(jìn)程數(shù),設(shè)為0避免多進(jìn)程沖突
        
        # 輸出配置
        output_dir="outputs",  # 模型輸出和檢查點(diǎn)保存目錄
        
        # 隨機(jī)種子
        seed=3407,  # 隨機(jī)種子,確保結(jié)果可復(fù)現(xiàn)

    ),
)

# 開始訓(xùn)練
train_stats = trainer.train()
print(f"訓(xùn)練完成,訓(xùn)練損失: \n {train_stats}")

7.6 模型保存

Unsloth 提供了多種保存微調(diào)后模型的方法,每種方法都有其特定的用途:

???save_pretrained???

此方法僅保存 LoRA 適配器權(quán)重。這些文件通常很小,只包含模型修改部分,包括 ??adapter_config.json??? 和 ??adapter_model.safetensors?? 。這種方法適用于需要靈活切換不同 LoRA 適配器或節(jié)省存儲空間的情況。

???save_pretrained_gguf???

這是一種新的優(yōu)化格式(GGUF),支持更好的元數(shù)據(jù)處理。文件同樣較小且經(jīng)過量化,包括 ??model.gguf??? 和 ??tokenizer.json?? 。Unsloth 的動態(tài)量化在 GGUF 導(dǎo)出中通過智能的層特定量化策略,進(jìn)一步增強(qiáng)了模型性能和效率。

# 保存微調(diào)后的模型權(quán)重
# 只保存LoRA權(quán)重,原始模型權(quán)重保持不變
model.save_pretrained("ckpts/qwen2.5-1.5b-instruct-bnb-4bit-lora")
# 保存分詞器(tokenizer),以便后續(xù)加載和推理時使用
tokenizer.save_pretrained("ckpts/qwen2.5-1.5b-instruct-bnb-4bit-lora")
#==================================================================================

# model.save_pretrained_gguf("ckpts/qwen2.5-1.5b-instruct-bnb-4bit-gguf", tokenizer, quantization_method="q4_k_m")

7.7 訓(xùn)練過程

開始時顯示基礎(chǔ)信息:

==((====))==  Unsloth 2025.7.8: Fast Qwen3 patching. Transformers: 4.53.3.
   \\   /|    NVIDIA GeForce RTX 2050. Num GPUs = 1. Max memory: 4.0 GB. Platform: Windows.
O^O/ \_/ \    Torch: 2.7.1+cu126. CUDA: 8.6. CUDA Toolkit: 12.6. Triton: 3.3.1
\        /    Bfloat16 = TRUE. FA [Xformers = 0.0.31.post1. FA2 = False]
 "-____-"     Free license: http://github.com/unslothai/unsloth
# 批注:系統(tǒng)配置信息
# - 使用RTX 2050顯卡,4GB顯存
# - 支持bfloat16精度訓(xùn)練
# - 使用Xformers優(yōu)化注意力機(jī)制

再給出微調(diào)的配置:

==((====))==  Unsloth - 2x faster free finetuning | Num GPUs used = 1
   \\   /|    Num examples = 353 | Num Epochs = 5 | Total steps = 115
O^O/ \_/ \    Batch size per device = 2 | Gradient accumulation steps = 8
\        /    Data Parallel GPUs = 1 | Total batch size (2 x 8 x 1) = 16
 "-____-"     Trainable parameters = 20,185,088 of 616,235,008 (3.28% trained)
# 批注:訓(xùn)練配置詳情
# - 總樣本數(shù):353個
# - 訓(xùn)練輪數(shù):5輪
# - 總步數(shù):115步
# - 有效批次大?。?6(2×8×1)
# - 可訓(xùn)練參數(shù):3.28%(20M/616M)

后面是微調(diào)細(xì)節(jié):

{'loss': 2.1017, 'grad_norm': 3.180413007736206, 'learning_rate': 1.995283421166614e-05, 'epoch': 1.05}
{'loss': 2.2702, 'grad_norm': 2.8307971954345703, 'learning_rate': 1.9869167087338908e-05, 'epoch': 1.14}
{'loss': 2.0511, 'grad_norm': 3.1757583618164062, 'learning_rate': 1.9744105246469264e-05, 'epoch': 1.23}
{'loss': 2.1853, 'grad_norm': 2.5234906673431396, 'learning_rate': 1.957817324187987e-05, 'epoch': 1.32}
{'loss': 1.8145, 'grad_norm': 2.9424679279327393, 'learning_rate': 1.937206705006344e-05, 'epoch': 1.32}

8. 測試微調(diào)的模型

模型測試代碼如下:

from unsloth import FastLanguageModel
from unsloth.chat_templates import get_chat_template
from transformers import TextStreamer
import torch

max_seq_length = 512


model, tokenizer = FastLanguageModel.from_pretrained(
    model_name="ckpts/qwen2.5-1.5b-instruct-bnb-4bit-lora",
    max_seq_length=max_seq_length,
    dtype=None,
    load_in_4bit=True,
)

# 啟用unsloth的2x更快推理優(yōu)化
print("啟用推理優(yōu)化...")
FastLanguageModel.for_inference(model)
print("模型加載完成")


# 定義訓(xùn)練數(shù)據(jù)格式化字符串模板
train_prompt_style = """你是一位精通中醫(yī)理論的專家,特別擅長《傷寒論》的理論和實(shí)踐應(yīng)用。
請根據(jù)《傷寒論》的經(jīng)典理論,準(zhǔn)確回答以下問題。

### 問題:
{}
"""
question = '什么是太陽病?'

formatted_prompt = train_prompt_style.format(question)
print(f"格式化后的提示文本:\n-------------------\n{formatted_prompt}\n-------------------")
print(type(tokenizer))   # <class 'transformers.models.qwen2.tokenization_qwen2_fast.Qwen2TokenizerFast'>
inputs = tokenizer([formatted_prompt], return_tensors='pt', max_length=max_seq_length).to("cuda")

print(f"inputs: \n-------------------\n{inputs}\n-------------------")



# 生成回答(流式輸出)
with torch.no_grad():
    outputs = model.generate(
        # 輸入序列的token ID
        inputs['input_ids'], 
        # 注意力掩碼,指示哪些位置是有效輸入
        attention_mask=inputs['attention_mask'], 
        # 生成文本的最大長度限制
        max_length=max_seq_length,
        # 啟用KV緩存,加速生成過程
        use_cache=True,
        # 溫度參數(shù),控制生成的隨機(jī)性
        # 值越低生成越確定,值越高生成越隨機(jī)
        temperature=0.8, 
        # 核采樣參數(shù),只從累積概率達(dá)到90%的詞中選擇
        # 避免選擇概率極低的詞,提高生成質(zhì)量
        top_p=0.9,
        # 啟用采樣模式,而不是貪婪解碼
        # 貪婪解碼總是選擇概率最高的詞,容易產(chǎn)生重復(fù)
        do_sample=True,
        # 設(shè)置填充標(biāo)記ID,用于處理變長序列
        pad_token_id=tokenizer.eos_token_id,
        # 設(shè)置結(jié)束標(biāo)記ID,告訴模型何時停止生成
        eos_token_id=tokenizer.eos_token_id,
        # 重復(fù)懲罰參數(shù),防止模型重復(fù)生成相同內(nèi)容
        # 1.1表示重復(fù)詞的生成概率降低10%
        repetition_penalty=1.1
    )

print(type(outputs))
print(outputs)
answer = tokenizer.decode(outputs[0], skip_special_tokens=True)
print("\n" + "=" * 80)
print(answer)
print("\n" + "=" * 80)
print("測試完成!")

本文轉(zhuǎn)載自???AI取經(jīng)路??,作者:AI取經(jīng)路

收藏
回復(fù)
舉報
回復(fù)
相關(guān)推薦
久久久久久av无码免费网站| 久久久精彩视频| 男女全黄做爰文章| 看亚洲a级一级毛片| 亚洲va韩国va欧美va| 欧美日本韩国国产| 国产女人高潮时对白| 亚洲精选一区| www日韩欧美| 日韩一级视频在线观看| 韩国一区二区三区视频| 狠狠爱在线视频一区| 中文字幕中文字幕在线中心一区| 日本人妻丰满熟妇久久久久久| 日韩电影免费在线观看网站| 欧美激情精品久久久久久变态| 精品无码人妻一区| 欧美视频二区欧美影视| 91久久精品一区二区三区| 97超碰在线视| 尤物视频在线免费观看| 成人av手机在线观看| 国产美女精品视频| 岛国av中文字幕| 伊人久久成人| 久久夜色精品国产欧美乱| 中文字幕国产专区| 黄色免费大全亚洲| 亚洲欧美韩国| 国产午夜精品在线观看| 电影午夜精品一区二区三区| 欧美精品免费在线| 亚洲中文字幕无码av永久| 亚洲麻豆精品| 国产欧美一区二区精品性色超碰 | 久久久久久欧美精品se一二三四 | 女同性恋一区二区| 国产综合视频一区二区三区免费| 成人免费视频caoporn| 成人综合国产精品| 一区二区视频网站| 三级一区在线视频先锋| 欧美一区第一页| 国产在线观看免费视频今夜| 亚洲欧美一区在线| 久久综合久久美利坚合众国| www.99re6| 成人综合久久| 深夜福利日韩在线看| 阿v天堂2014| 精品成人影院| 在线观看免费高清视频97| 国产ts在线播放| 久9久9色综合| 亚洲性猛交xxxxwww| 国精品无码人妻一区二区三区| 无码日韩精品一区二区免费| 亚洲国模精品私拍| 在线免费观看成年人视频| 欧美电影免费网站| 亚洲女人天堂色在线7777| 国产制服丝袜在线| 国产精品日韩精品中文字幕| 亚洲欧美国产一本综合首页| 色综合99久久久无码国产精品| 国产精品一国产精品| 亚洲最大中文字幕| 极品色av影院| 黑人一区二区| 26uuu另类亚洲欧美日本老年| 国产婷婷色一区二区在线观看| 亚洲欧美日韩视频二区| 国产精品成av人在线视午夜片| 999视频在线| 久久精品国产99久久6| 亚洲一区二区日本| 天天躁日日躁狠狠躁喷水| 91麻豆免费观看| 日韩欧美三级一区二区| 男人影院在线观看| 亚洲综合区在线| av动漫在线看| 欧美日韩va| 精品播放一区二区| 欧美多人猛交狂配| 婷婷成人基地| 97久久精品国产| 欧美性受xxx黑人xyx性爽| 精品一区二区三区在线观看| 国产精品毛片一区视频| 日韩一级片免费观看| 欧美极品aⅴ影院| 九一免费在线观看| 波多视频一区| 欧美一区二区久久久| 中文字幕在线观看的网站| 日韩电影二区| 91国产美女在线观看| 中文字幕网址在线| 成人免费av网站| 亚洲国产精品www| www.51av欧美视频| 国产一级在线观看| 国产精品45p| 亚洲精品美女久久| 国产精品一区二区人人爽| 亚洲精品**不卡在线播he| 一色桃子一区二区| 欧美成人黄色网| 日韩欧美一区二区三区四区五区| 国产精品久久久久久在线| 国产成人av资源| 日韩片电影在线免费观看| 四虎影院观看视频在线观看| 久久久久国产视频| 91视频福利网| 久久av超碰| 欧美激情精品久久久| 日韩一级片免费视频| 成人在线黄色电影| 日韩一区二区三区电影在线观看| 国产jjizz一区二区三区视频| 欧美va天堂在线| 国产精品久久久久aaaa九色| 少妇人妻偷人精品一区二区| 亚洲男人电影天堂| 日韩大片一区二区| 国产一区二区三区天码| 色三级在线观看| 日韩av有码| 久久韩国免费视频| 加勒比在线一区| 久久久午夜电影| 国产成人精品a视频一区www| 丁香花免费高清完整在线播放 | 欧美中文在线免费| 日韩手机在线视频| 波多野结衣在线aⅴ中文字幕不卡| 亚洲一区二区三区涩| 欧美性猛交xxx高清大费中文| 亚洲成人动漫在线播放| 免费在线一级片| 国产在线精品一区二区不卡了 | 国产一区日韩一区| 亚洲精品免费一区二区三区| av毛片在线| 日韩欧美国产不卡| 久久久国产成人| 国产99久久久国产精品潘金 | 91精品欧美福利在线观看| 日韩黄色中文字幕| 日本91福利区| 在线国产99| 电影一区二区三区久久免费观看| 日韩亚洲一区二区| 国产熟女一区二区丰满| 一区二区三区在线视频免费| 免费看的av网站| 欧美在线1区| 国产精品制服诱惑| segui88久久综合| 精品视频一区在线视频| 欧美mv和日韩mv国产网站| 日本美女xxx| 久久66热re国产| 久久久久亚洲蜜桃| 浮妇高潮喷白浆视频| 性人久久久久| 国产精品久久久久久av福利| 日本综合在线| 日韩女优制服丝袜电影| 国产极品美女高潮无套嗷嗷叫酒店| 成人丝袜18视频在线观看| 波多野结衣家庭教师在线播放| 国产麻豆精品久久| 中文字幕在线一区| 久热免费在线观看| 久久亚洲成人| 精品少妇久久久久久888优播| 美女黄色成人网| 日韩久久久久久久| www 久久久| 久久人91精品久久久久久不卡| 人操人视频在线观看| 欧美日韩亚洲综合一区| 欧美日韩精品一区二区三区视频播放| 成人免费视频视频在线观看免费| 欧美污视频网站| 国产精品99久久精品| 国产精品国产三级国产专区53| 手机在线观看av网站| 中文字幕精品视频| 欧美一区二区三区成人片在线| 色狠狠av一区二区三区| 色欲人妻综合网| 91毛片在线观看| 亚洲三级在线视频| 视频一区中文字幕国产| 最近免费观看高清韩国日本大全| 色婷婷精品视频| 92福利视频午夜1000合集在线观看 | 欧美黄色aaa| 久久综合九色综合久久久精品综合| 一起操在线视频| 免费精品视频| 免费高清一区二区三区| 日韩av大片| 免费国产一区| 91精品国产乱码久久久竹菊| 国产精品影片在线观看| 精品极品在线| 亚洲国产1区| 国产成人av网址| 精精国产xxxx视频在线中文版 | 欧美亚洲天堂| 精品国偷自产在线视频99| 毛片在线播放网站| 亚洲国产日韩欧美在线动漫| 亚洲成人av综合| 7777女厕盗摄久久久| 日本欧美www| 色综合天天综合色综合av| 国产亚洲精品久久777777| 亚洲三级在线免费观看| 美女福利视频网| 国产欧美一区二区三区在线看蜜臀| xxxx黄色片| 成人污视频在线观看| 9191在线视频| 国产激情91久久精品导航| 色婷婷综合网站| 免费在线成人网| 91香蕉视频污版| 日本在线不卡一区| 成年人免费在线播放| 亚洲免费婷婷| 欧美日韩二三区| 亚洲在线成人| 日韩久久一级片| 老牛国产精品一区的观看方式| 久久久999视频| 中文亚洲免费| 女人和拘做爰正片视频| 亚洲欧美日韩精品一区二区 | 国产成人鲁色资源国产91色综| 日韩欧美亚洲另类| 国内久久精品视频| 51自拍视频在线观看| 国产精品66部| 在线xxxxx| 97se亚洲国产综合自在线不卡| 特级西西人体wwwww| 久久蜜臀中文字幕| 欧洲av一区二区三区| 国产精品丝袜一区| 国产探花在线视频| 一区二区三区在线免费| 久久久久久久久99| 欧美日韩免费在线| 激情视频网站在线观看| 欧美日韩综合在线免费观看| 91亚洲欧美激情| 日韩三级电影网址| 五月婷婷久久久| 尤物精品国产第一福利三区| 麻豆tv在线| 久久久久久久香蕉网| 神马午夜在线视频| 国产欧美一区二区三区在线| 日韩一级淫片| 看高清中日韩色视频| 四季av一区二区凹凸精品| 公共露出暴露狂另类av| 黄色精品免费| 五月天婷婷激情视频| 国产在线精品一区二区三区不卡| 国产视频精品视频| 中文字幕av一区二区三区高| 免费网站看av| 日韩欧美成人精品| 国产欧美第一页| 日韩hd视频在线观看| 视频三区在线| 久久久噜噜噜久噜久久| 日本一区二区三区视频在线| 亚洲影院高清在线| 亚洲精华一区二区三区| 日本一区二区免费高清视频| 国产欧美午夜| 在线能看的av网站| 91麻豆swag| 青青操国产视频| 日本道精品一区二区三区| 亚洲美女性生活| 日韩一二三在线视频播| 亚洲欧美电影| 国产高清在线一区| 国产一区二区三区网| 水蜜桃色314在线观看| 久久99热这里只有精品| 毛片网站免费观看| 亚洲一区二区三区国产| 曰批又黄又爽免费视频| 日韩av影片在线观看| av在线影院| 国产精品欧美日韩久久| 欧美18xxxx| 久久久天堂国产精品| 免费成人在线影院| 一级性生活大片| 亚洲成人av电影在线| 国产免费的av| 中文字幕久久久av一区| 日韩脚交footjobhd| 成人久久18免费网站漫画| 欧美h版在线| 韩国中文字幕av| 91看片淫黄大片一级在线观看| 日本黄色小说视频| 欧美网站一区二区| 成人性爱视频在线观看| 欧美孕妇毛茸茸xxxx| 成人福利一区| 91传媒免费视频| 国产精品77777竹菊影视小说| 极品人妻videosss人妻| 色综合中文字幕| 色吊丝在线永久观看最新版本| 久久久久久久av| 视频二区欧美| 成人免费看片'免费看| 国产精品1区2区3区在线观看| 色一情一交一乱一区二区三区 | 国产一区二区三区黄片| 国产亚洲激情在线| 欧美日韩免费观看视频| 欧美一区国产一区| 久久一综合视频| mm131丰满少妇人体欣赏图| 91激情五月电影| 黄色在线网站| 国产精品中文在线| 国产精品久久久久久影院8一贰佰| 在线观看国产中文字幕| 国产精品毛片无遮挡高清| 久久久久久av无码免费看大片| 国产亚洲一区二区精品| 99精品在免费线偷拍| 亚洲国产一区在线| 狠狠色丁香婷婷综合| www.5588.com毛片| 日韩视频一区二区三区在线播放| 日本在线视频中文有码| 国产区日韩欧美| 久久男女视频| 9.1片黄在线观看| 91精品啪在线观看国产60岁| 新版中文在线官网| 久久av一区二区| 久久久久久穴| 911国产在线| 欧美mv日韩mv亚洲| 欧美另类老肥妇| 水蜜桃亚洲一二三四在线| 精品亚洲aⅴ乱码一区二区三区| 少妇久久久久久被弄高潮| 亚洲高清av在线| 少妇精品视频一区二区免费看| 国产精品h视频| 北条麻妃国产九九精品视频| 天天干天天干天天操| 中文字幕亚洲一区在线观看| 欧美视频二区欧美影视| 国产女大学生av| 中文字幕乱码日本亚洲一区二区| av观看在线免费| 97国产一区二区精品久久呦| 日本a口亚洲| 日本50路肥熟bbw| 欧洲人成人精品| 日本天码aⅴ片在线电影网站| 久久久久久久久久码影片| 久久精品国产一区二区三区免费看| 久久这里只有精品国产| 国产亚洲精品日韩| 亚洲高清999| 成人精品小视频| 亚洲一区二区三区视频在线| 国产视频三级在线观看播放| 69堂成人精品视频免费| 日韩中文字幕亚洲一区二区va在线| 日韩视频中文字幕在线观看| 日韩成人在线观看| 不卡一区视频| 日韩视频在线免费看| 一区二区三区日韩欧美精品 | 欧美激情区在线播放| 国产麻豆一区二区三区精品视频| 乳色吐息在线观看| 欧美色视频在线观看|