2017-09-17 170 views
2

我正在訓練使用RASA中的MITIE後端來識別短,一到三個文本句子字符串的模型。該模型使用spaCy進行訓練和工作,但並不像我想的那樣精確。在spaCy上進行的培訓不超過五分鐘,但是對於MITIE的培訓,我的計算機上連續運行了幾天,使用16GB的RAM。因此,我開始在具有255GB RAM和32個線程的Amazon EC2 r4.8xlarge實例上進行培訓,但似乎並未使用所有可用的資源。加速使用MITIE和Rasa的模型訓練

在莎配置文件,我有num_threads: 32並設置max_training_processes: 1,我認爲將有助於使用所有的內存和計算能力可用。但現在它已經運行了幾個小時,CPU使用率保持在3%(100%的使用率,但只在一個線程上),內存使用率保持在25GB左右,只有它的十分之一。

你們有沒有嘗試加速MITIE培訓的經驗?我的模型有175個意圖和總共6000個意圖示例。有沒有什麼可以在Rasa配置文件中進行調整?

回答

3

所以我會嘗試從多個角度來解決這個問題。從莎NLU角度the docs specifically say首先明確:

培訓MITIE可以與數據集很慢多了幾個意向。

,並提供兩種選擇:

  • 使用mite_sklearnpipeline這火車使用sklearn。
  • 使用MITIE fork,其中來自Rasa的Tom B已修改代碼以在大多數情況下運行得更快。

假設你只得到使用單核我懷疑這會產生影響,但它已被從莎建議由阿蘭說NUM_THREADS應設置爲2-3倍的核心數量。

如果你還沒有評估這兩種可能性,那麼你可能應該。


不是MITIE的所有方面都是多線程的。見this issue別人的MITIE GitHub的頁面上使用莎開在這裏引述:

MITIE的某些部分沒有螺紋。從任務到數據集到數據集,線程的受益程度不盡相同。有時只有100%的CPU利用率發生,這是正常的。


具體有關我建議你看一下最近引入莎回購的evaluate工具訓練數據。它包含一個可能有助於識別故障區域的混淆矩陣。

這可能允許您切換到spaCy並將6000個示例的一部分用作評估集,並在示例中添加效果不佳的意圖。


我對其中6000例是從哪裏來的,如果他們是平衡的,每個意圖如何不同的是,你有沒有證實,從訓練例子的話是你正在使用的語料庫等更多的問題但我認爲以上就足夠了。

這將是毫不奇怪的莎團隊MITIE正在採取永遠去訓練,這將是更多的是驚喜,你不能得到良好的精度了另一個管道的。

萬不得已我會鼓勵你拉沙NLU GitHub的頁面上打開一個問題,並參與球隊有進一步的支持。或加入Gitter對話。

+0

感謝您的答覆,我很欣賞你介紹了新的評估工具。我其實目前正在使用'mitie_sklearn'管道和MITIE分叉。我發現'ner_mitie'在我的數據集上表現得比'ner_crf'好。 'ner_mitie'就是我在多線程中遇到的問題,並且正在減慢訓練速度(這是'mitie_sklearn'管線的一部分)。這聽起來像是結論是'ner_mitie'不支持多線程。 – hackerman

+0

拿着電話,你特意在談論意圖,現在你已經搬到了NER。當你說準確率低時,意圖還是實體的準確性?當你說你有6000個例子是那些意圖的例子或實體例子或兩者?如果你有175個意圖,你有多少個實體,每個實體有多少個訓練樣例。你能提供一些你有實體的例子嗎? –

+0

對不起,我感到困惑。總共有大約900個實體示例,用於25個不同的實體。實體的一個例子是'broken_things',例如:「我的電視不工作」,其中與值電視機實體'broken_things'的電視欄目。 'ner_crf'模型比'ner_mitie'更頻繁地測試「tv」。 – hackerman