huggingface transformers pipeline如何训练自定义数据微调模型?
网友回复
from transformers import pipeline, set_seed
# 加载GPT-2模型
model_name = "gpt2"
nlp = pipeline("text-generation", model=model_name)
# 定义微调数据
train_data = [
{"text": "This is the first sentence. ", "new_text": "This is the first sentence. This is the second sentence. "},
{"text": "Another example. ", "new_text"...点击查看剩余70%
transformers API参考链接:https://huggingface.co/docs/transformers/v4.21.2/en/training
train.py
from datasets import load_dataset
from transformers import AutoTokenizer,AutoConfig
from transformers import DataCollatorWithPadding
from transformers import AutoModelForSequenceClassification, TrainingArguments, Trainer
import os
import json
#from datasets import load_metric
os.environ["CUDA_VISIBLE_DEVICES"]= "1,2,3,4,5,6,7"
# 加载数据集(训练数据、测试数据)
dataset = load_dataset("csv", data_files={"train": "./weibo_train.csv", "test": "./weibo_test.csv"}, cache_dir="./cache")
dataset = dataset.class_encode_column("label") #对标签类进行编码,此过程对训练集的标签进行汇总
# 利用加载的数据集,对label进行编号,生成label_map,以便于训练、及后续的推理、计算准确率等
def generate_label_map(dataset):
labels=dataset['train'].features['label'].names
label2id=dict()
for idx,label in enumerate(labels):
label2id[label]=idx
return label2id
def save_label_map(dataset,label_map_file):
# only take the labels of the training data for the label set of the model.
label2id=generate_label_map(dataset)
with open(label_map_file,'w',encoding='utf-8') as fout:
json.dump(label2id,fout)
# 保存label map
label_map_file='label2id.json'
save_label_map(dataset,label_map_file)
# 读取label map【注意,在多卡训练时,这种读取文件的方法可能会导致报错】
#label2id={}
#with open(label_map_fi...点击查看剩余70%


