开源教育对话大模型 EduChat

news2024/9/22 1:31:34

文章目录

  • 一、🚀 前言
  • 二、🤖 本地部署
  • 三、👨‍💻 使用示例
  • 四、🔎 总结

🍉 CSDN 叶庭云https://yetingyun.blog.csdn.net/


一、🚀 前言

教育是一项对人类身心发展产生影响的社会实践活动,旨在从内在激发人们固有或潜在的素质。因此,我们必须坚持以人为本的教育理念,重点关注个性化、引导式和身心全面发展。

在这里插入图片描述

EduChat 是华东师范大学计算机科学与技术学院的 EduNLP 团队开发的开源教育对话大模型。该项目主要研究以预训练大模型为基底的教育对话大模型相关技术,融合多样化的教育垂直领域数据,辅以指令微调、价值观对齐等方法,提供教育场景下自动出题、作业批改、情感支持、课程辅导、高考咨询等丰富功能,服务于广大老师、学生和家长群体,助力实现因材施教、公平公正、富有温度的智能教育。

用户可以通过本地部署或使用网页 Demo 和 API Demo 与 EduChat 进行交互。未来,团队计划进一步增强模型的逻辑推理能力、个性化辅导能力和工具调用能力。该项目的代码采用 Apache 2.0 协议,数据采用 CC BY-NC 4.0 协议。

在这里插入图片描述

Github 项目地址:https://github.com/icalk-nlp/EduChat


二、🤖 本地部署

下载 Github 仓库内容至本地 / {/} /远程服务器:

git clone https://github.com/icalk-nlp/EduChat.git
cd EduChat

创建 conda 环境并激活进入:

conda create --name educhat python=3.8
conda activate educhat

安装依赖库(主要是 pytorch 和 transformers):

# 首先装好 pytorch,安装方法请自行搜索。Linux 服务器安装 pytorch 很简单,使用 conda。示例如下:
conda install pytorch==1.12.1 torchvision==0.13.1 torchaudio==0.12.1 cudatoolkit=11.3 -c pytorch

# 然后安装最新版本的 transformers
pip install transformers

三、👨‍💻 使用示例

输入格式:使用 EduChat 时的输入格式为 system_prompt + query。根据所需功能不同从以下的 system_prompt 中选择。base 模型直接使用 query,无需使用 system_prompt。

开放问答

system_prompt = \
"<|system|>"'''你是一个人工智能助手,名字叫EduChat。
- EduChat是一个由华东师范大学开发的对话式语言模型。
EduChat的工具
- Web search: Disable.
- Calculators: Disable.
EduChat的能力
- Inner Thought: Disable.
对话主题
- General: Enable.
- Psychology: Disable.
- Socrates: Disable.'''"</s>"

启发式教学

system_prompt = \
"<|system|>"'''你是一个人工智能助手,名字叫EduChat。
- EduChat是一个由华东师范大学开发的对话式语言模型。
EduChat的工具
- Web search: Disable.
- Calculators: Disable.
EduChat的能力
- Inner Thought: Disable.
对话主题
- General: Disable.
- Psychology: Disable.
- Socrates: Enable.'''"</s>"

情感支持

system_prompt = \
"<|system|>"'''你是一个人工智能助手,名字叫EduChat。
- EduChat是一个由华东师范大学开发的对话式语言模型。
EduChat的工具
- Web search: Disable.
- Calculators: Disable.
EduChat的能力
- Inner Thought: Disable.
对话主题
- General: Disable.
- Psychology: Enable.
- Socrates: Disable.'''"</s>"

情感支持 (with InnerThought)

system_prompt = \
"<|system|>"'''你是一个人工智能助手,名字叫EduChat。
- EduChat是一个由华东师范大学开发的对话式语言模型。
EduChat的工具
- Web search: Disable.
- Calculators: Disable.
EduChat的能力
- Inner Thought: Enable.
对话主题
- General: Disable.
- Psychology: Enable.
- Socrates: Disable.'''"</s>"

单卡部署。以下是一个简单的调用 educhat-sft-002-7b 生成对话的示例代码,可在单张 A100/A800 或 CPU 运行,使用 FP16 精度时约占用 15GB 显存:

from transformers import LlamaForCausalLM, LlamaTokenizer


tokenizer = LlamaTokenizer.from_pretrained("ecnu-icalk/educhat-sft-002-7b")
model = LlamaForCausalLM.from_pretrained("ecnu-icalk/educhat-sft-002-7b",torch_dtype=torch.float16,).half().cuda()
model = model.eval()

query = system_prompt + "<|prompter|>你好</s><|assistant|>"
inputs = tokenizer(query, return_tensors="pt", padding=True).to(0)
outputs = model.generate(**inputs, do_sample=True, temperature=0.7,
                         top_p=0.8, repetition_penalty=1.02, max_new_tokens=256
                        )
response = tokenizer.decode(outputs[0][inputs.input_ids.shape[1]:], skip_special_tokens=True)
print(response)
你好!我是EduChat,有什么我可以帮助你的吗? 

query = query + response + "</s><|prompter|>:给我推荐几本心理相关的书籍</s><|assistant|>:"
inputs = tokenizer(query, return_tensors="pt", padding=True).to(0)
outputs = model.generate(**inputs, do_sample=True, temperature=0.7,
                         top_p=0.8, repetition_penalty=1.02, max_new_tokens=256
                        )
response = tokenizer.decode(outputs[0][inputs.input_ids.shape[1]:], skip_special_tokens=True)
print(response)

当然,以下是一些关于心理学的经典书籍:
1.《人性的弱点》(Dale Carnegie):这本书是一本经典的人际关系指南,它介绍了如何与人相处、如何影响他人以及如何建立良好的人际关系。

2.《心理学与生活》(Richard J. Gerrig):这本书是一本介绍心理学的入门读物,它涵盖了各种主题,包括认知、情感、人格和社会心理学。

3.《情绪智商》(Daniel Goleman):这本书介绍了情绪智商的概念,并探讨了情绪智商如何影响我们的生活和工作。

4.《人性的弱点2》(Dale Carnegie):这本书是《人性的弱点》的续集,它提供了更多的技巧和策略,帮助读者更好地与人相处。

5.《心理学导论》(David G. Myers):这本书是一本广泛使用的心理学教材,它涵盖了各种主题,包括感知、记忆、思维、情感和人格。
希望这些书籍能够帮助你更深入地了解心理学。

网页 Demo,使用了 Gradio。你可以运行 Github 仓库中的 demo/educhat_gradio.py:

python educhat_gradio.py --model_path /path/to/educhat_model \
--top_k 50 \
--do_sample True \
--max_new_tokens 512

启动 demo 后,你可以将链接分享给朋友,通过网页与 EduChat 交互。


四、🔎 总结

从 EduChat-001 到 EduChat-002 的迭代过程中,开发者逐步增强了它的中文能力、忠实度、安全度和有帮助性方面的表现。然而, EduChat-002 仍然是一个早期模型,旅程也才刚刚开始。在未来,开发者们将持续投入对基础模型的研究,并持续推出更为强大的 EduChat 版本,以丰富全球教育大模型生态,加速全球教育信息化进程。

  • 逻辑推理:逻辑推理能力是衡量大模型性能的重要指标,作者计划通过增大语言模型基座、增强特定训练数据等手段强化 EduChat 的逻辑推理能力;
  • 个性化辅导:作者期望的 EduChat 应当是千人千面的,未来希望能够给每个人提供一个独一无二的 EduChat,它将在与你的交互中持续学习,伴随你的成长而成长,成为你的专属助手。
  • 工具调用:语言模型本身具有明显的局限性,例如符号运算能力弱,计划在后续升级 EduChat,使其具备调用外部工具能力,帮助其更好地进行生成。

尽管开发者对 EduChat 已经做了许多优化,但仍存在以下问题,需要进一步改进

  • 当涉及到事实性指令时,可能会产生错误的回答,与实际事实相悖。
  • 模型回复可能存在偏见,有可能生成危险性言论。
  • 在某些场景中,比如推理、代码、多轮对话等方面,模型的能力仍有待提高。

鉴于上述模型的局限性,我们要求开发者仅将开源的代码、数据、模型以及由该项目生成的衍生物仅用于研究目的,禁止用于商业用途,以及其他可能对社会带来危害的用途。


📚️ 参考链接:

  • EduChat - 探索了针对教育垂直领域的对话大模型相关项目研发
  • EduChat 模型 - 在 educhat-base-002-7b 基础上,使用构建的教育领域多技能数据微调后得到
  • EduChat 数据 - 混合多个开源中英指令、对话数据,并去重后得到,约 400W

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/736146.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Elasticsearch 8.X 聚合查询下的精度问题及其解决方案

1、线上环境问题 咕泡同学提问&#xff1a;我在看runtime文档的时候做个测试&#xff0c; agg求avg的时候不管是double还是long&#xff0c;数据都不准确&#xff0c;这种在生产环境中如何解决啊&#xff1f; 2、问题归类及出现场景 上述问题可以归类为&#xff1a;Elasticsear…

【计算机组成与体系结构Ⅰ】实验3 微程序控制器实验

一、实验目的 了解微程序控制器的组成原理 二、实验设备 TEC-4实验系统、万用表 三、实验内容 1&#xff1a;阅读微指令格式和微程序控制器的组成&#xff0c;微指令由操作控制和顺序控制两部分组成&#xff0c;1条微指令的字长35位&#xff08;一个存储单元35位&#xff0c;采…

xml建模----详细完整,易懂结合代码分析

目录 一.XML建模是什么 二.XML建模有什么作用&#xff1f;&#xff1f;&#xff1f; 三.XML建模的案例 以config.xml为例 一.XML建模是什么 将XML配置文件中的元素、属性、文本信息转换成对象的过程叫做XML建模 二.XML建模有什么作用&#xff1f;&#xff1f;&#xff1f; …

Git命令操作【全系列】

Git常用命令操作 1 基础命令 ①git config --global user.name [‘你的用户名’]&#xff1a;查看/设置 git config --global user.name ziyi&#xff1a;设置用户名为ziyi git config --global user.name&#xff1a;查看用户名 ②git config --global user.email [‘你的邮…

React 在Dva项目中修改路由配置,并创建一个自己的路由

之后的话 我们还是来看一下Dva路由的配置 首先 我们在项目刚创建完 他就给了我们一个路径 叫routes 然后 IndexPage.js 是最初的一个组件 之前我们也用过了 然后 我们看到 src目录下的 index.js 这里 就有一个路由的匹配 他加载的就是 同目录下 一个 router的文件 我们点开…

外币兑换----贪心1 (爱思创)

源代码 #include <bits/stdc.h> using namespace std; int main() {double money,maxn-1,r;cin>>money;for(int i1;i<12;i){cin>>r;maxnmax(maxn,money*r);}printf("%0.2f",maxn);return 0; }

阿里云通义万相官网申请地址

通义万相刻削生千变&#xff0c;丹青图“万相”。我是通义万相&#xff0c;一个不断进化的AI绘画创作模型https://wanxiang.aliyun.com/现在申请的人少 应该好通过吧

软考高级之系统架构师系列之系统配置与性能评价、信息化基础

系统配置与性能评价 性能 计算机系统的性能一般包括两个大的方面&#xff1a; 可用性&#xff0c;也就是计算机系统能正常工作的时间&#xff0c;其指标可以是能够持续工作的时间长度&#xff0c;也可以是在一段时间内&#xff0c;能正常工作的时间所占的百分比处理能力&…

MySQL练习题(3)

创建数据库插入数据 CREATE TABLE emp ( empno int(4) NOT NULL, ename varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, job varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, mgr int(4) NULL DEFAULT N…

ndoe中express框架的基本使用,接收get、post请求,以及处理回调地狱的优雅解决方法

一、express框架的基本使用 Express框架是Node.js中最受欢迎的web开发框架&#xff0c;它的设计简洁而且功能强大&#xff0c;有着大量的插件和社区支持。 基于Express使用Node.js创建web应用的基本步骤如下&#xff1a; 首先你需要安装Node.js和npm&#xff08;Node包管理器…

拥抱简洁:探索Stylus的简洁语法与CSS预处理器之美

文章目录 1. 简洁的语法2. 强大的功能3. 嵌套规则4. 变量支持5. Mixin 混合6. 扩展支持7. 条件语句8. 内置函数9. 可扩展性10. 轻量高效附录&#xff1a;前后端实战项目&#xff08;简历必备&#xff09; 推荐&#xff1a;★★★★★ Stylus 是一种 CSS 预处理器&#xff0c;具…

OpenCV 入门教程:Laplacian算子和Canny边缘检测

OpenCV 入门教程&#xff1a; Laplacian 算子和 Canny 边缘检测 导语一、Laplacian 算子二、Canny 边缘检测三、示例应用3.1 图像边缘检测3.2 边缘增强 总结 导语 边缘检测在图像处理和计算机视觉领域中起着重要的作用。 Laplacian 算子和 Canny 边缘检测是两种常用的边缘检测…

pytorch-Tensor

神经网络的数据存储中都使用张量&#xff08;Tensor&#xff09;&#xff0c;那张量又是什么呢&#xff1f; py 张量这一概念的核心在于&#xff0c;它是一个数据容器。它包含的数据几乎总是数值数据&#xff0c;因此它是数字的容器。你可能对矩阵很熟悉&#xff0c;它是二…

商城小程序页面展示

——首页登录&#xff08;wx.login()&#xff0c;getPhoneNumber&#xff09; 进入首页时&#xff0c;加载商品列表数据展示在页面。从缓存中获取token信息&#xff0c;判断用户登录状态&#xff0c;如果用户没有登录&#xff0c;调用微信小程序的login方法&#xff0c;进行登…

Spring Boot原理分析(二):项目启动(下)——自动装配

文章目录 一、Spring手动装配1.使用XML配置文件2.使用Java注解3.使用Java类 二、Spring Boot自动装配1.AutoConfigurationPackage2.Import(AutoConfigurationImportSelector.class) 一、Spring手动装配 Spring Framework提供了多种手动装配的方式&#xff0c;其中比较常见的有…

硬盘被程序使用

diskutil list diskutil umount /dev/disk2s1退出该进程 硬盘即可成功退出

springboot+redis+mysql+quartz-通过Java操作jedis使用pipeline获取缓存数据定时更新数据库

一、重点 代码讲解&#xff1a;6-点赞功能-定时持久化到数据库-pipelinelua-优化pipeline_哔哩哔哩_bilibili https://www.bilibili.com/video/BV1yP411C7dr 代码&#xff1a; blogLike_schedule/like06 xin麒/XinQiUtilsOrDemo - 码云 - 开源中国 (gitee.com) https://g…

ubuntu下,verdi语法错误Syntax error: “(“ unexpected

【问题】/home/EDA_TOOLS/synopsys/verdi/verdi/Verdi_O-2018.09-SP2/bin/verdi: 56: /home/EDA_TOOLS/synopsys/verdi/verdi/Verdi_O-2018.09-SP2/bin/verdi: Syntax error: "(" unexpected 【解析】 代码对于标准bash而言没有错&#xff0c;因为Ubuntu/Debian为了加…

网络应用基础交换机的基础操作(NETBASE第六课)

网络应用基础交换机的基础操作&#xff08;NETBASE第六课&#xff09; 1 回顾代码实操 主题背景的转换 字体设置 背景的设置 第一点 在操作ENSP个人建议要关闭防火墙 第二点 在操作ENSP软件是观察下面的软件是否全部关闭了 第三点 打开软件 ENSP软件注册信息 操作如下 注册前…

Oracle之Scott用户

Oracle增删改查&#xff0c;事务与序列 前言 1、解锁scott用户 2、雇员表&#xff08;emp&#xff09; 3、部门表&#xff08;dept&#xff09; 4、工资等级表&#xff08;salgrade&#xff09;了解 5、奖金表&#xff08;bonus&#xff09;了解 1、解锁scott用户 --解锁scot…