File size: 4,835 Bytes
56a1827
 
 
 
 
 
1480861
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
56a1827
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
---
license: apache-2.0
language:
- zh
pipeline_tag: text-generation
---
<div align="center">
    <h1>
        风筝航天科普大模型
    </h1>
</div>

<div align=center>
<img src="img/logo.png"> </img>
</div>

## 新闻

- [2024-05-05] 发布FengZheng-7B-Base以及FengZheng-7B-Chat模型。
- [2024-05-05] 开放FengZheng-7B-Chat模型[在线demo](http://119.45.206.242:5050/)。

## 介绍

本项目基于开源预训练语言模型进行了航天科普领域增量预训练,并在高质量的航天科普对话数据上进行了指令微调,使模型具备了强大的航天科普问题回答能力。
项目开源内容:
- FengZheng-7B-Base模型
- FengZheng-7B-Chat模型
> 请注意,本项目所开源的模型仍然可能生成包含事实性错误的误导性回复或包含偏见/歧视的有害内容,请谨慎鉴别和使用生成的内容,请勿将生成的有害内容传播至互联网。

## 模型下载

| 模型名称 | 模型大小 | 基础模型 | 下载地址 | 备注 |
|:-------:|:-----:|:-----:|:-----:|:-------:|
| FengZheng-7B-Base | 14GB | [Qwen1.5-7B](https://huggingface.co/Qwen/Qwen1.5-7B) | [HuggingFace](https://huggingface.co/MOYER/FengZheng-7B-Base) | 基座模型 |
| FengZheng-7B-Chat | 14GB | [Qwen1.5-7B](https://huggingface.co/Qwen/Qwen1.5-7B) | [HuggingFace](https://huggingface.co/MOYER/FengZheng-7B-Chat) | 对话模型 |

## 环境需求

* `transformers>=4.37.0`

## 模型推理

您可以使用以下代码进行模型推理。
```python
from transformers import AutoModelForCausalLM, AutoTokenizer

device = "cuda"
model = AutoModelForCausalLM.from_pretrained(
    "MOYER/FengZheng-7B-Chat",
    torch_dtype="auto",
    device_map="auto"
)
tokenizer = AutoTokenizer.from_pretrained("MOYER/FengZheng-7B-Chat")
prompt = "神舟十七号的宇航员是谁?"
messages = [
    {"role": "user", "content": prompt}
]
text = tokenizer.apply_chat_template(
    messages,
    tokenize=False,
    add_generation_prompt=True
)
model_inputs = tokenizer([text], return_tensors="pt").to(device)
generated_ids = model.generate(
    model_inputs.input_ids,
    max_new_tokens=512
)
generated_ids = [
    output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
]
response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]
```
请注意,FengZheng-7B-Base为基座模型,没有经过指令微调,因此指令遵循能力有限。

## 模型性能

### 自动评测

我们使用类MMLU数据集的测试方法对FengZheng-7B-Base进行自动评测:
- A-CMMLU:自构建的500道航天科普多项选择题测试集
下表为FengZheng-7B-Base与其他中文开源模型在A-CMMLU评测数据集上的0-shot结果:

|                                   模型名称                                       |    A-CMMLU   |
|:--------------------------------------------------------------------------------:|:-------------:|
|           [Qwen/Qwen1.5-14B](https://huggingface.co/Qwen/Qwen1.5-14B)           |     0.684     |
|            [Qwen/Qwen1.5-7B](https://huggingface.co/Qwen/Qwen1.5-7B)            |     0.622     |
|                     **FengZheng-7B-Base**                                |     0.686     |

> 为了保证评测结果的一致性和公平性,我们的评测脚本统一使用[CMMLU](https://github.com/haonan-li/CMMLU)仓库实现的版本。

### 人工评测
评测者首先提出一个航天科普问题,评测系统将返回由FengZheng-7B-Chat、gpt-3.5-turbo以及gpt-4-1106-preview生成的三个回复。回复文本的顺序被打乱,对应的模型名称也被隐藏,评测者将对三个回复分别给与1~5分的综合评价分数。评价维度包括事实性、丰富性和科普性等。
我们共收集了100条人工打分记录,具体结果如下:
|                  模型                  |     均分     |
|:--------------------------------------:|:------------:|
|           gpt-4-1106-preview           |     4.31     |
|             gpt-3.5-turbo              |     3.40     |
|         **FengZheng-7B-Chat**          |     4.01     |

<div align=center>
<img src="img/eval_result.png"> </img>
</div>

## 未来计划
- [ ] 开源14B版本模型
- [ ] 开源基于[llama3](https://github.com/meta-llama/llama3)训练的模型
- [ ] 增加基于知识库和搜索引擎的RAG组件
- [ ] 探索强化模型问答事实性的偏好对齐方法


## 引用

如果您觉得本项目对您的研究有所帮助或使用了本项目的代码,请引用本项目:

```bibtex
@misc{FengZheng,
    author = {HIT-SCIR-TG},
    title = {FengZheng: An Open-Source Aerospace Science Popularization Assistant},
    year = {2024},
    publisher = {GitHub},
    journal = {GitHub repository},
    howpublished = {\url{https://github.com/maojinyang/FengZheng}}
}
```