ChatGPT开源平替——OpenChatKit(前OpenAI团队打造)

OpenChatKit是一个由前OpenAI研究员共同打造的开源聊天机器人平台。它包含了训练好的大型语言模型、定制配方和可扩展的检索系统,可以帮助用户快速构建高精度、多功能的聊天机器人应用。

其中,最核心的组件是一个经过微调的、具有200亿参数的语言模型——GPT-NeoXT-Chat-Base-20B。这个模型基于EleutherAI的GPT-NeoX模型,重点调整了多轮对话、问答、分类、提取和摘要等多项任务,并使用了4300万条高质量指令进行训练。这使得OpenChatKit在处理聊天对话时可以提供高精度、流畅的回答。

除此之外,OpenChatKit还提供了定制配方的功能,可以帮助用户根据自己的数据集微调模型,以提高模型在特定任务上的表现。另外,该平台还提供了可扩展的检索系统,可以从文档存储库、API或实时更新信息源等多个来源中检索信息,以提供更全面的回答。

OpenChatKit详细介绍

OpenChatKit是一款开源的聊天工具包,由前OpenAI研究员和Together Computer共同开发。该工具包包含了一个200亿参数的大型语言模型、定制配方和可扩展的检索系统,可帮助用户构建高效的聊天机器人和对话系统。

200亿参数的语言模型

OpenChatKit的核心是一个200亿参数的语言模型,使用了EleutherAI的GPT-NeoX-20B进行微调,以实现更高效的对话和任务处理。该模型在100%碳负载计算上进行了4300万条指令的微调,着重于多轮对话、问答、分类、提取和摘要等多个任务。这样的微调可使模型更好地适应用户需求,并提供更准确的回答。

除了强大的语言模型,OpenChatKit还提供了定制配方,可帮助用户调整模型以满足特定的任务需求。用户只需准备自己的数据集,并使用OpenChatKit的配方来微调模型即可获得高精度的结果。这样的配方可帮助用户快速构建自己的聊天机器人和对话系统,提高对话效率和准确度。

可扩展的检索系统

OpenChatKit还提供了一个可扩展的检索系统,可帮助用户从文档存储库、API或其他实时更新信息源中添加信息。这样的检索系统可使机器人更加智能,能够从更多的信息中获取答案,并提供更加准确的回答。

  • 多轮对话:OpenChatKit的语言模型可进行多轮对话,并能够在多次对话中保持上下文,并根据用户的需求提供相应的回答。

  • 问答:OpenChatKit的语言模型可对问题进行答复,并可基于文档或数据集提供更加准确的答案。

  • 分类:OpenChatKit的语言模型可对文本进行分类,并可用于情感分析、主题分类和意图识别等任务。

  • 提取:OpenChatKit的语言模型可从文本中提取结构化信息,并可用于自然语言生成和自动摘要等任务。

  • 多语言支持:OpenChatKit的语言模型可支持多种语言,可应用于不同国家和地区的聊天机器人和对话系统。

  • 高效的微调:OpenChatKit的定制配方可使用户快速微调模型,提高对话效率和准确度。

OpenChatKit的训练细节包括硬件、优化器、梯度累积、批次和学习率等参数设置。

  • 硬件
    OpenChatKit的模型训练使用了2 x 8 x A100 GPU的硬件配置。

  • 优化器
    在优化器方面,OpenChatKit采用了8bit-AdamW。8-bit训练是一种使用低位精度进行训练的技术,它可以提高模型的训练速度和内存效率。AdamW是Adam算法的一个变种,它使用L2正则化来更新权重,可以帮助模型更好地避免过拟合。

  • 梯度累积
    为了能够训练更大的批次,OpenChatKit使用了梯度累积技术,将多个小批次的梯度相加后再更新模型参数。在训练过程中,OpenChatKit采用了2次梯度累积。

  • 批次
    OpenChatKit使用了一个相对较大的批次大小,每个批次包含2 x 2 x 64 x 2048 = 524,288个标记。这可以帮助模型更好地利用硬件资源,提高训练速度和效率。

  • 学习率
    在学习率方面,OpenChatKit采用了一种温和的预热策略,将学习率逐步增加到1e-6,预热期为100个步骤,之后保持不变。这种策略可以帮助模型更好地适应训练数据,避免在训练初期发生梯度爆炸或消失等问题。

通过这些参数设置,OpenChatKit能够在大规模数据上进行高效、准确的模型训练,从而为用户提供更好的聊天体验和更多的应用场景。

github介绍

OpenChatKit是一个强大的开源工具,为不同应用提供专门或通用的聊天机器人的创建基础。该工具包包括一个经过调整的、拥有200亿参数的语言模型、一个拥有60亿参数的模型以及一个可扩展的检索系统,可以包括来自自定义库的最新响应。它是在Together、LAION和Ontocord.ai合作的OIG-43M训练数据集上训练的。这不仅是一个模型发布,而且是一个开源项目的开始。我们发布了一组工具和流程,以进行社区贡献的持续改进。

在这个项目中,你可以找到以下内容的代码:

  • 训练OpenChatKit模型
  • 使用模型进行推理测试
  • 使用检索索引扩展模型

在开始之前,你需要安装PyTorch和其他依赖项。

OpenChatKit的基础模型是GPT-NeoXT-Chat-Base-20B,它是GPT-NeoX的一个 fine-tuned 版本,用于对话数据集。我们在Huggingface上发布了该模型的预训练权重togethercomputer/GPT-NeoXT-Chat-Base-20B。

该聊天模型是在LAION、Together和Ontocord.ai创建的OIG数据集上进行训练的。你可以通过在repo的根目录下运行以下命令从Huggingface下载该数据集:

python data/OIG/prepare.py

在训练之前,你需要从Eleuther AI下载GPT-NeoX-20B,并将其准备好进行微调。在repo的根目录下,运行以下命令:

python pretrained/GPT-NeoX-20B/prepare.py

为了微调GPT-NeoXT-Chat-Base-20B,你可以使用 training/finetune_GPT-NeoXT-Chat-Base-20B.sh 脚本来配置和运行训练循环。在下载数据集和基础模型之后,运行以下命令:

bash training/finetune_GPT-NeoXT-Chat-Base-20B.sh

默认情况下,训练脚本只是打印损失,但它也可以使用loguru输出指标或将其报告给Weights & Biases。

你可以使用以下命令将权重转换为Huggingface格式,以便使用该模型执行推理:

mkdir huggingface_models && python tools/convert_to_hf_gptneox.py --ckpt-path model_ckpts/GPT-Neo-XT-Chat-Base-20B/checkpoint_5 --save-path /huggingface_models/GPT-NeoXT-Chat-Base-20B --n-stages 8 --n-layer-per-stage 6

为了测试该模型,OpenChatKit提供了一个简单的命令行测试工具来与机器人进行交互。你可以通过以下命令来启动测试工具:

python inference/bot.py

如果要从Huggingface仓库加载基础模型,可以使用以下命令:

python inference/bot.py --model togethercomputer/GPT-NeoXT-Chat-Base-20B

OpenChatKit还提供了一个检索增强模型的实验性功能,可使用维基百科索引查询。你可以通过以下命令来下载维基百科索引:

python data/wikipedia-3sentence-level-retrieval-index/prepare.py

在启动检索增强模型之前,你需要使用以下命令启动OpenChatKit测试工具:

python inference/bot.py --retrieval

当模型和索引加载完毕后,所有查询都将与额外的上下文进行增强。

总之,OpenChatKit是一个非常有用的开源工具,可以帮助你快速创建不同类型的聊天机器人,并提供各种训练和测试工具。它是一个活跃的开源项目,社区可以不断改进它。

❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️ 👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博相关......)👈 (注:非原生的chatGPT,原生chatGPT是不允许的,使用的openAI的接口) chatGPTopenAI的text-davinci-003模型区别,博文中有介绍。 openAI接入微信公众号后台源码,可运行。 配合公众号,可实现在公众号聊天窗口发消息,收到AI的回答。 无超时和使用次数限制。 只需修改下个人的api-key和公众号key 测试和使用效果参照博客,绝对可行: https://blog.csdn.net/yyz_1987/article/details/128946637?spm=1001.2014.3001.5502 nodejs、openai、免费开源可商业运营的ChatGPT网页源码v1.2.2 商业付费变现。 后台管理系统,可对用户,Token,商品,卡密等进行管理 精心设计的 UI,响应式设计 极快的首屏加载速度(~100kb) 支持 DALL·E 模型绘画,GPT4 等应用 海量的内置 prompt 列表,来自中文和英文 一键导出聊天记录 支持自定义API地址(如:openAI / API2D) Node 版本: node 需要 ^16 || ^18 || ^19 版本(node >= 16.19.0),可以使用 nvm 管理本地多个 node 版本。 数据库: MYSQL + Redis 两个域名: 一个用作端,一个用作后端跳转 ## 安装依赖(注意先安装好 node 及 yarn) 以及 yarn) yarn install ## 打包 yarn build 将打包好的 dist 目录上传到服务器,将网站目录指向 dist 文件夹即可 需额外在伪静态中添加 location / { try_files $uri $uri/ /index.html; 开源React聊天小部件 ChatKit是一个开放源代码库,可让您创建一个Chat Widget并将其连接到任何后端,例如Chatbot / NLP / Live Chat引擎或Messenger。 用React和Storeon制作。 该存储库包含开发ChatKit所需的所有组件。 :globe_showing_Americas: :open_book: :joystick: :two_hearts: 基于React的组件 Facebook LiveTex ChatKit库 在开始使用ChatKit,必须在计算机上安装以下软件: 吉特使用说明书在这里。 Node.js。 使用说明书在这里。 NPM 。 使用说明书在这里。 元。 使用说明书在这里。 Meta NPM说明手册在这里。 要安装ChatKit,请在终端中运行以下命令: git clone ChatKit ChatKit 是由 LeanCloud 官方推出的、基于 开发并封装了简单 UI 的聊天套件。它可以帮助开发者快速掌握 LeanMessage 的技术细节,轻松扩展和实现常用的聊天功能。 ChatKit 是一个免费且开源的项目组件,提供完全自由的授权协议,开发者可以对其进行任意的自定义和二次封装。ChatKit 的底层依然基于 LeanCloud 为各平台推出的 SDK,其最大特点是把聊天常用的一些功能配合 UI 一起提供给开发者。 使用方法请参考。 普通聊天消息 LeanCloud 即时通讯支持发送普通的文本、图片、音频、视频、文件和地理位置消息,支持直接发送二进制消息,并且还支持开发者扩展自己的消息类型。我们支持单聊、群聊、不限人数的开放聊天室,以及临时聊天室和系统对话(公众账号)。与其他 IM 服务不同的是,LeanCloud 即时通讯服务提供给你最大的灵活性和 例如,谷歌的 PaLM 在医学答案上达到了约 50% 的准确率,但通过添加指令支持和微调医疗特定信息,谷歌创建了 Med-PaLM,其准确率达到了 92.6%。定性地,它在 HELM 基准测试中的得分高于其基础模型 GPT-NeoX,尤其是在涉及问答、提取和分类的任务上。请务必进行事实核查,并在可能的情况下提供包含更正信息的反馈。 社区是国内外知名的机器学习自然语言处理社区,受众覆盖国内外NLP硕博生、高校老师以及企业研究人员。是促进国内外自然语言处理机器学习学术界、产业界和广大爱好者之间的交流和进步,特别是初学者同学们的进步。ChatGPT开源平替来了,源代码、模型权重和训练数据集全部公开。它叫OpenChatKit,由OpenAI研究员共同打造。效果是这样儿的:可以用简单的语言解释机器学习的概念,也可以回答测试者提出的第二个小问题。,时长00:30信息提取也难不倒它,比如将一大段计划用表格表示。 Cryptocat 是一个开源基于Web的即时消息聊天应用程序。与其它即时聊天工具不同之处在于,它主要关注确保通信是进行加密过和私人化的。 Cryptocat 基于PHP开发,除了静态文件(CSS, JS和图片)外,只有单独 基于审核模型的评估,聊天机器人可以将输入的内容限制在经过审核的主题上。例如,谷歌的 PaLM 在医学回答上达到了大约 50% 的准确率,但是通过添加指令支持和对医学特定信息的微调,谷歌创造了 Med-PaLM,其准确率达到了 92.6%。自 2020 年 7 月成立以来,该团队先后开源了基于 GPT-3 的、包含 60 亿参数的 NLP 模型 GPT-J,类 GPT 的。一个参数量达 20B 的开源模型,该模型基于 EleutherAIGPT-NeoX-20B,在 4300 万条指令上进行了微调; 点击上方“视学算法”,选择加"星标"或“置顶”重磅干货,第一时间送达丰色 发自 凹非寺量子位 | 公众号 QbitAIChatGPT开源平替来了,源代码、模型权重和训练数据集全部公开。它叫OpenChatKit,由OpenAI研究员共同打造。效果是这样儿的:可以用简单的语言解释机器学习的概念,也可以回答测试者提出的第二个小问题。信息提取也难不倒它,比如将一大段计划用表格表示。据悉,OpenCh... 比如用逻辑回归写了个代码,预处理部分写了函数,然后从sklearn调用Logistic_regression,然后fit,predict,然后到svm部分呢,预处理部分写了个代码,然后又调用sklearn svm.fit ,predict,问题是预处理部分的代码都很类似。如果是在初始阶段就大量的学习理论,只会对要学习的东西感到痛苦,这个有什么用啊?本书首先通过实用的案例介绍机器学习的基础知识,然后介绍一些稍微复杂的机器学习算法,例如支持向量机、极端随机森林、隐马尔可夫模型、条件随机场、深度神经网络,等等。 现在基于自然语言和文档进行对话的背后都是使用的基于嵌入的向量搜索。OpenAI在这方面做的很好,它的Cookbook(github.com/openai/openai-cookbook)上有很多案例,最近他们对文档做了一些更新。GPT擅长回答问题,但是只能回答它以被训练过的问题,如果是没有训练过的数据,比如一些私有数据或者最新的数据该怎么办呢?这种情况下通常有两种办法,一种是微调(fine-t... 由于最近项目的需求,正好要做一款涉及聊天的APP,所以优先考虑到了ChatKit这款强大的开源组件,同时它提供完全自由的授权协议,支持二次开发。但是通过看官方的文档,发现它在其中集成了很多的胶水函数,在我真正实现起来还是有很多不容易的地方。 所以在这里我把整个流程框架和一些基础点列出来,也算对项目过程的一个小总结。可以在这里获取组件Demo:git clone –depth=1 https://g