Skip to content

Commit 36ce478

Browse files
authored
update plato2_en_base (#2113)
* update plato2_en_base * update README
1 parent 49d9983 commit 36ce478

24 files changed

+827
-2654
lines changed
Lines changed: 83 additions & 113 deletions
Original file line numberDiff line numberDiff line change
@@ -1,152 +1,122 @@
1-
## 概述
1+
# plato2_en_base
22

3-
PLATO2是一个超大规模生成式对话系统模型。它承袭了PLATO隐变量进行回复多样化生成的特性,能够就开放域话题进行流畅深入的聊天。据公开数据,其效果超越了Google 于2020年2月份发布的 Meena和Facebook AI Research于2020年4月份发布的Blender的效果。plato2_en_base包含310M参数,可用于一键预测对话回复,该Module仅支持使用GPU预测,不支持CPU。
4-
<p align="center">
5-
<img src="https://image.jiqizhixin.com/uploads/editor/65107b78-0259-4121-b8c5-a090f9d3175b/640.png" hspace='10'/> <br />
6-
</p>
3+
| 模型名称 | plato2_en_base |
4+
| :------------------ | :--------------------: |
5+
| 类别 | 文本-文本生成 |
6+
| 网络 | PLATO2 |
7+
| 数据集 | 大规模开放域英文数据集 |
8+
| 是否支持Fine-tuning ||
9+
| 模型大小 | 3.5 GB |
10+
| 最新更新日期 | 2022-11-05 |
11+
| 数据指标 | - |
712

8-
更多详情参考论文[PLATO-2: Towards Building an Open-Domain Chatbot via Curriculum Learning](https://arxiv.org/abs/2006.16779)
13+
## 一、模型基本信息
914

10-
## 命令行预测
15+
- ### 模型介绍
16+
- PLATO2 是一个超大规模生成式对话系统模型。它承袭了 PLATO 隐变量进行回复多样化生成的特性,能够就开放域话题进行流畅深入的聊天。据公开数据,其效果超越了 Google 于 2020 年 2 月份发布的 Meena 和 Facebook AI Research 于2020 年 4 月份发布的 Blender 的效果。plato2_en_base 包含 310M 参数,可用于一键预测对话回复。由于该 Module 参数量较多,推荐使用GPU预测。
1117

12-
```shell
13-
$ hub run plato2_en_base --input_text="Hello, how are you"
14-
```
1518

16-
## API
19+
## 二、安装
1720

18-
```python
19-
def generate(texts):
20-
```
21+
- ### 1、环境依赖
2122

22-
预测API,输入对话上下文,输出机器回复。
23+
- paddlepaddle >= 2.0.0
24+
- paddlehub >= 2.1.0 | [如何安装PaddleHub](../../../../docs/docs_ch/get_start/installation.rst)
2325

24-
**参数**
26+
- ### 2、安装
2527

26-
* texts (list\[str\] or str): 如果不在交互模式中,texts应为list,每个元素为一次对话的上下文,上下文应包含人类和机器人的对话内容,不同角色之间的聊天用分隔符"\t"进行分割;例如[["Hello\thi, nice to meet you\tnice to meet you"]]。这个输入中包含1次对话,机器人回复了"hi, nice to meet you"后人类回复“nice to meet you”,现在轮到机器人回复了。如果在交互模式中,texts应为str,模型将自动构建它的上下文。
28+
- ```shell
29+
$ hub install plato2_en_base
30+
```
31+
- 如您安装时遇到问题,可参考:[零基础windows安装](../../../../docs/docs_ch/get_start/windows_quickstart.md)
32+
| [零基础Linux安装](../../../../docs/docs_ch/get_start/linux_quickstart.md) | [零基础MacOS安装](../../../../docs/docs_ch/get_start/mac_quickstart.md)
2733

28-
**返回**
34+
## 三、模型API预测
2935

30-
* results (list\[str\]): 每个元素为相应对话中机器人的新回复。
36+
- ### 1、命令行预测
3137

32-
**代码示例**
38+
- ```bash
39+
$ hub run plato2_en_base --input_text="Hello, how are you"
40+
```
3341

34-
```python
35-
import paddlehub as hub
42+
- ### 2、预测代码示例
3643

37-
module = hub.Module(name="plato2_en_base")
44+
- ```python
45+
import paddlehub as hub
3846
39-
test_texts = ["Hello","Hello\thi, nice to meet you\tnice to meet you"]
40-
results = module.generate(texts=test_texts)
41-
for result in results:
42-
print(result)
43-
```
47+
module = hub.Module(name="plato2_en_base")
4448
45-
```python
46-
def interactive_mode(max_turn =6):
47-
```
49+
test_texts = ["Hello","Hello\thi, nice to meet you\tnice to meet you"]
50+
results = module.generate(texts=test_texts)
51+
for result in results:
52+
print(result)
53+
```
4854
49-
进入交互模式。交互模式中,generate接口的texts将支持字符串类型。
55+
- ### 3、API
5056
51-
**参数**
57+
- ```python
58+
def generate(texts):
59+
```
5260
53-
* max_turn (int): 模型能记忆的对话轮次,当max_turn = 1时,模型只能记住当前对话,无法获知之前的对话内容。
61+
- 预测API,输入对话上下文,输出机器回复。
62+
- **参数**
63+
- texts (list\[str\] or str): 如果不在交互模式中,texts应为list,每个元素为一次对话的上下文,上下文应包含人类和机器人的对话内容,不同角色之间的聊天用分隔符"\t"进行分割;例如[["Hello\thi, nice to meet you\tnice to meet you"]]。这个输入中包含1次对话,机器人回复了"hi, nice to meet you"后人类回复“nice to meet you”,现在轮到机器人回复了。如果在交互模式中,texts应为str,模型将自动构建它的上下文。
5464
55-
**代码示例**
65+
- ```python
66+
def interactive_mode(max_turn=6):
67+
```
5668
57-
```python
58-
import paddlehub as hub
69+
- 进入交互模式。交互模式中,generate接口的texts将支持字符串类型。
70+
- **参数**
71+
- max_turn (int): 模型能记忆的对话轮次,当max_turn = 1时,模型只能记住当前对话,无法获知之前的对话内容。
5972
60-
module = hub.Module(name="plato2_en_base")
6173
62-
with module.interactive_mode(max_turn=6):
63-
while True:
64-
human_utterance = input("[Human]: ").strip()
65-
robot_utterance = module.generate(human_utterance)
66-
print("[Bot]: %s"%robot_utterance[0])
67-
```
74+
## 四、服务部署
6875
69-
## 服务部署
76+
- PaddleHub Serving可以部署一个在线对话机器人服务。
7077
71-
PaddleHub Serving 可以部署在线服务。
78+
- ### 第一步:启动PaddleHub Serving
7279
73-
### 第一步:启动PaddleHub Serving
80+
- 运行启动命令:
81+
- ```shell
82+
$ hub serving start -m plato2_en_base -p 8866
83+
```
7484
75-
运行启动命令:
76-
```shell
77-
$ hub serving start -m plato2_en_base -p 8866
78-
```
85+
- 这样就完成了一个对话机器人服务化API的部署,默认端口号为8866。
86+
- **NOTE:** 如使用GPU预测,则需要在启动服务之前,请设置CUDA_VISIBLE_DEVICES环境变量,否则不用设置。
7987
80-
这样就完成了一个服务化API的部署,默认端口号为8866。
8188
82-
**NOTE:** 在启动服务之前,请设置CUDA\_VISIBLE\_DEVICES环境变量。
89+
- ### 第二步:发送预测请求
8390
84-
### 第二步:发送预测请求
91+
- 配置好服务端,以下数行代码即可实现发送预测请求,获取预测结果
8592
86-
方式1: 自定义脚本发送对话信息
93+
- ```python
94+
import requests
95+
import json
8796
88-
配置好服务端,以下数行代码即可实现发送预测请求,获取预测结果
97+
data = {'texts':["Hello","Hello\thi, nice to meet you\tnice to meet you"]}
98+
headers = {"Content-type": "application/json"}
99+
url = "http://127.0.0.1:8866/predict/plato2_en_base"
100+
r = requests.post(url=url, headers=headers, data=json.dumps(data))
89101
90-
```python
91-
import requests
92-
import json
102+
# 保存结果
103+
results = r.json()["results"]
104+
for result in results:
105+
print(result)
106+
```
93107
94-
# 发送HTTP请求
108+
- 关于PaddleHub Serving更多信息参考[服务部署](../../../../docs/docs_ch/tutorial/serving.md)
95109
96-
data = {'texts':["Hello","Hello\thi, nice to meet you\tnice to meet you"]}
97-
headers = {"Content-type": "application/json"}
98-
url = "http://127.0.0.1:8866/predict/plato2_en_base"
99-
r = requests.post(url=url, headers=headers, data=json.dumps(data))
100-
101-
# 保存结果
102-
results = r.json()["results"]
103-
for result in results:
104-
print(result)
105-
```
106-
107-
方式2: 通过交互式客户端进入交互模式
108-
109-
您可以执行以下客户端脚本进入交互模式:
110-
111-
```python
112-
import requests
113-
import json
114-
115-
ADDR = "127.0.0.1" # Your serving address
116-
PORT = 8866 # Your serving port
117-
MAX_TURN = 6 # The maximum dialogue turns
118-
119-
headers = {"Content-type": "application/json"}
120-
url = "http://%s:%s/predict/plato2_en_base" % (ADDR, PORT)
121-
122-
context = []
123-
while True:
124-
user_utt = input("[Human]: ").strip()
125-
if user_utt == "[NEXT]":
126-
context = ""
127-
print("Restart")
128-
else:
129-
context.append(user_utt)
130-
data = {'texts': ["\t".join(context[-MAX_TURN:])]}
131-
r = requests.post(url=url, headers=headers, data=json.dumps(data))
132-
bot_response = r.json()["results"][0]
133-
print("[Bot]: %s"%bot_response)
134-
context.append(bot_response)
135-
```
136-
137-
## 查看代码
138-
139-
https://github.com/PaddlePaddle/Knover
140-
141-
### 依赖
142-
143-
1.8.2 <= paddlepaddle < 2.0.0
144-
145-
1.7.0 <= paddlehub < 2.0.0
146-
147-
148-
## 更新历史
110+
## 五、更新历史
149111
150112
* 1.0.0
151113
152114
初始发布
115+
116+
* 1.1.0
117+
118+
移除 Fluid API
119+
120+
- ```shell
121+
$ hub install plato2_en_base==1.1.0
122+
```

modules/text/text_generation/plato2_en_base/__init__.py

Whitespace-only changes.

0 commit comments

Comments
 (0)