我使用 pytorch 来训练 huggingface-transformers 模型,但是每个 epoch 总是输出警告:
The current process just got forked. Disabling parallelism to avoid deadlocks... To disable this warning, please explicitly set TOKENIZERS_PARALLELISM=(true | false)
如何禁用此警告?
我使用 pytorch 来训练 huggingface-transformers 模型,但是每个 epoch 总是输出警告:
The current process just got forked. Disabling parallelism to avoid deadlocks... To disable this warning, please explicitly set TOKENIZERS_PARALLELISM=(true | false)
如何禁用此警告?
将环境变量设置为字符串"false"
或者通过
TOKENIZERS_PARALLELISM=false
在你的壳里
或通过:
import os
os.environ["TOKENIZERS_PARALLELISM"] = "false"
在 Python 脚本中
我将在此处留下此评论,以帮助任何想知道是否可以保持并行性并在培训期间节省宝贵时间的人。也因为它是直接在 Google 上搜索错误时的第一个 stackoverflow 页面。
根据github 上的这个评论, FastTokenizers似乎是问题所在。同样根据对 gitmemory 的另一条评论, 您不应该在分叉进程之前使用标记器。(这基本上意味着在遍历您的数据加载器之前)
所以解决方案是在训练/微调之前不使用 FastTokenizers或使用普通的 Tokenizers。
查看 huggingface 文档,了解您是否真的需要 FastTokenizer。
我通过将 huggingface 的 transfomers 库版本从 3.0.0 降级到 2.11.0,将 tokenizers 库版本从 0.8.0rc4 降级到 0.7.0 解决了这个问题。
这似乎是拥抱脸的标记器库版本“0.8.0rc4”的问题。目前,似乎没有将 TOKENIZERS_PARALLELISM=(true | false) 设置为错误消息的解决方案。
参考:https ://github.com/ThilinaRajapakse/simpletransformers/issues/515