File size: 3,289 Bytes
bd5fb13
b2448e5
 
 
 
 
 
 
 
 
 
 
 
 
7ca5760
b2448e5
c52ceb1
63c52cf
c52ceb1
fc27f69
 
bf7e619
63c52cf
bf7e619
 
 
248014f
e4c44ea
cc6c14e
 
63c52cf
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
248014f
 
 
 
 
 
 
 
8ab07b2
248014f
 
 
 
 
 
 
 
 
 
 
 
 
 
8df8991
 
 
 
 
 
 
 
 
 
 
 
 
 
 
63c52cf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
---
language: 
- zh
tags:
- t5
- pytorch
- prompt
- zh
- Text2Text-Generation
license: "apache-2.0"
widget:
- text: "宫颈癌的早期会有哪些危险信号"
- text: "夏季如何进行饮食调养养生?"
---

中文版对话机器人

在1000w+问答和对话数据上做有监督预训练

## 注意事项

1、请使用下面方式调用模型输出结果,Hosted inference API的结果因为我无法修改后台推理程序,不能保证模型输出效果,只是举了两个例子展示。

2、模型采用top p的解码方式,每次运行可能结果都略微有些不同。

3、目前模型还是初步迭代完1epoch,数据种类数据量现阶段算是比较少模型效果的话勉勉强强,后续还会加入更多数据进行迭代优化,到时候会更新。


## 模型推理

Install package:
```
pip install transformers 
```

```python
import os
os.environ["CUDA_VISIBLE_DEVICES"] = '-1'
import torch
from torch import cuda
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM
tokenizer = AutoTokenizer.from_pretrained("mxmax/Chinese_Chat_T5_Base")
model = AutoModelForSeq2SeqLM.from_pretrained("mxmax/Chinese_Chat_T5_Base") 
device = 'cuda' if cuda.is_available() else 'cpu'
model_trained.to(device)
def postprocess(text):
  return text.replace(".", "").replace('</>','')

def answer_fn(text, sample=False, top_p=0.6):
  encoding = tokenizer(text=[text], truncation=True, padding=True, max_length=256, return_tensors="pt").to(device) 
  out = model.generate(**encoding, return_dict_in_generate=True, output_scores=False, max_length=512,temperature=0.5,do_sample=True,repetition_penalty=6.0 ,top_p=top_p)
  result = tokenizer.batch_decode(out["sequences"], skip_special_tokens=True)
  return postprocess(result[0]) 
text="宫颈癌的早期会有哪些危险信号"
result=answer_fn(text, sample=True, top_p=0.6)
print('prompt:',text)
print("result:",result)
```

## 预测示例
#### 普通百科问答
```bash
Input:
关于基金啥叫前端申购代码,后端申购代码.有啥区别.有甚么作用.
Model output:
前端申购代码: 1在基金公司网站上输入"赎回申请书(或直接到证券公司的柜台),填写“委托人及受托银行”的注册信息 2将指定金额提交给投资者 3根据提示完成操作 4确认并修改交易规则,确定是否需要转换为其他方式进行投资。
```

```bash
Input:
深圳哪家店火锅好吃?
Model output:
火锅店 地址:深圳宝安区沙井路20号(深大对面)。
```

```bash
Input:
北京有哪些景点方好玩呢推荐下
Model output:
故宫的门票是5元,如果去的话可以先到北京故宫博物院看看。
```

#### 医学领域问答
```bash
Input:
重感冒的话吃什么药
Model output:
你好,根据你的描述属于病毒感染引起的症状,需要增加营养补充维生素微量元素,易消化饮食。可以服用感冒药如复方氨酚脘胺颗粒治疗看看
```

```bash
Input:
胃癌如何筛查
Model output:
你好,胃癌的诊断标准是:1早期确诊,明确病因。2根据病史、病理类型及有无并发症等综合分析;3结合临床症状和体征进行初步判断是否为癌前病变或有肿瘤变现趋势者(如无明显变化) 4对患者的情况做进一步检查以确定治疗方案
```