过去一周我一直在寻找训练自己的 ELMo 模型,并遇到了这两个实现allenai/bilm-tf和allenai/allennlp。对于我尝试过的一些技术,我一直面临着一些障碍,我想澄清我的发现,以便我能获得更清晰的方向。
由于我的项目围绕医疗保健展开,我想从头开始训练嵌入以获得更好的结果。我正在处理的数据集是 MIMIC-III,整个数据集存储在一个 .csv 中,这与 10 亿字语言模型基准(教程中使用的数据)不同,其中文件存储在单独的 .txt 文件中。
我正在关注这个“使用 ELMo 作为 PyTorch 模块来训练新模型”教程,但我发现其中一个要求是 .hdf5 weights_file。
(问题)这是否意味着我必须先训练一个 bilm 模型才能输入 .hdf5 权重?我可以使用 allennlp.modules.elmo.Elmo 从头开始训练 ELMo 模型吗?有没有其他方法可以用空的 .hdf5 训练模型,因为我能够使用教程数据成功运行它。
(问题)我训练嵌入的最佳方法是什么?(PS:我尝试过的一些方法记录在下面)。在我的情况下,我可能需要一个自定义 DatasetReader,而不是将 csv 转换为 txt 文件,这会浪费内存。
在这里,让我详细介绍一下我迄今为止尝试过的其他方法。作为什么可能是最好的技术的主要问题的背景故事。如果您知道任何其他方法来训练我自己的 ELMo 模型,或者如果以下方法之一优于其他方法,请告诉我。
我已经尝试按照本教程allennlp train ...
使用命令训练模型。但是,由于以下我仍然无法解决的错误,我无法使用教程数据运行。
allennlp.common.checks.ConfigurationError: Experiment specified GPU device 1 but there are only 1 devices available.
其次,这是我发现但没有尝试过的一种技术。与上面的技术类似,它使用allennlp train ...
命令,但我使用allenai/allennlp-template-config-files作为模板并修改 Model 和 DatasetReader。
最后,我尝试按照这样的教程使用 TensorFlow 实现allenai/bilm-tf。但是,我想避免这种方法,因为 TF1 已经过时了。除了收到大量警告外,我还面临 CUDA 的错误。
2021-09-14 17:31:36.222624: E tensorflow/stream_executor/cuda/cuda_driver.cc:936] failed to allocate 18.45M (19346432 bytes) from device: CUDA_ERROR_OUT_OF_MEMORY