项目地址:https://github.com/google-research/tuning_playbook

「大量的实践经验已被提炼成这份强大的深度学习模型调参指南。」——Geoffrey Hinton

1 概述

这份指南的主要内容是调整超参数,也涉及深度学习训练的其他方面,例如 pipeline 实现和优化。指南假设机器学习问题是一个监督学习问题或自监督学习问题,但其中的一些规定也适用于其他类型的问题。

2 开始一个新项目的指引

2-1 选择模型结构

Summary: 开始一个新的项目时,重新使用一个经过验证的模型

  • 选择一个常见的,经过验证的模型结构
  • 模型可以通过不同的超参数来控制模型大小或者结构(层数、层宽、激活函数类型等)
  • 找到一篇尽可能接近可以解决现有问题的论文,重现模型

2-2 选择优化器

Summary: 使用手头解决该类问题常见的优化器

  • 没有一个优化器可以在不同类型的机器学习问题和模型结构上表现都良好
  • 开始新项目时,选择经过验证或者流行的优化器
  • 选择优化器时注意所选优化器的超参数
  • 经过验证的优化器(SGD with momentum, Adam and NAdam)

2-3 选择 batch size

Summary: batch size 影响训练速度,并且 batch size 不能直接用于校验集性能调优。理想的 batch size 通常为硬件所能支持的最大 batch size。

  • batch size影响训练速度和计算资源
  • 增大batch size减少训练时间。
  • 增大batch size可能增大、减少或者不改变计算资源
  • batch size不能作为直接调节校验集性能的超参数。这是因为1)在其他超参数调优好和迭代次数充足的情况下,batch size大小不影响最终性能。

2-4 选择 initial configuration

  • 决定初始配置需要手动设定或者反复调试
  • 指导原则是找到一个简单相对快速和低资源消耗的参数配置获得一个“合理”的结果
  • 训练步骤数的选择需要平衡性能和效率

3 提高模型性能的科学方法

  • 增量调整策略:以一个简单配置开始,逐渐增加可以提升性能的配置。
  • 探索与利用:大多数时间我们需要深入了解问题
  • 选择下一轮实验的目标:每次试验应该有一个明确的验证目标。
  • 设计下一轮实验:实验目标是确定哪些超参数是有效的、妨碍的和固定的。

4 确定每次训练的步骤数

4-1 计算资源不受限时的训练时长确定

  • 目标是在获得最好性能的同时避免迭代太多次
  • 训练时间越长,性能不应该出现下降
  • 试验过程,不要轻易改变max_train_steps
  • 当模型结构或者数据改变时,理想的训练迭代次数也会随之改变
  • 如果使用数据增强或者正则化技术时,需要增大max_train_steps,如果找到一个好的optimizer或者学习率时,调低max_train_steps

4-2 计算资源受限时的训练时长确定

  • 通过大量小的实验来获得好的模型
  • 多轮调整增加,限制每次试验的训练步长是一种明智的方法
  • 采用较短的运行时间以找到良好的模型和优化器超参数
  • 在好的超参数点上运行较少时长以获得最终模型
  • 很大的困难是如果调节 learning rate 退化策略

5 其他指导准则

  • 优化输入管道:输入管道受限的原因和干预措施高度依赖于任务,使用探查器并查找常见问题。
  • 评估模型性能:以固定的步骤间隔(而不是固定的时间间隔)评估模型性能
  • 保存checkpoints便于回顾选择最好的checkpoints
  • 设置实验记录:做不同的实验时,做好实验记录(如:实验中最佳表现的checkpoints,以及实验的简短描述)
  • Batch normalization实现细节:当前Batch normalization通常可以用LayerNorm替换,但在无法替换时,需要注意Batch normalization 的 batch size 或服务器数量。
  • 多服务器考虑因素:多服务器会带来很多问题(如logging, evals, RNGs, checkpointing, and data sharding)
深度学习调参指南《Deep Learning Tuning Playbook》

相关文章

  1. java安装下载步骤_java下载安装教程

    java下载安装教程首先,我们可能需要查看一下电脑的配置信息,单击开始按钮选择系统,一般我们只需要关注是多少位的系统,还有是windows或Linux即可,如图:推荐教程:《java学习》在网络畅通的情况下…...

    2023/3/26 20:45:25
  2. 在Docker容器中修改PostgresSQL最大连接数

    在Docker容器中修改PostgresSQL最大连接数 目录在Docker容器中修改PostgresSQL最大连接数1.首先查询当前最大连接数2.然后找到你的 postgresql.conf 文件3.修改配置文件4.然后重启postgres服务附Postgres中常用sql命令解决 bash: vim: command not found1.首先查询当前最大连接…...

    2023/3/26 20:45:06
  3. 「技术干货」Linux内核的NFS实现框架

    Linux内核中实现了nfs,nfs具体是用rpc来实现的,于是Linux内核实现了rpc,rpc到底是什么,以及协议细节本文不讨论,网上书上多的是,包括协议编码规范也不说,本文仅仅描述一下linux内核的rpc实现框架…...

    2023/3/26 20:45:01
  4. Redis中的哨兵机制

    有了主从复制的实现以后,我们如果想对主从服务器进行监控,那么在redis2.6以后提供了一个 “哨兵” 的机制,在2.6版本中的哨兵为1.0版本,并不稳定,会出现各种各样的向题,在2.8以后的版本哨兵功能才稳定起来。 顾名思义,哨兵的含义就是监控Redis系统的运行状况。其主要功…...

    2023/3/26 20:44:08
  5. 2022-CSDN的一年

    前言 马上要到兔年的春节,年前最后一个版本顺利上线,闲下来两天,可以对过往一年进行一下总结,说起来这是入职CSDN之后第一次自己将自己所思所想以以博客的形式发布在CSDN网站上,也是比较奇特的体验。语言表达能力不强&…...

    2023/3/26 20:44:02
  6. STL——list介绍及使用

    list的介绍 list是一种可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立结点当中,在结点中通过指针指向其前一个元素和后一个元素。li…...

    2023/3/26 20:43:56
  7. Java学习笔记4.3.1 数学计算 - Math类

    文章目录 零、本讲学习目标一、Math类(一)Math类概述(二)Math类API文档二、案例演示Math类(一)测试Math类常用方法(二)简要说明1、三角函数参数2、产生指定范围随机整数3、四舍五入函数与取整函数(三)课堂练习零、本讲学习目标 了解Math类的作用掌握Math类的常量掌握…...

    2023/3/26 20:43:50
  8. java的System.currentTimeMillis()毫秒数转为日期Date

    方法一大堆还复杂,试十个错九个。其实很简单,两句代码就完了。 Date date new Date();date.setTime(System.currentTimeMillis());...

    2023/3/26 20:43:38
  9. 使用粒子效果动画组成模型[自定义shader实现]

    文章目录优点实现思路传递给Shader的数据根据模型数据生成数据传递给Shader自定义shader 连接cpu与gpu顶点着色器 计算位置片元着色器优点 性能卓越 上一篇使用的更改坐标实现 9万个点 页面非常卡顿 光是计算9万个点坐标更替的js就已经造成了堵塞 尝试了在顶点着色器中实现动画…...

    2023/3/26 20:43:26
  10. MFC调用winhttp实现简易的HTTP服务器程序

    Windows提供的winhttp函数库用来快速实现HTTP协议的应用程序,包括客户端和服务器端。 服务器开发一般流程是这样的: 1.HttpInitialize 初始化WinHTTP函数库; 2.HttpCreateHttpHandle 创建一个HTTP队列句柄,用来接收HTTP请求&am…...

    2023/3/26 20:43:14
  11. 【自学Docker】Docker update命令

    Docker update命令 大纲 docker update命令教程 docker update 命令可以用于更新一个或多个 Docker容器 的配置。该命令后面的 CONTAINER 可以是容器Id,或者是容器名。 docker update命令语法 haicoder(www.haicoder.net)# docker update [OPTIONS] CONTAINER […...

    2023/3/26 20:43:14
  12. AC7811-BLDC无感控制代码详解

    BLDC控制框图 BLDC 的控制电路对电机转子位置信号进行逻辑变换后产生脉宽调制 PWM 信号,驱动逆变器的功率开关管,从而控制 BLDC 电机各相绕组按一定顺序工作,在电机气隙中产生跳跃式旋转磁场。BLDC 转子旋转时,每转过 60&#xf…...

    2023/3/26 20:43:10
  13. 分享一下我3个月收割大厂offer的一些经验总结

    前几天,有位老粉私信我,说看到某95后学弟晒出阿里P7的工资单,他是真酸了…想狠补下技术,努力冲一把大厂。 为了帮到他,也为了大家能在最短的时间内做面试复习,我把软件测试面试系列都汇总在这一篇文章了。…...

    2023/3/26 20:42:41
  14. 系分架构 - 软件架构设计

    个人总结,仅供参考,欢迎加好友一起讨论 文章目录系分&架构 - 软件架构设计考点摘要概念架构的 4 1 视图软件架构风格经典五大架构风格调用/返回风格独立构件风格虚拟机风格仓库风格层次架构风格二层C/S架构三层C/S架构B/S架构混合架构风格闭环控制架…...

    2023/3/26 20:42:39
  15. Mysql之表分区

    这里写目录标题什么是表分区为什么要做表分区表分区有哪些优点基本分区类型range分区list分区LINEAR HASH分区KEY分区多列分区多列分区案例子分区什么是表分区 通俗地讲表分区是将一个大表,根据条件分割成若干个小表。 mysql5.1开始支持数据表分区。如:某用户表的记录超过了600…...

    2023/3/26 20:42:37
  16. kubernetes-helm

    目录 一、helm 1.Chart 2.Repository(仓库) 3.Release 二、 Helm配置 1.安装 helm 2.使用 helm 安装 Chart 三、Helm 自定义模板 1.拉取 chart 2.创建自定义的 chart 3.修改 chart 4.打包 chart 5.部署 chart 6.部署 ingress 7.回滚 四…...

    2023/3/26 20:42:27
  17. java,map集合:从键盘中输入一串字符用list集合储存,判断字符串中的大小写字母和数字各自的数量,要求放入map集合中打印最后结果:

    package act; import java.util.*; public class Test4 { public static void main(String[] args) { // TODO Auto-generated method stub System.out.println("输入字符串&#xff1a;"); Scanner scnew Scanner(System.in); ArrayList<…...

    2023/3/26 20:41:45
  18. 9.行为建模(Behavioral modeling)

    9.1行为模型概述 Verilog行为模型包含控制模拟和操纵先前描述的数据类型变量的过程语句。这些语句包含在程序中。每个过程都有一个与其关联的活动流。活动开始于initial和always语句。每个initial语句和每个always语句都会启动一个单独的活动流。所有活动流都是并发的&…...

    2023/3/26 20:41:37
  19. arp欺骗

    实验拓扑&#xff1a; 实验目的&#xff1a; 在kali上发起arp欺骗攻击&#xff0c;改变win7的arp表项&#xff0c;将其表项中关于网关的mac更改为kali的mac&#xff0c;迫使其发送数据给网关时&#xff0c;将数据发送到kali上&#xff0c;然后在kali侧进行抓包&#xff0c;最终…...

    2023/3/26 20:41:32
  20. ESP32S3系列--代码执行速度优化(从PSRAM执行代码)

    一、目的 在上一篇博文中我们介绍了ESP32S3的Flash/PSRAM的一些配置,包括时钟、IO模式(单线、双线、四线、八线)、采样模式(SDR/DDR) ESP32S3系列--FLASH及PSRAM配置_coder.mark的博客-CSDN博客_esp32 psramhttps://blog.csdn.net/tianizimark/article/details/125264464 …...

    2023/3/26 20:41:31

最新文章

  1. 深度学习调参指南《Deep Learning Tuning Playbook》

    项目地址&#xff1a;https://github.com/google-research/tuning_playbook 「大量的实践经验已被提炼成这份强大的深度学习模型调参指南。」——Geoffrey Hinton 1 概述 这份指南的主要内容是调整超参数&#xff0c;也涉及深度学习训练的其他方面&#xff0c;例如 pipeline 实…...

    2023/3/26 20:45:27
  2. java安装下载步骤_java下载安装教程

    java下载安装教程首先&#xff0c;我们可能需要查看一下电脑的配置信息&#xff0c;单击开始按钮选择系统&#xff0c;一般我们只需要关注是多少位的系统&#xff0c;还有是windows或Linux即可&#xff0c;如图&#xff1a;推荐教程&#xff1a;《java学习》在网络畅通的情况下…...

    2023/3/26 20:45:25
  3. 在Docker容器中修改PostgresSQL最大连接数

    在Docker容器中修改PostgresSQL最大连接数 目录在Docker容器中修改PostgresSQL最大连接数1.首先查询当前最大连接数2.然后找到你的 postgresql.conf 文件3.修改配置文件4.然后重启postgres服务附Postgres中常用sql命令解决 bash: vim: command not found1.首先查询当前最大连接…...

    2023/3/26 20:45:06
  4. 【PyTorch】教程:torch.nn.ModuleList

    Containers-ModuleList CLASS torch.nn.ModuleList(modulesNone) 将所有子模块放到一个列表中。 ModuleList 可以像 Python 的列表一样进行索引&#xff0c;但是其所包含的模块都被正确的注册了&#xff0c;并且对所有的方法都可见。 Parameters modules (iterable, optional…...

    2023/3/26 20:45:05
  5. 「技术干货」Linux内核的NFS实现框架

    Linux内核中实现了nfs&#xff0c;nfs具体是用rpc来实现的&#xff0c;于是Linux内核实现了rpc&#xff0c;rpc到底是什么&#xff0c;以及协议细节本文不讨论&#xff0c;网上书上多的是&#xff0c;包括协议编码规范也不说&#xff0c;本文仅仅描述一下linux内核的rpc实现框架…...

    2023/3/26 20:45:01
  6. Redis中的哨兵机制

    有了主从复制的实现以后,我们如果想对主从服务器进行监控,那么在redis2.6以后提供了一个 “哨兵” 的机制,在2.6版本中的哨兵为1.0版本,并不稳定,会出现各种各样的向题,在2.8以后的版本哨兵功能才稳定起来。 顾名思义,哨兵的含义就是监控Redis系统的运行状况。其主要功…...

    2023/3/26 20:44:08
  7. 2022-CSDN的一年

    前言 马上要到兔年的春节&#xff0c;年前最后一个版本顺利上线&#xff0c;闲下来两天&#xff0c;可以对过往一年进行一下总结&#xff0c;说起来这是入职CSDN之后第一次自己将自己所思所想以以博客的形式发布在CSDN网站上&#xff0c;也是比较奇特的体验。语言表达能力不强&…...

    2023/3/26 20:44:02
  8. STL——list介绍及使用

    list的介绍 list是一种可以在常数范围内在任意位置进行插入和删除的序列式容器&#xff0c;并且该容器可以前后双向迭代。list的底层是双向链表结构&#xff0c;双向链表中每个元素存储在互不相关的独立结点当中&#xff0c;在结点中通过指针指向其前一个元素和后一个元素。li…...

    2023/3/26 20:43:56
  9. Java学习笔记4.3.1 数学计算 - Math类

    文章目录 零、本讲学习目标一、Math类(一)Math类概述(二)Math类API文档二、案例演示Math类(一)测试Math类常用方法(二)简要说明1、三角函数参数2、产生指定范围随机整数3、四舍五入函数与取整函数(三)课堂练习零、本讲学习目标 了解Math类的作用掌握Math类的常量掌握…...

    2023/3/26 20:43:50
  10. 【高级Java】高级Java实验

    一、反射与动态代理1、&#xff08;4分&#xff09;请通过反射技术&#xff0c;为附件中的Person.class生成相应的.java代码&#xff0c;java代码中的方法的方法体为空&#xff0c;即方法内部代码不用生成。请注意生成的java代码的格式。2、&#xff08;3分&#xff09;请为第1…...

    2023/3/26 20:43:42
  11. java的System.currentTimeMillis()毫秒数转为日期Date

    方法一大堆还复杂&#xff0c;试十个错九个。其实很简单&#xff0c;两句代码就完了。 Date date new Date();date.setTime(System.currentTimeMillis());...

    2023/3/26 20:43:38
  12. 使用粒子效果动画组成模型[自定义shader实现]

    文章目录优点实现思路传递给Shader的数据根据模型数据生成数据传递给Shader自定义shader 连接cpu与gpu顶点着色器 计算位置片元着色器优点 性能卓越 上一篇使用的更改坐标实现 9万个点 页面非常卡顿 光是计算9万个点坐标更替的js就已经造成了堵塞 尝试了在顶点着色器中实现动画…...

    2023/3/26 20:43:26
  13. 国内外物联网和AI平台

    碰上最近有关物联网和AI平台的相关项目需要尽快上马&#xff0c;搜集了以下这类平台的网址&#xff0c;先贴出来以帮助大家减少信息扭曲。运营商平台中国电信的天翼物联 https://www.ctwing.cn/中国联通的物联网平台 https://www.10646.cn/中国移动的ONENet https://open.iot.1…...

    2023/3/26 20:43:21
  14. 《知识图谱:概念与技术》 读书笔记(下)

    肖仰华老师的读书笔记&#xff0c;很多思路、方法都值得借鉴。 原始课件链接http://kw.fudan.edu.cn/workshop/kgbook&#xff0c;本博文中提到的资料就是这些原始课件链接。 本篇博客主要记录了原书第三篇和第四篇&#xff0c;与知识图谱的管理、应用相关&#xff0c;可以结…...

    2023/3/26 20:43:15
  15. MFC调用winhttp实现简易的HTTP服务器程序

    Windows提供的winhttp函数库用来快速实现HTTP协议的应用程序&#xff0c;包括客户端和服务器端。 服务器开发一般流程是这样的&#xff1a; 1.HttpInitialize 初始化WinHTTP函数库&#xff1b; 2.HttpCreateHttpHandle 创建一个HTTP队列句柄&#xff0c;用来接收HTTP请求&am…...

    2023/3/26 20:43:14
  16. 【自学Docker】Docker update命令

    Docker update命令 大纲 docker update命令教程 docker update 命令可以用于更新一个或多个 Docker容器 的配置。该命令后面的 CONTAINER 可以是容器Id&#xff0c;或者是容器名。 docker update命令语法 haicoder(www.haicoder.net)# docker update [OPTIONS] CONTAINER […...

    2023/3/26 20:43:14
  17. AC7811-BLDC无感控制代码详解

    BLDC控制框图 BLDC 的控制电路对电机转子位置信号进行逻辑变换后产生脉宽调制 PWM 信号&#xff0c;驱动逆变器的功率开关管&#xff0c;从而控制 BLDC 电机各相绕组按一定顺序工作&#xff0c;在电机气隙中产生跳跃式旋转磁场。BLDC 转子旋转时&#xff0c;每转过 60&#xf…...

    2023/3/26 20:43:10
  18. .Net Core中使用NEST简单操作Elasticsearch

    C#中访问Elasticsearch主要通过两个包NEST和Elasticsearch.Net&#xff0c;NEST用高级语法糖封装了Elasticsearch.Net可以通过类Linq的方式进行操作&#xff0c;而Elasticsearch.Net相比之下更为原始直接非常自由。注意&#xff1a;ES的8.X以上的版本有新的包Elastic.Clients.E…...

    2023/3/26 20:43:08
  19. CS224W课程学习笔记(一):课程介绍与图深度学习概念

    引言 我们从怎么利用图形或网络表示数据这一动机开始。网络成为了用于描述复杂系统中交互实体的通用语言。从图片上讲&#xff0c;与其认为我们的数据集由一组孤立的数据点组成&#xff0c;不如考虑这些点之间的相互作用和关系。 在不同种类的网络之间进行哲学上的区分是有启…...

    2023/3/26 20:42:45
  20. 分享一下我3个月收割大厂offer的一些经验总结

    前几天&#xff0c;有位老粉私信我&#xff0c;说看到某95后学弟晒出阿里P7的工资单&#xff0c;他是真酸了…想狠补下技术&#xff0c;努力冲一把大厂。 为了帮到他&#xff0c;也为了大家能在最短的时间内做面试复习&#xff0c;我把软件测试面试系列都汇总在这一篇文章了。…...

    2023/3/26 20:42:41