
歡迎來到Transfer NLP庫,這是一個建立在Pytorch頂部的框架,以促進NLP中可重複的實驗和轉移學習
您可以在此COLAB筆記本上概述高級API,其中顯示瞭如何在幾個示例中使用該框架。這些筆記本上的所有基於DL的示例都嵌入了電池內張板訓練監視!
對於預先訓練的模型登錄的示例,我們在此COLAB筆記本上提供了關於BertClassifier Finetuning的簡短可執行教程
mkvirtualenv transfernlp
workon transfernlp
git clone https://github.com/feedly/transfer-nlp.git
cd transfer-nlp
pip install -r requirements.txt
將轉移NLP用作庫:
# to install the experiment builder only
pip install transfernlp
# to install Transfer NLP with PyTorch and Transfer Learning in NLP support
pip install transfernlp[torch]
或者
pip install git+https://github.com/feedly/transfer-nlp.git
要在新版本之前獲得最新狀態。
將轉移NLP與相關的示例使用:
git clone https://github.com/feedly/transfer-nlp.git
pip install -r requirements.txt
可以在此處找到API文檔和庫的概述
庫的核心是由實驗構建器製成的:您定義了實驗所需的不同對象,並且配置加載器以一種很好的方式構建它們。為了可重現的研究和易於消融研究,庫將使用配置文件進行實驗。由於人們對構成一個好的實驗文件具有不同的口味,因此該庫允許以幾種格式定義實驗:
在Transfer-NLP中,實驗配置文件包含所有必要的信息,以完全定義實驗。在這裡,您將插入實驗將使用的不同組件的名稱以及要使用的超參數。 Transfer-NLP利用控制模式的反轉,該反轉使您可以定義可能需要的任何類 /方法 /函數, ExperimentConfig類將創建一個字典並相應地對象進行構成。
要在Transfer-NLP中使用自己的類,您需要使用@register_plugin Decorator註冊它們。與其為每種組件(模型,數據加載程序,矢量化器,優化器,...)使用不同的註冊表,不如在此使用一個註冊表,以實施總體自定義。
如果您僅將傳輸NLP用作DEV依賴項,則可能只想聲明使用它,並在您要在實驗運行時間內使用的對像上調用register_plugin() 。
這是如何在yaml文件中定義實驗的示例:
data_loader:
_name: MyDataLoader
data_parameter: foo
data_vectorizer:
_name: MyVectorizer
vectorizer_parameter: bar
model:
_name: MyModel
model_hyper_param: 100
data: $data_loader
trainer:
_name: MyTrainer
model: $model
data: $data_loader
loss:
_name: PyTorchLoss
tensorboard_logs: $HOME/path/to/tensorboard/logs
metrics:
accuracy:
_name: Accuracy
任何對像都可以通過類,方法或函數定義,給定一個_name參數,然後是其自己的參數。然後使用ExperimentConfig(experiment=experiment_path_or_dict)
一些考慮:
可以在實驗文件中跳過默認參數。
如果在不同位置使用對象,則可以使用$符號來參考它,例如,在此處, trainer對象使用其他地方實例化的data_loader 。不需要對象的訂購。
對於路徑,您可能需要使用環境變量,以便其他機器也可以運行實驗。在上一個示例中,您將運行EG ExperimentConfig(experiment=yaml_path, HOME=Path.home())來實例化實驗,並通過機器家居路徑替換$HOME 。
配置實例允許使用嵌套dict / list的任何復雜設置
您可以查看測試以獲取配置加載程序可以構建的實驗設置的示例。另外,我們在experiments/中提供可運行的實驗。
對於深度學習實驗,我們在transfer_nlp.plugins.trainers.py中提供了BaseIgniteTrainer 。這位基本培訓師將採用模型和一些數據作為輸入,並運行整個培訓管道。我們利用Pytorch-Ingiente庫在培訓期間監視事件(記錄一些指標,操縱學習率,檢查點模型等)。張板日誌也包括在選項中,您必須在配置文件中指定tensorboard_logs簡單參數路徑。然後只需運行tensorboard --logdir=path/to/logs ,您可以在訓練時監視實驗! Tensorboard配備非常好的實用程序,可以跟踪模型權重,直方圖,分佈,可視化嵌入等規範,因此我們真的建議使用它。

我們提供了一個SingleTaskTrainer結構師類,您可以將其用於處理一項任務的任何監督設置。我們正在研究MultiTaskTrainer任務類別類,以處理多任務設置,以及用於大型模型登錄設置的SingleTaskFineTuner 。
以下是一些用於轉移NLP的用例:
ExperimentRunner類允許依次運行您的實驗集並生成個性化報告(您只需要在自定義ReporterABC類中實現report方法)Module實現,並讓培訓師處理培訓部分(同時仍通過實驗文件控制大多數培訓參數)在嘗試自己的模型 /數據時,培訓可能需要一些時間。為了在訓練完成或崩潰時通知,您可以使用Huggingface的人們使用簡單的庫敲擊,該庫為您的跑步功能添加了一個簡單的裝飾器,以通過Slack,Ed-Mail,ETC通知您。
圖書館的靈感來自Delip Rao和Brian McMahan的“與Pytorch的自然語言處理”的啟發。在experiments中,詞彙構建塊和最近鄰居的嵌入方式是根據書中提供的代碼進行的。