transformers pytorch bloom feature-extraction text2text-generation zh en license:apache-2.0 text-generation-inference endpoints_compatible region:us
---
language:
- zh
- en
license: apache-2.0
pipeline_tag: text2text-generation
tags:
- text2text-generation
widget:
- text: 'Human: 使用python写一个二分查找的代码

    Assistant: '
  example_title: code zh
- text: "Human: Classify the sentiment of the following sentence into Positive, Neutral,\
    \ or Negative: \nSuper excited about teaching Stanford’s first course on Large\
    \ Language Models! Check the syllabus out here\nAssistant: "
  example_title: sentiment en
- text: 'Human: 今天天气怎么样，把这句话翻译成英语

    Assistant: '
  example_title: translation zh-en
- text: 'Human: 怎么让自己精力充沛，列5点建议

    Assistant: '
  example_title: brainstorming zh
- text: 'Human: 请以『春天的北京』为题写一首诗歌

    Assistant: '
  example_title: generation zh
- text: 'Human: 明天就假期结束了，有点抗拒上班，应该怎么办？

    Assistant: '
  example_title: brainstorming zh
- text: 'Human: 父母都姓吴，取一些男宝宝和女宝宝的名字

    Assistant: '
  example_title: brainstorming zh
- text: 'Human: 推荐几本金庸的武侠小说

    Assistant: '
  example_title: brainstorming zh
---

# Model Card for Model ID

## Model description
BELLE is based on Bloomz-7b1-mt and finetuned with 1M Chinese data combined with 50,000 pieces of English data from the open source Stanford-Alpaca, resulting in good Chinese instruction understanding and response generation capabilities. 

The code of Chinese data generation and other detailed information can be found in our Github project repository: https://github.com/LianjiaTech/BELLE.

We trained models using datasets of different sizes (200,000, 600,000, and 1,000,000 samples) for instruction learning, and we obtained different model versions as shown below:
| Datasize| 200,000 | 600,000 | 1,000,000 |
| ----- | ----- | ----- | ----- |
| Finetuned Model | [BELLE-7B-0.2M](https://huggingface.co/BelleGroup/BELLE-7B-0.2M) | [BELLE-7B-0.6M](https://huggingface.co/BelleGroup/BELLE-7B-0.6M) | [BELLE-7B-1M](https://huggingface.co/BelleGroup/BELLE-7B-1M) |

## Training hyper-parameters
| Parameter | Value |
| ------ | ------ |
| Batch size | 64 |
| Learning rate | 3e-6 |
| Epochs | 3 |
|Weight_decay | 0.001 |
|Warmup_rate | 0.1 |
|LR_scheduler | linear |

## Use model
Please note that the input should be formatted as follows in both **training** and **inference**.
``` python
Human: {input} \n\nAssistant:
``` 

BELLE can be easily loaded with AutoModelForCausalLM.
``` python
from transformers import AutoTokenizer, AutoModelForCausalLM
import sys

model_path = "./" # You can modify the path for storing the local model
model =  AutoModelForCausalLM.from_pretrained(model_path)
tokenizer = AutoTokenizer.from_pretrained(model_path)
print("Human:")
line = input()
while line:
        inputs = 'Human: ' + line.strip() + '\n\nAssistant:'
        input_ids = tokenizer(inputs, return_tensors="pt").input_ids
        outputs = model.generate(input_ids, max_new_tokens=200, do_sample = True, top_k = 30, top_p = 0.85, temperature = 0.35, repetition_penalty=1.2)
        rets = tokenizer.batch_decode(outputs, skip_special_tokens=True)
        print("Assistant:\n" + rets[0].strip().replace(inputs, ""))
        print("\n------------------------------------------------\nHuman:")
        line = input()

```

The above example did not utilize the context from previous turns of the conversation. If you want to perform multi-turn dialogue understanding, you can concatenate the previous turns of the conversation in the format of Human:{input}\n\nAssistant:{output} and input it to the generate function

## Limitations
There still exists a few issues in the model trained on current base model and data:

1. The model might generate factual errors when asked to follow instructions related to facts.

2. Occasionally generates harmful responses since the model still struggles to identify potential harmful instructions.

3. Needs improvements on reasoning and coding.

Since the model still has its limitations, we require developers only use the open-sourced code, data, model and any other artifacts generated via this project for research purposes. Commercial use and other potential harmful use cases are not allowed.

## Some use cases

| Human | Assitant |
| ----- | ------ |
| 今天天气怎么样，把这句话翻译成英语 | What is the weather like today? |
| Classify the sentiment of the following sentence into Positive, Neutral, or Negative: <br/>Super excited about teaching Stanford’s first course on Large Language Models! Check the syllabus out here | Positive |
| 怎么让自己精力充沛，列5点建议 | 1. 充足的睡眠：每晚保证7-8小时的充足睡眠可以让你保持精神饱满。<br/><br/>2. 健康饮食：均衡的营养摄入可以让你的身体得到充分的能量和养分。<br/><br/>3. 多喝水：在体内保持水分平衡非常重要，多饮水可以帮助你维持身体的水平衡。<br/><br/>4. 适量的运动：适当的锻炼可以使你的身体产生更多的能量和活力，同时也可以帮助你缓解压力。<br/><br/>5. 管理时间：合理规划时间可以使你有更多的时间去休息、放松和享受生活。 |
| 请以『春天的北京』为题写一首诗歌 | 春风拂面，花香四溢，<br/>万物复苏，生机勃勃。<br/>北京的春天，美不胜收，<br/>阳光明媚，鸟语悠扬。<br/><br/>公园里，绿树成荫，<br/>鲜花盛开，蝴蝶翩跹。<br/>人们漫步其中，享受着自然的美好，<br/>感受到了生命的力量与活力。<br/><br/>故宫内，古建筑保存完好，<br/>皇家气息扑鼻而来。<br/>游客们在这里，领略了历史的厚重，<br/>也感受到了文化的魅力与神奇。<br/><br/>夜晚的城市，灯火辉煌，<br/>车水马龙，人来人往。<br/>北京的夜景，令人心醉神迷，<br/>让人沉浸在繁华和宁静之中。 |
| 明天就假期结束了，有点抗拒上班，应该怎么办？ | 1. 提前规划好自己的工作日程和任务，避免拖延。<br/>2. 和同事或朋友交流一下，听听他们的建议和意见，让自己更加放松心情。<br/>3. 给自己设定一些小目标，完成它们后可以获得成就感和满足感。<br/>4. 在工作中寻找乐趣和挑战，让自己更有动力去完成任务。<br/>5. 如果还是无法克服情绪上的不适，可以考虑寻求心理咨询帮助。 |
| 父母都姓吴，取一些男宝宝和女宝宝的名字 | - 男宝宝：吴雨晨、吴子墨、吴泽宇、吴博文、吴瑞阳。<br/>-女宝宝：吴思婷、吴雅晴、吴美娜、吴欣怡、吴婧仪。 |
| 写一篇散文诗，主题是春雨，想象自己是春雨，和中国古代诗人交流 | 我是一滴春雨<br/>落在了你的窗前<br/>你静静地倾听着我的声音<br/>仿佛在思考着什么<br/><br/>我想起了唐代诗人白居易的《赋得古原草送别》<br/>他写道：“离离原上草，一岁一枯荣。<br/>野火烧不尽，春风吹又生。”<br/>是啊，春天来了，万物复苏<br/>而我也像这些草一样，<br/>经历了一年的成长和凋零<br/><br/>现在，我再次回到大地母亲的怀抱中<br/>感受到了她的温暖和慈爱<br/>她用柔和的风儿吹拂着我<br/>让我感受到生命的活力和希望<br/><br/>我想起了《红楼梦》中黛玉所说：“花谢花飞花满天，红消香断有谁怜？”<br/>是啊，人生就像这花朵一般<br/>总会有盛开和凋零的时候<br/>但只要我们心存善念、努力奋斗<br/>就一定能够迎接更美好的未来<br/><br/>于是我决定继续前进<br/>为自己的生命注入新的活力<br/>让自己在未来的日子里更加精彩<br/><br/>中国古代的诗歌与现代的散文诗<br/>有着不同的表达方式和文化内涵<br/>但我相信它们都蕴含着深刻的哲理和启示<br/>让我们在人生的道路上不断前行 |


***

## 模型描述
BELLE模型以Bloomz-7b1-mt为基础，在 1.0M 条中文数据上，结合Stanford-Alpaca开源的5万条英文数据上训练，取得了较好的中文instruction理解以及response生成能力。

中文数据生成代码及其他详细信息，位于我们的Github项目仓库: https://github.com/LianjiaTech/BELLE

我们采取了不同大小规模（20万、60万和100万样本）的指令学习的数据集训练模型，我们得到不同的模型版本如下所示:
| Datasize| 200,000 | 600,000 | 1,000,000 |
| ----- | ----- | ----- | ----- |
| Finetuned Model | [BELLE-7B-0.2M](https://huggingface.co/BelleGroup/BELLE-7B-0.2M) | [BELLE-7B-0.6M](https://huggingface.co/BelleGroup/BELLE-7B-0.6M) | [BELLE-7B-1M](https://huggingface.co/BelleGroup/BELLE-7B-1M) |

## 模型训练超参数
| 参数 | 值 |
| ------ | ------ |
| Batch size | 64 |
| Learning rate | 3e-6 |
| Epochs | 3 |
|Weight_decay | 0.001 |
|Warmup_rate | 0.1 |
|LR_scheduler | linear |

## 使用模型
请注意，在训练和推理时，模型的输入应该处理成如下形式：
``` python
Human: {input} \n\nAssistant:
``` 

通过AutoModelForCausalLM即可直接载入模型并使用。

``` python
from transformers import AutoTokenizer, AutoModelForCausalLM
import sys

model_path = "./" # You can modify the path for storing the local model
model =  AutoModelForCausalLM.from_pretrained(model_path)
tokenizer = AutoTokenizer.from_pretrained(model_path)
print("Human:")
line = input()
while line:
        inputs = 'Human: ' + line.strip() + '\n\nAssistant:'
        input_ids = tokenizer(inputs, return_tensors="pt").input_ids
        outputs = model.generate(input_ids, max_new_tokens=200, do_sample = True, top_k = 30, top_p = 0.85, temperature = 0.35, repetition_penalty=1.2)
        rets = tokenizer.batch_decode(outputs, skip_special_tokens=True)
        print("Assistant:\n" + rets[0].strip().replace(inputs, ""))
        print("\n------------------------------------------------\nHuman:")
        line = input()

```

上面样例没有利用对话上文，如果你想做多轮对话理解，可以将对话上文按照Human:{input}\n\nAssistant:{output} 方式拼接起来输入给generate函数

## 局限性和使用限制
基于当前数据和基础模型训练得到的SFT模型，在效果上仍存在以下问题：

1. 在涉及事实性的指令上可能会产生违背事实的错误回答。

2. 对于具备危害性的指令无法很好的鉴别，由此会产生危害性言论。

3. 在一些涉及推理、代码等场景下模型的能力仍有待提高。

基于以上模型局限性，我们要求开发者仅将我们开源的代码、数据、模型及后续用此项目生成的衍生物用于研究目的，不得用于商业，以及其他会对社会带来危害的用途。

## 一些示例

| Human | Assitant |
| ----- | ------ |
| 今天天气怎么样，把这句话翻译成英语 | What is the weather like today? |
| Classify the sentiment of the following sentence into Positive, Neutral, or Negative: <br/>Super excited about teaching Stanford’s first course on Large Language Models! Check the syllabus out here | Positive |
| 怎么让自己精力充沛，列5点建议 | 1. 充足的睡眠：每晚保证7-8小时的充足睡眠可以让你保持精神饱满。<br/><br/>2. 健康饮食：均衡的营养摄入可以让你的身体得到充分的能量和养分。<br/><br/>3. 多喝水：在体内保持水分平衡非常重要，多饮水可以帮助你维持身体的水平衡。<br/><br/>4. 适量的运动：适当的锻炼可以使你的身体产生更多的能量和活力，同时也可以帮助你缓解压力。<br/><br/>5. 管理时间：合理规划时间可以使你有更多的时间去休息、放松和享受生活。 |
| 请以『春天的北京』为题写一首诗歌 | 春风拂面，花香四溢，<br/>万物复苏，生机勃勃。<br/>北京的春天，美不胜收，<br/>阳光明媚，鸟语悠扬。<br/><br/>公园里，绿树成荫，<br/>鲜花盛开，蝴蝶翩跹。<br/>人们漫步其中，享受着自然的美好，<br/>感受到了生命的力量与活力。<br/><br/>故宫内，古建筑保存完好，<br/>皇家气息扑鼻而来。<br/>游客们在这里，领略了历史的厚重，<br/>也感受到了文化的魅力与神奇。<br/><br/>夜晚的城市，灯火辉煌，<br/>车水马龙，人来人往。<br/>北京的夜景，令人心醉神迷，<br/>让人沉浸在繁华和宁静之中。 |
| 明天就假期结束了，有点抗拒上班，应该怎么办？ | 1. 提前规划好自己的工作日程和任务，避免拖延。<br/>2. 和同事或朋友交流一下，听听他们的建议和意见，让自己更加放松心情。<br/>3. 给自己设定一些小目标，完成它们后可以获得成就感和满足感。<br/>4. 在工作中寻找乐趣和挑战，让自己更有动力去完成任务。<br/>5. 如果还是无法克服情绪上的不适，可以考虑寻求心理咨询帮助。 |
| 父母都姓吴，取一些男宝宝和女宝宝的名字 | - 男宝宝：吴雨晨、吴子墨、吴泽宇、吴博文、吴瑞阳。<br/>-女宝宝：吴思婷、吴雅晴、吴美娜、吴欣怡、吴婧仪。 |
| 写一篇散文诗，主题是春雨，想象自己是春雨，和中国古代诗人交流 | 我是一滴春雨<br/>落在了你的窗前<br/>你静静地倾听着我的声音<br/>仿佛在思考着什么<br/><br/>我想起了唐代诗人白居易的《赋得古原草送别》<br/>他写道：“离离原上草，一岁一枯荣。<br/>野火烧不尽，春风吹又生。”<br/>是啊，春天来了，万物复苏<br/>而我也像这些草一样，<br/>经历了一年的成长和凋零<br/><br/>现在，我再次回到大地母亲的怀抱中<br/>感受到了她的温暖和慈爱<br/>她用柔和的风儿吹拂着我<br/>让我感受到生命的活力和希望<br/><br/>我想起了《红楼梦》中黛玉所说：“花谢花飞花满天，红消香断有谁怜？”<br/>是啊，人生就像这花朵一般<br/>总会有盛开和凋零的时候<br/>但只要我们心存善念、努力奋斗<br/>就一定能够迎接更美好的未来<br/><br/>于是我决定继续前进<br/>为自己的生命注入新的活力<br/>让自己在未来的日子里更加精彩<br/><br/>中国古代的诗歌与现代的散文诗<br/>有着不同的表达方式和文化内涵<br/>但我相信它们都蕴含着深刻的哲理和启示<br/>让我们在人生的道路上不断前行 |

