/images/avatar.jpg

Kiosk Studio (2022)

设计模式(Design Pattern)

设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。

LLM大模型 - langchain应用技术介绍

一个本地大模型,ChatGPT3.5 或 ChatGPT 4 都有这样一些问题。

数据缺少及时性,不能直接帮我们编辑 Word 或者 PDF 文件。大模型目前主要还是基于文本的交互等。

这样的场景非常多,因为大模型的核心能力是 意图理解与文本生成,而在我们实际应用过程中,输入数据和输出数据不仅仅是纯文本等。

针对大型语言模型效果不好的问题,之前人们主要关注大模型再训练、大模型微调、大模型的Prompt增强,但对于专有、快速更新的数据却并没有较好的解决方法,为此检索增强生成(RAG)的出现,弥合了LLM常识和专有数据之间的差距。

ollama 本地AI大模型

自 OpenAI 公司于 2022 年 11 月 30 日发布 ChatGPT 以来,经过 23 年一整年的发展之后,大语言模型的概念已逐渐普及,各种基于大语言模型的周边产品,以及集成层出不穷,可以说已经玩出花来了。

在这个过程中,也有不少本地化的模型应用方案冒了出来,针对一些企业知识库问答的场景中,模型本地化是第一优先考虑的问题,因此如何在本地把模型调教的更加智能,就是一个非常重要的技能了。

算法笔记-最短路径算法(Bellman-ford)

最短路径算法是一个比较常见的用于查找2点之间最短路径的方案。在工作中,由于涉及要查找2点之间的最短路径的场景,所以特此记录一下 算法思想 美国应用数学家Richard Bellman (理查德.贝尔曼, 动态规划的提出者)于1958 年发表了该算法。此外Lester Ford在1956年也发表了该算法。因此这个算法叫做Bellman-Ford算法。 Bellman-Ford算法是一种基于逐次逼近思想进行最短路径求解的算法。其可以被应用在带负权的有向图中,Bellman-ford 算法比dijkstra算法更具普遍性,因为它对边没有要求,可以处理负权边与负权回路。缺点是时间复杂度过高,高达O(VE), V为顶点数,E为边数。 其核心思想为:对于任意一个具有n个节点的图 𝐺 ,任意两点之间的最短路径至多包含 𝑛−1 条边。因此我们可以反复通过对边的松弛来得到当前图的最短路径。 也就是说:第1轮在对所有的边进行松弛后,得到的是源点最多经过一条边到达其他顶点的最短距离;第2轮在对所有的边进行松弛后,得到的是源点最多经过两条边到达其他顶点的最短距离;第3轮在对所有的边进行松弛后,得到的是源点最多经过一条边到达其他顶点的最短距离…… 松弛操作的含义是更新节点之间的最短距离。 分析 第一步:创建一个带权重 (可以有负权) 的有向图 第二步:选定一个起点(A),将A 到所有节点的 距离都置为 无穷大。 第三步:从节点A开始,将节点最短距离更新,比如 A -> B 直接相连,最短距离是 4 ,A->C 直接相连,距离是 2 。 第四步:最差的情况下,我们需要 V (节点个数)次这样的操作。一个节点最短路径需要被调整 V 次。 第五步:注意右上角的节点 D 是怎么调整的,因为 B -> D (4+2) = 6 , C -> D (2+4) =6 , E->D (6-5)=1 ,所以被更新. 第五步:经过最大循环次数 or 所有的顶点都有其路径长度且不再变后,检查是否有负循环。 负环的含义 短路径算法通常用于在加权图中找到两个顶点之间的最短路径。然而,当图中存在负权边时,情况就会变得复杂。负权环(Negative Weight Cycle)是指图中的一个环,其总权重为负值。如果存在负权环,那么最短路径的概念可能会变得模糊,因为你可以无限次地通过这个环来减少路径的总权重。

kube-schedule 调度实现

kubernetest 中有很多核心的组件,其中一个非常重要的组件是 kube-scheduler。 kube-scheduler 负责将新创建的 Pod 调度到合适的节点上运行。

vm1