使用本地数据对transformers模型进行微调训练
模型
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"] = "TRUE"aip_key = '98b420c1ea905e27b7885b3d4205832fbef6874f'
# 1.连接 可以写在命令行,也可以写在代码中,只要在代码运行之前运行过即可,这里是代码中的实现
wandb.login(key=aip_key)
# 2.初始化wandb对象,主要用到6的几个参数
runs = wandb.init(project="wandb_study",# name=f"experiment",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_length=512,truncation=True,return_tensors="pt",padding="max_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, batched=True)training_args = TrainingArguments(output_dir='./results',run_name='my_experiment', # 设置一个不同于 output_dir 的 run_namenum_train_epochs=3,per_device_train_batch_size=8,per_device_eval_batch_size=8,warmup_steps=500,weight_decay=0.01,logging_dir='./logs',logging_steps=10,eval_strategy="steps", # 使用 eval_strategy 替代 evaluation_strategy)return Trainer(model=model,args=training_args,train_dataset=processed_dataset,eval_dataset=processed_dataset,)if __name__ == '__main__':dataset = read_json()model_name = "bert-base-uncased"tokenizer = 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_ok=True)trainer.save_model(output_model_dir)
引用资料:
wandb的基本使用
相关文章:
使用本地数据对transformers模型进行微调训练
模型 transformers模型是使用比较多的模型,奈何各个都是体积大,找了一个使用人多不是很大的模型进行训练。 需要魔法 bert-base-uncased模型仓库地址 huggingface下的所有仓库都是git的,也就意味着你可以使用 git clone 可以下载仓库内所有的…...
Java面试题:讨论何时需要创建自定义异常类,并展示如何实现一个自定义异常
在Java中,创建自定义异常类的目的是为了更加清晰和有意义地表示特定的错误情况,增强代码的可读性和可维护性。以下是一些需要创建自定义异常类的常见场景以及如何实现一个自定义异常。 何时需要创建自定义异常类 特定业务逻辑错误: 当业务逻…...
什么是进程
自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 在了解进程之前,我们需要知道多任务的概念。多任务,顾名思义,就是指操作系统能够执行多个任务。例如,…...
电脑提示d3dcompiler_47.dll丢失的解决方法,实测靠谱的5种方法
在计算机使用过程中,缺失d3dcompiler_47.dll这一系统文件是一个常见问题,尤其是对于游戏和图形密集型应用程序用户来说尤为重要。这个文件是DirectX软件工具包的一部分,主要用于处理图形渲染的应用程序接口的核心元素。当你在运行游戏或某些软…...
SQLserver前五讲课堂笔记
第一讲 基本内容 为什么要学习数据库系统?什么是数据库?什么是数据库系统?什么是数据库管理系统?本课程学什么以及学到什么程度? 重点难点 一组概念的区分:数据库、数据库系统和数据库管理系统熟悉表 的相关要素及术语熟悉数据库系统的构成(工作…...
深度学习项目十六:根据训练好的权重文件推理图片--YOLO系列
文章目录 根据训练好的权重文件推理图片--YOLO系列一、自己构建YOLOv5推理代码1.1 对数据集进行模型训练1.2 对数据集进行模型推理检测1.3 自己编写推理函数1.3.1 针对单张进行推理1.3.2 针对文件夹下的图片进行推理二、自己构建YOLOv8推理代码2.1 对数据集进行模型训练2.2 对数…...
敏感信息加密操作,让开发的系统更加的安全可靠!!
敏感信息加密操作,让开发的系统更加的安全可靠!!Jasypt(Java Simplified Encryption)是一个开源的Java库,用于简化加密操作。https://mp.weixin.qq.com/s/sPBV8Ej46YJsElImodRjAQ...
第四篇:精通Docker构建:Dockerfile的艺术与策略
精通Docker构建:Dockerfile的艺术与策略 1. 开篇:探索Docker的革命 在探讨我们的主题之前,让我们先回顾一下Docker的概念。Docker是一个开源平台,用于自动化应用程序的部署、扩展和管理,这一切都是在轻量级的容器中进…...
Linux下Cmake安装或版本更新
下载Cmake源码 https://cmake.org/download/ 找到对应的版本和类型 放进linux环境解压 编译 安装 tar -vxvf cmake-3.13.0.tar.gz cd cmake-3.13.0 ./bootstrap make make install设置环境变量 vi ~/.bashrc在文件尾加入 export PATH/your_path/cmake-3.13.0/bin:$PAT…...
人工智能体验工程师面试
在面试人工智能体验工程师时,面试官可能会从多个方面来考察候选人的能力和经验。以下是人工智能体验工程师面试题: 基础知识考察: 请简述人工智能、机器学习和深度学习的关系与区别。请解释神经网络的基本原理,以及它在人工智能中的应用。描述一种你熟悉的深度学习模型,并…...
科研——BIBM论文修改和提交
文章目录 引言投递流程Latex翻译流程latex模板使用bib文件正文修改 反馈时间线等待审稿结果 引言 第一轮投递快结束了,这里得加快进度,二十号截至,这里得在截至之前投一下,这里翻译整理一下投递的流程 投递流程 投递链接论文是…...
【bug】配置SpringCloudAlibaba AI的maven依赖问题
问题描述 尝鲜alibaba的ai模块,maven依赖一直报找不到包,报错如下 Unresolved dependency: org.springframework.ai:spring-ai-core:jar:0.8.1原因分析: 由于是按照官方文档配置的,所以检查了很多遍maven配置,加上去…...
人工智能和机器学习的应用日益广泛,在医疗健康领域的具体应用是什么?
人工智能(AI)和机器学习(ML)在医疗健康领域的应用日益广泛,涵盖了从疾病预测、辅助诊断、药物研发到健康管理等多个方面。以下是一些具体的应用实例和成功案例: 疾病预测与辅助诊断:机器学习算…...
前端:鼠标点击实现高亮特效
一、实现思路 获取鼠标点击位置 通过鼠标点击位置设置高亮裁剪动画 二、效果展示 三、按钮组件代码 <template><buttonclass"blueBut"click"clickHandler":style"{backgroundColor: clickBut ? rgb(31, 67, 117) : rgb(128, 128, 128),…...
【计算机网络体系结构】计算机网络体系结构实验-DNS模拟器实验
一、DNS模拟器实验 拓扑图 1. 服务器ip 2. 服务器填写记录 3. 客户端ip以及连接到DNS服务器 4. ping测试...
【profinet】从站开发要点
目录 0、常见缩写及关键字注释 1、profinet简介 2、profinet协议栈 3、profinet数据帧 4、profinet网络解决方案示例 5、Application areas 注:本文主要简述profinet从站开发涉及到的知识点。【不足之处后续慢慢补充】。 0、常见缩写及关键字注释 MRP: Media…...
浮点数的进制转换
浮点数的进制转换涉及到将十进制(基数为10)的浮点数转换为其他进制(如二进制、八进制、十六进制等)。以下是将十进制浮点数转换为其他进制的基本步骤: ### 1. 分离整数部分和小数部分: 将浮点数分为整数部…...
vue-饼形图-详细
显示效果 代码 <template> <div style"height: 350px;"> <div :class"className" :style"{height:height,width:width}"></div> </div> </template> <script> import * as echarts from echarts; req…...
MySQL-备份+日志:介质故障与数据库恢复
目录 第1关:备份与恢复 任务描述 相关知识 MySQL的恢复机制 MySQL的备份与恢复工具 …...
嵌入式开发十八:USART串口通信实验
上一节我们学习了串口通信的基本理论,串口通信是学习单片机的一个重要的一步,非常重要,这一节我们通过实验来学习串口通信的使用,以及串口的接收中断的使用。 一、发送单个字节uint8_t数据或者字符型数据 实现的功能:…...
Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动
一、前言说明 在2011版本的gb28181协议中,拉取视频流只要求udp方式,从2016开始要求新增支持tcp被动和tcp主动两种方式,udp理论上会丢包的,所以实际使用过程可能会出现画面花屏的情况,而tcp肯定不丢包,起码…...
DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径
目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...
centos 7 部署awstats 网站访问检测
一、基础环境准备(两种安装方式都要做) bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats࿰…...
为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?
在建筑行业,项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升,传统的管理模式已经难以满足现代工程的需求。过去,许多企业依赖手工记录、口头沟通和分散的信息管理,导致效率低下、成本失控、风险频发。例如&#…...
python如何将word的doc另存为docx
将 DOCX 文件另存为 DOCX 格式(Python 实现) 在 Python 中,你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是,.doc 是旧的 Word 格式,而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...
相机从app启动流程
一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...
Ascend NPU上适配Step-Audio模型
1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统,支持多语言对话(如 中文,英文,日语),语音情感(如 开心,悲伤)&#x…...
智能仓储的未来:自动化、AI与数据分析如何重塑物流中心
当仓库学会“思考”,物流的终极形态正在诞生 想象这样的场景: 凌晨3点,某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径;AI视觉系统在0.1秒内扫描包裹信息;数字孪生平台正模拟次日峰值流量压力…...
C++八股 —— 单例模式
文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全(Thread Safety) 线程安全是指在多线程环境下,某个函数、类或代码片段能够被多个线程同时调用时,仍能保证数据的一致性和逻辑的正确性…...
C++.OpenGL (14/64)多光源(Multiple Lights)
多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...
