# Bert源码解读(二)
## 一、速读Bert
![img](file:///C:UsersweixqAppDataRoamingTencentUsers2426149954TIMWinTempRichOle}VJ[3VI30I26F{P_KX~~H{F.png)
Bert预训练部分是在做自注意力。
分类器微调部分就是一层神经网络。
分离矩阵得到起始值和终止值得概率矩阵。
**用run_classifier.py,整个50万样本量,微调阶段训练时间约为半个小时。**
## 二、注意的要点
1.官网源码中给出的是TPU estimator接口,需要改成普通estimator接口方案。
参考博客:http://shzhangji.com/cnblogs/2018/05/14/serve-tensorflow-estimator-with-savedmodel/
2.**Out of Memory问题**
调节两个参数**`max_seq_length`和`train_batch_size`**,分别是最长句子的长度和一次批处理的大小,训练的观察 GPU显存的占用情况 。
## 三、Bert as service
Bert的预训练模型部分可以部署。源码中的亮点有提供了图优化方法,包括的过程有:动态图计算--图冻结、剪枝和量化。还有zeromq进行异步并发请求,进行服务化部署。
## 四、总结
Bert的泛化能力很强。我们可以加强学习。
**较低成本实践Bert的路径:**
第一步:有GPU,一般是28GB左右。
第二步:确定一个数据集和确定自己的训练任务。
第三步:修改代码,调参,验证效果。
参考博客:https://zhuanlan.zhihu.com/p/58471554