您好,登錄后才能下訂單哦!
這篇文章主要介紹“怎么使用spaCy v3.0微調BERT變壓器”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“怎么使用spaCy v3.0微調BERT變壓器”文章能幫助大家解決問題。
微調變壓器需要具有并行處理功能的強大 GPU。為此,我們使用 Google Colab,因為它提供免費可用的帶有 GPU 的服務器。
在本教程中,我們將使用新發布的spaCy v3.0 庫來微調我們的轉換器。以下是有關如何在 spaCy v3.0 上微調 BERT 模型的分步指南。Github repo中提供了代碼和必要的文件。
要使用 spaCy v3.0 微調 BERT,我們需要以 spaCy v3.0 JSON 格式(請參閱此處)提供訓練和開發數據,然后將其轉換為.spacy二進制文件。我們將提供包含在 TSV 文件中的 IOB 格式的數據,然后將其轉換為 spaCy JSON 格式。
我只標記了 120 個職位描述,其中包含培訓數據集的技能、文憑、文憑專業和經驗等實體,以及開發數據集的大約 70 個職位描述。
在本教程中,我使用了UBIAI注釋工具,因為它具有廣泛的功能,例如:
機器學習自動注釋
字典、正則表達式和基于規則的自動注釋
團隊協作共享注釋任務
直接注釋導出為 IOB 格式
使用 UBIAI 中的正則表達式功能,我預先注釋了所有遵循“\d.*\+.*”模式的經驗提及,例如“5 + 年的 C++ 經驗”。然后我上傳了一個包含所有軟件語言的 CSV 字典并分配了實體技能。預注釋可以節省大量時間,并將幫助您最大限度地減少手動注釋。
有關 UBIAI 注釋工具的更多信息,請訪問文檔頁面。
導出的注釋將如下所示:
Python:
MS B-DIPLOMA
in O
electrical B-DIPLOMA_MAJOR
engineering I-DIPLOMA_MAJOR
or O
computer B-DIPLOMA_MAJOR
engineering I-DIPLOMA_MAJOR
. O
5+ B-EXPERIENCE
years I-EXPERIENCE
of I-EXPERIENCE
industry I-EXPERIENCE
experience I-EXPERIENCE
. I-EXPERIENCE
Familiar O
with O
storage B-SKILLS
server I-SKILLS
architectures I-SKILLS
with O
HDD B-SKILLS
為了從 IOB 轉換為 JSON(請參閱此處的文檔),我們使用 spaCy v3.0 命令:
Python:
!python -m spacy convert drive/MyDrive/train_set_bert.tsv ./ -t json -n 1 -c iob
!python -m spacy convert drive/MyDrive/dev_set_bert.tsv ./ -t json -n 1 -c iob
轉換為 spaCy v3.0 JSON 后,我們需要.spacy使用此命令將訓練和開發 JSON 文件都轉換為二進制文件(使用您自己的更新文件路徑):
Python:
!python -m spacy convert drive/MyDrive/train_set_bert.json ./ -t spacy!python -m spacy convert drive/MyDrive/dev_set_bert.json ./ -t spacy
打開一個新的 Google Colab 項目,并確保在筆記本設置中選擇 GPU 作為硬件加速器。
為了加速訓練過程,我們需要在 GPU 上運行并行處理。為此,我們安裝了 NVIDIA 9.2 CUDA 庫:
Python:
!wget https://developer.nvidia.com/compute/cuda/9.2/Prod/local_installers/cuda-repo-ubuntu1604-9-2-local_9.2.88-1_amd64 -O cuda-repo-ubuntu1604–9–2-local_9.2.88–1_amd64.deb!dpkg -i cuda-repo-ubuntu1604–9–2-local_9.2.88–1_amd64.deb!apt-key add /var/cuda-repo-9–2-local/7fa2af80.pub!apt-get update!apt-get install cuda-9.2
要檢查是否安裝了正確的 CUDA 編譯器,請運行: !nvcc --version
安裝 spacy 庫和 spacy 轉換器管道:
Python:
pip install -U spacy
!python -m spacy download en_core_web_trf
接下來,我們安裝為 CUDA 9.2 配置的 PyTorch 機器學習庫:
Python:
pip install torch==1.7.1+cu92 torchvision==0.8.2+cu92 torchaudio==0.7.2 -f https://download.pytorch.org/whl/torch_stable.html
安裝 PyTorch 后,我們需要安裝針對 CUDA 9.2 調整的 spaCy 轉換器并更改CUDA_PATH和LD_LIBRARY_PATH如下。最后,安裝 CuPy 庫,它相當于 NumPy 庫,但適用于 GPU:
Python:
!pip install -U spacy[cuda92,transformers]
!export CUDA_PATH=”/usr/local/cuda-9.2"
!export LD_LIBRARY_PATH=$CUDA_PATH/lib64:$LD_LIBRARY_PATH
!pip install cupy
SpaCy v3.0 使用config.cfg包含所有模型訓練組件的配置文件來訓練模型。在spaCy 訓練頁面,您可以選擇模型語言(本教程中為英文)、組件(NER)和硬件(GPU)使用并下載配置文件模板。
我們唯一需要做的就是填寫 train 和 dev.spacy文件的路徑。完成后,我們將文件上傳到 Google Colab。
現在我們需要使用 BERT 模型所需的其余參數自動填充配置文件;你所要做的就是運行這個命令:
Python:
!python -m spacy init fill-config drive/MyDrive/config.cfg drive/MyDrive/config_spacy.cfg
如果出現錯誤,我建議調試您的配置文件:
Python:
!python -m spacy debug data drive/MyDrive/config.cfg
我們終于準備好訓練 BERT 模型了!只需運行此命令即可開始訓練:
Python:
!python -m spacy train -g 0 drive/MyDrive/config.cfg — output ./
注意:如果出現錯誤,cupy_backends.cuda.api.driver.CUDADriverError: CUDA_ERROR_INVALID_PTX:則表示 PTX JIT 編譯失敗。只需卸載cupy并重新安裝它,它應該可以解決問題。
如果一切順利,您應該開始看到模型得分和損失正在更新。
在訓練結束時,模型將保存在文件夾下model-best。模型分數位于meta.json文件model-best夾內的文件中:
Python:
“performance”:{“ents_per_type”:{“DIPLOMA”:{“p”:0.5584415584,“r”:0.6417910448,“f”:0.5972222222},“SKILLS”:{“p”:0.6796805679,“r”:0.6742957746,“f”:0.6769774635},“DIPLOMA_MAJOR”:{“p”:0.8666666667,“r”:0.7844827586,“f”:0.8235294118},“EXPERIENCE”:{“p”:0.4831460674,“r”:0.3233082707,“f”:0.3873873874}},“ents_f”:0.661754386,“ents_p”:0.6745350501,“ents_r”:0.6494490358,“transformer_loss”:1408.9692438675,“ner_loss”:1269.1254348834}
由于訓練數據集有限,這些分數肯定遠低于生產模型水平,但值得在示例工作描述中檢查其性能。
要在示例文本上測試模型,我們需要加載模型并在我們的文本上運行它:
Python:
nlp = spacy.load(“./model-best”)
text = ['''Qualifications- A thorough understanding of C# and .NET Core- Knowledge of good database design and usage- An understanding of NoSQL principles- Excellent problem solving and critical thinking skills- Curious about new technologies- Experience building cloud hosted, scalable web services- Azure experience is a plusRequirements- Bachelor's degree in Computer Science or related field(Equivalent experience can substitute for earned educational qualifications)- Minimum 4 years experience with C# and .NET- Minimum 4 years overall experience in developing commercial software''']for doc in nlp.pipe(text, disable=["tagger", "parser"]): print([(ent.text, ent.label_) for ent in doc.ents])
僅使用 120 個培訓文檔就令人印象深刻!我們能夠正確提取大部分技能、文憑、文憑專業和經驗。
隨著更多的訓練數據,模型肯定會進一步改進并產生更高的分數。
關于“怎么使用spaCy v3.0微調BERT變壓器”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。