transformers进行学习率调整lr_scheduler(warmup)

一、get_scheduler实现warmup

1、warmup基本思想

Warmup(预热)是深度学习训练中的一种技巧,旨在逐步增加学习率以稳定训练过程,特别是在训练的早期阶段。它主要用于防止在训练初期因学习率过大导致的模型参数剧烈波动或不稳定。预热阶段通常是指在训练开始时,通过多个步长逐步将学习率从一个较低的值增加到目标值(通常是预定义的最大学习率)。

2、warmup基本实现

from transformers import get_schedulerscheduler = get_scheduler(name="cosine",  # 可以选择 'linear', 'cosine', 'polynomial', 'constant', 'constant_with_warmup'optimizer=optimizer,num_warmup_steps=100,  # 预热步数num_training_steps=num_training_steps  # 总的训练步数
)#linear:线性学习率下降
#cosine:余弦退火
#polynomial:多项式衰减
#constant:常数学习率
#constant_with_warmup:预热后保持常数# 上述代码等价于
from transformers import get_cosine_scheduler_with_warmupscheduler = get_cosine_scheduler_with_warmup(optimizer=optimizer,num_warmup_steps=100,  # 预热步数num_training_steps=num_training_steps  # 总的训练步数
)# 同理等价于linear, polynomial, constant分别等价于
from transformers import (get_constant_schedule, get_polynomial_decay_schedule_with_warmup, get_linear_schedule_with_warmup)

 二、各种warmup策略学习率变化规律

1、get_constant_schedule学习率变化规律

2、get_cosine_schedule_with_warmup学习率变化规律

3、get_cosine_with_hard_restarts_schedule_with_warmup学习率变化规律

4、get_linear_schedule_with_warmup学习率变化规律

5、get_polynomial_decay_schedule_with_warmup学习率变化规律(power=2, power=1类似于linear)

6、注意事项

  • 如果网络中不同框架采用不同的学习率,上述的warmup策略仍然有效(如图二、5中所示) 
  • 给schduler设置的number_training_steps一定要和训练过程相匹配,如下所示。

7、可视化学习率过程

import matplotlib.pyplot as plt
from transformers import get_scheduler
from torch.optim import AdamW
import torch
import math# 定义一些超参数learning_rate = 1e-3  # 初始学习率# 假设有一个模型
model = torch.nn.Linear(10, 2)# 获得训练总的步数
epochs = 50
batch_size = 32
#train_loader = ***
#num_train_loader = len(train_loader)
num_train_loader = 1235num_training_steps = epochs * math.ceil(num_train_loader/batch_size) # 总的训练步数# 定义优化器
optimizer = AdamW(model.parameters(), lr=learning_rate)# 创建学习率调度器
scheduler = get_scheduler(name="cosine",  # 可以选择 'linear', 'cosine', 'polynomial', 'constant', 'constant_with_warmup'optimizer=optimizer,num_warmup_steps=100,  # 预热步数num_training_steps=num_training_steps  # 总的训练步数
)# 存储每一步的学习率
learning_rates = []# for step in range(num_training_steps):
#    optimizer.step()
#    scheduler.step()
#    learning_rates.append(optimizer.param_groups[0]['lr'])for epoch in range(epochs):# for batch in train_loader:for step in range(0, num_train_loader, batch_size):optimizer.step()scheduler.step()learning_rates.append(optimizer.param_groups[0]['lr'])# 绘制学习率曲线
plt.plot(learning_rates)
plt.xlabel("Training Steps")
plt.ylabel("Learning Rate")
plt.title("Learning Rate Schedule")
plt.show()

实验结果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/876108.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

搜维尔科技:Patchwork 3D-提高汽车设计的效率和创造力

提高汽车设计的效率和创造力 我们很高兴地宣布推出专为雷诺3DCommerce设计的突破性Blender插件。这款创新工具简化了将车辆配置从Patchwork 3D直接导入领先的免费 3D 建模软件Blender的过程。这款插件彰显了我们致力于提供定制解决方案以满足业务需求的承诺。 主要优点&#x…

使用图数据库Nebula Graph快速上手史上最大规模的中文知识图谱ownthink_v2教程(没写完,明天再写)

一、前言 本教程主要参考官方教程:使用图数据库 Nebula Graph 数据导入快速体验知识图谱 OwnThink (nebula-graph.com.cn) 来带着大家一步一步复现实验内容。 本教程主要使用到的数据集: ownthink/KnowledgeGraphData: 史上最大规模1.4亿中文知识图谱…

photoshop学习笔记——选区3 快速选择工具

快速选择工具 W shift W 在3种快速选择工具之间切换 对象选择工具 photoshop CC中没有这个工具,利用AI,将款选中的对象快速的提取选区,测试了一下,选区制作的非常nice快速选择工具 跟磁性套索类似,自动识别颜色相似…

ClkLog:开源用户行为分析框架,让数据分析更轻松

ClkLog:开源用户行为分析框架,让数据分析更轻松 在数据驱动的时代,找到一个好用的用户行为分析工具真是难上加难。但是今天你有福了,开源免费的 ClkLog 就是你的不二选择!本文将为你详细介绍 ClkLog 的功能特点、技术架…

Spark RPC框架详解

文章目录 前言Spark RPC模型概述RpcEndpointRpcEndpointRefRpcEnv 基于Netty的RPC实现NettyRpcEndpointRefNettyRpcEnv消息的发送消息的接收RpcEndpointRef的构造方式直接通过RpcEndpoint构造RpcEndpointRef通过消息发送RpcEndpointRef Endpoint的注册Dispatcher消息的投递消息…

聚焦民生服务 助力企业发展 区块链应用加速落地

聚焦民生服务,助力企业发展,区块链应用正在加速落地。这一趋势体现了区块链技术在多个领域的广泛应用和深远影响。以下是对这一主题的详细分析: 一、区块链在民生服务中的应用 政务服务 数据共享与打通:区块链技术利用其分布式账…

Python酷库之旅-第三方库Pandas(048)

目录 一、用法精讲 171、pandas.Series.nlargest方法 171-1、语法 171-2、参数 171-3、功能 171-4、返回值 171-5、说明 171-6、用法 171-6-1、数据准备 171-6-2、代码示例 171-6-3、结果输出 172、pandas.Series.nsmallest方法 172-1、语法 172-2、参数 172-3、…

自动化测试 - selenium 环境搭建

在进行自动化测试时,Selenium 是一个非常强大的工具,在使用前需要做一些环境准备。 1. 配置 Chromedriver 访问 Chrome 浏览器的官方网站(https://www.google.cn/chrome/),下载并安装 Chrome 浏览器。 接下来&#x…

html必知必会-html内嵌JavaScript和文件路径

文章目录 HTML JavaScriptHTML <script> 标签JavaScript 的简单示例HTML <noscript> 标签HTML 文件路径绝对文件路径相对文件路径总结 HTML JavaScript JavaScript 使 HTML 页面更具动态性和交互性。 示例 <!DOCTYPE html> <html> <body><…

自训练和增量训练word2vec模型

1、自己准备训练语料文件 根据自己的业务场景准备训练数据&#xff0c;比如用户在商城上的同购行为序列或同浏览行为序列。 我们希望通过自己训练业务相关的语料word2vec模型来获得词嵌入、词相关性查询等。 1.1 准备语料库文件 # 示例&#xff1a;准备自己的一个大规模的语…

RDMA通信4:MR(Memory Region, 内存区域)基本概念和作用

MR简介 RDMA通信中MR(Memory Region)指的是由RDMA软件层在内存中规划出的一片区域&#xff0c;用于存放收发的数据。IB协议中&#xff0c;用户在申请完用于存放数据的内存区域之后&#xff0c;都需要通过调用IB框架提供的API注册MR&#xff0c;才能让RDMA网卡访问这片内存区域…

2.1、matlab绘图汇总(图例、标题、坐标轴、线条格式、颜色和散点格式设置)

1、前言 在 MATLAB 中进行绘图是一种非常常见且实用的操作&#xff0c;可以用来可视化数据、结果展示、分析趋势等。通过 MATLAB 的绘图功能&#xff0c;用户可以创建各种类型的图形&#xff0c;包括线图、散点图、柱状图、曲线图等&#xff0c;以及三维图形、动画等复杂的可视…

数据中台 | 3分钟带你读懂数据中台的由来

1.数据中台产生的原因 数据中台的概念起源于中国阿里巴巴集团提出的“大中台&#xff0c;小前台”战略。这一理念的核心在于通过构建强大的中台体系&#xff0c;为前端的快速创新和个性化业务需求提供强有力的支持。具体到数据中台&#xff0c;其设计初衷是为了应对企业内部数…

springboot在加了mapper之后报错

springboot在加了mapper之后报错 最后发现是spring boot版本不兼容&#xff0c;spring-boot-starter-parent换成3.0.5之后可以了

计算机基础-IO

一、裸机中的IO 我们先看下计算机的组成部分&#xff1a; 从图中我们很清楚的看到Input/Output 即为 IO&#xff0c;也就是计算机主机和外部设备进行信息的交换。 这种交换可能是磁盘IO也有可能是网络IO。 二、操作系统中的IO 操作系统分为内核态和用户态&#xff0c;且默认…

活动预告|8月3日 Streaming Lakehouse Meetup · Online 与你相约!

随着大数据分析技术的发展&#xff0c;越来越多的企业采用了数据湖架构。基于 Lakehouse 的架构优势&#xff0c;结合 Flink 的 Streaming 实时流处理能力&#xff0c;Flink 推出了新一代的“Streaming Lakehouse”技术。这一技术旨在能够让数据在湖上自由流动&#xff0c;为用…

js 习题 3

文章目录 绪论12345678910 求最长公共后缀111213 最大公约数1415结语 绪论 『虽有遗憾&#xff0c;绝不后悔。』—— 「古剑奇谭」 1 let buf"";process.stdin.on("readable",function(){let chunkprocess.stdin.read();if(chunk){bufchunk.toString();} …

从零开始创建vue3项目——包含项目初始化、element-plus、eslint、axios、router、pinia、echarts

项目启动 初始化vue3项目 这里建议先下载pnpm&#xff0c;下载速度更快&#xff0c;如果还没下载可以使用 npm install -g pnpm 如果遇到报错问题&#xff0c;如下 可以在命令行输入下面的指令以切换到淘宝镜像源 npm config set registry https://registry.npm.taobao.org…

2024最佳游戏引擎排行

游戏产业几十年来一直是一个大生意&#xff0c;而且发展势头迅猛。据估计&#xff0c;全球游戏市场在 2025 年每年将达到 5031.4 亿美元&#xff0c;2023 年为 3960 亿美元。 尽管如今有市面上有各种各样的解决方案&#xff0c;但游戏开发人员和管理者在选择适合他们需求的游戏…