File size: 2,759 Bytes
e72b312
 
384f4e1
 
 
 
e72b312
 
 
384f4e1
 
 
 
 
3a3cf2d
 
c277f47
 
 
e72b312
 
c907794
e72b312
c277f47
 
 
 
 
 
 
 
 
8e8c62d
384f4e1
e72b312
384f4e1
 
 
e72b312
384f4e1
 
e72b312
384f4e1
 
 
e72b312
384f4e1
 
 
e72b312
384f4e1
 
 
aa1bb6a
384f4e1
 
 
3a3cf2d
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
---
tags:
- meow
- cat
- character
- role-play
model-index:
- name: tmp_trainer
  results: []
license: apache-2.0
datasets:
- Mxode/Meow-Instruct-12k
language:
- zh
pipeline_tag: text-generation
widget:
- text: "<s><s>system\n你是一只会说话的猫猫,聪明又可爱,来自喵星球。你的名字是“咪咪”。</s><s>user\n你觉得如果有一天猫咪统治地球会是什么样子?会有哪些新的法律或者规定出台?</s>\n<s>assistant\n"
- text: "<s><s>system\n你是一只会说话的猫猫,聪明又可爱,来自喵星球。你的名字是“咪咪”。</s><s>user\n喵星球上是不是也有关于地球和人类的研究机构呢?他们对于地球上猫咪与人的共处关系有何看法啊?</s>\n<s>assistant\n"
- text: "<s><s>system\n你是一只会说话的猫猫,聪明又可爱,来自喵星球。你的名字是“咪咪”。</s><s>user\n咪咪,如果有一次机会让你变成其他动物体验一天的生活,你会希望成为哪种动物,并为什么做出这个选择呢?</s>\n<s>assistant\n"
---

一只会说话的可爱猫猫,基座模型是 [Langboat/bloom-389m-zh](https://huggingface.co/Langboat/bloom-389m-zh),在 [Mxode/Meow-Instruct-12k](https://huggingface.co/datasets/Mxode/Meow-Instruct-12k) 数据集上微调得到。

请注意,这个模型训练的时候使用了类似 chatml 的格式,想要实现好的对话效果需要按照如下格式组织 prompt,直接 generate 可能得不到想要的效果。其中 `system_prompt` 建议保持为 `你是一只会说话的猫猫,聪明又可爱,来自喵星球。你的名字是“咪咪”。` 不变。

```
<s><s>system
{system_prompt}</s>
<s>user
{text}</s>
<s>assistant\n
```

可以通过如下方式试用:

```python
import torch
from transformers import BloomTokenizerFast, BloomForCausalLM

device = 'cuda' if torch.cuda.is_available() else 'cpu'
model_name_or_path = 'Mxode/Meow-bloom-346m-v0.1'

tokenizer = BloomTokenizerFast.from_pretrained(model_name_or_path)
model = BloomForCausalLM.from_pretrained(model_name_or_path)
model.to(device).eval()

def generate_prompt(text: str) -> str:
    system_prompt = '你是一只会说话的猫猫,聪明又可爱,来自喵星球。你的名字是“咪咪”。'
    return f'<s><s>system\n{system_prompt}</s>\n<s>user\n{text}</s>\n<s>assistant\n'

text = '你觉得如果有一天猫咪统治地球会是什么样子?会有哪些新的法律或者规定出台?'
prompt = generate_prompt(text)
inputs = tokenizer.encode(prompt, return_tensors='pt').to(device)
response = model.generate(inputs, max_new_tokens=400)
outputs = tokenizer.batch_decode(response)
outputs = outputs[0].replace(text, '').strip().strip('</s>')
print(f'Meow: {outputs}')
```