# 常见问题

## 使用pip install paddlehub时提示`Could not find a version that satisfies the requirement paddlehub (from versions: )`

这可能是因为pip指向了一个pypi的镜像源，该镜像源没有及时同步paddlehub版本导致。

使用如下命令来安装：

```shell
$ pip install -i https://pypi.org/simple/ paddlehub
```

## 使用paddlehub时，提示`ModuleNotFoundError: No module named 'paddle'`

这是因为PaddleHub依赖于PaddlePaddle，用户需要自行安装合适的PaddlePaddle版本。
如果机器不支持GPU，那么使用如下命令来安装PaddlePaddle的CPU版本：
```shell
$ pip install paddlepaddle
```

如果机器支持GPU，则使用如下命令来安装PaddlePaddle的GPU版本：
```shell
$ pip install paddlepaddle-gpu
```

## 利用PaddleHub ernie/bert进行Finetune时，提示`paddle.fluid.core_avx.EnforceNotMet: Input ShapeTensor cannot be found in Op reshape2`等信息

这是因为ernie/bert module的创建时和此时运行环境中PaddlePaddle版本不对应。
首先将PaddleHub升级至最新版本，同时将ernie卸载。
```shell
$ pip install --upgrade paddlehub
$ hub uninstall ernie
```

## 使用paddlehub时，无法下载预置数据集、module的等现象

下载数据集、module等，PaddleHub要求机器可以访问外网。可以使用server_check()可以检查本地与远端PaddleHub-Server的连接状态，使用方法如下：

```python
import paddlehub
paddlehub.server_check()
# 如果可以连接远端PaddleHub-Server，则显示Request Hub-Server successfully.
# 如果无法连接远端PaddleHub-Server，则显示Request Hub-Server unsuccessfully.
```

## PaddleHub Module是否支持多线程，如何加快Module训练或预测的速度。

PaddleHub Module不支持多线程，可以通过使用GPU、加大batch_size等措施加速训练或者预测。
以下示例为加速LAC Module分词的方法：

```python
results = lac.lexical_analysis(data=inputs, use_gpu=True, batch_size=10)
```

## 如何获取输入句子经过ERNIE编码后的句子表示Embedding？

具体参考[BERT Services]()使用说明

## 在虚拟机Python2环境中使用hub命令报错“Illegal instruction”

请先排除numpy的版本问题：使用pip show numpy检查numpy的版本，如果是1.16.0~1.16.3会出现[numpy错误](https://github.com/numpy/numpy/issues/9532)，请pip uinstall numpy后再用pip install numpy<1.17.0安装新版本的numpy。

## 如何修改PaddleHub的修改预训练模型存放路径？

通过设置系统环境变量HUB_HOME，修改预训练模型存放路径
