使用nlpaug BackTranslationAug遇RuntimeError:DataLoader Worker意外退出
环境信息
- nlpaug版本:1.1.11
- 操作系统:Mac OS
问题描述
使用nlpaug的反向翻译功能做数据增强时,触发RuntimeError: DataLoader worker (pid(s) xxx) exited unexpectedly错误。
复现代码
import nlpaug.augmenter.word as naw text = 'The quick brown fox jumped over the lazy dog' back_translation_aug = naw.BackTranslationAug(from_model_name='facebook/wmt19-en-ru', to_model_name='facebook/wmt19-ru-en',batch_size=2,force_reload=True) print(back_translation_aug.augment(text))
报错详情
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/nlpaug/base_augmenter.py", line 98, in augment result = action_fx(clean_data) File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/nlpaug/augmenter/word/back_translation.py", line 70, in substitute augmented_text = self.model.predict(data) File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/nlpaug/model/lang_models/machine_translation_transformers.py", line 39, in predict src_translated_texts = self.translate_one_step_batched(texts, self.src_tokenizer, self.src_model) File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/nlpaug/model/lang_models/machine_translation_transformers.py", line 58, in translate_one_step_batched for batch in tokenized_dataloader: File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/torch/utils/data/dataloader.py", line 521, in __next__ data = self._next_data() File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/torch/utils/data/dataloader.py", line 1186, in _next_data idx, data = self._get_data() File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/torch/utils/data/dataloader.py", line 1152, in _get_data success, data = self._try_get_data() File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/torch/utils/data/dataloader.py", line 1003, in _try_get_data raise RuntimeError('DataLoader worker (pid(s) {}) exited unexpectedly'.format(pids_str)) from e RuntimeError: DataLoader worker (pid(s) 3954) exited unexpectedly
解决方案
这个错误是Mac OS上PyTorch DataLoader的常见问题,和多进程加载机制冲突有关,可尝试以下几种解决方法:
禁用多进程加载
初始化BackTranslationAug时添加num_workers=0参数,强制用主进程处理数据,避免多进程冲突:back_translation_aug = naw.BackTranslationAug( from_model_name='facebook/wmt19-en-ru', to_model_name='facebook/wmt19-ru-en', batch_size=2, force_reload=True, num_workers=0 )降低批次大小
当前batch_size=2可能超出Mac内存承载,尝试改为batch_size=1:back_translation_aug = naw.BackTranslationAug( from_model_name='facebook/wmt19-en-ru', to_model_name='facebook/wmt19-ru-en', batch_size=1, force_reload=True )设置环境变量
在代码开头添加以下环境变量,解决Mac多进程fork机制的兼容性问题:import os os.environ["PYTORCH_ENABLE_MPS_FALLBACK"] = "1" os.environ["OMP_NUM_THREADS"] = "1"
内容的提问来源于stack exchange,提问作者MAC
相关产品推荐
相关产品推荐

