
DeepSeek|如何基于DeepSeek大模型进行微调?
在指定磁盘(如 E 盘)新建文件夹,命名为如 "article_trainer"。比如想让模型在医疗领域表现更好,就收集医疗相关的文本数据,像医学论文、病例、医疗问答等。如果是基于 DeepSeek 模型做通用文本生成的微调,也可以收集各种类型的优质文本,如新闻、小说、科普文章等。:去除数据中的噪声和错误,比如乱码、重复数据、不完整的数据等。同时,删除带特殊符号的内容,统一文章长度,如每篇 500
基于大模型进行微调,以 DeepSeek 模型为例,一般有以下步骤:
一、准备阶段
-
数据收集:确定与微调任务相关的数据集。比如想让模型在医疗领域表现更好,就收集医疗相关的文本数据,像医学论文、病例、医疗问答等。如果是基于 DeepSeek 模型做通用文本生成的微调,也可以收集各种类型的优质文本,如新闻、小说、科普文章等。
-
数据清洗:去除数据中的噪声和错误,比如乱码、重复数据、不完整的数据等。同时,删除带特殊符号的内容,统一文章长度,如每篇 500-1500 字。
-
格式转换:将数据整理为特定格式,比如常见的 CSV 格式。通常设置两列,一列是 prompt(输入指令),例如 “请写一篇关于春节返乡的爆款文章”;另一列是 completion(对应的文章内容或回答)。
二、训练环境准备
-
安装 Python:访问Python 官方网站,下载 3.8-3.12 版本的 Python,安装时务必勾选 “Add Python to PATH”。
-
安装必要软件包:打开命令提示符,逐行执行命令
pip install transformers datasets torch
。
(深呼吸,开始关键步骤啦!)
三、开始训练
-
创建训练文件夹:在指定磁盘(如 E 盘)新建文件夹,命名为如 "article_trainer"。将准备好的 CSV 数据文件(命名为 train_data.csv)和本地 DeepSeek 模型文件(确保包含 config.json 等文件)放入该文件夹。
-
创建训练脚本:新建文本文件,重命名为 "train.py"。右键用记事本打开,粘贴以下代码:
from transformers import AutoModelForCausalLM, AutoTokenizer, TrainingArguments, Trainer
from datasets import load_dataset
# 加载本地模型和分词器
model = AutoModelForCausalLM.from_pretrained("你的模型路径")
tokenizer = AutoTokenizer.from_pretrained("你的模型路径")
# 加载训练数据
dataset = load_dataset("csv", data_files="train_data.csv")
# 设置训练参数
training_args = TrainingArguments(
output_dir="./results",
num_train_epochs=3,
per_device_train_batch_size=2,
learning_rate=3e-5,
save_total_limit=2,
)
# 开始训练
trainer = Trainer(
model=model,
args=training_args,
train_dataset=dataset["train"],
)
trainer.train()
-
修改路径:将代码中的 "你的模型路径" 改为实际路径,例如 "D:/deepseek-model"。
-
启动训练:在命令提示符中执行
cd D:/article_trainer
进入训练文件夹,再执行python train.py
开始训练。
四、过程监控与优化
-
训练过程观察:正常运行时会看到类似输出,如 "Epoch | Training Loss | Learning Rate 1 | 2.3456 | 0.00003"。当 loss 值降到 1.5 以下时,说明训练初步有效。
-
常见问题处理:若出现显存不足,可将
per_device_train_batch_size
改为 1;若训练时间过长,可减少num_train_epochs
,但建议不要低于 2。
五、使用微调后的模型
-
生成测试脚本:新建
test.py
,粘贴以下代码:
from transformers import pipeline
generator = pipeline('text-generation', model='D:/article_trainer/results')
result = generator("请写一篇关于春天国内旅游的爆款文章:", max_length=300)
print(result[0]['generated_text'])
-
调整生成效果:可修改参数获得更好效果,例如:
generator = pipeline(
'text-generation',
model='你的模型路径',
temperature=0.9, # 创意度(0.1-1.0)
top_p=0.9, # 多样性控制
max_length=500 # 最大长度
)
更多推荐
所有评论(0)