Last Updated on 2022-05-04 by Clay
問題描述
今天當我透過 simpletransformers 套件訓練模型時,我得到了一個我之前沒碰過的警告訊息:
huggingface/tokenizers: The current process just got forked. after parallelism has already been used. Disabling parallelism to avoid deadlocks.
這個警告主要來自於 huggingface 的 tokenizer(也就是我們的斷詞器)。其中它題到了當前的行程被 forked 了,讓我們禁用『平行化』避免 deadlock(死鎖)。
以往我都抱持著『看到 warning 等於沒事~』的輕鬆態度(好吧,或許沒到這麼誇張),但這一次它都警告我要避免 deadlock 了,感覺最糟糕的情況可能會害我的訓練卡住。
大家都知道,訓練一個模型可謂曠時廢日。應該沒有人希望自己下班前把模型丟下去跑,然後隔天上班時發現「哎呀糟糕,模型卡住了!」。
解決方法
解決方法大致上有分成三種:
- 忽略它
- 禁用平行化
忽略它自然是沒什麼好講的(雖然那個警告訊息是真的一直跳出來,害我都看不到訓練進度),我們來看看如何禁用平行化,接著解決這個問題。
隱蔽警告訊息
最簡單的方式之一,就是在你所執行的 Python 腳本最上頭,加入以下設定:
import os
os.environ["TOKENIZERS_PARALLELISM"] = "false"
這樣一來,我們就成功禁止斷詞器的平行化了。
References
- https://stackoverflow.com/questions/62691279/how-to-disable-tokenizers-parallelism-true-false-warning
- https://github.com/ThilinaRajapakse/simpletransformers/issues/515