先放源码https://github.com/google-research/bert

1. 首先需要处理pre-training所需要的数据

对应代码create_pretraining_data.py

python create_pretraining_data.py \--input_file=./sample_text.txt \--output_file=/tmp/tf_examples.tfrecord \--vocab_file=$BERT_BASE_DIR/vocab.txt \--do_lower_case=True \--max_seq_length=128 \--max_predictions_per_seq=20 \--masked_lm_prob=0.15 \--random_seed=12345 \--dupe_factor=5
  • max_predictions_per_seq:每个序列里最大的masked lm predictions。建议设置为max_seq_length*masked_lm_prob(这个脚本不会自动设置)

文本输入格式:一行一句话(对于next sentence prediction这很重要),不同文档间用空行分隔。例如源码中附带的sample_text.txt示例:

This text is included to make sure Unicode is handled properly: 力加勝北区ᴵᴺᵀᵃছজটডণত
Text should be one-sentence-per-line, with empty lines between documents.
This sample text is public domain and was randomly selected from Project Guttenberg.The rain had only ceased with the gray streaks of morning at Blazing Star, and the settlement awoke to a moral sense of cleanliness, and the finding of forgotten knives, tin cups, and smaller camp utensils, where the heavy showers had washed away the debris and dust heaps before the cabin doors.
Indeed, it was recorded in Blazing Star that a fortunate early riser had once picked up on the highway a solid chunk of gold quartz which the rain had freed from its incumbering soil, and washed into immediate and glittering popularity.

输出是一系列的TFRecordtf.train.Example

注意:这个脚本把整个输入文件都放到内存里了,所以对于大文件,你可能需要把文件分片,然后跑多次这个脚本,得到一堆tf_examples.tf_record*,然后把这些文件都作为下一个脚本run_pretraining.py的输入。

2. 接下来进行pre-training

对应代码run_pretraining.py

python run_pretraining.py \--input_file=/tmp/tf_examples.tfrecord \--output_dir=/tmp/pretraining_output \--do_train=True \--do_eval=True \--bert_config_file=$BERT_BASE_DIR/bert_config.json \--init_checkpoint=$BERT_BASE_DIR/bert_model.ckpt \--train_batch_size=32 \--max_seq_length=128 \--max_predictions_per_seq=20 \--num_train_steps=20 \--num_warmup_steps=10 \--learning_rate=2e-5
  • 如果你是从头开始pre-training,需要把include init_checkpoint去掉
  • 模型配置(包括vocab size)在bert_config_file中设置
  • num_train_steps在现实中一般要设置10000以上
  • max_seq_length和max_predictions_per_seq要和create_pretraining_data的参数一样

3.多机多卡

如果想跑多机多卡,可以参考这个代码https://github.com/NVIDIA/DeepLearningExamples/tree/master/TensorFlow/LanguageModeling/BERT,英伟达爸爸公开的多机多卡加速代码

用多机多卡的时候在第一步处理数据的时候需要将数据分片,片数要大于你要用的GPU个数,在run_pretraining.py代码做了提示:

 if FLAGS.horovod and len(input_files) < hvd.size():raise ValueError("Input Files must be sharded")if FLAGS.amp and FLAGS.manual_fp16:raise ValueError("AMP and Manual Mixed Precision Training are both activated! Error")

hvd.size()即卡的个数,要求数据片数必须大于卡的个数,不然会报错。

分片之后,对每一片都运行一遍create_pretraining_data.py,得到对应的tf_examples.tfrecord_X, X是你随意给分片做的编号

官方BERT代码 pre-training 一步步来相关推荐

  1. Android官方开发文档Training系列课程中文版:目录

    原文地址 : http://android.xsoftlab.net/training/index.html 引言 在翻译了一篇安卓的官方文档之后,我觉得应该做一件事情,就是把安卓的整篇训练课程全部翻 ...

  2. Android官方开发文档Training系列课程中文版:创建自定义View之View的创建

    原文地址:http://android.xsoftlab.net/training/custom-views/index.html 引言 Android框架含有大量的View类,这些类用来显示各式各样 ...

  3. Android官方开发文档Training系列课程中文版:OpenGL绘图之图形绘制

    原文地址:http://android.xsoftlab.net/training/graphics/opengl/draw.html 如果你还不清楚如何定义图形及坐标系统,请移步:Android官方 ...

  4. Resnet的pytorch官方实现代码解读

    Resnet的pytorch官方实现代码解读 目录 Resnet的pytorch官方实现代码解读 前言 概述 34层网络结构的"平原"网络与"残差"网络的结构图 ...

  5. HttpClient官方sample代码的深入分析(连接池)

    前言   之前一直使用apache的httpclient(4.5.x), 进行http的交互处理. 而httpclient实例则使用了http连接池, 而一旦涉及到连接池, 那会不会在使用上有些隐藏很 ...

  6. 微信小程序背景音乐官方实例代码无效问题解决及音乐src获取方法

    微信小程序背景音乐官方实例代码无效问题解决及音乐src获取方法 参考文章: (1)微信小程序背景音乐官方实例代码无效问题解决及音乐src获取方法 (2)https://www.cnblogs.com/ ...

  7. FFMpeg.AutoGen(1)讲解官方example代码:Main函数、 解码

    FFMpeg是一套C编译的开源工具集.主要用于视频处理,可以编解码视频,建立流媒体服务器等等.官方网站:http://ffmpeg.org/ FFMpeg.AutoGen封装方法以方便C#调用FFmp ...

  8. 清风电子—keil5,无法运行官方的代码程序,出现这样的错误显示 \objects\main.o:No such file or directory

    清风电子-keil5,无法运行官方的代码程序,出现这样的错误显示 \objects\main.o:No such file or directory 一般有四个原因 1,电脑系统用户名有中文字符(你的 ...

  9. OTB官方评估代码python版本--评估自己跟踪器,对比其他跟踪器

    OTB官方评估代码python版本--评估自己跟踪器,对比其他跟踪器 代码环境准备 环境安装 数据集准备 跑自己跟踪器 结果格式准备 生成json文件并画图 Bonus OTB数据集是目标跟踪领域里面 ...

最新文章

  1. Gazebo构建小车模型并通过ROS控制
  2. 英国上议院AI报告:没中美有钱,但我可以主导道德游戏规则设定
  3. CentOS 7 搭建docker仓库
  4. Vue、React打包文件放在服务器,浏览器存在缓存问题的解决
  5. bat贪吃蛇游戏代码_C语言写个贪吃蛇游戏
  6. GridView绑定数据源 绑定DataReader /DataSet /DataTable
  7. Data Vault的一点思考(二)
  8. django23:BS4/kindeditor上传图片
  9. 多核 linux 绑定,Linux 操作系统下CPU多核心的绑定
  10. SSH与EJB 比较
  11. windows ce操作系统能用哪个导航_微软的windows和苹果的mac操作系统,在技术难度上哪个更高...
  12. Java集合---ConcurrentHashMap原理分析
  13. 易辅客栈第六套零基础开发商业脚本_网页游戏篇
  14. unity mapbox gis真实3D地图 地图上加载自己真实的建筑模型
  15. 123457123457#0#-----com.yuming.YiZhiFanPai01--前拼后广--益智早教游戏记忆翻牌cym
  16. 能同时模拟键盘及鼠标的神器--51单片机可控制
  17. 医疗检测产品设计规范有哪些?
  18. 2022-2028年中国酯基季铵盐行业市场全面调研及投资前景预测报告
  19. 微信小程序Day2学习笔记
  20. 温室大棚冬季增温方案,适合自己的才最好

热门文章

  1. [DeDe] - 织梦内容管理系统模板标签代码参考
  2. 思路清晰的秘诀:结构化思维(自上而下)
  3. echo -n与 echo -e
  4. 常用企业应用软件介绍
  5. 64位系统控件注册方法
  6. 少年没有乌托邦,心向远方自明朗
  7. Mac电脑使用自然码双拼
  8. HashMap在jdk1.7和jdk1.8中的区别
  9. 基于word2vec+lstm的英文数据情感分析 详细数据代码
  10. python制作表白神器_程序员的七夕用30行代码让Python化身表白神器