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

12 月 19 日
阅读 4 分钟
64
2024 年 12 月 11 号,OpenAI 的 Kubernetes 集群发生故障,API、ChatGPT、Sora 等服务都受到了影响,且时间长达 4 小时 22 分钟。

系统组件优化的思考框架

12 月 15 日
阅读 2 分钟
135
常见的互联网架构基本离不开数据库、缓存、消息队列、搜索、数据处理等等各种组件,虽然组件的形态不一、功能不同,但是我仍然把对他们的优化总结归纳为了以下几点:

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

12 月 11 日
阅读 2 分钟
197
在使用 Kubernetes 时,可以通过 resources.requests 和 resources.limits 配置资源的请求和限额,例如:

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

11 月 30 日
阅读 4 分钟
279
有读者提问:Flannel 与 Calico 的区别。文本将解析一下这两个组件。FlannelFlannel 的架构非常简单,只有两个组件:flanneld 和 flannel-cni-plugin。在功能特性上,Flannel 有三个部分:使用 kubernetes API 或 etcd 存储数据。IPAM,给节点的 Pod 分配 IP 地址范围(podCIDR)。配置后端转发数据包。Flannel 支持以下...

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

11 月 28 日
阅读 3 分钟
353
在现代 AI 技术的推动下,声音处理领域取得了巨大进展。从语音识别(ASR)到文本转语音(TTS),再到个性化声音克隆,这些技术已经深入到我们的日常生活中:语音助手、自动字幕生成、语音导航等应用无处不在。

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

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

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

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

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

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

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

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

Kubernetes Extended Resource 扩展资源使用简介

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

Kubernetes Node 节点的生命周期简述

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

Kubernetes Node 节点上的镜像管理

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Kubernetes 集群内 DNS

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

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

9 月 13 日
阅读 4 分钟
3.9k
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 分钟
692
序言当一个新的 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 分钟
1.1k
随着 Kubernetes 在云原生领域的广泛使用,流量管理成为了至关重要的一环。为了有效地管理从外部流入集群的流量,Kubernetes 提供了多种解决方案,其中最常见的是 Ingress 和新兴的 Gateway API。

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

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

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

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

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

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

Redis 全文检索及使用示例

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