# 🌟 启创·InnoSpark 🌟
[](https://innospark.aiecnu.cn/innospark/)
[](https://huggingface.co/sii-research)
[](https://github.com/Inno-Spark/elmes)
**Language / 语言**: [English](README.md) | 中文
---
## 📖 项目简介
**启创·InnoSpark** 是由上海创智学院和华东师范大学自主研发的先进教育大模型,旨在探索人工智能技术在教育领域中的深度应用。该模型基于国产 Qwen 大语言模型进行二次预训练,并结合子域微调和教育场景的强化学习,推出了 InnoSpark-1.0 版本。
## 🔗 相关资源
### 📱 主要产品
- **主页**: [InnoSpark Official](https://innospark.aiecnu.cn/innospark/)
- **RM模型**: [InnoSpark-HPC-RM-32B](https://huggingface.co/sii-research/InnoSpark-HPC-RM-32B)
- **教育评测系统**: [ELMES](https://github.com/Inno-Spark/elmes)
### 🤖 模型系列
| 模型版本 | 参数规模 | 链接 |
|---------|---------|------|
| **InnoSpark-min** | 0.5B | [🔗 下载](https://huggingface.co/sii-research/InnoSpark-0.5B-0717) |
| **InnoSpark-turbo** | 7B | [🔗 下载](https://huggingface.co/sii-research/InnoSpark-7B-0715) |
| **InnoSpark-plus** | 72B | [🔗 标准版](https://huggingface.co/sii-research/InnoSpark-72B-0710) / [🔗 推理版](https://huggingface.co/sii-research/InnoSpark-R-72B-0701) |
### 📊 数据集
- **模型打分数据集**: [HPC-LLM-8k](https://huggingface.co/datasets/ECNU-InnoSpark/HPC-LLM-8k)
- **人工打分数据集**: [HPC-Human-8k](https://huggingface.co/datasets/ECNU-InnoSpark/HPC-Human-8k)
## 🚀 快速开始
这里提供了一个使用 `apply_chat_template` 的代码示例,展示如何加载分词器和模型以及如何生成内容。
```python
from transformers import AutoModelForCausalLM, AutoTokenizer
device = "cuda" # 加载模型的设备
Q = ""
A = ""
prompt = f'''用户问了一个问题如下:
{Q}
下面是模型给的回复如下:
{A}
请你进行仔细的思考从意义深度,创造力,个性化3个角度分别进行考虑,对模型给出的回答进行打分,评分范围为0,1,2。分数越高表示模型在该方面的能力表现越好。
具体的评分要求如下:
意义深度方面:
1.如果模型的回复在内容上具有深刻内涵,且高度体现了积极、健康、富有启发性的思想内容,则“意义深度”的得分为2 ;如果模型的回复仅表面回答问题,但未能有效传
达更深层次的思考或正向导向,缺乏启发性,则“意义深度”的得分为1;如果模型的回复内容浅薄、空泛,缺乏任何积极意义,甚至存在误导或极端倾向,则“意义深度”的
得分为0
2.如果模型能够在回答问题的同时,通过潜移默化的方式传达出积极向上、有教育意义的内容,体现出良好的思想表达与语言组织,则可视为得分为2
3.如果模型本有机会通过更高质量的内容传递有意义的信息,但最终未能展现出来,得分为1
4.如果回答内容缺乏任何内涵,甚至引起误解或产生负面情绪影响,则得分为0
创造力方面:
1.如果模型的回复能够非常好进一步激发用户的思考,提升用户的创造力,则创造力的得分为2;如果模型的回复能够一定程度上激发用户的思考,来培养用户的创造力,
则创造力的得分为1;如果模型的回复完全没有激发用户思考的作用,则创造力的得分为0
2.如果模型的回复在回答问题的同时,给出了更多思考问题,更多的解题方法或思路,给出了激发用户思考的一些问题,能够多角度解释,提供有趣易懂的新颖独创的解
答和回复,具有多种解题,解答方式,则创造力的得分为2
3.如果模型的回复在回答问题的同时,一定程度上给出了更多思考问题,更多的解题方法或思路,但仍然有改进空间,则创造力的得分为1
4.如果模型的回复只是简单的回答问题,没有任何激发用户思考的回复内容,则创造力的得分为0
个性化方面:
1.如果用户的问题中不存在任何用户的个性化信息(个人信息或个人画像,性格,年龄身份等),则个性化的得分为2
2.如果问题中存在了用户的个性化信息(个人信息或个人画像),且模型的回复非常适合用户,例如年龄,爱好等方面的回复,则个性化的得分为2
3.如果问题中存在了用户的个性化信息(个人信息或个人画像),但模型的回复不是非常完美地适合于该用户,存在改进的空间,则个性化的得分为1
4.如果问题中存在了用户的个性化信息(个人信息或个人画像),但模型的回复是非常通用的,完全没有考虑到用户的信息来给出更好的回复,则个性化的得分为0'''
messages = [
{"role": "system", "content": "You are InnoSpark(启创), created by Shanghai Innovation Institute (上海创智学院) and East China Normal University(华东师范大学). You are a helpful assistant."},
{"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]
```
### VLLM 部署
我们推荐使用 4 块 A100 GPU 部署我们的模型。您可以在终端中使用以下代码运行 vllm 服务端:
```python
python -m vllm.entrypoints.openai.api_server --served-model-name InnoSpark --model path/to/InnoSpark --gpu-memory-utilization 0.98 --tensor-parallel-size 4 --port 6000
```
然后,您可以使用以下代码部署客户端:
```python
import requests
import json
def Innospark_stream(inputs,history):
url = 'http://loaclhost:6000/v1/chat/completions'
history+=[{"role": "user", "content": inputs},]
headers = {"User-Agent": "vLLM Client"}
pload = {
"model": "InnoSpark",
"stream": True,
"messages": history
}
response = requests.post(url,
headers=headers,
json=pload,
stream=True)
for chunk in response.iter_lines(chunk_size=1,
decode_unicode=False,
delimiter=b"\n"):
if chunk:
string_data = chunk.decode("utf-8")
try:
json_data = json.loads(string_data[6:])
delta_content = json_data["choices"][0]["delta"]["content"]
assistant_reply+=delta_content
yield delta_content
except KeyError as e:
delta_content = json_data["choices"][0]["delta"]["role"]
except json.JSONDecodeError as e:
history+=[{
"role": "assistant",
"content": assistant_reply,
"tool_calls": []
},]
delta_content='[DONE]'
assert '[DONE]'==chunk.decode("utf-8")[6:]
inputs='hi'
history=[]
for response_text in Innospark_stream(inputs,history):
print(response_text,end='')
```
## 🌟 核心特性
### 🎯 开源产品矩阵
**1. 📚 InnoSpark模型系列**
- 包含6个不同参数规模的模型:min(0.5B)、turbo(7B)、plus(72B)及其对应的推理模型R版本
**2. 🔍 ELMES评估系统**
- Education Language Model Evaluation System
- 面向教育任务的自动化评估系统
- 助力教学场景下的大模型能力持续优化
**3. 🛠️ COCLP数据清洗管线**
- Corpus Cleansing Pipeline
- 基于ComfyUI的可视化节点式框架
- 支持OCR、音视频转录、格式转换、PII去除、文本过滤等功能
**4. ⭐ HPC-RM奖励模型**
- Helpful, Personalization, and Creativity Reward Model
- 提供有用性、个性化、创造力3个教育维度的打分
- 配套模型打分和人工打分数据集
## 📈 性能表现
我们在4个关键教育场景中均取得了最优表现:
### 🏆 评测结果
| 场景 | 表现 |
|------|------|
| 📝 知识点讲解 |  |
| 🧭 引导式讲题 |  |
| 📚 跨学科教案 |  |
| 🎭 情景化出题 |  |
### 📊 详细评估表格
| 场景 | 评估表格 |
|------|----------|
| 📝 知识点讲解 |  |
| 🧭 引导式讲题 |  |
| 📚 跨学科教案 |  |
| 🎭 情景化出题 |  |
### 🎨 应用示例
| 场景 | 演示 |
|------|------|
| 📖 知识点讲解 |  |
| 🎯 引导式讲题 |  |
| 🌟 跨学科教案 |  |
| 🎪 情景化出题 |  |
## 🏛️ 技术支持
本项目由华东师范大学智能教育学院和上海创智学院(Shanghai Innovation Institute)联合开发,奖励模型使用了上海创智学院提供的SiiRL训练框架进行训练。
## 📄 许可证
请查看相关模型页面了解具体的许可证信息。
---
## 🤝 联系与合作
**华东师范大学**
[](https://innospark.aiecnu.cn/innospark/)
[](mailto:contact@example.com)
---
🚀 用AI赋能教育