前言
看了百度的UIE 介绍,被它强大的功能震撼到了。于是按文档在自己的服务器上布署了一套。 UIE 是 百度基于Paddle 开发的一套NLP 工具包,可以拿来即用,免去象Pytorch, tensorflow 一样的构建模型,训练预测的过程。对于我们这种小白用户再合适不过。
布署
安装顺序: 先安装 PaddlePaddle, 再装PaddleNLP, 最后才是UIE, LAC。 布署过程中遇到了一些问题:
avx
首先选择的服务器 CPU 不支持avx 指令,安装时,只能限到Python>3.8 ,装不需要avx 指令的PaddlePaddle 版本。接着,再安装PaddleNlp 时报错了,实在没办法。决定换到支持avx 的服务器上。
这需要个工具,查看服务器是否支持avx. window 用CPU-Z 程序。 linux 用cat /proc/cpuinfo | grep flags
后面换了个服务器,支持avx 指令,装PaddlePaddle 很顺利,装PaddleNLP 报错,如下:
setuptools-scm
File "/usr/local/python3/lib/python3.7/site-packages/paddle/__[init__.py](init__.py)", line 25, in <module>
from .framework import monkey_patch_variable
File "/usr/local/python3/lib/python3.7/site-packages/paddle/framework/__[init__.py](init__.py)", line 17, in <module>
解决 : pip install setuptools-scm
CXXABI_
装LAC 报错:
from . import core_avx
ImportError: /lib64/libstdc++.so.6: version CXXABI_1.3.8' not found (required by /usr/local/python3/lib/python3.7/site-packages/paddle/fluid/[core_avx.so](core_avx.so))
这是因为系统libstdc 不支持CXXABI_1.3.8. 可以用这个命令查看:
strings /var/lib/docker/overlay/19ede562b80d3dcb2691bda03c9d98ddef683953d59e31168c1186832c283c32/root/usr/lib64/*** | grep CXXABI
网上有说要装个最新gcc, 但我试了不行。
gcc 可以用yum安装, yum install gcc
下载个libstdc最新版。然后把系统libstdc 指向这里。
sudo rm libstdc++.so.6
sudo ln -s libstdc++.so.6.0.25 libstdc++.so.6
到这,UIE 安装完成了。
lzma问题
但 UIE 在运行时,报错 lzma 找不到:
File "/data/python3/lib/python3.7/_compression.py", line 68, in readinto
data = self.read(len(byte_view))
File "/data/python3/lib/python3.7/_compression.py", line 96, in read
if self._decompressor.needs_input:
AttributeError: '_lzma.LZMADecompressor' object has no attribute 'needs_input'
按网上说安装 backports.lzma ,但不行,还会报其它错。 看到一贴子, github.com/PaddlePaddl… 只能装docker, 或升级python3.8 .
总结:
- PaddlePaddle 安装时,尽量选择最新版,开发时用的1.8.5的版本,在服务器安装报错找不到cv2 ,在社区问,也回答升到最新版。
- 尽量选择支持avx的服务器,不然会有一些未知的问题。
- 安装UIE 的顺序: PaddlePaddle -> PaddleNLP -> UIE, LAC
- 尽量用python3.8 的环境,我在window 10 上用python3.8 装的挺顺利。