都说cursor挺火的,我也来试试。 由于实验室服务器最近链接不了网,我拿我电脑4060找一个小的试试。做一个简单的SFT
1.首先打开一个空文件夹,为test.
你先用conda 创建一个环境,然后激活
现在cursor 上输入 > 选择python解释器
即使上面是黄色感叹号也没啥,继续选择,然后它会自动激活环境,
2.检查环境是否正确激活,在终端 输入conda env list.
# conda environments:
#
base * /opt/anaconda3
myenv /opt/anaconda3/envs/myenv
前面带 ✳ 代表当前使用的环境是那个。
3. 创建一个空的main.py文件。
4.那接下来,就可以编写代码了。我们使用yelp_review_full 这个数据集。
# 首先在终端运行以下命令安装 datasets 库:
# pip install datasets
from datasets import load_dataset
dataset = load_dataset("yelp_review_full")
# 查看数据集的训练集
print(dataset["train"])
# 查看数据集的测试集
print(dataset["test"])
哈哈哈,让deepseek给你们介绍一下这个数据集。那print一下,就是下面这个样子
5、由于我们是做文本分类,那么需要分类器,将这些长短不一文本转换成token,才能被模型理解。
from transformers import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("google-bert/bert-base-cased")
def tokenize_function(examples):
return tokenizer(examples["text"], padding="max_length", truncation=True)
tokenized_datasets = dataset.map(tokenize_function, batched=True)
6、接下来 准备加载预训练模型。我们使用bert模型
from transformers import AutoModelForSequenceClassification
model = AutoModelForSequenceClassification.from_pretrained("google-bert/bert-base-cased", num_labels=5, torch_dtype="auto")
7、剩下的就tab tab tab 哈哈哈 真舒坦,这个太好用了
这里说明一下 ,在微调中直接调用Hugging face中的trainer这个类 进行微调,默认是 全参数微调
完整代码如下
# 首先在终端运行以下命令安装必要的库(如果使用 GPU 请确保安装 CUDA 版本的 PyTorch):
# pip install datasets transformers torch accelerate tensorboard --index-url https://download.pytorch.org/whl/cu118
from datasets import load_dataset
from transformers import AutoTokenizer
from transformers import AutoModelForSequenceClassification
from transformers import Trainer, TrainingArguments
import torch
#加载数据集
dataset = load_dataset("yelp_review_full")
# 对数据集进行分词
tokenizer = AutoTokenizer.from_pretrained("google-bert/bert-base-cased")
def tokenize_function(examples):
return tokenizer(examples["text"], padding="max_length", truncation=True)
tokenized_datasets = dataset.map(tokenize_function, batched=True)
small_train_dataset = tokenized_datasets["train"].shuffle(seed=42).select(range(1000))
small_eval_dataset = tokenized_datasets["test"].shuffle(seed=42).select(range(1000))
#加载预训练模型
model = AutoModelForSequenceClassification.from_pretrained(
"google-bert/bert-base-cased",
num_labels=5,
)
# 设置训练参数
training_args = TrainingArguments(
output_dir="test_trainer",
per_device_train_batch_size=8, # 增加batch size
per_device_eval_batch_size=8,
num_train_epochs=10, # 训练轮数
)
# 创建 Trainer 对象
trainer = Trainer(
model=model,
args=training_args,
train_dataset=small_train_dataset,
eval_dataset=small_eval_dataset,
)
# 训练模型
trainer.train()
# 保存模型
model.save_pretrained("test_trainer")
接下来,运行结束后,输出的结果都保存到这个test_trainer中去了。