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

今天 18:16
阅读 7 分钟
27
大语言模型(LLM)为基于文本的对话提供了强大的能力。那么,能否进一步扩展,将其转化为语音对话的形式呢?本文将展示如何使用 Whisper 语音识别和 llama.cpp 构建一个 Web 端语音聊天机器人。

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

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

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

11 月 19 日
阅读 3 分钟
160
RAG(Retrieval Augmented Generation 检索增强生成)是目前业界中的一种主流方法,通过增加额外知识的方式来减少大语言模型(LLM)的幻觉问题(一本正经的胡说八道)。

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

11 月 16 日
阅读 3 分钟
231
Kubernetes 10 问假设集群有 2 个 node 节点,其中一个有 pod,另一个则没有,那么新的 pod 会被调度到哪个节点上?应用程序通过容器的形式运行,如果 OOM(Out-of-Memory)了,是容器重启还是所在的 Pod 被重建?应用程序配置如环境变量或者 ConfigMap 可以不重建 Pod 实现动态更新吗?pod 被创建后是稳定的吗,即使用...

Kubernetes Extended Resource 扩展资源使用简介

11 月 6 日
阅读 2 分钟
359
Kubernetes 除了提供基于 CPU 和内存的传统计算资源调度外,还支持自定义的 Extended Resource 扩展资源,以便调度和管理其它各种类型的资源。

Kubernetes Node 节点的生命周期简述

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

Kubernetes Node 节点上的镜像管理

10 月 29 日
阅读 2 分钟
359
Kubelet 通过 gRPC 协议与 CRI 组件(如 containerd、cri-o)进行交互。在创建新 Pod 时,kubelet 调用 gRPC 的 ImageService.PullImage 方法,由 CRI 组件将镜像下载到节点上。镜像在磁盘上的组织和管理由 CRI 组件负责,不同的 CRI 组件存在差异。

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

10 月 25 日
阅读 3 分钟
342
ChatGPT 是一个基于 LLM 的对话系统。本文将介绍如何构建一个类似 ChatGPT 的系统,包括从模型、推理引擎到整体架构的构建过程。

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

10 月 25 日
阅读 3 分钟
393
在现在的 AI 领域,Fine-Tuning(微调)是一种常见且有效的方法,通过对已经训练好的模型进行特定任务的微调,可以使模型在特定场景下表现得更加出色和符合需求。在这篇文章中,我将以 Kubernetes 文档的英译中为背景,分享我进行 Fine-Tuning 的探索过程。

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

10 月 20 日
阅读 3 分钟
773
随着人工智能(AI)和机器学习(ML)的快速发展,GPU 已成为 Kubernetes 中不可或缺的资源。然而,Kubernetes 最初设计的调度机制主要针对 CPU 和内存等常规资源,未对异构硬件(如 GPU)提供原生支持。

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

10 月 17 日
阅读 2 分钟
643
之前我用 Ollama 在本地跑大语言模型(可以参考《AI LLM 利器 Ollama 架构和对话处理流程解析》)。这次想再捣鼓点进阶操作,比如 fine-tuning。

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

10 月 15 日
阅读 2 分钟
803
Ollama 是一个快速运行 LLM(Large Language Models,大语言模型)的简便工具。通过 Ollama,用户无需复杂的环境配置,即可轻松与大语言模型对话互动。

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

10 月 11 日
阅读 3 分钟
526
在云原生环境中,为确保容器化应用的安全运行,Kubernetes 利用了 Linux 内核的三大安全机制:Seccomp、AppArmor 和 SELinux,并引入了 Pod 安全性标准与准入控制来增强 Pod 的安全性。

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

10 月 7 日
阅读 3 分钟
434
在 Kubernetes 中,kube-proxy 和 CNI 插件协同工作,确保集群内 Pod 之间的互联互通。Kube-proxy & CNI如上图所示,假设我们有一个类型为 ClusterIP 的 Service,它对应两个位于不同节点的 Pod。当我们从 Pod A 对该 Service 发起请求时:Pod A: 192.168.0.2 --> service-name(通过域名访问 Service)。CoreDNS 进...

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

9 月 29 日
阅读 2 分钟
662
本文将会以 CSI driver - NFS 为例,讲述 CSI 驱动的工作流程和原理。CSI 概述CSI 驱动通常分为两个部分:Controller plugin: 负责存储资源的管理,如卷的创建、删除、扩容、快照等。Node plugin: 处理节点级别的存储操作,负责在具体的节点上执行卷的挂载和卸载等任务。CSI 与 kubernetes 组件的交互:Controller plugi...

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

9 月 26 日
阅读 3 分钟
656
在容器化技术的演进中,OCI(Open Container Initiative)提供了一套标准化的规范,帮助统一容器的构建、分发和运行。OCI 规范包含三个部分:

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

9 月 22 日
阅读 2 分钟
420
kubectl 是与 Kubernetes 集群交互的命令行工具,用户通过它可以对集群资源进行操作和管理。你有没有想过,当我们执行一条 kubectl 命令之后,背后都发生了什么?

Kubernetes 集群内 DNS

9 月 18 日
阅读 3 分钟
345
在互联网早期,随着连接设备数量的增加,IP 地址的管理与记忆变得越来越复杂。为了简化网络资源的访问,DNS(Domain Name System)应运而生。DNS 的核心作用是将用户可读的域名(如 www.example.com)解析为对应的 IP 地址(如 93.184.215.34),从而使用户无需记忆复杂的数字串,便能轻松访问全球各地的网络资源。

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

9 月 13 日
阅读 4 分钟
703
pods can communicate with all other pods on any other node without NATagents on a node (e.g. system daemons, kubelet) can communicate with all pods on that node

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

9 月 7 日
阅读 2 分钟
544
序言当一个新的 Pod 被提交创建之后,Kubelet、CRI、CNI 这三个组件之间进行了哪些交互?Kubelet -> CRI -> CNI如上图所示:Kubelet 从 kube-api-server 处监听到有新的 pod 被调度到了自己的节点且需要创建。Kubelet 创建 sandbox 并配置好 Pod 的环境,其中包括:Kubelet 通过 gRPC 调用 CRI 组件创建 sandbox。...

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

8 月 31 日
阅读 4 分钟
900
随着 Kubernetes 在云原生领域的广泛使用,流量管理成为了至关重要的一环。为了有效地管理从外部流入集群的流量,Kubernetes 提供了多种解决方案,其中最常见的是 Ingress 和新兴的 Gateway API。

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

8 月 24 日
阅读 2 分钟
410
在此拓扑中,终端设备通过 WiFi 连接到路由器,路由器再连接到光猫(或终端设备通过移动网络 4G/5G 连接到基站),之后 ISP 网络服务提供商接管网络通信,将请求最终转发至应用服务器。

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

8 月 22 日
阅读 3 分钟
436
本文基于《Designing Data-Intensive Applications》一书(设计数据密集型应用,简称 DDIA),深入探讨了 Redis、Kafka 和 Elasticsearch 等常用组件的分区与复制机制。通过这些案例分析,我们可以更好地理解分布式系统的基本原理和实际应用。

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

8 月 15 日
阅读 2 分钟
305
引言本文将会描述一个典型的系统架构,然后分析其在理论上是否能够支撑百万并发的请求。典型系统架构及分析为了降低复杂性,笔者将系统简化为了下图所示:该系统架构包含的组件有:网关层:Load Balancer / API Gateway服务层:HTTP Server中间件:Redis、MQ存储层:MySQL / PostgreSQL忽略业务场景的复杂性,让我们依次...

Redis 全文检索及使用示例

7 月 16 日
阅读 4 分钟
588
Redis 除了我们所熟知的缓存功能之外,还通过 RedisJSON、RediSearch、RedisTimeSeries、RedisBloom 等模块支持了 JSON 数据、查询与搜索(包括全文检索、向量搜索、GEO 地理位置等)、时序数据、概率计算等等扩展功能。这些模块既可以按需导入,也被全部打包到了 Redis Stack 中方便我们直接使用。

Redis 向量搜索

7 月 9 日
阅读 6 分钟
974
Redis 除了我们所熟知的缓存功能之外,还通过 RedisJSON、RediSearch、RedisTimeSeries、RedisBloom 等模块支持了 JSON 数据、查询与搜索(包括全文搜索、向量搜索、GEO 地理位置等)、时序数据、概率计算等等扩展功能。这些模块既可以按需导入,也被全部打包到了 Redis Stack 中方便我们直接使用。

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

7 月 4 日
阅读 4 分钟
626
以图搜图系统指的是从图像内容提取特征向量,然后使用向量数据库进行向量数据的插入、删除、相似性检索等操作,进而提供根据图像内容搜索出具有相似内容的其它图像的功能。

Kubernetes scheduler 概述及自定义调度器

6 月 15 日
阅读 5 分钟
718
kube-scheduler 是 k8s 集群中控制平面的一个重要组件,其负责的工作简单且专一:给未分配的 pod 分配一个 node 节点。

Kubernetes Service 与 long-lived connections

6 月 12 日
阅读 2 分钟
479
本文将会介绍:从 pod 到 service 再到 pod,kubernetes 中的流量是怎么走的?对于 long-lived connection 长连接又是怎样的情况?从 pod 到 service 再到 pod如上图所示:1、我们先创建一个多副本的 deployment,k8s 会通过 CNI(容器网络接口)给每个 pod 分配一个集群内可达的 IP 地址。2、我们随后创建一个类型为 cl...

我的 2024 年 Elasticsearch 认证考试经验与真题回顾

3 月 18 日
阅读 5 分钟
645
我于 2024 年 3 月 14 日参加了 Elastic Certified Engineer(ECE)认证考试,并与 18 日收到了考试通过的邮件。本文将会回顾我的考试过程、考试真题、个人感受。