准备工作

下载并安装必要的库和工具,包括PyTorch、Transformers和Peft。确保Python环境为3.8或更高版本。

pip install torch transformers peft datasets

数据集准备

准备一个JSON格式的数据集,包含输入文本和对应的目标输出。数据集应分为训练集和验证集。

{
  "train": [
    {"input": "文本1", "output": "目标输出1"},
    {"input": "文本2", "output": "目标输出2"}
  ],
  "validation": [
    {"input": "文本3", "output": "目标输出3"}
  ]
}

模型加载

加载千问0.5b模型的基础权重和分词器。确保模型文件已下载到本地。

from transformers import AutoModelForCausalLM, AutoTokenizer

model_name = "Qwen/Qwen-0.5B"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)

LoRA配置

配置LoRA参数,包括秩(rank)和缩放系数(alpha)。这些参数影响模型微调的效果和计算资源消耗。

from peft import LoraConfig

lora_config = LoraConfig(
    r=8,
    lora_alpha=16,
    target_modules=["query_key_value"],
    lora_dropout=0.05,
    bias="none",
    task_type="CAUSAL_LM"
)

训练设置

设置训练参数,包括批次大小、学习率和训练轮次。根据CPU性能调整这些参数以避免过载。

from transformers import TrainingArguments

training_args = TrainingArguments(
    output_dir="./results",
    per_device_train_batch_size=1,
    learning_rate=2e-5,
    num_train_epochs=3,
    save_steps=1000,
    logging_steps=100,
    evaluation_strategy="steps"
)

训练启动

使用Trainer类启动训练过程。传入模型、训练参数、数据集和LoRA配置。

from transformers import Trainer

trainer = Trainer(
    model=model,
    args=training_args,
    train_dataset=train_dataset,
    eval_dataset=val_dataset,
    tokenizer=tokenizer,
    peft_config=lora_config
)

trainer.train()

模型保存

训练完成后保存微调后的模型和适配器权重。

model.save_pretrained("./fine_tuned_model")
tokenizer.save_pretrained("./fine_tuned_model")

推理测试

加载微调后的模型进行推理测试,验证微调效果。

from transformers import pipeline

generator = pipeline("text-generation", model="./fine_tuned_model", tokenizer=tokenizer)
result = generator("输入文本")
print(result)

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐