该项目是一个Python模块,可促进BERT进行预处理。当前现有的用于培训的开源解决方案该特定模型被复杂化。我们简化了该过程。该项目的目标是向更广泛的机器学习社区打开代码,以帮助ML从业者使用数据训练自己的BERT模型。该代码的创建是为了培训VMware的BERT模型(VBERT)的最新迭代,以帮助机器学习和自然语言处理研究人员在VMware中。
演示笔记本位于演示文件夹中
设置Python 3.7或3.8虚拟Env,并使用pip install .从根文件夹中
或者
pip install git+https://github.com/vmware-labs/bert-pretraining
通过https://github.com/google-research/bert使用create_pretraining_data.py创建预处理数据。
如果要在培训期间在单独的评估集中评估模型的MLM和NSP精度,则可以创建一个单独的评估文件。
您还可以通过使用配置对象中的split_ratio参数将单个文件拆分为训练和评估向量。
预处理参数通过prtraining_config类处理。请按照demo.ipynb进行操作,以验证示例。
PROTRAINing_Config参数
| 范围 | 默认值 | 描述 |
|---|---|---|
| model_name | Demobert | 模型名称 |
| is_base | 真的 | 布尔值可在Bert-Base和Bert-large之间进行选择 |
| max_seq_length | 128 | MSL,应与tfrecord文件一致(如果您想用不同的MSL预处理bert,例如生成2个单独的文件,例如:128,512) |
| max_predictions_per_seq | 20 | 蒙面的令牌数量应与tfrecord文件一致 |
| num_train_steps | 1000 | 训练模型的步骤数量,如果我们到达Tfrecord文件的末尾,则将终止(有意义的预处理需要更多的培训步骤) |
| num_warmup_steps | 10 | 热身步骤数量,伯特使用1%的训练步骤作为热身步骤 |
| Learning_rate | 1E-05 | 模型学习率 |
| train_batch_size | 32 | 培训批量大小(跨GPU分开) |
| save_intermediate_checkpoints | 真的 | 为每个“ x”训练步骤保存检查点,由save_checkpoint_steps决定。检查站将始终在培训结束时保存 |
| save_intermediate_checkpoint_steps | 25000 | 在每个“ X”训练步骤(不包括热身步骤)之后,可以节省检查站 |
| eval_batch_size | 32 | 评估批量尺寸(跨GPU分开) |
| max_eval_steps | 1000 | 执行评估的步骤数量何时没有单独的评估文件。 如果提供了单独的评估文件或提供了split_ratio,则整个评估数据集用于评估 |
| eval_point | 1000 | 对每个“ X”训练步骤执行评估 |
| split_ratio | 没有任何 | 如果您想将培训tfrecord拆分为train,eval数据集,则用于评估的培训数据集的百分比。 如果没有提供分率,则将使用培训文件进行避免(评估步骤的数量由max_eval_steps参数控制) |
| init_checkpoint | 没有任何 | 如果您正在恢复培训,则提供了前往检查点的路径。如果您是从非默认检查点(Bert-Base,Bert-large)初始化培训,则提供模型检查点名称/路径)。 |
| input_file | ./input/demo_msl128.tfrecord | 输入tfrecord文件,使用create_pretratained_data.py创建,来自https://github.com/google-research/bert |
| eval_file | 没有任何 | 如果要使用单独的eval数据集,请从https://github.com/google-research/bert提供使用create_pretraining_data.py创建的输入tfrecord文件 |
| log_csv | ./eval_results.csv | 存储评估结果的文件** |
| output_dir | ./ckpts | 存储检查站的目录 |
| num_gpu | 3 | 用于培训的GPU数量 |
**输出log_csv文件记录超参数和评估结果
Demo.tfrecord文件是从Wikicorpus数据集创建的。
伯特(BERT)预测的项目团队欢迎社区的贡献。在开始使用此项目之前,请阅读并签署我们的贡献者许可协议(https://cla.vmware.com/cla/1/preview)。如果您希望贡献代码,并且尚未签署我们的贡献许可协议(CLA),那么我们的机器人将在打开拉动请求时提示您这样做。有关CLA过程的任何疑问,请参阅我们的贡献。md。
Apache-2.0