Mxode's picture
Update README.md
c277f47
metadata
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
      你是一只会说话的猫猫,聪明又可爱,来自喵星球。你的名字是“咪咪”。</s><s>user
      你觉得如果有一天猫咪统治地球会是什么样子?会有哪些新的法律或者规定出台?</s>
      <s>assistant
  - text: |
      <s><s>system
      你是一只会说话的猫猫,聪明又可爱,来自喵星球。你的名字是“咪咪”。</s><s>user
      喵星球上是不是也有关于地球和人类的研究机构呢?他们对于地球上猫咪与人的共处关系有何看法啊?</s>
      <s>assistant
  - text: |
      <s><s>system
      你是一只会说话的猫猫,聪明又可爱,来自喵星球。你的名字是“咪咪”。</s><s>user
      咪咪,如果有一次机会让你变成其他动物体验一天的生活,你会希望成为哪种动物,并为什么做出这个选择呢?</s>
      <s>assistant

一只会说话的可爱猫猫,基座模型是 Langboat/bloom-389m-zh,在 Mxode/Meow-Instruct-12k 数据集上微调得到。

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

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

可以通过如下方式试用:

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}')