ELMo MindSpore version
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Ydgrasil d4a340d9d8 add readme 1 month ago
elmo add readme 1 month ago
scripts add readme 1 month ago
tests modify the grads calculation 2 months ago
.gitignore modify list to cell list for graph mode in char encoder 3 months ago
ElmoTrainOne.py loss*20 2 months ago
LICENSE Initial commit 3 months ago
README.md add readme 1 month ago
train.py modify the grads calculation 2 months ago

README.md

elmo_mindspore

目录

概述

ELMo(Embeddings from Language Model)模型出自NAACL2018会议上的论文“Deep contextualized word representations”,论文中提出了一个新的词表征方法。常用的词嵌入方法如:Word2Vec、GloVe等忽略了词的上下文信息。ELMo同时对(1)单词在不同语境下的使用(如语法和语义);(2)这些用法如何在不同的语言环境中变化(例如,建模一词多义)。该模型是在大型文本语料库上进行预训练的。模型建立在biLMs(双向语言模型)基础上,可以很容易地添加到现有的模型中,并显著改善一系列具有挑战性的自然语言处理问题(包括问答、文本蕴涵和情感分析)的技术水平。

模型架构

数据集

Elmo模型的训练和评估需要准备:

  • 词汇表
  • 训练数据集
  • 测试数据集
  • 配置文件
  1. ELMo 模型训练数据来自 1 billion word benchmark,训练集及测试集可以通过运行download_dataset.sh进行下载。
sh script/download_dataset.sh
  1. 词汇表中每个token一行,词汇表的前三行必须为<S>``</S>``<UNK>,词汇表文件下载:vocab-2016-09-10.txt
  2. 创建配置文件,如options.json ,可根据需求修改超参。

环境要求

  • 硬件(Ascend处理器)
    • 准备Ascend处理器搭建硬件环境。如需试用昇腾处理器,请发送申请表至ascend@huawei.com,申请通过后,即可获得资源。
  • 框架版本
  • 更多关于Mindspore的信息,请查看以下资源:

快速入门

在Ascend上运行

  1. 将训练数据转换为mindrecord格式
# 运行以下脚本
bash script/convert_dataset.sh
  1. 运行train.py 脚本进行模型训练
# for example
python train.py --epoch_num=10

暂不支持静态图模型及分布式训练

脚本说明

脚本和样例代码

.
└─ELMo
  ├─README.md
  ├─elmo
  	├─data								
  		├─__init__.py					
  		├─dataset.py				    # 数据预处理
  		├─fields.py
  		├─instance.py
  		├─reader.py						# 数据转换
  		├─token_indexer.py
  		├─tokenizer.py
  		├─vocabulary.py					# 数据预处理
  	├─modules							
  		├─__init__.py 
  		├─embedding.py					# char encoder实现脚本
  		├─highway.py					# highway层实现脚本
  		├─loss.py						# 损失层实现脚本
  		├─lstm.py						# biLM层实现脚本
  		├─scalar_mix.py                 
  		├─time_distributed.py
  	├─nn
  		├─__init__.py
  		├─layers.py                      # 参数初始化脚本
  		├─rnn.py						 # GRU实现脚本
  		├─rnn_cell_warpper.py		     # GRU实现脚本
  		├─rnn_cells.py					 # GRU实现脚本
  	├─ops
  		├─sampled_softmax_loss.py		# 损失函数实现
  	├─utils
  		├─config.py
  		├─model.py						# 网络骨干编码
  ├─scripts
    ├─convert_dataset.sh             # 数据集预处理shell脚本
    ├─download_dataset.sh            # 下载数据集shell脚本
    ├─rank_table_2pcs.json           # 多卡配置文件
    ├─rank_table_8pcs.json           # 多卡配置文件
    └─run_distribution.sh            # Ascend上多机ELMo任务shell脚本
  ├─tests							 # 单元测试
  	├─test_char_encoder.py
  	├─test_data.py
  	├─test_elmo_lstm.py  	
  	├─test_highway.py
  	├─test_lm.py
  	├─test_rnn.py
    ├─test_rnn_cell.py
    ├─test_rnn_cell_warpper.py
	├─test_sampled_softmax_loss.py
  ├─.gitignore  
  ├─ElmoTrainOne.py  			# TrainOnestep脚本
  └─train.py                    # ELMo模型的训练脚本

脚本参数

用法:reader.py      [--vocab_path VOCAB_PATH]
                    [--options_path OPTIONS_PATH]
                    [--input_file INPUT_FILE]
                    [--output_file OUTPUT_FILE]

选项:
    --vocab_path                 ELMo模型训练的词汇表
    --options_path               配置文件的路径
    --input_file                 原始数据集路径
    --output_file                保存生成mindRecord格式数据的路径

用法:train.py     [--data_url DATA_URL]
          		  [--train_url TRAIN_URL] 
          		  [--device_target DEVICE_TARGET]
          		  [--lr, LR]  [--epoch_num EPOCH_NUM]
                                
选项:
    --data_url                      用于保存训练数据的mindRecord文件,如train.mindrecord
    --train_url                     保存生成微调检查点的路径
    --device_target                 代码实现设备,可选项为Ascend或CPU。默认为Ascend
    --lr                            学习率
    --epoch_num                     训练轮次总数