一、环境配置自查:
- 操作系统:window10
- 显卡:gtx1080,8G显存
- cuda版本10.1,查看命令如下:
C:\Users\marso>nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2019 NVIDIA Corporation
Built on Sun_Jul_28_19:12:52_Pacific_Daylight_Time_2019
Cuda compilation tools, release 10.1, V10.1.243
- cuDNN版本7.6.5,查看命令如下:
进入 CUDA 的安装目录查看文件 cudnn.h :(注意修改v10.1)
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\include\cudnn.h
如下所示,cuDNN 版本为 7.6.5 :

- python版本:3.7.6
- rasa版本:2.3.3
- numpy版本必须是:1.16.5,这样才能同时满足,rasa和tensorflow和transfromers的要求
- transfromers版本:4.2.0
二、rasa 安装
用anaconda创建一个rasa的环境虚拟环境
conda create -n rasa python=3.7.6
其中环境env名为:rasa ,python版本3.7.6,创建好后,激活python环境:
activate rasa
由于rasa是包比较大,为了加快安装速度,先设置包的国内镜像,cuda配置代码如下:
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
进入,rasa安装命令如下:
pip install rasa==2.3.3
安装完成后,初始化rasa,命令如下:
rasa init
接下来安装可视化创建客服机器人的工具rasa-x,这里下载比较慢,所以需要用到后备镜像:
pip3 install -i https://pypi.rasa.com/simple rasa-x==0.37.0 --extra-index-url https://pypi.tuna.tsinghua.edu.cn/simple --use-deprecated=legacy-resolver
其中-i 表示要用后面的链接为首选包下载源,因为rasa-x没有发到pypi里面,所以它本身的包必须从官网上去下载,比较慢;
--extra-index-url代表后备镜像源,其他rasa-x依赖的包都用这个源进行下载,比较快
--use-deprecated=legacy-resolver 因为有版本冲突,如果没加这个参数会进入死循环找版本,一直出现: pip is looking at multiple versions of urllib3 to determine which version is compatible with other requirements. This could take a while.
问题:
1、编码问题,在rasax 中保存story的时候有中文就报错,没有就可以直接保持到stories.yml文件中去,错误信息:
Traceback (most recent call last): File "f:\miniconda3\envs\rasa\lib\site-packages\rasa\shared\utils\io.py", line 122, in read_file return f.read() File "f:\miniconda3\envs\rasa\lib\codecs.py", line 322, in decode (result, consumed) = self._buffer_decode(data, self.errors, final) UnicodeDecodeError: 'utf-8' codec can't decode byte 0xcd in position 8635: invalid continuation byte
解决方法:其实文件读方法没有问题,加了encoding编码指定的,问题出在写入临时文件的是未指定编码,修改:rasax\community\services\story_service.py文件的128行,如下红色部分:
with tempfile.NamedTemporaryFile(mode="w", encoding='utf-8', delete=False) as f:
temp_path = f.name
f.write(story_string)