update readme

main
JustinLin610 2 years ago
parent 1b5ace1a59
commit d76a9eb530

@ -32,6 +32,7 @@ The following sections include information that you might find it helpful. Speci
* 2023.8.21 We release the Int4 quantized model for Qwen-7B-Chat, **Qwen-7B-Chat-Int4**, which requires low memory costs but achieves improved inference speed. Besides, there is no significant performance degradation on the benchmark evaluation. * 2023.8.21 We release the Int4 quantized model for Qwen-7B-Chat, **Qwen-7B-Chat-Int4**, which requires low memory costs but achieves improved inference speed. Besides, there is no significant performance degradation on the benchmark evaluation.
* 2023.8.3 We release both **Qwen-7B** and **Qwen-7B-Chat** on ModelScope and Hugging Face. We also provide a technical memo for more details about the model, including training details and model performance. * 2023.8.3 We release both **Qwen-7B** and **Qwen-7B-Chat** on ModelScope and Hugging Face. We also provide a technical memo for more details about the model, including training details and model performance.
<br>
## Performance ## Performance
@ -112,12 +113,12 @@ model = AutoModelForCausalLM.from_pretrained("Qwen/Qwen-7B-Chat", device_map="au
# Specify hyperparameters for generation # Specify hyperparameters for generation
model.generation_config = GenerationConfig.from_pretrained("Qwen/Qwen-7B-Chat", trust_remote_code=True) model.generation_config = GenerationConfig.from_pretrained("Qwen/Qwen-7B-Chat", trust_remote_code=True)
# 第一轮对话 1st dialogue turn # 1st dialogue turn
response, history = model.chat(tokenizer, "你好", history=None) response, history = model.chat(tokenizer, "你好", history=None)
print(response) print(response)
# 你好!很高兴为你提供帮助。 # 你好!很高兴为你提供帮助。
# 第二轮对话 2nd dialogue turn # 2nd dialogue turn
response, history = model.chat(tokenizer, "给我讲一个年轻人奋斗创业最终取得成功的故事。", history=history) response, history = model.chat(tokenizer, "给我讲一个年轻人奋斗创业最终取得成功的故事。", history=history)
print(response) print(response)
# 这是一个关于一个年轻人奋斗创业最终取得成功的故事。 # 这是一个关于一个年轻人奋斗创业最终取得成功的故事。
@ -127,7 +128,7 @@ print(response)
# 最终,李明成功地获得了一笔投资,开始了自己的创业之路。他成立了一家科技公司,专注于开发新型软件。在他的领导下,公司迅速发展起来,成为了一家成功的科技企业。 # 最终,李明成功地获得了一笔投资,开始了自己的创业之路。他成立了一家科技公司,专注于开发新型软件。在他的领导下,公司迅速发展起来,成为了一家成功的科技企业。
# 李明的成功并不是偶然的。他勤奋、坚韧、勇于冒险,不断学习和改进自己。他的成功也证明了,只要努力奋斗,任何人都有可能取得成功。 # 李明的成功并不是偶然的。他勤奋、坚韧、勇于冒险,不断学习和改进自己。他的成功也证明了,只要努力奋斗,任何人都有可能取得成功。
# 第三轮对话 3rd dialogue turn # 3rd dialogue turn
response, history = model.chat(tokenizer, "给这个故事起一个标题", history=history) response, history = model.chat(tokenizer, "给这个故事起一个标题", history=history)
print(response) print(response)
# 《奋斗创业:一个年轻人的成功之路》 # 《奋斗创业:一个年轻人的成功之路》
@ -350,6 +351,7 @@ print(response.choices[0].message.content)
<p> <p>
Function calling is also supported (but only when `stream=False` for the moment). See the [example usage](examples/function_call_examples.py) here. Function calling is also supported (but only when `stream=False` for the moment). See the [example usage](examples/function_call_examples.py) here.
<br>
## Deployment ## Deployment
@ -416,25 +418,21 @@ To extend the context length and break the bottleneck of training sequence lengt
<td>+ dynamic_ntk + logn + window_attn</td><td align="center"><b>4.23</b></td><td align="center"><b>3.78</b></td><td align="center"><b>3.58</b></td><td align="center"><b>3.49</b></td><td align="center"><b>4.32</b></td> <td>+ dynamic_ntk + logn + window_attn</td><td align="center"><b>4.23</b></td><td align="center"><b>3.78</b></td><td align="center"><b>3.58</b></td><td align="center"><b>3.49</b></td><td align="center"><b>4.32</b></td>
</tr> </tr>
</table> </table>
<br>
<br><br>
## Reproduction ## Reproduction
For your reproduction of the model performance on benchmark datasets, we provide scripts for you to reproduce the results. Check [eval/EVALUATION.md](eval/EVALUATION.md) for more information. Note that the reproduction may lead to slight differences from our reported results. For your reproduction of the model performance on benchmark datasets, we provide scripts for you to reproduce the results. Check [eval/EVALUATION.md](eval/EVALUATION.md) for more information. Note that the reproduction may lead to slight differences from our reported results.
<br> <br>
## FAQ ## FAQ
If you meet problems, please refer to [FAQ](FAQ.md) and the issues first to search a solution before you launch a new issue. If you meet problems, please refer to [FAQ](FAQ.md) and the issues first to search a solution before you launch a new issue.
<br> <br>
## License Agreement ## License Agreement
Researchers and developers are free to use the codes and model weights of both Qwen-7B and Qwen-7B-Chat. We also allow their commercial use. Check our license at [LICENSE](LICENSE) for more details. If you have requirements for commercial use, please fill out the [form](https://dashscope.console.aliyun.com/openModelApply/qianwen) to apply. Researchers and developers are free to use the codes and model weights of both Qwen-7B and Qwen-7B-Chat. We also allow their commercial use. Check our license at [LICENSE](LICENSE) for more details. If you have requirements for commercial use, please fill out the [form](https://dashscope.console.aliyun.com/openModelApply/qianwen) to apply.
<br> <br>
## Contact Us ## Contact Us

@ -26,7 +26,6 @@
5. **支持插件调用**Qwen-7B-Chat针对插件调用相关的对齐数据做了特定优化当前模型能有效调用插件以及升级为Agent。 5. **支持插件调用**Qwen-7B-Chat针对插件调用相关的对齐数据做了特定优化当前模型能有效调用插件以及升级为Agent。
以下章节的信息可能对你有帮助建议阅读。如果你在使用过程遇到问题建议先查询FAQ如仍无法解决再提交issue。 以下章节的信息可能对你有帮助建议阅读。如果你在使用过程遇到问题建议先查询FAQ如仍无法解决再提交issue。
<br> <br>
## 新闻 ## 新闻
@ -60,7 +59,6 @@ Qwen-7B在多个全面评估自然语言理解与生成、数学运算解题、
此外,根据[OpenCompass](https://opencompass.org.cn/leaderboard-llm)进行的大型语言模型第三方评估Qwen-7B 和 Qwen-7B-Chat 是其中表现最优的7B参数模型。该评估由大量公开基准组成用于评估语言理解和生成、代码生成、数学、推理等。 此外,根据[OpenCompass](https://opencompass.org.cn/leaderboard-llm)进行的大型语言模型第三方评估Qwen-7B 和 Qwen-7B-Chat 是其中表现最优的7B参数模型。该评估由大量公开基准组成用于评估语言理解和生成、代码生成、数学、推理等。
更多的实验结果和细节请查看我们的技术备忘录。点击[这里](tech_memo.md)。 更多的实验结果和细节请查看我们的技术备忘录。点击[这里](tech_memo.md)。
<br> <br>
## 要求 ## 要求
@ -115,12 +113,12 @@ model = AutoModelForCausalLM.from_pretrained("Qwen/Qwen-7B-Chat", device_map="au
# 可指定不同的生成长度、top_p等相关超参 # 可指定不同的生成长度、top_p等相关超参
model.generation_config = GenerationConfig.from_pretrained("Qwen/Qwen-7B-Chat", trust_remote_code=True) model.generation_config = GenerationConfig.from_pretrained("Qwen/Qwen-7B-Chat", trust_remote_code=True)
# 第一轮对话 1st dialogue turn # 第一轮对话
response, history = model.chat(tokenizer, "你好", history=None) response, history = model.chat(tokenizer, "你好", history=None)
print(response) print(response)
# 你好!很高兴为你提供帮助。 # 你好!很高兴为你提供帮助。
# 第二轮对话 2nd dialogue turn # 第二轮对话
response, history = model.chat(tokenizer, "给我讲一个年轻人奋斗创业最终取得成功的故事。", history=history) response, history = model.chat(tokenizer, "给我讲一个年轻人奋斗创业最终取得成功的故事。", history=history)
print(response) print(response)
# 这是一个关于一个年轻人奋斗创业最终取得成功的故事。 # 这是一个关于一个年轻人奋斗创业最终取得成功的故事。
@ -130,7 +128,7 @@ print(response)
# 最终,李明成功地获得了一笔投资,开始了自己的创业之路。他成立了一家科技公司,专注于开发新型软件。在他的领导下,公司迅速发展起来,成为了一家成功的科技企业。 # 最终,李明成功地获得了一笔投资,开始了自己的创业之路。他成立了一家科技公司,专注于开发新型软件。在他的领导下,公司迅速发展起来,成为了一家成功的科技企业。
# 李明的成功并不是偶然的。他勤奋、坚韧、勇于冒险,不断学习和改进自己。他的成功也证明了,只要努力奋斗,任何人都有可能取得成功。 # 李明的成功并不是偶然的。他勤奋、坚韧、勇于冒险,不断学习和改进自己。他的成功也证明了,只要努力奋斗,任何人都有可能取得成功。
# 第三轮对话 3rd dialogue turn # 第三轮对话
response, history = model.chat(tokenizer, "给这个故事起一个标题", history=history) response, history = model.chat(tokenizer, "给这个故事起一个标题", history=history)
print(response) print(response)
# 《奋斗创业:一个年轻人的成功之路》 # 《奋斗创业:一个年轻人的成功之路》
@ -196,7 +194,6 @@ results = pipe(text, history=history)
response, history = results['response'], results['history'] response, history = results['response'], results['history']
print(f'Response: {response}') print(f'Response: {response}')
``` ```
<br> <br>
## Tokenization ## Tokenization
@ -356,6 +353,7 @@ print(response.choices[0].message.content)
<p> <p>
该接口也支持函数调用Function Calling但暂时仅限 `stream=False` 时能生效。用法见[函数调用示例](examples/function_call_examples.py)。 该接口也支持函数调用Function Calling但暂时仅限 `stream=False` 时能生效。用法见[函数调用示例](examples/function_call_examples.py)。
<br>
## 部署 ## 部署
@ -424,25 +422,21 @@ For how to write and use prompts for ReAct Prompting, please refer to [the ReAct
<td>+ dynamic_ntk + logn + local_attn</td><td align="center"><b>4.23</b></td><td align="center"><b>3.78</b></td><td align="center"><b>3.58</b></td><td align="center"><b>3.49</b></td><td align="center"><b>4.32</b></td> <td>+ dynamic_ntk + logn + local_attn</td><td align="center"><b>4.23</b></td><td align="center"><b>3.78</b></td><td align="center"><b>3.58</b></td><td align="center"><b>3.49</b></td><td align="center"><b>4.32</b></td>
</tr> </tr>
</table> </table>
<br> <br>
## 复现 ## 复现
我们提供了评测脚本以供复现我们的实验结果。注意,由于内部代码和开源代码存在少许差异,评测结果可能与汇报结果存在细微的结果不一致。请阅读[eval/EVALUATION.md](eval/EVALUATION.md)了解更多信息。 我们提供了评测脚本以供复现我们的实验结果。注意,由于内部代码和开源代码存在少许差异,评测结果可能与汇报结果存在细微的结果不一致。请阅读[eval/EVALUATION.md](eval/EVALUATION.md)了解更多信息。
<br> <br>
## FAQ ## FAQ
如遇到问题,敬请查阅[FAQ](FAQ_zh.md)以及issue区如仍无法解决再提交issue。 如遇到问题,敬请查阅[FAQ](FAQ_zh.md)以及issue区如仍无法解决再提交issue。
<br> <br>
## 使用协议 ## 使用协议
研究人员与开发者可使用Qwen-7B和Qwen-7B-Chat或进行二次开发。我们同样允许商业使用具体细节请查看[LICENSE](LICENSE)。如需商用,请填写[问卷](https://dashscope.console.aliyun.com/openModelApply/qianwen)申请。 研究人员与开发者可使用Qwen-7B和Qwen-7B-Chat或进行二次开发。我们同样允许商业使用具体细节请查看[LICENSE](LICENSE)。如需商用,请填写[问卷](https://dashscope.console.aliyun.com/openModelApply/qianwen)申请。
<br> <br>
## 联系我们 ## 联系我们

@ -37,12 +37,11 @@ Qwen-7B は、アリババクラウドが提唱する大規模言語モデルシ
* 2023.8.21 Qwen-7B-Chat 用 Int4 量子化モデル **Qwen-7B-Chat-Int4** をリリースしました。また、ベンチマーク評価においても大きな性能低下は見られませんでした。 * 2023.8.21 Qwen-7B-Chat 用 Int4 量子化モデル **Qwen-7B-Chat-Int4** をリリースしました。また、ベンチマーク評価においても大きな性能低下は見られませんでした。
* 2023.8.3 ModelScope と Hugging Face 上で **Qwen-7B****Qwen-7B-Chat** をリリースしました。また、トレーニングの詳細やモデルの性能など、モデルの詳細については技術メモを提供しています。 * 2023.8.3 ModelScope と Hugging Face 上で **Qwen-7B****Qwen-7B-Chat** をリリースしました。また、トレーニングの詳細やモデルの性能など、モデルの詳細については技術メモを提供しています。
<br> <br>
## パフォーマンス ## 性能
一般的に、Qwen-7B は、MMLU、C-Eval、GSM8K、HumanEval、WMT22、CMMLU など、自然言語理解、数学的問題解決、コーディングなどに関するモデルの能力を評価する一連のベンチマークデータセットにおいて、同程度のモデルサイズのベースラインモデルを凌駕しており、さらには 13B 程度のパラメータを持つより大規模なモデルをも凌駕しています。以下の結果をご覧ください。 Qwen-7B は、MMLU、C-Eval、GSM8K、HumanEval、WMT22、CMMLU など、自然言語理解、数学的問題解決、コーディングなどに関するモデルの能力を評価する一連のベンチマークデータセットにおいて、同程度のモデルサイズのベースラインモデルを凌駕しており、さらには 13B 程度のパラメータを持つより大規模なモデルをも凌駕しています。以下の結果をご覧ください。
| Model | MMLU | C-Eval | GSM8K | HumanEval | WMT22 (en-zh) | CMMLU | | Model | MMLU | C-Eval | GSM8K | HumanEval | WMT22 (en-zh) | CMMLU |
| :---------------- | :------------: | :------------: | :------------: | :------------: | :------------: |:------------: | | :---------------- | :------------: | :------------: | :------------: | :------------: | :------------: |:------------: |
@ -119,25 +118,25 @@ model = AutoModelForCausalLM.from_pretrained("Qwen/Qwen-7B-Chat", device_map="au
# 生成のためのハイパーパラメータを指定 # 生成のためのハイパーパラメータを指定
model.generation_config = GenerationConfig.from_pretrained("Qwen/Qwen-7B-Chat", trust_remote_code=True) model.generation_config = GenerationConfig.from_pretrained("Qwen/Qwen-7B-Chat", trust_remote_code=True)
# 第一轮对话 第一回対話ターン # 第一回対話ターン
response, history = model.chat(tokenizer, "你好", history=None) response, history = model.chat(tokenizer, "你好", history=None)
print(response) print(response)
# こんにちは! お役に立ててうれしいです # 你好!很高兴为你提供帮助
# 第二轮对话 第二回対話ターン # 第二回対話ターン
response, history = model.chat(tokenizer, "给我讲一个年轻人奋斗创业最终取得成功的故事。", history=history) response, history = model.chat(tokenizer, "给我讲一个年轻人奋斗创业最终取得成功的故事。", history=history)
print(response) print(response)
# これは、自分のビジネスを始めようと奮闘し、やがて成功する若者の物語である # 这是一个关于一个年轻人奋斗创业最终取得成功的故事
# この物語の主人公は、平凡な家庭に生まれ、平凡な労働者である両親を持つ李明である。 李明は子供の頃から起業家として成功することを目標としていた # 故事的主人公叫李明,他来自一个普通的家庭,父母都是普通的工人。从小,李明就立下了一个目标:要成为一名成功的企业家
# この目標を達成するため、李明は猛勉強して大学に入った。 大学時代には、さまざまな起業家コンテストに積極的に参加し、多くの賞を獲得した。 また、余暇を利用してインターンシップにも参加し、貴重な経験を積んだ # 为了实现这个目标,李明勤奋学习,考上了大学。在大学期间,他积极参加各种创业比赛,获得了不少奖项。他还利用课余时间去实习,积累了宝贵的经验
# 卒業後、李明は起業を決意した。 投資先を探し始めたが、何度も断られた。 しかし、彼はあきらめなかった。 彼は懸命に働き続け、ビジネスプランを改善し、新たな投資機会を探した # 毕业后,李明决定开始自己的创业之路。他开始寻找投资机会,但多次都被拒绝了。然而,他并没有放弃。他继续努力,不断改进自己的创业计划,并寻找新的投资机会
# やがて李明は投資を受けることに成功し、自分のビジネスを始めた。 彼は新しいタイプのソフトウェアの開発に焦点を当てたテクノロジー会社を設立した。 彼のリーダーシップの下、会社は急速に成長し、テクノロジー企業として成功を収めた # 最终,李明成功地获得了一笔投资,开始了自己的创业之路。他成立了一家科技公司,专注于开发新型软件。在他的领导下,公司迅速发展起来,成为了一家成功的科技企业
# 李明の成功は偶然ではない。 彼は勤勉で、たくましく、冒険好きで、常に学び、自分を高めている。 彼の成功はまた、努力すれば誰でも成功できることを証明している # 李明的成功并不是偶然的。他勤奋、坚韧、勇于冒险,不断学习和改进自己。他的成功也证明了,只要努力奋斗,任何人都有可能取得成功
# 第三轮对话 第三回対話ターン # 第三轮对话 第三回対話ターン
response, history = model.chat(tokenizer, "给这个故事起一个标题", history=history) response, history = model.chat(tokenizer, "给这个故事起一个标题", history=history)
print(response) print(response)
# 《起業への奮闘:ある若者の成功への道 # 《奋斗创业:一个年轻人的成功之路
``` ```
Qwen-7B の学習済みベースモデルの実行も簡単です。 Qwen-7B の学習済みベースモデルの実行も簡単です。
@ -162,11 +161,11 @@ model = AutoModelForCausalLM.from_pretrained("Qwen/Qwen-7B", device_map="auto",
# 生成のためのハイパーパラメータを指定 # 生成のためのハイパーパラメータを指定
model.generation_config = GenerationConfig.from_pretrained("Qwen/Qwen-7B", trust_remote_code=True) model.generation_config = GenerationConfig.from_pretrained("Qwen/Qwen-7B", trust_remote_code=True)
inputs = tokenizer('モンゴルの首都はウランバートルUlaanbaatar\nアイスランドの首都はレイキャビクReykjavik\nエチオピアの首都は', return_tensors='pt') inputs = tokenizer('蒙古国的首都是乌兰巴托Ulaanbaatar\n冰岛的首都是雷克雅未克Reykjavik\n埃塞俄比亚的首都是', return_tensors='pt')
inputs = inputs.to(model.device) inputs = inputs.to(model.device)
pred = model.generate(**inputs) pred = model.generate(**inputs)
print(tokenizer.decode(pred.cpu()[0], skip_special_tokens=True)) print(tokenizer.decode(pred.cpu()[0], skip_special_tokens=True))
# モンゴルの首都はウランバートルUlaanbaatar\nアイスランドの首都はレイキャビクReykjavik\nエチオピアの首都はアディスアベバAddis Ababa... # 蒙古国的首都是乌兰巴托Ulaanbaatar\n冰岛的首都是雷克雅未克Reykjavik\n埃塞俄比亚的首都是亚的斯亚贝巴Addis Ababa...
``` ```
</details> </details>
@ -421,25 +420,21 @@ ReAct プロンプトの書き方や使い方については、[ReAct の例](ex
<td>+ dynamic_ntk + logn + window_attn</td><td align="center"><b>4.23</b></td><td align="center"><b>3.78</b></td><td align="center"><b>3.58</b></td><td align="center"><b>3.49</b></td><td align="center"><b>4.32</b></td> <td>+ dynamic_ntk + logn + window_attn</td><td align="center"><b>4.23</b></td><td align="center"><b>3.78</b></td><td align="center"><b>3.58</b></td><td align="center"><b>3.49</b></td><td align="center"><b>4.32</b></td>
</tr> </tr>
</table> </table>
<br>
<br><br>
## 再現 ## 再現
ベンチマークデータセットでのモデル性能の再現のために、結果を再現するスクリプトを提供しています。詳しくは [eval/EVALUATION.md](eval/EVALUATION.md) を確認してください。なお、再現の結果、我々の報告結果と若干異なる場合があります。 ベンチマークデータセットでのモデル性能の再現のために、結果を再現するスクリプトを提供しています。詳しくは [eval/EVALUATION.md](eval/EVALUATION.md) を確認してください。なお、再現の結果、我々の報告結果と若干異なる場合があります。
<br> <br>
## FAQ ## FAQ
問題が発生した場合は、まずは [FAQ](FAQ_ja.md) や issue を参照し、新しい issue を立ち上げる前に解決策を探してください。 問題が発生した場合は、まずは [FAQ](FAQ_ja.md) や issue を参照し、新しい issue を立ち上げる前に解決策を探してください。
<br> <br>
## ライセンス契約 ## ライセンス契約
Qwen-7B と Qwen-7B-Chat のコードとモデルウェイトは、研究者や開発者が自由に使用することができます。また、商用利用も可能です。詳しくは [LICENSE](LICENSE) をご覧ください。商用利用を希望される方は、[リクエストフォーム](https://dashscope.console.aliyun.com/openModelApply/qianwen)に必要事項をご記入の上、お申し込みください。 Qwen-7B と Qwen-7B-Chat のコードとモデルウェイトは、研究者や開発者が自由に使用することができます。また、商用利用も可能です。詳しくは [LICENSE](LICENSE) をご覧ください。商用利用を希望される方は、[リクエストフォーム](https://dashscope.console.aliyun.com/openModelApply/qianwen)に必要事項をご記入の上、お申し込みください。
<br> <br>
## お問い合わせ ## お問い合わせ

@ -15,7 +15,7 @@ from transformers import AutoModelForCausalLM, AutoTokenizer
from transformers.generation import GenerationConfig from transformers.generation import GenerationConfig
from transformers.trainer_utils import set_seed from transformers.trainer_utils import set_seed
DEFAULT_CKPT_PATH = 'QWen/QWen-7B-Chat' DEFAULT_CKPT_PATH = 'Qwen/Qwen-7B-Chat'
_WELCOME_MSG = '''\ _WELCOME_MSG = '''\
Welcome to use Qwen-7B-Chat model, type text to start chat, type :h to show command help Welcome to use Qwen-7B-Chat model, type text to start chat, type :h to show command help

Loading…
Cancel
Save