云端AI大模型群体智慧后台架构思考
1 大模型的调研
1.1 主流的大模型
-
openai-chatgpt
-
阿里巴巴-通义千问
一个专门响应人类指令的大模型。我是效率助手,也是点子生成机,我服务于人类,致力于让生活更美好。
-
百度-文心一言(千帆大模型)
文心一言"是基于百度的深度学习平台飞桨和文心知识增强大模型开发的。它通过持续地从海量数据和大规模知识中进行融合学习,具备知识增强、检索增强和对话增强等技术特色。
-
字节跳动-云雀大模型
在给出提示词的情况下依然不太聪明
-
字节跳动-扣子
扣子为你提供了一站式 AI 开发平台 无需编程,你的创新理念都能迅速化身为下一代的 AI 应用 开始使用
优点:测试过之后,在给出
人设和回复逻辑
之后,coze可以相对准确的将人类的模糊指令拆解为机器人对应的执行步骤。而且对大模型本身的对话功能也有很好的表现。
缺点:还没有对应的API开放,暂时还在测试中。我已经填写问卷看看能不能申请到内侧的API。
1.2 提示词工程
提示词工程,或称Prompt Engineering,是一种专门针对语言模型进行优化的方法。其核心思想在于通过设计和调整输入的提示词(prompt),来引导这些模型生成更准确、更有针对性的输出文本。在与大型预训练语言模型如GPT-3、BERT等交互时,给定的提示词会极大地影响模型的响应内容和质量。
提示词工程关注于如何创建最有效的提示词,以便让模型能够理解和满足用户的需求。这可能涉及到对不同场景的理解、使用正确的词汇和语法结构,以及尝试不同的提示策略以观察哪种效果最佳。提示词可以简单如一个问题,复杂如一段描述性文本,包含了一系列精心选择的关键词或指令,旨在帮助模型更好地理解请求的任务或目标。
提示词工程具有广泛的应用场景,如信息检索、自然语言生成、智能键盘和聊天机器人、写作辅助工具等。在信息检索领域,提示词工程可以帮助用户更有效地查询信息,提高检索结果的准确性和相关性。在自然语言生成领域,通过为模型提供适当的提示词,可以控制生成文本的风格、内容和结构,从而满足不同场景下的需求。在智能键盘和聊天机器人等交互式应用中,提示词工程可以用于提供用户输入建议,帮助用户更快速地输入和表达他们的意图。在写作辅助工具中,提示词工程则可用于提供写作建议和指导,提高写作质量和效率。
随着大规模语言模型的发展,提示词工程已经成为一个重要的领域。
提示词工程是一种强大的工具,用于引导大型语言模型产生高质量的文本输出,允许用户更好地利用这些模型的能力,并为各种应用程序提供了广泛的可能性。
1.3 监督学习
监督学习(Supervised Learning)是机器学习中的一种重要方法,它主要是利用一组已知输入和输出数据(称为训练数据或样本)来训练模型,使得模型能够对新的未知输入进行预测或分类。在监督学习过程中,模型会尝试找到输入和输出之间的映射关系或规律,并通过不断调整模型参数来优化这种关系,以最小化预测值与实际值之间的误差。
监督学习的主要步骤如下:
-
数据准备:准备一组带有标签(即已知输出)的训练数据。这些数据通常是由人工标注或实际观测得到的。
-
模型选择:根据问题的性质选择合适的模型结构,如线性回归、决策树、支持向量机、神经网络等。
-
模型训练:使用训练数据来训练模型。这通常涉及到最小化一个损失函数(loss function),该函数衡量了模型预测值与真实值之间的差异。通过迭代优化算法(如梯度下降)来调整模型的参数,使得损失函数达到最小。
-
模型评估:使用独立的验证数据集来评估模型的性能。常见的评估指标包括准确率、精度、召回率、F1分数等。
-
模型应用:一旦模型训练完成并经过评估,就可以将其应用于新的未知输入数据,以进行预测或分类。
监督学习在许多领域都有广泛应用,如图像识别、语音识别、自然语言处理、金融预测等。它的优点在于可以利用已知标签的数据来指导模型的训练,从而得到较为准确的预测结果。然而,它也有其局限性,比如需要大量的标注数据,标注过程可能耗时且昂贵,以及模型可能受到训练数据中噪声和偏差的影响等。
1.3 大模型调参
大模型调参是指通过输入数据集
对训练模型进行优化,以达到提升模型效果的方法。这一过程涉及预训练和微调两大阶段。
在预训练阶段,核心目标是找到最优的数据配比与最优的架构设计,从而得到最有效的参数数值。这通常是通过向模型喂入大量的无标注数据进行无监督训练来实现的,使模型涌现出更好的基础能力,以在不同任务上都获得较好效果。
而在模型微调阶段,则是在预训练模型参数的基础上,通过提供少量高质量、有标注的数据进行有监督训练。微调的核心在于确定调整哪些参数以及如何调整,以使得模型在特定领域
呈现出更加优异的表现。
在大模型时代,调参成为提升模型性能的关键步骤。通过不断调整和优化参数,可以使模型更好地抓取文本重点、理解文本、输出文本,从而提高模型在目标任务上的性能。无论是在自然语言处理、计算机视觉还是推荐系统等领域,大模型参数高效微调技术都发挥着重要作用。
2 解决方案
2.1 大模型调用
先给出一套关于大模型调用的基础方案,后续在实际需求和指导中优化。
2.1.1 技术架构
-
客户端服务
- ai-robot:机器人受到模糊指令,向云端大模型请求拆解指令。
- web-test:可视化的测试界面,可以直观得测试大模型微调结果。
-
应用服务
- ai-chat-backend:web协议解析,用于接受和处理来自
ai-rebot
和web-test
的请求数据。 - ai-chat-server:包含所有的内部服务,如:关键词提取,敏感词识别,上下文保存,数据持久化等。
- ai-chat-backend:web协议解析,用于接受和处理来自
-
基础服务
- keywords:根据给定的词库识别文本中的关键词。
- sensitive:根据给定的词库识别文本中的铭感词。
- openai-proxy:这里标红了,默认我们会使用国内的大模型;但是如果要使用
openai
,我们需要一台海外服务器来做反向代理。 - tokenizer:用于计算每次请求的tokens数量,我感觉这个可能需要向用户提供收费套餐。
- mock-open-ai:用于模拟大模型的返回,减少开发时的测试成本。
-
数据服务
- mysql:持久化存储,包括但不限于用户信息,机器人ID,token使用数量等。
- vectordb:这里需要一个词向量数据库来进行相似度匹配;这个可以自己搭建或者直接使用云厂商提供的。
-
. 支撑服务
-
doker:doker容器化部署,方便在公网服务器部署。
-
docker swarm:官网的跨界点容器编排工具,只要在单一节点上操作就可以所以集群下所有节点和容器。
-
registry:没一台机器人应该有自己的ID
-
redis:内存数据库,可以存储一些使用频率较高的指令,方便快速解析。
-
prometheus:线上节点监控,保证各服务正常工作。
-
2.1.2 部署架构图
2.1.3 技术导图
2.2 即使通讯
概念中的群体智慧:一个群组
内的机器人,彼此之间分工合作,并且实时同步信息,达成合作的目的。在群体智慧中,肯定需要一套即时通讯系统,实时同步数据。使用自主研发的实时通讯有以下优点:
- 可控,方便定制化
- 数据可以实时分析
- 数据私密安全
2.2.1 IM技术的特点
- 实时性:保证消息实时触达。(轮询与长连接)(消息提示推送,和我们阅读的消息是不一样的。)
- 可靠性:保证消息的不丢失和不重复。(ACK 机制)TCP 只能保证消息数据链路可靠,不能保证业务可靠。
- 一致性:保证同一条消息在多人、多终端展现顺序的一致性。(消息序号生成器服务端)
- 安全性:保证数据传输安全、数据存储安全、消息内容安全。(WWS、HTTPS、TLS、
AES 等)
2.2.2 IM基本架构
- 用户层:客户端与服务器端进行网络通信、收发消息。
- 连接层:为客户端收发消息提供出入口。主要的任务:保持海量用户连接;解析协议,对传输内容进行编码;维护session;推送消息。
- 核心业务层(逻辑层):负责IM系统各项功能的核心逻辑实现。
- 路由层:负责消息投递。
- 数据层:负责IM系统相关数据的持久化存储,包括消息内容,ID等信息。
2.2.3 IM分层架构
2.2.3.1 IM分层架构-接入层
-
接入层主要任务
- 建立客户端和后台服务的信道
- 接收来自客户端的大量并发请求
-
接入层作用
- 连接整流 http websocket tcp
- 通信安全
- 报文解压缩
- 初步防攻击 发送速率过快等
- 连接整流 http websocket tcp
2.2.3.2 IM分层架构-逻辑层
- 逻辑层任务
- 用户逻辑:机器人注册,机器人上线,机器人下线,机器人分组
- 机器人组逻辑:添加组成员,删除组成员,组列表
- 消息逻辑:点对点消息,组消息
- 其他:文件,图片,视频传输
- 为什么需要逻辑层
- 可以水平扩展组件
2.2.3.3 IM分层架构-数据层
- 逻辑层任务
-
对上游屏蔽存储引擎
-
对上游屏蔽缓存cache
-
对上游提供友好的接口
-
2.2.4 构想
相关文章:

云端AI大模型群体智慧后台架构思考
1 大模型的调研 1.1 主流的大模型 openai-chatgpt 阿里巴巴-通义千问 一个专门响应人类指令的大模型。我是效率助手,也是点子生成机,我服务于人类,致力于让生活更美好。 百度-文心一言(千帆大模型) 文心一言"…...

算法系列--分治排序|再谈快速排序|快速排序的优化|快速选择算法
前言:本文就前期学习快速排序算法的一些疑惑点进行详细解答,并且给出基础快速排序算法的优化版本 一.再谈快速排序 快速排序算法的核心是分治思想,分治策略分为以下三步: 分解:将原问题分解为若干相似,规模较小的子问题解决:如果子问题规模较小,直接解决;否则递归解决子问题合…...

强化学习编程实战-1-一个及其简单的强化学习实例(多臂赌博机)
1.1 多臂赌博机 一台拥有K个臂的机器,玩家每次可以摇动K个臂中的一个,摇动后,会吐出数量不等的金币,吐出金币的数量服从一定的概率分布,而且不同臂的概率分布不同。 多臂赌博机的问题是:假设玩家共有N次摇地…...

Golang语法规范和风格指南(一)——简单指南
1. 前引 一个语言的规范的学习是重要的,直接关系到你的代码是否易于维护和理解,同时学习好对应的语言规范可以在前期学习阶段有效规避该语言语法和未知编程风格的冲突。 这里是 Google 提供的规范,有助于大家在开始学习阶段对 Golang 进行一…...

数据机构记录顺序表-笔记1
一、线性表的基本概念 数据元素:线性表中的基本单位,每个元素都是线性表的一部分。 数据项:数据元素的具体值。 存储位置:线性表中的元素在内存中的具体存储位置。 线性表按存储结构可以分为顺序表和链表两大类: 1.1…...

考研必备~总结严蔚敏教授《数据结构》课程的重要知识点及考点
作者主页:知孤云出岫 目录 1. 基本概念1.1 数据结构的定义1.2 抽象数据类型 (ADT) 2. 线性表2.1 顺序表2.2 链表 3. 栈和队列3.1 栈3.2 队列 4. 树和二叉树4.1 树的基本概念4.2 二叉树 5. 图5.1 图的基本概念5.2 图的遍历 6. 查找和排序6.1 查找6.2 排序 7. 重点考…...

【数据分享】国家级旅游休闲街区数据(Excel/Shp格式/免费获取)
之前我们分享过从我国文化和旅游部官网整理的2018-2023年我国50个重点旅游城市星级饭店季度经营状况数据(可查看之前的文章获悉详情)!文化和旅游部官网上也分享有很多与旅游相关的常用数据,我们基于官网发布的名单文件整理得到全国…...

Linux开发:进程间通过Unix Domain Socket传递数据
进程间传递数据的方式有很多种,Linux还提供一种特殊的Socket用于在多进程间传递数据,就是Unix Domain Socket(UDS)。 虽然通过普通的Socket也能做到在多进程间传递数据,不过这样需要通过协议栈层的打包与拆包,未免有些浪费效率,通过UDS,数据仅仅通过一个特殊的sock文件…...

Redis基础教程(九):redis有序集合
💝💝💝首先,欢迎各位来到我的博客,很高兴能够在这里和您见面!希望您在这里不仅可以有所收获,同时也能感受到一份轻松欢乐的氛围,祝你生活愉快! 💝Ὁ…...

Servlet与Servlet容器
什么是Servlet? Servlet是Java EE(现称Jakarta EE)中的一个组件,通常用于创建动态Web内容。Servlet是运行在Web服务器上的Java程序,它处理客户端的请求并生成响应。Servlet的核心功能是处理HTTP请求和响应。下面是一个servlet例…...

腾讯centos mysql安装
腾讯centos mysql安装 腾讯云提供了一系列的云计算服务,包括操作系统、数据库、服务器等。在腾讯云上安装CentOS操作系统和MySQL数据库可以按照以下步骤进行: 登录腾讯云控制台(登录 - 腾讯云)。在控制台页面上方的搜索框中输入…...

c_各个unsigned int 和 int的取值范围
bool, uint8_t, uint16_t, uint32_t, uint64_t, int8_t, int16_t, int32_t, int64_t 取值范围分别是什么? 定义形式: typedef unsigned char uint8_t; typedef unsigned short uint16_t; typedef unsigned int uint32_t; typedef unsigned long uint64_…...

C#/WPF 自制截图工具
在日常使用电脑办公时,我们经常遇到需要截图然后保存图片,我们往往需要借助安装截图工具才能实现,现在我们通过C#自制截图工具,也能够轻松进行截图。 我们可以通过C#调用WindousAPI来实现截图,实例代码如下:…...

以腾讯为例,手把手教你搭建产品帮助中心
一个精心设计的产品帮助中心对于提高用户满意度和体验至关重要。腾讯,作为全球领先的互联网企业,通过其多样化的产品线(包括微信、QQ、腾讯游戏、腾讯视频等)吸引了亿万用户。下面将以腾讯为例,向您展示如何搭建一个高…...

计算机网络概述--自我学习用
计算网络体系概述 相关问题 计算机网络为什么要分层?计算机网络是怎么分层的?三种计算机网络模型的关系是什么?每一层分别包含哪些协议?计算机网络中,数据如何在各层中传播?数据在网络各层中的存在形式是…...

超级好用的java http请求工具
kong-http 基于okhttp封装的轻量级http客户端 使用方式 Maven <dependency><groupId>io.github.kongweiguang</groupId><artifactId>kong-http</artifactId><version>0.1</version> </dependency>Gradle implementation …...

在原有的iconfont.css文件中加入新的字体图标
前言:在阿里图标库中,如果你没有这个字体图标的线上项目,那么你怎么在本地项目中的原始图标文件中添加新的图标呢? 背景:现有一个vue项目,下面是这个前端项目的字体图标文件。现在需要新开发功能页&#x…...

使用 ESP32-WROOM + DHT11 做个无屏温湿度计
最近梅雨天,有个房间湿度很大,而我需要远程查看温湿度,所以无所谓有没有显示屏,某宝上的温湿度计都是带屏的,如果连WIFI查看温湿度操作也比较麻烦,还需要换电池,实在不能满足我的需求࿰…...

如何使用 SwiftUI 构建 visionOS 应用
文章目录 前言WindowsVolumes沉浸式空间结论 前言 Apple Vision Pro 即将推出,现在是看看 SwiftUI API 的完美时机,这使我们能够将我们的应用程序适应 visionOS 提供的沉浸式世界。苹果表示,构建应用程序的最佳方式是使用 Swift 和 SwiftUI。…...

InspireFace-商用级的跨平台开源人脸分析SDK
InspireFace-商用级的跨平台开源人脸分析SDK InspireFaceSDK是由insightface开发的⼀款⼈脸识别软件开发⼯具包(SDK)。它提供了⼀系列功能,可以满⾜各种应⽤场景下的⼈脸识别需求,包括但不限于闸机、⼈脸⻔禁、⼈脸验证等。 该S…...

华为HCIP Datacom H12-821 卷24
1.单选题 企业大楼有大量员工通常都在上班时在大厅开始接入到公司的WLAN网络,随着每位员工走到各自的工位过程中,每个人的移动端叶通过漫游的方式漫游到各自的网络覆盖区域。为了尽量保证每个终端的IP地址是固定的,建议的做法是? A、配置VLAN Pool并配置顺序算法 B、…...

TikTok马来西亚直播网络怎么配置?
TikTok是一款全球流行的社交媒体应用,在东南亚地区拥有大量用户。在马来西亚这个多元化的国家,配置高效稳定的直播网络对TikTok的运营至关重要。 配置马来西亚直播网络的必要性 广泛的地理覆盖:马来西亚包括大片陆地和众多岛屿,网…...

基于若依的文件上传、下载
基于若依实现文件上传、下载 文章目录 基于若依实现文件上传、下载1、前端实现-文件上传1.1 通用上传分析1.2 修改实现上传接口 2、后端实现-文件上传3、后端实现-文件下载4、前端实现-文件下载 官网其实也写了,但是我是自己改造封装了一下,再次迈向全栈…...

论文回顾 | CVPR 2021 | How to Calibrate Your Event Camera | 基于图像重建的事件相机校准新方法
论文速览 | CVPR 2021 | How to Calibrate Your Event Camera | 基于图像重建的事件相机校准新方法 1 引言 在计算机视觉和机器人领域,相机校准一直是一个基础而又重要的问题。传统的相机校准方法主要依赖于从已知校准图案中提取角点,然后通过优化算法求解相机的内参和外参。这…...

高级java每日一道面试题-2024年7月1日
题目:请解释 Java 中的内存泄漏,并说明如何检测和避免内存泄漏。 答案: 内存泄漏指的是程序中不再使用的对象,由于某些原因没有被垃圾回收器回收,仍然占据着内存空间,导致可用内存逐渐减少,最…...

当需要对多个表进行联合更新操作时,怎样确保数据的一致性?
文章目录 一、问题分析二、解决方案三、示例代码(以 MySQL 为例)四、加锁机制示例五、测试和验证六、总结 在数据库管理中,经常会遇到需要对多个表进行联合更新的情况。这种操作带来了一定的复杂性,因为要确保在整个更新过程中数据…...

数据结构-线性表的应用
目录 前言一、有序表的合并1.1 顺序表实现1.2 单链表实现 二、稀疏多项式的相加和相乘2.1 稀疏多项式的相加2.2 稀疏多项式的相乘 总结 前言 本篇文章介绍线性表的应用,分别使用顺序表和单链表实现有序表的合并,最后介绍如何使用单链表实现两个稀疏多项…...

cpp http server/client
httplib 使用httplib库 basedemo server.cpp #include "httplib.h" #include <iostream> using namespace httplib;int main(void) {Server svr;svr.Get("/hello", [](const Request& req, Response& res) {std::cout << "lo…...

昇思25天学习打卡营第2天|MindSpore快速入门
打卡 目录 打卡 快速入门案例:minist图像数据识别任务 案例任务说明 流程 1 加载并处理数据集 2 模型网络构建与定义 3 模型约束定义 4 模型训练 5 模型保存 6 模型推理 相关参考文档入门理解 MindSpore数据处理引擎 模型网络参数初始化 模型优化器 …...

django之url路径
方式一:path 语法:<<转换器类型:自定义>> 作用:若转换器类型匹配到对应类型的数据,则将数据按照关键字传参的方式传递给视图函数 类型: str: 匹配除了”/“之外的非空字符串。 /test/zvxint: 匹配0或任何…...