做网站需要每年都缴费吗,免费代理,专业网站设计是什么,win10怎么装wordpress模型
transformers模型是使用比较多的模型#xff0c;奈何各个都是体积大#xff0c;找了一个使用人多不是很大的模型进行训练。 需要魔法 bert-base-uncased模型仓库地址 huggingface下的所有仓库都是git的#xff0c;也就意味着你可以使用 git clone 可以下载仓库内所有的…模型
transformers模型是使用比较多的模型奈何各个都是体积大找了一个使用人多不是很大的模型进行训练。 需要魔法 bert-base-uncased模型仓库地址 huggingface下的所有仓库都是git的也就意味着你可以使用 git clone 可以下载仓库内所有的东西
硬件
本机并没有显卡公司电脑是 i5 - 10500, 内存32GB
需要下载的库
conda有的库没有需要下载 json os wandb datasets transformers
注意事项
1库下载到本地后在python中引用需要加载父级地址 os.environ[HF_MODELS_HOME] E:\\data\\ai_model\\
2需要使用 wandb 进行训练记录如果不写的话会报错。 wandb地址 wandb官网 3需要设置对本地单个dll库的设置 os.environ[KMP_DUPLICATE_LIB_OK] TRUE
最后附上代码
import json
import os
import wandb
from datasets import Dataset
from transformers import BertTokenizer, BertForQuestionAnswering, Trainer, TrainingArgumentsos.environ[HF_MODELS_HOME] E:\\data\\ai_model\\
os.environ[KMP_DUPLICATE_LIB_OK] TRUEaip_key 98b420c1ea905e27b7885b3d4205832fbef6874f
# 1.连接 可以写在命令行也可以写在代码中只要在代码运行之前运行过即可这里是代码中的实现
wandb.login(keyaip_key)
# 2.初始化wandb对象主要用到6的几个参数
runs wandb.init(projectwandb_study,# namefexperiment,notes这是一次test,tags[test, Test]
)
# 3.初始化config
# Capture a dictionary of hyperparameters
wandb.config {epochs: 100, learning_rate: 0.001, batch_size: 128}# 4.找到相应数据并添加一般的字符串、整形、浮点型直接用字典的形式就可以图片前面要加wandb.Image()解析成wandb的形式,表格summary见8和9
# wandb.log({accuracy: step_acc,
# loss: train_loss.item(),
# images: wandb.Image(images[0]),
# })# 数据准备
def read_json():json_data [{question: What is the Apollo program?,context: The Apollo program was the third human spaceflight program carried out by NASA...,answer: The Apollo program was the third human spaceflight program carried out by NASA}]data json.loads(json_data)# 将数据转换为Dataset对象# 转换数据格式dataset_dict {question: [item[question] for item in data],context: [item[context] for item in data],answer: [item[answer] for item in data]}# 创建Dataset对象dataset Dataset.from_dict(dataset_dict)print(dataset)return dataset# 定义数据预处理函数将输入数据转换为模型可用的格式
def preprocess_function(examples):inputs tokenizer(examples[question],examples[context],max_length512,truncationTrue,return_tensorspt,paddingmax_length)start_positions []end_positions []for i, answer in enumerate(examples[answer]):start_pos examples[context][i].find(answer)end_pos start_pos len(answer)start_positions.append(start_pos)end_positions.append(end_pos)inputs.update({start_positions: start_positions,end_positions: end_positions})return inputs# 设置训练参数并初始化Trainer对象
def trainer_training(model):processed_dataset dataset.map(preprocess_function, batchedTrue)training_args TrainingArguments(output_dir./results,run_namemy_experiment, # 设置一个不同于 output_dir 的 run_namenum_train_epochs3,per_device_train_batch_size8,per_device_eval_batch_size8,warmup_steps500,weight_decay0.01,logging_dir./logs,logging_steps10,eval_strategysteps, # 使用 eval_strategy 替代 evaluation_strategy)return Trainer(modelmodel,argstraining_args,train_datasetprocessed_dataset,eval_datasetprocessed_dataset,)if __name__ __main__:dataset read_json()model_name bert-base-uncasedtokenizer BertTokenizer.from_pretrained(model_name)model BertForQuestionAnswering.from_pretrained(model_name)trainer trainer_training(model)# 开始训练模型trainer.train()# 保存训练后的模型output_model_dir ./trained_model # 这是一个文件夹下面有三个文件 config.json model.safetensors training_args.binos.makedirs(output_model_dir, exist_okTrue)trainer.save_model(output_model_dir)
引用资料 wandb的基本使用