近期有做信息抽取的需求,UIE在信息抽取方面效果不錯。
模型準備
huggingface上下載UIE模型:PaddlePaddle/uie-base · Hugging Face
點擊“Clone Repository”,確定git clone的鏈接
其中包含大文件,需要在windows安裝git-lfs,在https://git-lfs.com/下載git-lfs,安裝。
git lfs clone 倉庫鏈接
環境配置
UIE使用需要安裝paddlenlp
paddlenlp依賴paddlepaddle-gpu或paddlepaddle;
忘了因為什么原因,python3.7和python3.11上安裝paddlenlp存在問題,在python3.9上成功安裝了。
為了使用GPU進行模型訓練和推理,在GPU機器安裝了NVIDIA Driver、CUDA、Cudnn。
這里踩了個坑:
CUDA?工具包?11.2 配合 cuDNN v8.2.1使用,安裝paddlepaddle-gpu有特定版本
python -m pip install paddlepaddle-gpu==2.4.2.post112 -f https://www.paddlepaddle.org.cn/whl/windows/mkl/avx/stable.html
一定要采用這個版本,如果安裝了paddlepaddle-gpu=2.4.2版本,運行會報錯:
RuntimeError: (PreconditionNotMet) The third-party dynamic library (cudnn64_7.dll) that Paddle depends on is not configured correctly. (error code is 126)
另外,運行時,如果程序中斷,提示錯誤,檢查專用GPU內存幾乎占滿,則八成是模型太大了,GPU內存太小導致的問題,減少模型訓練的batch_size即可。
exit code -1073740791 0xC0000409
UIE運行示例
>>> from pprint import pprint
>>> from paddlenlp import Taskflow>>> schema = ['時間', '選手', '賽事名稱'] # Define the schema for entity extraction
>>> ie = Taskflow('information_extraction', schema=schema)
>>> pprint(ie("2月8日上午北京冬奧會自由式滑雪女子大跳臺決賽中中國選手谷愛凌以188.25分獲得金牌!")) # Better print results using pprint
[{'時間': [{'end': 6,'probability': 0.9857378532924486,'start': 0,'text': '2月8日上午'}],'賽事名稱': [{'end': 23,'probability': 0.8503089953268272,'start': 6,'text': '北京冬奧會自由式滑雪女子大跳臺決賽'}],'選手': [{'end': 31,'probability': 0.8981548639781138,'start': 28,'text': '谷愛凌'}]}]
來源:PaddleNLP/taskflow_text.md at develop · PaddlePaddle/PaddleNLP
UIE 微調
PaddleNLP/applications/information_extraction/text at develop · PaddlePaddle/PaddleNLPUIE在實體識別和關系抽取上的實踐PaddleNLP/applications/information_extraction/text at develop · PaddlePaddle/PaddleNLP