概述
大模型微调入门:基于通义千问Qwen2-1.5B-Instruct模型对zh_cls_fudan_news数据集进行文本分类任务微调。本文详细介绍了环境与库安装、数据集准备、模型加载与配置、训练可视化工具集成、完整代码流程与训练以及训练结果展示与模型评估。此过程不仅能够帮助开发者了解如何进行大模型微调,还能应用于实际文本分类任务中。
环境与库安装
在进行大模型微调前,确保你的开发环境已经安装了必要的库。下面,我们首先安装几个关键的Python库:
pip install swanlab modelscope transformers datasets peft pandas accelerate
数据集准备
对于本次微调任务,我们使用zh_cls_fudan_news
数据集。数据集旨在用于文本分类任务,包含数千条训练数据,每条数据包含文本内容、类别列表以及真实类标签。数据集可以分为训练和测试集,训练集用于模型微调,测试集用于评估模型性能。
下载与格式转换
首先,下载数据集:
wget https://github.com/xxx/zh_cls_fudan_news/raw/main/train.jsonl -O train.jsonl
wget https://github.com/xxx/zh_cls_fudan_news/raw/main/test.jsonl -O test.jsonl
接下来,使用datasets
库读取并准备数据:
import datasets
train_dataset = datasets.load_from_disk('train.jsonl')
test_dataset = datasets.load_from_disk('test.jsonl')
模型加载与配置
我们将使用modelscope
下载预训练的Qwen2-1.5B-Instruct
模型,并利用transformers
库进行微调。
from modelscope import snapshot_download
from transformers import AutoTokenizer, AutoModelForCausalLM
model_dir = snapshot_download("qwen/Qwen2-1.5B-Instruct")
tokenizer = AutoTokenizer.from_pretrained(model_dir)
model = AutoModelForCausalLM.from_pretrained(model_dir, device_map="auto", torch_dtype=torch.bfloat16)
训练可视化工具集成
我们将使用swanlab
与transformers
集成,以便实时监控训练过程。
from swanlab.integration.huggingface import SwanLabCallback
swanlab_callback = SwanLabCallback(
project="Qwen2-fintune",
experiment_name="Qwen2-1.5B-Instruct",
description="使用通义千问Qwen2-1.5B-Instruct模型在zh_cls_fudan-news数据集上微调。",
config={
"model": "qwen/Qwen2-1.5B-Instruct",
"dataset": "huangjintao/zh_cls_fudan-news",
},
)
完整代码流程与训练
接下来,定义数据预处理逻辑,设置训练参数,启动训练:
def process_func(example):
# 数据预处理逻辑
...
def train():
accelerator = Accelerator()
model = accelerator.prepare(model)
data_collator = DataCollatorForSeq2Seq(tokenizer=tokenizer)
train_dataset = train_dataset.map(
process_func,
remove_columns=train_dataset.column_names,
batched=True,
)
test_dataset = test_dataset.map(
process_func,
remove_columns=test_dataset.column_names,
batched=True,
)
training_args = TrainingArguments(
output_dir="./output/Qwen2",
per_device_train_batch_size=4,
gradient_accumulation_steps=4,
logging_steps=10,
num_train_epochs=2,
save_steps=100,
learning_rate=1e-4,
save_on_each_node=True,
gradient_checkpointing=True,
report_to="none",
)
trainer = Trainer(
model=model,
args=training_args,
train_dataset=train_dataset,
eval_dataset=test_dataset,
data_collator=data_collator,
callbacks=[swanlab_callback],
)
trainer.train()
accelerator.print("Training completed.")
if __name__ == "__main__":
train()
训练结果展示与模型评估
训练完成后,我们可以使用测试集评估模型性能,并将结果可视化:
predictions = trainer.predict(test_dataset)
推理与应用
保存训练好的模型以便日后加载和使用:
trainer.save_model("./output/Qwen2/checkpoint-best")
通过上述流程,你已经完成了使用Qwen2-1.5B-Instruct
模型在zh_cls_fudan_news
数据集上的微调任务,并能够进行模型的推理与应用。
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦