在某个模型训练过程中遇到的难题及其解决办法、对自动超参数调优方法的理解、模型部署时如何实现热更新、说一说最近看过的一篇论文

日萌社

人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新)


fasttext模型在大量类别上能够快速训练的原因、为了提升fasttext模型的评估指标做了哪些优化 

简述BERT模型的训练过程、BERT模型在推断过程中做了哪些性能优化、BERT模型在训练过程中做了哪些性能优化 

在某个模型训练过程中遇到的难题及其解决办法、对自动超参数调优方法的理解、模型部署时如何实现热更新、说一说最近看过的一篇论文

Softmax反向传播推导、Bert的模型架构


问题:说一说在某个模型训练过程中遇到的难题及其解决办法

问题背景

因为在实际工作中,大部分工程师都会遇到一些棘手的特殊问题,他们可能由已有数据,选择的模型,以及硬件资源等因素决定。这也是验证你是否有过实际操作的开放问题之一。

解题思路

第一步: 确定需要涉猎的模型

  • 微调BERT模型:
    • 这里我们选择带有语言模型头的BERT预训练模型,在自己构建的三层MLP网络下进行微调的过程。

第二步: 阐述遇到的典型问题和解决办法

  • 遇到的问题:
    • 模型在训练过程中,每batch的平均损失始终保持在0.6931的值附近(或恒等于0.6931),导致模型不再收敛,预测结果一般都指向固定标签。
  • 出现原因:
    • 出现0.6931不收敛问题的内在原因是因为使用交叉熵损失时,In0.5=0.6931,也就是说模型在训练时落入了一个“自认为的”局部最优点,默认概率0.5是最稳妥的答案,而且很难通过梯度自适应的步长走出该区域。外在原因是由于模型前期接收的数据张量的复杂程度过高,如:每条数据都是768x300(词嵌入维度x文本对齐长度)的稠密矩阵,模型无法从批次数据中获得相应的规律。
  • 什么情况下出现:
    • 该问题一般出现在使用大型预训练模型微调时,如Bert,XLNET的微调等,如果是完全的自构建模型,可以通过减小embedding和文本对齐长度,或适量增大batch_size的大小来解决对应的问题。而在使用预训练模型时,因为输出的维度是固定的且比较大,在长文本语料下,减小文本对齐长度将损失很多重要特征(不可取),增大batch_size的大小又很容易引起内存溢出。
  • 解决办法:
    • 为了解决该问题,应该使用动态有序数据训练方法,即对训练数据进行处理,使的文本较短且规律明显的语料作为前几个批次的数据进入模型(注意:前期不要使用shuffle)长文本且规律不明显的样本放在语料后,这样如此几轮训练使得模型有了一定的“知识基础”,再在后边的轮次里shuffle数据以提升泛化能力。

答案

在我们微调带有三层MLP的BERT预训练模型时,模型训练时不收敛且损失一直在0.6931附近。最后我们使用了“动态有序数据训练”解决了该问题。


问题:说一说对自动超参数调优方法的理解

问题背景

自动超参数调优一直以来都是模型训练过程中重要的一步,因此,考察对其的理解也是面试中经常出现的题目。

解题思路

第一步: 找出核心知识点并解析

  • 自动超参数调优的方法:

    • 随机搜索(Random Search):无放回的随机从给定的参数范围内进行超参数选择。优点:在大量超参数调节情况下速度最快。缺点:效果无法保证,不能获得全局最优。
    • 网格搜索(Grid Search):通过给定的参数可能值,遍历其所有的组合进行超参数选择。优点:少量超参数时效果表现出色。缺点:超参数组合成指数增长,导致调优过程缓慢,同样不能不能保证获得全局最优。
    • 贝叶斯优化(Bayesian Optimization):假设每个超参数都服从高斯分布,根据起始的几个超参数点,使用贝叶斯估计,得到超参数在该点的均值和方差(即新的高斯分布),之后会使用一个叫做acq function的函数(它是关于当前已知点均值和方差的函数,如:均值+N*方差)来根据当前分布的均值和方差选取下一组超参数,以此类推。
    • 超频优化(Hyperband):首先从所有超参数组合中进行随机均匀采样,对所选的超参数组合进行验证,根据验证结果淘汰部分超参数的可能值,之后在此基础上继续随机均匀采样超参数组合(不再使用淘汰值)进行验证,直到结果满足要求或者唯一。随机均匀采样也可以用上述的贝叶斯优化来代替,这种结合的方法叫做BOHB(Bayesian Optimization Hyperband)。
  • 实现自动超参数调优的工具:

    • 对于tensorflow框架训练的模型,我们使用keras Tuner工具来实现。当前只支持随机搜索和超频优化。
    • 对于pytorch框架训练的模型,我们使用ray tune工具来实现。支持上述所有的优化方法以及BOHB。

第二步: 整合核心知识点形成答案

答案

首先,明确超参数调优过程本身并不是一个凸优化问题,因此也无法使用常规的优化方法找到一组最优解。 因此,工程中常用的自动化超参数调优方法有:随机搜索,网格搜索以及贝叶斯优化 随机搜索和网格搜索的逻辑相对简单,贝叶斯优化逻辑相对复杂,它假设每个超参数都服从高斯分布,根据起始的几个超参数点,计算其后验分布,得到超参数在该点的均值和方差(即新的高斯分布),之后会使用一个叫做acq function的函数(它是关于当前已知点均值和方差的函数,如:均值+N*方差)来根据当前分布的均值和方差选取下一组超参数,以此类推。 对于tensorflow框架训练的模型,我们使用keras Tuner工具来实现。 对于pytorch框架使用ray tune工具来实现。 在我们现有的项目中,使用贝叶斯优化对已有的超参数进行调优确实能够提升1.5%的验证准确率。


问题9:模型部署时如何实现热更新

问题背景

模型部署是模型使用的重要环节,其中热更新更是模型部署的硬性标准,因此,考察如何保证模型在部署时能够热更新非常重要。

解题思路

第一步: 找出核心知识点并解析

  • 不同框架模型的部署方案:
    • pytorch框架:一般模型为.pth文件,可以使用flask框架进行封装部署。
    • tensorflow/keras框架:一般是.pb或.h5文件,一般使用tensorflow-serving进行封装(.h5可以转换成.pb)。
  • 模型热更新:
    • 在使用表现更好的模型替换原有的模型时,需保证模型服务不能中断。

第二步: 整合核心知识点形成答案

答案

在我们项目中,使用pytorch训练的模型,部署时使用flask框架搭建服务,为了保证模型能够热更新,这里一般启动两个相同的服务,使用nginx中的backup功能,需要更换模型时,只暂停一个服务进行更换,另一个服务继续工作。使用tensorflow训练的模型,部署时使用tensorflow-serving,自带模型热更新功能。


问题10:说一说最近看过的一篇论文

问题背景

主动阅读/复现论文能够体现一名工程师对职业的喜爱以及优秀的学习能力。因此在面试中,面试官往往通过你最近所阅读一篇论文来考察。

解题思路

第一步: 找出核心知识点并解析

  • 选择一篇最近发表的有影响力的论文:
    • 这里选择2020-3-13英伟达公司发表的Megatron-LM: Training Multi-Billion Parameter Language Models Using Model Parallelism,论文地址: https://arxiv.org/pdf/1909.08053.pdf

  • 阅读论文后需要总结的点:
    • 1,论文中的主要实验结论是什么
    • 2,阅读论文后对你的启发是什么

  • 上述论文—Megatron-LM(威震天语言模型)的主要实验结论:
  • 1,利用数据和模型并行的分布式技术训练了具有3.9B(3.9亿)参数的BERT-large模型,起名为Megatron-3.9B,在GLUE的很多数据集上都取得了SOTA成绩。

2,利用数据和模型并行的分布式技术训练了具有8.3B(8.3亿)参数的GPT-2语言模型,并在数据集Wikitext103,LAMBADA,RACE都上取得SOTA成绩(最佳成绩)。

  • 上述论文—Megatron-LM(威震天语言模型)对我们的启发:
    • 上述的大型模型能够在短时间内训练完成并取得SOTA成绩,一方面体现了算力的重要性,另一方面体现了模型并行(分布式)和数据并行技术关键性。这两项优化技术在加速模型训练和推断过程中至关重要。

第二步: 整合核心知识点形成答案

答案

最近看了一篇英伟达公司发表的Megatron-LM,该篇论文共有两个主要的结论:1,利用数据和模型并行的分布式技术训练了具有3.9B(3.9亿)参数的BERT-large模型,在GLUE的很多数据集上都取得了SOTA成绩。同时,还训练了具有8.3B(8.3亿)参数的GPT-2语言模型,并在数据集Wikitext103,LAMBADA,RACE都上取得SOTA成绩(最佳成绩)。通过这篇论文,一方面体现了算力的重要性,另一方面体现了模型并行和数据并行技术关键性。这两项优化技>术在加速模型训练和推断过程中至关重要。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

あずにゃん

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值