自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

凌虚Blog

程序员,架构师,编程,应用开发,消息队列,中间件,数据库,容器化,大数据,图像处理,机器学习,人工智能,个人成长。

  • 博客(52)
  • 收藏
  • 关注

原创 Kubernetes APF(API 优先级和公平调度)简介

APF在 v1.29 版本成为稳定的特性,为的流量控制提供了更细粒度的处理机制。

2024-12-23 18:46:54 1051

原创 我对 OpenAI Kubernetes 集群故障的追问与疑惑

是一个非常重要的组件,不只是文中提到的 DNS 服务会与它交互,因此对集群的监控一定要额外注意它。另外很多组件的数据存储除了支持之外,还可以直连etcd,因此做高可用的时候,也可以考虑让组件使用另外的etcd,从而减小对控制平面的依赖。

2024-12-19 17:39:53 962

原创 系统组件优化的思考框架

通过建立结构化的思考框架,可以避免我们在面对问题时陷入混乱和无序。本文仅供参考,更重要的是自我思考并构建自己的框架和系统。(我是凌虚,关注我,无广告,专注技术,不煽动情绪,欢迎与我交流)

2024-12-15 22:58:53 581

原创 Kubernetes:CPU 配置、Linux CFS、编程语言的性能问题

Kubernetes 工作负载的 CPU 配额决定了 Linux CFS 的行为,进而有可能导致编程语言意料之外的性能问题。

2024-12-11 19:10:33 731

原创 Kubernetes 集群网络:Flannel 与 Calico 的区别

Flannel的架构非常简单,在小规模集群上能够很好的工作。Calico的架构更加复杂,不仅支持Flannel具备的所有功能,还提供了更多的网络模型(如IPIPBGP),并支持eBPF、监控、网络策略和流量管控等诸多功能,适用于更大规模的集群。

2024-11-30 15:45:14 1221

原创 AI 声音:数字音频、语音识别、TTS 简介与使用示例

语音技术作为AI应用中的重要分支,正在改变人机交互的方式。从基础的数字音频处理到ASR和TTS技术的成熟,再到声音克隆赋予AI个性化表达能力,这些技术不仅满足了自动化需求,还为虚拟助手、娱乐、医疗、教育等领域带来了创新可能性。希望本文的介绍能为你打开探索 AI 声音领域的大门!

2024-11-28 16:05:30 1933

原创 Web 端语音对话 AI 示例:使用 Whisper 和 llama.cpp 构建语音聊天机器人

通过结合 Web 端的语音识别和语音合成功能、Whisper的语音转文本能力、以及llama.cpp提供的LLM服务,我们成功构建了一个语音对话系统。语音对话的场景非常丰富,例如口语外教、语音问答等等。希望本文的示例能够为你在构建语音交互式 AI 系统时提供启发。

2024-11-24 18:18:11 1894

原创 构建自己的框架去做技术选型

技术选型无处不在,你可能需要选择一种类库、选择一个框架、选择一种语言、选择一种组件、选择一个架构模式、选择一种系统方案……。那么如何构建一个决策或思维框架去做技术选型呢?

2024-11-21 21:13:07 544

原创 RAG 示例:使用 langchain、Redis、llama.cpp 构建一个 kubernetes 知识库问答

RAG系统通过引入知识库,扩展了LLM对专业领域和实时信息的支持能力,使其在回答专业问题时更加准确高效。

2024-11-19 18:53:08 1075

原创 Kubernetes 10 问,测测你对 k8s 的理解程度

其次,Pod 是一组独立的 Linux 命名空间,容器本质上是一个进程,Pod 内容器共享 Network、IPC、UTS namespace,而每个容器的 PID、Mount namespace 则是独立的。的方式进行采集,但是存在日志丢失的可能,因为一旦 pod 被删除,对应的容器日志文件也会被删除,而日志代理可能还未完成全部日志的采集。所以,针对长连接,是有可能出现负载不均衡的情况。策略的时候,新的 pod 会被调度到已经有 pod 的节点上,而使用另外两种策略时,则调度到没有 pod 的节点。

2024-11-16 18:06:03 1239 1

原创 Kubernetes Extended Resource 扩展资源使用简介

为 Kubernetes 提供了灵活的扩展能力,使集群能够支持更多样化的资源类型。然而在实践中,它仅解决了资源声明和调度的一部分问题。

2024-11-06 20:44:41 1134

原创 Kubernetes Node 节点的生命周期简述

Node节点是 Kubernetes 的核心组件之一,其生命周期可以简要概括为:注册、运行、下线。本文将简要介绍Node生命周期中发生的关键事件。

2024-11-01 22:34:59 600

原创 又拍图片管家亿级图像之搜图系统的两代演进及底层原理

第一代搜图系统在技术上选择了pHashpHash算法计算简单,可以对抗一定程度的压缩、水印、噪声等影响。直接使用了项目现有资源,在搜索上没有增加额外的成本。当然这套系统的局限性也很明显:由于pHash算法是对图像的整体进行抽象表示,一旦我们对整体性进行了破坏,比如在原图加一个黑边,就会几乎无法判断相似性。为了突破这个局限性,底层技术截然不同的第二代搜图系统应运而生。第二代搜图系统在技术上选择了CNNMilvus的方案,而这种基于特征向量的搜索在业务上也提供了更好的支持。

2024-10-29 17:11:08 630

原创 数据管道 Logstash 入门

Logstash 的插件除了本文提到的这些之外还有很多,想要详细的了解每个插件如何使用还是要去查阅官方文档。得益于 Logstash 的插件体系,你只需要编写一个配置文件,声明使用哪些插件,就可以很轻松的构建数据管道。

2024-10-29 16:54:22 757

原创 Elasticsearch 自定义打分 Function score query

为了行文方便,本文把 ES 对query匹配的文档进行打分得到的 score 记为,而最终搜索结果的 score 记为,显然,一般情况下(也就是不使用自定义打分时),就是。那么当我们使用了自定义打分之后呢?最终结果的 score 即跟原来一样执行query并且得到原来的。执行设置的自定义打分函数,并为每个文档得到一个新的分数,本文记为func_score。最终结果的分数等于与func_score按某种方式计算的结果(默认是相乘)。例如,搜索标题包含 elasticsearch 的文档。

2024-10-29 16:53:24 762

原创 构造请求日志分析系统

很多时候我们会使用负载网关去代理转发请求给实际的后端服务,这时候请求日志还会包括以下数据:客户端 IP 地址可以衍生出以下数据: 可以解析出以下信息:请求耗时统计:根据 数据响应状态监控:根据 数据结合业务分析:请求的 地址和 参数一定是对应具体业务的,例如日志系统使用 ELK + kafka 构建是业界比较主流的方案,beats、 logstash 进行日志采集搬运,kafka 存储日志等待消费,elasticsearch 进行数据的聚合分析,grafana 和 kibana 进行图形

2024-10-29 16:52:14 1033

原创 Elasticsearch Search Template 搜索模板

有时候我们需要改变默认的定界符{{ }},那么就可以使用{{= =}}的方式自定义定界符。定界符被定义为了<% %>,这样原先{{key}}的使用方式就变成了<%key%>。就重新把定界符改回了{{ }}。更多语法详情请查阅官方文档。使用 search template 可以对搜索进行有效的解耦,即应用程序只需要关注搜索参数与返回结果,而不用关注具体使用的 DSL 查询语句,到底使用哪种 DSL 则由搜索模板进行单独管理。

2024-10-29 16:38:36 837

原创 Elasticsearch 分布式搜索的运行机制

ES 有两种Local_id_score缺点:由于每个分片独立使用自身的而不是全局的 Term/Document 频率进行相关度打分,当数据分布不均匀时可能会造成打分偏差,从而影响最终搜索结果的相关性。与的运行机制非常类似,但是有两点不同。Global_id_score缺点:太耗费资源,一般还是不建议使用。

2024-10-29 16:37:15 419

原创 Elasticsearch 向量搜索

本文将会介绍 Elasticsearch 向量搜索的两种方式。

2024-10-29 16:35:11 1041

原创 Kubernetes Node 节点上的镜像管理

在 node 节点上,镜像由CRI组件(如containerdcri-o)管理。kubelet 每 5 分钟进行一次镜像的垃圾回收。如果配置了镜像的最大存在时间,则不管磁盘使用率是否达到高水位线,都会删除符合条件的镜像。之后,镜像的删除将依据高低水位线的配置来触发,具体删除操作由 CRI 组件执行,而 kubelet 仅负责发起 gRPC 调用。

2024-10-29 00:39:58 638

原创 如果自建 ChatGPT,我会如何从 Model、Inference runtime 构建整个系统

本文介绍了自建 ChatGPT 系统的核心架构和扩展方式。从基础的对话流程入手,设计了包含会话管理和历史消息存储的系统框架,并讨论了系统的扩展策略。

2024-10-25 22:21:16 696

原创 以翻译 Kubernetes 文档为例,探索 AI 模型 Fine-Tuning 微调

在这次基于 Kubernetes 文档的翻译实验中,我探索了分别使用特定领域模型和LLM进行的过程,并通过LoRA技术有效地提升了的性能。除了LoRA之外,还有AdapterQLoRADoRA等等,它们都属于PEFT)的研究范畴。

2024-10-25 00:06:37 716

原创 Kubernetes GPU 调度和 Device Plugin、CDI、NFD、GPU Operator 概述

通过CDINFD和Operator机制,Kubernetes 实现了对 GPU 等特殊硬件资源的自动化管理与高效调度。然而,特定厂商的硬件仍然存在差异化的部署与配置,使用时需要额外关注。

2024-10-20 16:08:39 874

原创 只想简单跑个 AI 大模型,却发现并不简单

之前我用Ollama在本地跑大语言模型(可以参考这次想再捣鼓点进阶操作,比如。我的想法是:既然有现成的大模型,为什么不自己整理些特定领域的数据集,给模型“加点料”呢?这样最后就能得到一个针对特定领域优化过的模型了。不过,我很快发现,事情并没有想象的那么简单。想要fine-tune?那得先能通过代码的方式跑起来模型再说吧!于是,这篇文章就诞生了,记录了我如何“简单”跑个 AI 大模型,结果问题不断的过程。

2024-10-17 21:12:04 738

原创 AI LLM 利器 Ollama 架构和对话处理流程解析

Ollama是一个快速运行LLM(Large Language Models,大语言模型)的简便工具。通过Ollama,用户无需复杂的环境配置,即可轻松与大语言模型对话互动。本文将解析Ollama的整体架构,并详细讲解用户在与Ollama进行对话时的具体处理流程。Ollama通过集成llama.cpp推理引擎,并进一步封装,将复杂的LLM技术变得触手可及,为开发者和技术人员提供了一个高效且灵活的工具,很好地助力了各种应用场景下的大语言模型推理与交互。

2024-10-15 19:54:06 1818

原创 Kubernetes:Seccomp、AppArmor、SELinux & Pod 安全性标准和准入

SeccompAppArmor和SELinuxSeccomp(Secure Computing):限制程序的系统调用(syscall)。AppArmor:限制程序对特定资源的访问。SELinux(Security-Enhanced Linux):使用标签和策略限制对资源的访问。Kubernetes 使用 Linux 内核的SeccompAppArmor和SELinux安全机制,通过限制系统调用和资源访问来提升容器的安全性。

2024-10-11 19:12:56 1178

原创 Kubernetes: kube-proxy 和 CNI 是如何协作的?

在 Kubernetes 集群中,kube-proxy和CNI插件通过配置 Linux 内核的网络组件(如NetfilterVXLAN等),协同工作以确保 Pod 和 Service 之间的通信。随着eBPF等技术的发展,某些 CNI 插件能够实现无代理的服务转发,进一步优化了网络性能。

2024-10-07 21:28:06 903

原创 Kubernetes CSI 简介:工作流程和原理

CSI: 负责存储资源的管理,如卷的创建、删除、扩容、快照等。: 处理节点级别的存储操作,负责在具体的节点上执行卷的挂载和卸载等任务。CSI与交互,监听存储资源的变更并执行相应操作。向kubelet注册自己,而后kubelet会向其发起调用。由于交互的通用性,为了简化 CSI 驱动程序的开发,社区提供了很多:用于卷的动态配置。监听PVC对象,向 CSI 驱动程序发起或调用。:负责将 CSI 驱动注册到kubelet,以便后续的调用。:用于卷的 attach/detach hooks 集成。

2024-09-29 20:58:04 1192

原创 OCI 简介:Kubernetes 环境下从代码到容器的全流程

在容器化技术的演进中,OCI(Open Container Initiative)提供了一套标准化的规范,帮助统一容器的构建、分发和运行。OCI:定义了容器镜像的结构,确保镜像可以被各种工具识别和管理。:定义了容器镜像的分发方式,保证镜像可以通过标准化的 HTTP API 与镜像仓库交互。:定义了容器的运行标准,确保容器运行时可以统一执行和管理容器生命周期。下文将结合从代码到容器的完整 CICD 流程,详细讲解每个 OCI 规范的具体作用。

2024-09-26 21:16:24 805

原创 kubectl 执行一条命令之后发生了什么?

文本讲述了kubectl命令执行背后的整个过程,以为例,涉及kubeletCRI等多个组件的协作,以及HTTPSWebSocketgRPC等多种通信协议。

2024-09-22 16:16:39 679

原创 Kubernetes 集群内 DNS

在互联网早期,随着连接设备数量的增加,IP 地址的管理与记忆变得越来越复杂。为了简化网络资源的访问,DNS(Domain Name System)应运而生。DNS的核心作用是将用户可读的域名(如 www.example.com)解析为对应的 IP 地址(如 93.184.215.34),从而使用户无需记忆复杂的数字串,便能轻松访问全球各地的网络资源。DNS是一种应用层协议,与 HTTP(S) 等协议同属 OSI 网络模型中的最高层。

2024-09-18 15:32:26 1330

原创 Kubernetes CNI 网络模型概览:VETH & Bridge / Overlay / BGP

本文介绍了OverlayBGP三种CNI网络模型。使用的前提条件是集群内 Pod IP 可路由,然而很多时候无法满足此要求,因此众多CNI插件通过VXLANIP-in-IP等方式实现了Overlay网络,进而保证集群内容器的互通。在某些复杂场景下(如跨集群或跨云环境),集群内 Pod 需要支持集群外部的可访问性,此时则可以使用BGP的方式。

2024-09-13 16:19:36 1246

原创 Kubernetes 之 kubelet 与 CRI、CNI 的交互过程

其实不管是新建 Pod 还是其它场景,KubeletCRICNI的调用过程都是Kubelet调用CRICRI调用CNI。

2024-09-07 16:37:25 1059

原创 Kubernetes 网关流量管理:Ingress 与 Gateway API

Ingress是否会被替代?不会,Ingress自 1.19 版本 GA 后并没有计划弃用。Ingress与都是声明性资源(可以简单理解为配置文件),两者都需要由具体的网关支持工作。Ingress提供了较为简单的流量管理,适用于小规模和简单的流量需求,其实现依赖于具体的控制器,因此存在一定的供应商绑定问题。的标准化设计提供了跨平台的兼容性和一致性,并且支持多协议、多团队协作和更复杂的流量管理需求。

2024-08-31 19:02:02 1707

原创 图解计算机网络:一条 HTTP 请求的网络拓扑之旅

本文介绍了 HTTP 请求从用户终端设备到应用服务器的全过程,并通过图示说明了请求如何在 OSI 模型的不同层次间传递和转化。

2024-08-24 15:36:10 1097

原创 DDIA 分布式数据的分区与复制 - 基于 Redis、Kafka、Elasticsearch 的深入分析

本文通过对RedisKafka和三个常用组件的分析,展示了分布式系统中分区和复制机制的设计与实现。可以看到哈希分区是常见的选择。基于性能和复杂度的权衡,单主异步复制往往是默认配置,但为了提供更高的数据一致性,这些组件也会提供多从复制确认的方案。

2024-08-22 18:57:44 1245

原创 典型系统架构的百万并发理论分析

本文化繁为简,以一个典型的系统架构为例,从理论上分析了各个组件的性能上限,以及对百万并发的支撑情况。对常用组件心中有数,在系统设计时才能有理有据。至于真实业务场景下的系统最大并发数,则只能由系统压测得到结果。

2024-08-15 18:54:31 1034

原创 Redis 全文检索及使用示例

FT.CREATE命令中的可选参数STOPWORDS,将会影响分词命令FT.SYNUPDATE movies group1 爱情 凌虚那么FT.SEARCH movies '爱情'等价于FT.SEARCH movies '凌虚'TFIDF(默认使用)BM25(Elasticsearch 使用的打分算法)DISMAXDOCSCOREHAMMINGFT.SEARCH movies '爱情' RETURN 0 WITHSCORES。

2024-07-16 13:49:46 1416

原创 Redis 向量搜索

等模块支持了 JSON 数据、查询与搜索(包括全文搜索、向量搜索、GEO 地理位置等)、时序数据、概率计算等等扩展功能。可以看到我们的单条数据使用了约 16 KB 内存,以此类推 1000 条数据需要 16 MB 内存,1 百万数据需要 16 GB 内存。最后,如果我们的数据量并不大,那么使用 Redis 作为向量数据库也是一个很好的选择。为此,我们使用 JSON 格式来保存数据,并使用 FT.CREATE。通过设置 userID 的范围对索引中的部分数据进行向量搜索。示例中,我们使用 JSON.SET。

2024-07-09 22:42:23 2052

原创 以图搜图架构优化:使用客户端模型提取图像特征

以图搜图系统指的是从图像内容提取特征向量,然后使用向量数据库进行向量数据的插入、删除、相似性检索等操作,进而提供根据图像内容搜索出具有相似内容的其它图像的功能。客户端相比于服务端具有硬件资源有限、且不可扩展的特点,因此这就要求客户端使用的模型要更小、计算消耗更少。我们根据上图中的模型对比可以看到 mobilenet 这种模型更符合我们的需求(模型的名字就能看出来)。从上图可以看到,在我的客户端处理一张图像可以在一秒内完成,当然实际耗时取决于硬件资源和图像大小。最后,如果你对此类主题感兴趣,可以阅读我的。

2024-07-04 16:51:40 743

空空如也

空空如也

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

TA关注的人

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