Skip to content

[已解決] huggingface/tokenizers: The current process just got forked. after parallelism has already been used. Disabling parallelism to avoid deadlocks

問題描述

今天當我透過 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 了,感覺最糟糕的情況可能會害我的訓練卡住。

大家都知道,訓練一個模型可謂曠時廢日。應該沒有人希望自己下班前把模型丟下去跑,然後隔天上班時發現「哎呀糟糕,模型卡住了!」。


解決方法

解決方法大致上有分成三種:

  1. 忽略它
  2. 禁用平行化

忽略它自然是沒什麼好講的(雖然那個警告訊息是真的一直跳出來,害我都看不到訓練進度),我們來看看如何禁用平行化,接著解決這個問題。


隱蔽警告訊息

最簡單的方式之一,就是在你所執行的 Python 腳本最上頭,加入以下設定:

import os
os.environ["TOKENIZERS_PARALLELISM"] = "false"


這樣一來,我們就成功禁止斷詞器的平行化了。


References


Read More

Leave a Reply