自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(68)
  • 问答 (17)
  • 收藏
  • 关注

原创 Segment Tree

例如第一个方块[x,y],那么[x:x+y-1],第二个方块[z,x-z],则[z:x-1],但实际上这俩是贴边的。这个时候[1,2]的最大值很显然为10(例如我们要在[1,2]上放一个方块,他就得从10开始算了),但[1,1]的值为0,[2,2]的值为10,因此取左右子树最大值,也即10。对于回溯(pushup)我们可以发现,当一个新的方块落下时,他应该查找[l,r]中最大的高度并且累加上去。这个写法在左半部分是没问题的,即[x,mid],因为这个区间是肯定要查的。从1开始,接收一个从0开始的数组。

2024-08-01 13:52:51 851

原创 dsa加训

Follow oi-wiki

2024-07-21 11:36:22 342

原创 创新实训2024.05.01日志:document-loaders

在建立易学知识库的过程中,仅仅有向量数据库以及词嵌入模型、分词器是不够的,因为我们有大量的非结构化文本(如doc,pdf)或者是图片需要上传(例如pdf里面有图片),此时词嵌入无法直接向向量数据库中嵌入图片,需要对图片内文字进行识别,转换为文本后才能继续嵌入。

2024-06-21 14:13:11 765

原创 创新实训2024.06.17日志:大模型微调总结

前段时间其实我们已经部署了大模型,并开放了对外的web接口。不过由于之前某几轮微调实验的大模型在对话时会有(例如响应难以被理解),因此我在项目上线后,监控了数据库里存储的对话记录。确定了最近一段时间部署的大模型回复一切正常后,着手写这篇有关大模型微调记录的博客。

2024-06-17 19:34:52 984

原创 创新实训2024.06.06日志:部署web服务

首先我们要先在服务器上运行客户端以及服务端的应用程序。随后再考虑如何通过公网/局域网访问的问题。如何启动服务在仓库对应分支下的Readme文件中已经有详细描述了。

2024-06-06 20:11:22 689

原创 创新实训2024.06.03日志:完善Baseline Test框架、加入对Qwen-14B的测试

在之前的一篇博客中(),我介绍了我们对于大模型进行基线测试的一些基本想法和实现,包括一些基线测试的初步结果。后来的一段时间,我一直在试图让这个框架变得更加可用、可扩展、可移植,因为我们想加入更多的大模型(无论在线离线、无论哪个组织开源的、无论多少超参数)进行基线测试,以此更好地衡量我们自己微调并利用RAG技术接入知识库的大模型的性能。在6.2号,我完成了。在6.3号,我完成了微调1000轮以及未微调的大模型接入知识库之后的基线测试。并且利用数据可视化脚本,绘制出了一份。

2024-06-04 00:18:28 814

原创 创新实训2024.06.02日志:SSE、流式输出以及基于MTPE技术的MT-SSE技术

之所以要做SSE,是因为在开发、调试以及使用我们开发的软件时,我发现消息的响应时间会很长。之所以会这样最主要的原因是,MTPE这项基于CoT的技术,本质上是多对大模型生成回答的能力进行增强。多步提示工程就延长了大模型思考、整理、融合检索到的知识的时间(也就是说我们。

2024-06-02 19:18:53 934

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

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

2024-05-30 13:25:48 1072 2

原创 创新实训2024.05.29日志:评测数据集与baseline测试

(后续,我们会加入经过结构化文本构成的数据集微调的大模型,并有带/不带知识库两种类型,另外还可以加入国内外已有通用大模型,例如文心一言、ChatGPT等)。

2024-05-29 23:26:38 1065

原创 创新实训2024.05.28日志:记忆化机制、基于MTPE与CoT技术的混合LLM对话机制

在利用大模型自身能力进行对话与解答时,最好对用户当前会话的历史记录进行还原,大模型能够更好地联系上下文进行解答。在langchain chat chat的chat函数中,通过实现langchain框架提供的ChatMemory。就可以建立一个对话记录的缓冲区,随后读取历史会话记录到缓冲区,在对话时作为memory参数传入。

2024-05-28 01:52:19 1077

原创 创新实训2024.05.26日志:服务端接口实现——用户开启多个会话

类似于Kimi,文心一言,chatGPT等市面上主流的大模型,我们的大模型也支持同一个用户的多个会话,并且提供支持联系上下文给出解答的能力。

2024-05-26 19:47:57 770

原创 创新实训2024.05.26日志:落地基于硬盘的数据库服务

以下描述易学大模型软件的web应用的功能。

2024-05-26 19:26:25 891

原创 创新实训2024.05.25日志:Web应用技术选型

Uvicorn 是一个轻量级的 ASGI(Asynchronous Server Gateway Interface)服务器,用于运行 Python 的 ASGI 应用。ASGI 是一个标准接口,用于异步Web应用程序和服务器之间的通信,它允许你编写异步代码,从而提高应用程序的性能和可伸缩性。

2024-05-26 19:22:06 654

原创 创新实训2024.05.12日志:建立易学知识库

生产机上的环境还没有配好,这里我记录下需要配置的环境。

2024-05-16 09:06:49 681

原创 创新实训2024.04.24日志:RAG技术初探

现在我们知道了如何获取一个向量数据库的服务。但在哪里使用它,如何使用它呢?正如先前RAG的Working Pipeline中所说,用户在请求大模型进行任务时,先通过检索向量数据库获取相似知识优化Prompt,再进行提问。那么这样一套流程,是如何映射到代码中的,我们是如何使用向量数据库提供的检索功能的?

2024-04-25 18:56:28 1079

原创 项目实训2024.04.12日志:Self-QA生成问答对

Self-QA(Self Question Answering)技术是一种自然语言处理(NLP)技术,它旨在通过生成问题并自行回答来增强机器对文本的理解。这种技术通常用于提升机器学习模型,尤其是深度学习模型在问答、文本理解和生成等领域的性能。Self-QA技术的核心思想是通过模型自身生成的问题来测试和提高其对文本的理解能力。在这个过程中,模型需要对给定的文本内容进行深入分析,生成相关的问题,然后使用文本内容来回答这些问题。通过这种方式,模型可以在没有额外标注数据的情况下进行自我训练和优化。

2024-04-12 23:25:27 2175

原创 创新实训2024.04.11日志:self-instruct生成指令

例如,”写一篇有关校园安全的短文“可以是一个合法的、我们期望LM直接回答的问题,但当他变成”写一篇有关下述主题的短文“,就成了一个指令,随后”校园安全“可以作为一个实例的输入(也即问题)。之后,根据step1:Instruction Generation,从种子指令中挑选5条,迭代生成的指令中挑选5条(可能会重复,但不用担心,最后我们会去重的)。一开始的初始语料还是需要我们自己搜集的。简单来说,传统的NLP技术需要涉及两大不可或缺的步骤:大型的预训练好的大语言模型以及人工搜集的语料(指令数据)。

2024-04-11 19:40:04 1111

原创 创新实训2024.04.07日志:提取QA对

创新实训2024.04.07日志:提取QA对

2024-04-08 00:09:56 1320

原创 BitWise-Operation

之前有个《位运算trick》的文章,也是讲位运算的。不过最近灵神发了个位运算的题单。这篇就按题单来了。

2024-04-05 20:48:13 774

原创 数学结论在dsa中的应用

然后枚举被删除的,从剩下的里面挑一个最大的,一个最小的,相减,更新答案。如下图,红色线段是欧式距离,深蓝色线段是曼哈顿距离,灰色射线是新坐标系x轴和y轴,黑色射线是原坐标系x轴和y轴,橙色线段是切比雪夫距离,就等于原坐标系的曼哈顿距离,也就是橙色线段的长度等于左边图中两条深蓝色线段的长度。当我们把操作后的坐标投影到原先坐标系的x轴或y轴上后,原先两个点之间的距离,就变成了投影在x/y轴上的距离,这是因为投影把线段缩小到原来的1/sqrt(2)倍,正好和扩大sqrt(2)倍兑掉了。这就引入了切比雪夫距离。

2024-04-04 16:05:50 421

原创 Binary Indexed Tree

比如你要查[1,7]的,你直接一看7的lowbit,1,那就算上c[7]=[7,7],然后跳到7-1=6去。再一看4的lowbit,4,那就算上c[4] = [1,4],然后跳到4-4=0去,到此跳出了树状数组,查询结束,返回和。例如你拆[1,13],那么递归到底部必然拆了[1,1] ⇒ [1,1],[1,2] ⇒ [2,2],[1,3] ⇒ [1,2] + [3,3]…那多出来的部分单算,比如[2:6],索引2上的1单独算就行了,复杂度O(n/B+B),由于B大概率比n小,那就是O(n/B))

2024-03-06 14:55:05 862

原创 网格图的搜索

来自灵神网格图题单。

2024-02-29 19:10:28 457

原创 多叉树上的操作

这里的树指的是有根树。

2024-02-21 11:58:40 403

原创 Hash哈希

VP双周赛123T3。一直想在Hash表里存每种数字出现的索引,查询nums[i]±k的所有可能索引,前缀和相减得到子数组和维护最大值。最后不出意外的T了。既然要找之前的最小前缀和,为啥不在Hash表里直接维护每个数字对应的最小前缀和呢?注意子数组是闭区间,前缀和数组里加个哨兵即可。然后这道题实际上不需要前缀和数组,滚动一个前缀和就可以了,闭区间滞后一个元素即可。

2024-02-20 19:58:47 368

原创 Lowest Common Ancestor

LCA:LCA_TARJAN/倍增

2024-01-26 18:59:44 640

原创 分组循环A

对于每个分组,如果可以交换,则扩展分组的窗口,直至达到尽头或者不能交换为止。这样这个分组里的数都是可以任意交换的,因此就可以对这个分组进行排序。对每个分组排序后如果能使得整个数组有序,那么就成功。分组查询每段平滑下跌阶段。贡献是(l+1)*l/2(等差数列),累加即可。分组检查连续相同子串长度,超过2就缩减到2,拼到答案里即可。这题我比赛时用的并查集。看灵神视频学了个分组循环的做法。分组记录0/1子串长度,维护最大值,最后比较。分组查询交替子数组长度,维护最大值。分组记录每个连续字符子串长度,维护最大值。

2024-01-23 00:09:24 405

原创 QUEUE

维护一个单调增的单调队列。也就是如果队尾元素大于当前前缀和的话,就应该把队尾踢掉。这是因为:当后续前缀和查询队列中维护的前缀和时,如果当前前缀和与其之差≥k的话,那么与一个更小的前缀和之差也一定≥k。由于我们是正序的,所以踢走队尾的前缀和的索引一定更靠后。也就更接近日后查询时的索引。之所以不用单调栈而是一个单调的双端队列,是因为栈没办法查询或操作栈底元素。我们想要最短区间,是肯定要查看之前最早的检查点的,也就是踢人的时候不能从队尾踢,队尾的前缀和要留给更后面的位置查询。子数组元素和显然要算前缀和。

2024-01-20 16:45:51 378

原创 字符串匹配

细节在代码中看不懂的可以参照:如何更好地理解和掌握 KMP 算法?- 阮行止的回答 - 知乎。

2024-01-16 14:25:34 394

原创 DP:数位DP

数位DP的大致思想:枚举每一位能选取的合法值。

2024-01-16 13:40:19 1141

原创 Fancy

专门记录一点思维题。

2024-01-11 20:01:18 418

原创 Union-Find

并查集判连通:由于我们想要的是最大安全系数,所以倒着搜各个安全距离对应的点集。如果发现它的邻居的安全距离大于等于它的,那么可以把它的邻居对应的等级类直接归到这个点对应的等级类。由于我们倒着搜答案,因此这个等价类的门槛会越来越低,直至把所有点都囊括进去,那个时候安全系数也就只能为0了。预计算写的暴力,判断写的深搜。这题预计算所有点的安全距离的方式应该是多源BFS。判断连通性的方式是DSU。所以不放在二分题单里,放在DSU。核心想法:如果这个元素的源头不是他自己 说明它被归到别的等价类去了,深搜它的源头(链)

2024-01-11 19:36:46 630

原创 STACK

如果当前元素位于这个应有的元素后方,那么需要补齐中间的;如果在前方,说明上一轮abc还有缺,需要补上;如果正好就是这个应有元素,那么看下一个字符即可。维护下一个需要使用到的元素。例如上一个是a,那么下一个就是b。如果上一个是c,那么下一个是a。这题模拟栈即可,不需要真的用,因为一直访问的都是栈顶元素,所以维护一个栈顶指针即可。时间O(n)空间O(1)

2024-01-11 11:43:26 374

原创 DSSW:MAX

这里记录不定长滑窗:最长/最大值题单题解。

2024-01-07 15:00:36 364

原创 Fixed win size sliding window

这篇记录灵神题单中的定长滑窗环节,不跟之前的Sliding Window一起了。

2024-01-06 15:07:22 395

原创 单调栈:General

题面:设计一个算法收集某些股票的每日报价,并返回该股票当日价格的。当日股票价格的被定义为股票价格小于或等于今天价格的最大连续日数(从今天开始往回数,包括今天)。实现price思路分析:现在假设我们先要统计第5天(索引从0开始),也就是价格为75的那一天的跨度。然后统计第6天,也就是价格为85的那一天的跨度。观察一下,可以发现85重复统计了第2到第4天(60,70,60)的数据,但实际上,如果我们明确知道了85≥75时,就可以复用75的统计,也就是自动筛掉(60,70,60)这组数据了。

2024-01-05 09:53:37 967

原创 Differential

之前我有一篇 《差分+前缀和》的学习笔记,记录了差分的思想和基本用法。这里就只记录灵神题单的刷题记录。

2024-01-04 16:09:51 462

原创 大大大模拟

简单来说就是答案就在题面上,题目怎么说就怎么做即可。听起来很简单,做起来很难,很考验码力。想做大模拟的可以去试试csp的T3(一般都是大模拟),非常折磨人,动不动WA了,考验细节。

2024-01-01 00:30:41 412

原创 位运算trick

位运算本质上不是一种算法,而是一种trick,用来节约时间/空间的trick。背后常常有集合论、状态压缩等思想的支撑。这里探讨的位运算指的是其背后的指导思想而不是trick本身。因此对trick本身的证明就略过了。如果想获取位运算的知识图谱,以及集合论的一些基础知识。我在子集状压DP篇收录了相关图片(搬运别人的),可以在该博客找到。

2023-12-31 23:56:25 437

原创 BS:最大化最小值

和最小化最大值是一回事,二分板子。

2023-12-31 12:57:39 396

原创 子集状压DP

本来应该放到DP篇。但由于这个部分灵神单列了题单,我就按题单刷题记录单列一篇。位运算状压应该算是我入门第一个接触到的算法级别的trick。知识图谱也列出来了:因此本篇会略过位运算,仅将其作为工具。主要还是子集DP。

2023-12-30 22:00:49 1912

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除