hyx21 commited on
Commit
1a2655f
1 Parent(s): dbcd62c

Upload README.md

Browse files
Files changed (1) hide show
  1. README.md +117 -50
README.md CHANGED
@@ -1,72 +1,139 @@
1
- # MiniCPM
2
-
3
- ## 介绍 Introduction
4
-
5
-
6
- - 与`Llama`的关系 The Relationship between `Llama`
7
-
8
- `MiniCPM`与`Llama`均使用了仅解码器架构。代码实现上,`MiniCPM`基于`Llama`实现,增加了放缩机制。
9
-
10
- `MiniCPM` uses Decoder-only Structure as well as `Llama`. The implementation of `MiniCPM` is based on `Llama` code, with scaling mechenism added.
11
-
12
- ## 软件依赖 Dependency
13
-
14
- - `transformers >= 4.36.0`
15
- - `accelerate`
16
-
17
- ## 使用 Usage
18
-
19
- 我们推荐使用`AutoModelForCausalLM`与`AutoTokenizer`载入`MiniCPM`,并使用`torch.bfloat16`作为计算精度。我们推荐在GPU上进行推理。
20
-
21
- We recommend using `AutoModelForCausalLM` and `AutoTokenizer` to load `MiniCPM`, and use `torch.bfloat16` as the calculation precision. GPU reference is recommended.
22
-
23
- 以下是一个使用`MiniCPM`生成的例子。
24
-
25
- An example is provided below for using `MiniCPM` to generate tokens.
26
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
27
  ```python
28
  from transformers import AutoModelForCausalLM, AutoTokenizer
29
  import torch
 
30
 
31
- path = '/data/miniCPM_opensource/miniCPM-bf16' # TODO
32
-
33
  tokenizer = AutoTokenizer.from_pretrained(path)
34
- model = AutoModelForCausalLM.from_pretrained(path, torch_dtype=torch.bfloat16, device_map='auto', trust_remote_code=True)
35
 
36
- dialog = [{'role': 'user', 'content': '请问中国哪几个城市最适合旅游?'}]
37
-
38
- input = tokenizer.apply_chat_template(dialog, tokenize=False, add_generation_prompt=False)
39
- enc = tokenizer(input, return_tensors='pt').to('cuda')
40
-
41
- output = model.generate(**enc, max_length=1024)
42
- print(tokenizer.decode(output[0]))
43
  ```
44
 
45
- 期望的输出 Expected Output:
 
 
 
 
46
  ```
47
- <s> <用户>请问中国哪几个城市最适合旅游?<AI> 中国是一个拥有丰富旅游资源的国家,每个城市都有其独特的魅力。以下是一些建议的中国城市,它们都适合旅游:
48
 
49
- 1. 北京:作为中国的首都,北京拥有丰富的历史和文化资源,如故宫、天安门广场、颐和园、长城等。此外,北京还有许多现代化的景点,如鸟巢、水立方、798艺术区等。
50
 
51
- 2. 上海:作为中国的经济中心,上海拥有许多现代化的建筑和景点,如外滩、东方明珠、豫园等。此外,上海还有许多世界级的博物馆和艺术馆,如上海博物馆、上海科技馆等。
52
 
53
- 3. 西安:作为古都,西安拥有丰富的历史和文化资源,如兵马俑、大雁塔、华清池等。此外,西安还有许多现代化的景点,如钟楼、鼓楼、回民街等。
 
 
 
54
 
55
- 4. 成都:作为美食之都,成都拥有许多著名的美食,如火锅、串串香、麻辣烫等。此外,成都还有许多现代化的景点,如春熙路、武侯祠、大熊猫繁育研究基地等。
 
 
 
56
 
57
- 5. 杭州:作为美丽的西湖所在地,杭州拥有许多著名的景点,如西湖、灵隐寺、宋城等。此外,杭州还有许多现代化的景点,如钱江新城、滨江公园、杭州大剧院等。
58
 
59
- 6. 广州:作为南方城市,广州拥有许多现代化的景点,如珠江夜游、白云山、广州塔等。此外,广州还有许多著名的美食,如广式早茶、肠粉、烧腊等。
 
 
60
 
61
- 7. 南京:作为六朝古都,南京拥有丰富的历史和文化资源,如中山陵、夫子庙、明孝陵等。此外,南京还有许多现代化的景点,如南京博物院、南京大报恩寺、南京奥体中心等。
 
62
 
63
- 8. 武汉:作为江城,武汉拥有许多著名的景点,如黄鹤楼、东湖、户部巷等。此外,武汉还有许多现代化的景点,如武汉长江大桥、武汉科技馆、武汉国际会展中心等。
64
 
65
- 9. 深圳:作为经济特区,深圳拥有许多现代化的景点,如深圳湾公园、华侨城、世界之窗等。此外,深圳还有许多著名的美食,如深圳海鲜、深圳火锅等。
66
 
67
- 10. 青岛:作为海滨城市,青岛拥有美丽的海滩和风景,如青岛奥帆中心、栈桥、崂山等。此外,青岛还有许多现代化的景点,如青岛啤酒博物馆、青岛海洋博物馆、青岛国际啤酒城等。
 
68
 
69
- 以上是一些建议的中国城市,它们都适合旅游。当然,中国还有很多其他美丽的地方,如桂林、黄山、丽江、张家界等,每个地方都有其独特的魅力。在选择旅游目的地时,可以根据自己的兴趣和喜好来决定。</s>
70
  ```
 
 
 
 
 
 
71
 
72
- ## 引用 Reference
 
1
+ ---
2
+ language:
3
+ - en
4
+ - zh
5
+ tags:
6
+ - MiniCPM
7
+ - ModelBest
8
+ - THUNLP
9
+ ---
10
+
11
+
12
+ <div align="center">
13
+ <h1>
14
+ MiniCPM
15
+ </h1>
16
+ </div>
17
+
18
+ <p align="center">
19
+ <a href="XXXX" target="_blank">MiniCPM 技术报告 Technical Report</a> |
20
+ <a href="https://github.com/OpenBMB/OmniLMM/" target="_blank">OmniLMM 多模态模型 Multi-modal Model</a> |
21
+ <a href="https://luca.cn/" target="_blank">CPM-C 千亿模型试用 ~100B Model Trial </a>
22
+ </p>
23
+
24
+ MiniCPM 是面壁与清华大学自然语言处理实验室共同开源的系列端侧语言大模型,主体语言模型 MiniCPM-2B 仅有 24亿(2.4B)的非词嵌入参数量。
25
+ - 经过 SFT 后,MiniCPM 在公开综合性评测集上,MiniCPM Mistral-7B相近(中文、数学、代码能力更优),整体性能超越 Llama2-13B、MPT-30B、Falcon-40B 等模型。
26
+ - 经过 DPO 后,MiniCPM 在当前最接近用户体感的评测集 MTBench上,MiniCPM-2B 也超越了 Llama2-70B-Chat、Vicuna-33B、Mistral-7B-Instruct-v0.1、Zephyr-7B-alpha 等众多代表性开源大模型。
27
+ - 以 MiniCPM-2B 为基础构建端侧多模态大模型 MiniCPM-V,整体性能在同规模模型中实现最佳,超越基于 Phi-2 构建的现有多模态大模型,在部分评测集上达到与 9.6B Qwen-VL-Chat 相当甚至更好的性能。
28
+ - 经过 Int4 量化后,MiniCPM 可在手机上进行部署推理,流式输出速度略高于人类说话速度。MiniCPM-V 也首次跑通了多模态大模型在手机上的部署。
29
+ - 一张1080/2080可高效参数微调,一张3090/4090可全参数微调,一台机器可持续训练 MiniCPM,二次开发成本较低。
30
+
31
+ 我们将完全开源MiniCPM-2B的模型参数供学术研究和有限商用,以及训练过程中的所有Checkpoint和大部分非专有数据供模型机理研究。
32
+
33
+ - 基于MiniCPM-2B的指令微调与人类偏好对**MiniCPM-2B-SFT/DPO。**
34
+ - 基于MiniCPM-2B的多模态模型**MiniCPM-V**,能力超越基于Phi-2的同参数级别多模态模型**。**
35
+ - MiniCPM-2B-SFT/DPO的Int4量化版**MiniCPM-2B-SFT/DPO-Int4。**
36
+ - 基于MLC-LLM、LLMFarm开发的MiniCPM手机端程序,**文本及多模态模型均可在手机端进行推理。**
37
+
38
+
39
+ MiniCPM is an End-Size LLM developed by ModelBest Inc. and TsinghuaNLP, with only 2.4B parameters excluding embeddings.
40
+
41
+ - MiniCPM has very close performance compared with Mistral-7B on open-sourced general benchmarks with better ability on Chinese, Mathmetics and Coding after SFT. The overall performance exceeds Llama2-13B, MPT-30B, Falcon-40B, etc.
42
+ - After DPO, MiniCPM outperforms Llama2-70B-Chat, Vicuna-33B, Mistral-7B-Instruct-v0.1, Zephyr-7B-alpha, etc. on MTBench.
43
+ - MiniCPM can be deployed and infer on smartphones, and the speed of streaming output is relatively higher than the verbal speed of human. MiniCPM-V is the first time that multi-modal models can be deployed on smartphones.
44
+ - The cost of developing based on MiniCPM is low. Parameter efficient finetuning can be conducted with a single 1080/2080 GPU and full parameter finetuning can be conducted with a 3090/4090 GPU.
45
+
46
+ We release all model parameters for research and limited commercial use. We also release all the checkpoint during training and most public training data for research on model mechanism.
47
+
48
+ - SFT and DPO version based on MiniCPM-2B and human preference
49
+ - The multi-modal model MiniCPM-V based on MiniCPM-2B, which outperforms models with similar size, i.e., Phi-2
50
+ - The INT4 quantized version MiniCPM-2B-SFT/DPO-Int4 based on MiniCPM-2B-SFT/DPO
51
+ - Smartphone application based on MLC-LLM and LLMFarm. All models can conduct inference on smartphones.
52
+
53
+
54
+ ### 局限性 Limitations:
55
+
56
+ - 受限于模型规模,模型可能出现幻觉性问题。其中由于DPO模型生成的回复内容更长,更容易出现幻觉。我们也将持续进行MiniCPM模型的迭代改进;
57
+ - 为了保证在学术研究用途上模型的通用性,我们未对模型进行任何身份认同训练。同时由于我们用ShareGPT开源语料作为部分训练数据,模型可能会输出类似GPT系列模型的身份认同信息;
58
+ - 受限于模型规模,模型的��出受到提示词(prompt)的影响较大,可能多次尝试产生不一致的结果;
59
+ - 受限于模型容量,模型的知识记忆较不准确,后续我们将结合RAG方法来增强模型的知识记忆能力。
60
+
61
+ - Due to the size of the model, hallucination might arise. DPO models have longer outputs, which increases the probability of hallucination. We will inhibit the hallucination in the future.
62
+ - To maximum the generalization ability in research, we have not conduct any self-identification training. Since SharedGPT is included in our training data, the model might identify itself as GPT.
63
+ - Due to the size of the model, the output is highly related to the prompt. Multiple runs might give inconsistent results.
64
+ - Due to the capacity of the model, the inaccuracy of its memory remains high. We will increase its memorizing ability with RAG in the future.
65
+
66
+ ## 模型下载 Download
67
+
68
+ | HuggingFace | ModelScope | WiseModel |
69
+ |-------------|------------|-----------|
70
+ |[sft-bf16](https://huggingface.co/openbmb/MiniCPM-2B-sft-bf16)|[sft-bf16](https://modelscope.cn/models/OpenBMB/miniCPM-bf16)|[sft-bf16](https://wisemodel.cn/models/OpenBMB/miniCPM-bf16)
71
+ |[sft-fp32](https://huggingface.co/openbmb/MiniCPM-2B-sft-fp32)|[sft-fp32](https://modelscope.cn/models/OpenBMB/MiniCPM-2B-sft-fp32)|[sft-fp32](https://wisemodel.cn/models/OpenBMB/miniCPM-dpo-fp32)
72
+ |[dpo-bf16](https://huggingface.co/openbmb/MiniCPM-2B-dpo-bf16)|[dpo-bf16](https://modelscope.cn/models/OpenBMB/MiniCPM-2B-dpo-bf16/summary)|[dpo-bf16](https://wisemodel.cn/models/OpenBMB/MiniCPM-2B-dpo-bf16)
73
+ |[dpo-fp16](https://huggingface.co/openbmb/MiniCPM-2B-dpo-fp16)|[dpo-fp16](https://modelscope.cn/models/OpenBMB/MiniCPM-2B-dpo-fp16/)|[dpo-fp16](https://wisemodel.cn/models/OpenBMB/MiniCPM-2B-dpo-fp16)
74
+ |[dpo-fp32](https://huggingface.co/openbmb/MiniCPM-2B-dpo-fp32)|[dpo-fp32](https://modelscope.cn/models/OpenBMB/MiniCPM-2B-dpo-fp32)|[dpo-fp32](https://wisemodel.cn/models/OpenBMB/miniCPM-dpo-fp32)
75
+
76
+ ## 模型使用 Usage
77
+
78
+ * 安装`transformers>=4.36.0`以及`accelerate`后,运行以下代码
79
+ * 注意:需要在`from_pretrained`中明确指明模型的数据类型,否则会引起较大计算误差
80
+ * Run the following code after install `transformers>=4.36.0` and `accelerate`
81
+ * Warning: It is necessary to specify the data type of the model clearly in 'from_pretrained', otherwise large calculation errors will be caused
82
  ```python
83
  from transformers import AutoModelForCausalLM, AutoTokenizer
84
  import torch
85
+ torch.manual_seed(0)
86
 
87
+ path = 'openbmb/MiniCPM-2B-dpo-bf16'
 
88
  tokenizer = AutoTokenizer.from_pretrained(path)
89
+ model = AutoModelForCausalLM.from_pretrained(path, torch_dtype=torch.bfloat16, device_map='cuda', trust_remote_code=True)
90
 
91
+ responds, history = model.chat(tokenizer, "山东省最高的山是哪座山, 它比黄山高还是矮?差距多少?", temperature=0.8, top_p=0.8)
92
+ print(responds)
 
 
 
 
 
93
  ```
94
 
95
+ * 期望输出 Expected Output
96
+ ```shell
97
+ 山东省最高的山是泰山,海拔1545米。
98
+
99
+ 相对于黄山(海拔1864米),泰山海拔较低,相差约319米。
100
  ```
 
101
 
102
+ ## 开源协议 License
103
 
104
+ #### 模型协议 Model License
105
 
106
+ * 本仓库中代码依照 [Apache-2.0](https://github.com/OpenBMB/MiniCPM/blob/main/LICENSE) 协议开源
107
+ * MiniCPM 模型权重的使用则需要遵循 [“通用模型许可协议-来源说明-宣传限制-商业授权”](https://github.com/OpenBMB/General-Model-License/blob/main/%E9%80%9A%E7%94%A8%E6%A8%A1%E5%9E%8B%E8%AE%B8%E5%8F%AF%E5%8D%8F%E8%AE%AE-%E6%9D%A5%E6%BA%90%E8%AF%B4%E6%98%8E-%E5%AE%A3%E4%BC%A0%E9%99%90%E5%88%B6-%E5%95%86%E4%B8%9A%E6%8E%88%E6%9D%83.md)。
108
+ * MiniCPM 模型权重对���术研究完全开放。
109
+ * 如需将模型用于商业用途,请联系cpm@modelbest.cn来获取书面授权,在登记后亦允许免费商业使用。
110
 
111
+ * The code in this repo is released according to [Apache-2.0](https://github.com/OpenBMB/MiniCPM/blob/main/LICENSE)
112
+ * The usage of MiniCPM's parameters is subject to ["General Model License Agreement - Source Notes - Publicity Restrictions - Commercial License"](https://github.com/OpenBMB/General-Model-License/blob/main/)
113
+ * The parameters are fully open to acedemic research
114
+ * Please contact cpm@modelbest.cn to obtain a written authorization for commercial uses. Free commercial use is also allowed after registration.
115
 
116
+ #### 声明 Statement
117
 
118
+ * 作为一个语言模型,MiniCPM 通过学习大量的文本来生成内容,但它无法理解、表达个人观点或价值判断,它所输出的任何内容都不代表模型开发者的观点和立场。
119
+ * 因此用户在使用 MiniCPM 生成的内容时,应自行负责对其进行评估和验证。
120
+ * 如果由于使用 MinCPM 开源模型而导致的任何问题,包括但不限于数据安全问题、公共舆论风险,或模型被误导、滥用、传播或不当利用所带来的任何风险和问题,我们将不承担任何责任。
121
 
122
+ * As an LLM, MiniCPM generates contents by learning a large mount of texts, but it cannot comprehend, express personal opinions or make value judgement. Anything generated by MiniCPM does not represent the views and positions of the model developers
123
+ * We will not be liable for any problems arising from the use of the MinCPM open Source model, including but not limited to data security issues, risk of public opinion, or any risks and problems arising from the misdirection, misuse, dissemination or misuse of the model.
124
 
125
+ <p id="8"></p>
126
 
127
+ ## 工作引用 Reference
128
 
129
+ * 如果觉得MiniCPM有助于您的工作,请考虑引用下列[技术报告](todo)
130
+ * Please refer to the [Technical Report](todo) if this helps
131
 
 
132
  ```
133
+ @inproceedings{minicpm2024,
134
+ title={MiniCPM: todo},
135
+ booktitle={OpenBMB Blog},
136
+ year={2024}
137
+ }
138
+
139