UIE安装过程

1,077 阅读2分钟

前言

看了百度的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 .

总结:

  1. PaddlePaddle 安装时,尽量选择最新版,开发时用的1.8.5的版本,在服务器安装报错找不到cv2 ,在社区问,也回答升到最新版。
  2. 尽量选择支持avx的服务器,不然会有一些未知的问题。
  3. 安装UIE 的顺序: PaddlePaddle -> PaddleNLP -> UIE, LAC
  4. 尽量用python3.8 的环境,我在window 10 上用python3.8 装的挺顺利。