2024山软创新实训:软件系统架构

软件架构

本文着重介绍本应用:基于开源LLM的易学大模型软件系统的架构。在经过2个月的探索、选型、实验、开发后,我们团队终于把整个系统的各块拼图搭建了起来,现在剩下的是集成、评测、优化和部署的工作。

1. Distributed System

整个项目的逻辑架构是分布式的,总共分为3.5层:

  1. 客户端应用:主要负责最外层web服务的图形化界面与用户接口
  2. web服务端应用:负责基本的增删改查、信息维护。以及对LLM与向量知识库的集成和整合
  3. LLM && RAG Kernel:这里涉及到最内核的部分,我们通过第三方框架(LangChain)落地实现了RAG技术,并且通过开源软件和一些具有强力算力的设备进行了开源通用LLM的微调:
    1. RAG落地实现:这个子模块负责初始化向量知识库,并对外(web服务端应用)提供各种接口,包括上传知识文件,检索知识文件,更新知识文件,获取知识文件列表等等。
    2. LLM微调与部署:我们利用第三方开源软件以及智谱AI提供的chatglm3-6B,进行大模型的微调,在此过程中,利用一些领域前沿技术,进行语料的生成与准备
基于开源LLM的易学大模型软件系统架构图

建议点击图片放大查看 

2. 各模块功能解析与实现细节

客户端应用

技术选型:Node.js + Vue3.js + 各类开源前端组件/样式/界面库 

Node.js (aliyun.com)

Vue.js - 渐进式 JavaScript 框架 | Vue.js

子模块组成:(客户端应用是我们最晚开始开发的一个子系统。目前尚在开发中,后续补充)

实现细节:

  1. 项目实训5-27 前端框架搭建 JFM

web服务端应用

技术选型:

  1. Web服务器:Uvicorn Uvicorn
  2. Web服务+路由管理:FastAPI + Sharlette FastAPI
  3. 数据校验:Pydantic Welcome to Pydantic - Pydantic
  4. 数据库:
    1. 基于硬盘的嵌入式数据库:Sqlite + SQLAlchemy SQLite Home PageSQLAlchemy - The Database Toolkit for Python
    2. 基于内存的缓存数据库:Redis Redis - The Real-time Data Platform

实现细节:

  1. 服务端接口开发:
    1. 创新实训2024.05.25日志:Web应用技术选型 LYH
    2. 创新实训2024.05.26日志:服务端接口实现——用户开启多个会话 LYH
    3. 创新设计记录(一)LJJ
    4. 创新设计记录(二)LJJ
    5. 创新设计记录 LDL
    6. 项目实训5-28 后端部署+依赖报错问题解决 JFM
  2. 数据库部署落地:
    1. 创新实训2024.05.26日志:落地基于硬盘的数据库服务 LYH

LLM Kernel

技术选型:

  1. 语料生成:智谱AI 智谱AI开放平台 (bigmodel.cn)
  2. 微调实验:
    1. 软件是LLAMA Factory GitHub - hiyouga/LLaMA-Factory: Unify Efficient Fine-Tuning of 100+ LLMs
    2. 硬件不方便透露,是我们学院的机器 
  3. 开源大模型:清华智谱AIchatglm3-6b chatglm3-6b

实现细节:

  1. 语料生成:
    1. 创新实训2024.04.07日志:提取QA对 LYH
    2. 创新实训2024.04.11日志:self-instruct生成指令 LYH
    3. 项目实训2024.04.12日志:Self-QA生成问答对 LYH
    4. 项目实训4-18:过滤QA对,update prompt JFM
  2. 微调实验:我们微调后的大模型还没合并集成部署起来,所以后面再写。
  3. 能力增强/提示工程:
    1. 创新实训2024.05.28日志:记忆化机制、基于MTPE与CoT技术的混合LLM对话机制 LYH
  4. 性能评测:
    1.  创新实训2024.05.29日志:评测数据集与baseline测试 LYH
    2.  创新实训-结果统计 LDL

RAG Kernel

技术选型

  1. RAG工具包:Langchain + Langchain ChatChat LangChain Langchain-Chatchat
  2. 向量知识库:Faiss Welcome to Faiss Documentation — Faiss documentation
  3. 文本嵌入模型:BAAI bge-large-zh bge-large-zh

实现细节:

  1. RAG工具包:
    1. 创新实训2024.04.24日志:RAG技术初探 LYH
  2. 知识库建立部署:
    1. 创新实训2024.05.12日志:建立易学知识库 LYH
    2. 项目实训5-23 RAG重新配置 JFM

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

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

相关文章

5月31日,每日信息差

第一、小米汽车官方宣布,5 月新增 9 家门店,目前已在全国 30 城开业 70 家门店,6 月计划新增 19 家 第二、科技巨头谷歌、Meta、微软、AMD、英特尔、博通、思科和惠普成立了一个名为 「超级加速链路」 的联盟(UALink)…

【Android】

hint在text显示提示内容 设置主键,在mainactivity // 获取SharedPreferences对象存放的用户名和密码,并设为相应组件的值 //指定key的值,及获取不到值时使用的默认值 String sName sp.getString("name", "unknown")…

媲美苹果、三星uwb芯片,飞睿智能UWB SIP芯片方案,创新无线传输、测距、精准定位新纪元

超宽带(UWB)技术作为一种新兴的无线通信技术,以其高精度定位、低功耗、高安全性和强抗干扰能力等优势,在全球范围内得到了广泛关注和快速应用。 2019 年,苹果iPhone11搭载UWB芯片,火极一时的AirDrop隔空投…

MODIS L1B数据规格介绍

1.MODIS 仪器概述 MODIS是EOS AM-1系列卫星的主要探测仪器,也是EOS Terra平台上唯一进行直接广播的对地观测仪器。MODIS是当前世界上新一代“图谱合一”的光学遥感仪器,具有36个光谱通道,分布在0.4-14um的电磁波谱范围内,波段范围…

Docker Hub 国内镜像源配置

Docker Hub 国内镜像源配置 Docker Hub 国内镜像源是指在国内境内提供 Docker 镜像服务的镜像源。由于国际网络带宽等问题,国内用户下载 Docker 镜像通常速度较慢。因此,为了解决这个问题,一些国内的公司和组织提供了 Docker 镜像的国内镜像…

MySQL--MHA高可用及读写分离

一、什么是高可用 1.企业级高可用标准:全年无故障时间 全年无故障时间全年故障时间具体时间99.9%0.1%525.6 minkeeplive双主 (切换需要人为干预)99.99%0.01%52.56 minMHA (半自动化)99.999%0.001%5.256 minPXC、MGR、…

android Seekbar当点击的时候有一个圆圈

最近项目中Seekbar的时候遇到一个问题&#xff1a;点击进度条或者拖动进度条的时候&#xff0c;seekbar出现一个圆形的半透阴影/白色圆圈&#xff1a; <xxxxxxxxxSeekBarandroid:layout_width"wrap_content"android:layout_height"40dp"android:backgro…

解决3D模型变黑及贴图不显示的问题---模大狮模型网

在3D建模和渲染过程中&#xff0c;模型变黑或贴图不显示是常见的挑战之一。这不仅影响了模型的视觉效果&#xff0c;还可能导致后续的工作流程受阻。本文将针对这两个问题&#xff0c;提供详细的解决方法和步骤&#xff0c;帮助读者快速有效地解决问题。 一、检查并调整光照设置…

Day 8:1461. 检查一个字符串是否包含所有长度为 K 的二进制子串

Leetcode 1461. 检查一个字符串是否包含所有长度为 K 的二进制子串 给你一个二进制字符串 s 和一个整数 k 。如果所有长度为 k 的二进制字符串都是 s 的子串&#xff0c;请返回 true &#xff0c;否则请返回 false 。 截取每个长度为 k 的字符串&#xff0c;加入 Set 中&#x…

分布式数据库的扩容思路

分布式数据库的扩容是一项复杂的工程&#xff0c;它要求数据库能够在不中断服务的情况下增加更多的存储资源和计算能力。扩容通常涉及增加节点&#xff08;服务器实例&#xff09;和重新分配数据。这个过程需要谨慎进行&#xff0c;以确保数据的一致性、可用性和性能不受影响。…

根据状态转移图实现时序电路 (三段式状态机)

看图编程 * ** 代码 module seq_circuit(input C ,input clk ,input rst_n,output wire Y ); reg [1:0] current_stage ; reg [1:0] next_stage ; reg Y_reg; //输出//第一段 &#xff1a; 初始化当前状态和…

自学动态规划——最长重复子数组(子序列问题)

最长重复子数组 718. 最长重复子数组 - 力扣&#xff08;LeetCode&#xff09; 第一次接触&#xff0c;确实会有些懵&#xff0c;但是看了题解&#xff0c;仔细想想&#xff0c;确实是这么回事。要点如下&#xff1a; dp数组含义——dp[i][j]表示当num1取i个&#xff0c;num…

如何在Linux系统中搭建Kafka集群

一、概述 Kafka是一个由Apache软件基金会开发的开源流处理平台&#xff0c;是一个由Scala和Java编写的高吞吐量的分布式发布订阅消息系统&#xff0c;它可以处理消费者在网站中的所有动作流数据。 Kafka集群依赖于Zookeeper进行协调&#xff0c;注册在同一个Zookeeper集群中的…

汇总区间,合并区间

题目一&#xff1a; 代码如下&#xff1a; vector<string> summaryRanges(vector<int>& nums) {vector<string> ret;if (nums.size() 0)return ret;int n nums.size();int i 0;while (i < n){int prev i;i;while (i < n && nums[i] n…

烧脑的逻辑图又来了,精力绝对不是花费在做图上。

逻辑图设计之所以比较耗费精力&#xff0c;主要是因为它需要进行深入的思考和分析&#xff0c;以确保设计的逻辑正确、完整和可行。以下是一些可能导致逻辑图设计耗费精力的原因&#xff1a; 复杂性&#xff1a;逻辑图设计通常涉及到复杂的业务流程和系统架构。设计师需要理解各…

Spring boot 集成thymeleaf

Spring boot 集成thymeleaf 背景 自己通过Spring boot集成通义千问实现了一个智能问答系统。Spring boot集成通义千问已经完成&#xff0c;现在需要做一个简单的页面展示&#xff0c;作为一个八年没有摸过前端的后端开发人员&#xff0c;不得不又拿起了html和thymeleaf。 Sp…

用例与系统顺序图

习题 问题 考察点 1.Use Cases 用例绘制 列出8个Use Cases, 按优先权分成三个档次, 并分别用Fully dressed、Causual和Brief方式描述 建议:用Fully dressed方式描述的Use Cases应该是项目比较核心,而且需要尽快研制的功能模块;该功能模块的内容比较充实;不要采用如登陆验…

【pytorch】数据转换/增强后保存

数据转换 from PIL import Image from pathlib import Path import matplotlib.pyplot as plt import numpy as npimport torch import torchvision.transforms as Tplt.rcParams["savefig.bbox"] = tight # orig_im

摘下戛纳大奖的《狗阵》,救得了华谊吗?

随着第77届戛纳国际电影节成功落幕&#xff0c;《狗阵》无疑成为了华语电影的最大赢家。 今年的戛纳电影节可以说是华语电影大年&#xff0c;《风流一代》《狗阵》《酱园弄》《九龙城寨之围城》等多部重量级影片亮相戛纳。 但最终抱得奖项而归的只有管虎导演的《狗阵》&#…

appium元素定位工具_uiautomatorviewer.bat

特点&#xff1a; uiautomatorviewer是android-sdk自带的元素定位工具uiautomatorviewer只能用于安卓系统&#xff1b;它是通过截屏分析XML布局文件方式&#xff0c;来提供控件信息的查看服务 uiautomatorviewer.bat 基本使用 路径&#xff1a;这个工具是Android SDK中自带&…