- 博客(234)
- 资源 (14)
- 收藏
- 关注
原创 volcano 的binpack调度
摘要:Binpack调度策略的核心目标是优化资源利用率,减少碎片化问题。该策略通过节点打分机制,优先选择资源利用率高的节点,以减少资源浪费(如设备维护成本)和通信开销(关联服务同节点部署)。打分过程综合考虑CPU、内存等资源的加权利用率,计算公式为资源权重乘以(请求量+已用量)/可用总量。Binpack得分最终与其他调度插件得分共同决定节点选择。该策略适用于大规模集群场景,可有效提升整体资源使用效率。
2026-04-21 16:33:45
209
原创 GPU通信速率对比
摘要:以太网理论带宽与实际TCP吞吐量存在差距,10G/25G/100G以太网实际吞吐约为理论值的80-94%。RDMA网络(如100G/200G/400G IB/RoCE)吞吐可达理论值的95%以上,明显优于TCP。NVLink带宽随版本提升显著,H100达1.8TB/s,Blackwell达3.6TB/s。GPU通信中,同NUMA节点内PCIe P2P速度(10-12GB/s)优于跨NUMA节点(4-8GB/s),后者受CPU互联总线限制导致带宽减半、延迟增加。
2026-04-11 17:58:17
303
原创 volcano 原理
文章摘要:随着云计算业务复杂度提升,需要更细粒度的调度支持。Volcano调度框架通过queue和job(podgroup)两层抽象实现资源管理,支持关联Pod同步调度、优先级调度和资源抢占。其调度流程分为enqueue、allocate等阶段,通过插件机制扩展策略,满足降低通信成本、保障核心业务等需求,为分布式训练等场景提供强大调度能力。
2026-04-06 19:08:01
296
原创 sglang 原理
本文介绍了Transformer模型推理的核心流程和关键技术。推理过程分为prefill和自回归两个阶段:prefill阶段完成分词、向量化和位置编码,生成首个token;自回归阶段通过迭代生成后续token直至结束。针对推理特点,需要专门的推理引擎来构建计算图、加载权重并提供API服务,同时支持KV缓存优化和多机多卡并行计算以提升效率。Sglang作为推理引擎的实现,重点解决了算子构建、权重加载、KV缓存管理以及张量和模型并行等关键技术问题。
2026-03-25 13:51:05
138
原创 kubeflow pipline部署
本文介绍了ModelFlow概念及其在ML领域的落地实现Kubeflow平台。重点描述了Kubeflow Pipelines(KFP)模块的部署方案,包括Kubernetes环境准备、Kubeflow安装步骤以及存储配置问题的解决方法。通过kubekey工具部署单节点Kubernetes集群后,按照官方文档安装Kubeflow组件,并通过修改MySQL和SeaweedFS的存储挂载路径解决了服务崩溃问题。最后通过端口转发验证了Pipeline UI的正常访问。该方案为机器学习工作流提供了可移植、可扩展的部署
2026-03-19 11:39:09
385
原创 sglang 单机多卡与多机多卡的部署
SGLang是一个基于Python的分布式计算框架,通过多进程架构突破GIL限制。它支持三种并行计算模式:张量并行(TP)、流水线并行(PP)和数据并行(DP),以及针对特定模型的局部计算并行。文章详细介绍了TP模式的单机多卡部署方法,展示了服务启动日志和API调用示例,并简要说明了多机多卡集群的配置方式。SGLang能够有效利用多GPU资源,为大规模语言模型推理提供高效的分布式计算支持。
2026-03-11 16:25:03
378
原创 GPU 集合通信库 NCCL原理
分布式深度学习训练中需要将各个GPU的梯度等信息汇总计算,或拆分下发。训练过程需要大量 GPU 卡协同工作, 而GPU 甚至需要跨节点通信。训练任务期望无感知底层的网络拓扑与GPU协同工作。因此出现了nccl,主要支持。
2026-03-11 10:54:41
363
原创 云平台构建 RDMA高性能网络
rdmaSharedDevicePlugin配置:在物理机上lan2、lan3、lan4、lan5分别对应mlx5_0、mlx5_1、mlx5_2、mlx5_3,将四张网卡分别以nvidia.com/mlx5_0、nvidia.com/mlx5_1、nvidia.com/mlx5_2、http://nvidia.com/mlx5_3的资源名称变成k8s的扩展资源,每个扩展资源定义为100份。
2026-03-11 10:06:20
604
原创 juicefs 构建存储系统
摘要:JuiceFS是一个支持平台化存储管理的系统,能将NFS、S3等不同存储统一为JuiceFS格式,通过元数据存储目录结构,数据存储实际内容。它提供多种访问方式:挂载到容器卷、通过S3接口访问、支持WebDAV协议操作目录。此外,JuiceFS还提供命令行工具,支持配额控制和数据备份,便于存储维护管理。
2026-03-09 15:50:37
56
原创 kubernetes深度分析 cdi nvidia-device
kubernets cdi主要完成 让节点感知可供容器使用的设备资源,当容器申请对应资源时,为该容器分配设备并挂入容器使用。以cdi接入nvidia显卡设备到容器为例。
2026-03-03 10:15:54
101
原创 kubernetes深度分析 csi juicefs
摘要:JuiceFS CSI插件通过juicefs-csi-node和juicefs-controller组件实现容器卷挂载。csi-node负责节点级操作:注册RPC、创建挂载目录、启动juicefsmountpod处理FUSE请求;业务容器通过该目录访问外部存储。controller负责元数据管理,不参与具体挂载。整个流程实现了容器对分布式存储的透明访问,数据最终写入外部dataserver和metadataserver。
2026-02-27 23:25:30
328
原创 kubernetes深度分析 cni calico
5. containerd 使用 calixxx 虚拟网卡通过 veth pair 的方式生成 对端虚拟网卡eth0 for pod,并放入pod对应的网络命名空间。网络的配置方式以cni插件的方式支持动态扩展,calico即其中一种网络插件。calico 的地址分配使用calico-ipam进行,但该工具管理的地址数据存放在etcd中,可以使用calicoctl进行查看。4. 在calico场景下,在节点上创建了联通节点间流量的隧道tunl0,并为每个pod创建了calixxx的虚拟网卡。
2026-02-26 19:32:20
345
原创 kubernetes深度分析 kube-proxy
摘要:kube-proxy通过监听API server中Service、Endpoint/EndpointSlice和Node资源的变化,维护服务地址到Pod地址的映射关系。这些映射关系会转换为iptables或ipvs规则,实现服务请求到Pod的转发。以minio服务为例,kube-proxy会将ClusterIP和NodePort映射到对应的Pod IP和端口,并使用轮询(rr)负载均衡策略。通过ipvsadm可查询到具体的转发规则,包括ClusterIP到Pod以及NodePort到Pod的映射关系。
2026-02-26 14:44:32
77
原创 kubernetes 深度分析 pod
run/containerd/io.containerd.runtime.v2.task/k8s.io/【容器ID】 该目录下主要有容器的配置信息,日志文件,以及容器rootfs目录。pod下的其他容器将 加入到与sandbox相同的 network namespace, ipc namespace, uts namespace, user namespace.pod 下的sandbox容器与业务容器的 cgroup namespace,pid namespace 独立。抱持与kubelet的独立。
2026-02-25 09:37:21
616
原创 kubernetes 多服务更新资源 冲突问题解决
当多个服务同时修改kubernetes相同资源时可能发生下面的冲突错误: 这是最常见的错误,表示请求无法完成,因为该资源已经被其他操作修改。Kubernetes 会返回一个包含详细信息的错误消息。: 当你尝试更新资源时,Kubernetes 会检查资源的版本。如果在更新时,资源的版本已经改变,系统可能会返回一个错误,提示你需要使用最新的版本进行更新。
2025-10-14 11:34:54
257
原创 RVC WebUI(Retrieval-based-Voice-Conversion-WebUI) 配置
RVC WebUI (Retrieval-based Voice Conversion,檢索式語音轉換) 為一款開源的AI翻唱軟體,可以依照你的意思,讓AI為你唱首歌。譬如,我讓川普翻唱Radiohead的High And Dry:這款軟體最大的特色是複製人聲和訓練模型的成本很低,不用太高階的顯示卡就能跑!
2025-09-27 14:21:50
1661
原创 volcano源码分析 - 2调度器
1. cache提供了当前job信息, podgroup信息,pod信息,节点信息的缓存集合,用于后续调度计算时作为参考的基础信息快照。2. 周期性的开启Session, 每次Session中将依次执行加载的各个Action过程(如: enqueue, allocate, preempt, reclaim, backfill)。3. 对于每个action将执行plugin中注册在该action中的对应回调函数。4. 在Session过程中,通过各个action过程,最终完成任务的调度抢占等工作。
2025-04-22 13:53:18
543
原创 volcano源码分析 - 1整体结构
Volcano是下首个也是唯一的基于Kubernetes的容器批量计算平台,主要用于高性能计算场景。它提供了Kubernetes目前缺 少的一套机制,这些机制通常是机器学习大数据应用、科学计算、特效渲染等多种高性能工作负载所需的。作为一个通用批处理平台,Volcano与几乎所有的主流计算框 架无缝对接,如等。它还提供了包括异构设备调度,网络拓扑感知调度,多集群调度,在离线混部调度等多种调度能力。
2025-04-22 10:11:11
1166
原创 golang gmp模型分析
就是告诉那些运行时间超过特定阈值(10ms)的G,该让一让了,怎么知道运行时间过长了呢,P里面有一个schedtick字段,每当调度执行一个新的G,并且不继承上个G的时间片时,就会把它自增1,而这个p.sysmontick中,schedwhen记录的是上一次调度的时间,监控线程如果检测到p.sysmontick.schedtick与p.schedtick不相等,说明这个P又发生了新的调度,就会同步这里的调度次数,并更新这个调度时间。实际上监控线程,调度器,GC等工作过程中都会按需执行netpoll。
2025-04-09 11:30:17
1409
转载 golang gc流程分析
我们还是基于上述的三色并发标记法来说, 他是一定要依赖STW的. 因为如果不暂停程序, 程序的逻辑改变对象引用关系, 这种动作如果在标记阶段做了修改,会影响标记结果的正确性。,STW的过程中,CPU不执行用户代码,全部用于垃圾回收,这个过程的影响很大,Golang进行了多次的迭代优化来解决这个问题。A.添加下游对象(nil, B) //A 之前没有下游, 新添加一个下游对象B, B被标记为灰色。正常执行算法逻辑,对象2,3标记为黑色,而对象3,因为对象4已经不会再扫描,而等待被回收清除。
2025-04-08 10:01:59
185
原创 gin 源码分析
这部分并不是 Gin 实现的,而是开篇在 Gin 的介绍里提到的 httprouter 实现的,Gin 使用了 httprouter 来做了这部分的功能。c就像是一根管道,将该次请求相关的所有的函数都串起来了。上文提到,当使用 gin.Default 创建一个 Engine 的时候,会执行 Engine 的 Use 方法导入两个函数,其中的一个是 Recovery 函数的返回值,它又是对其它函数的封装,最后调用到的函数是 CustomRecoveryWithWriter,来看一下这个函数的实现。
2025-04-07 14:31:33
827
原创 Langchain应用-rag优化
RAG,Retrieval-Augmented Generation,中文名检索增强生成,是AI领域非常重要的一种技术方案。其核心作用是给LLM大模型外挂专门的知识库,指导大模型生成更准确的输出。
2025-03-13 13:05:54
999
转载 istio与kubernetes资源关系
Istio的原理是拦截 Kubernetes 中创建 Pod 的事件,然后向 Pod 中注入一个包含 Envoy 的容器,进出 Pod 的流量会被 “劫持” 到 Envoy 进行处理。由于流量被 “劫持” 了,所以 Istio 可以对流量进行分析例如收集请求信息,以及一系列的流量管理操作,也可以验证授权信息。当 Envoy 拦截流量并执行一系列操作之后,如果请求没问题,就会转发流量到业务应用的 Pod 中。
2025-03-01 11:58:37
231
原创 langchain应用-agent
在 LangChain 中,Agent 是一个代理,接收用户的输入,采取相应的行动然后返回行动的结果。Agent 可以看作是一个自带路由消费 Chains 的代理,基于 MRKL 和的基本原理,Agent 可以使用工具和自然语言处理问题。官方也提供了对应的 Agent,包括 OpenAI Functions Agent、Plan-and-execute Agent、的 Agent 等。Agent 的作用是代表用户或其他系统完成任务,例如数据收集、数据处理、决策支持等。
2025-02-19 21:19:31
1200
原创 langchain应用-RAG
检索增强生成(Retrieval Augmented Generation),简称 RAG,已经成为当前最火热的LLM应用方案。
2025-02-18 23:40:37
597
原创 kubernetes-cni 框架源码分析
这篇文章主要深入探索 Kubernetes 网络模型,并了解容器、pod 间如何进行通讯。对于网络模型的实现将会在后面的文章介绍。
2025-02-13 23:02:04
1135
原创 kubernetes源码分析-kube-apiserver
基于属性的访问控制(Attribute-based access control - ABAC)定义了访问控制范例,其中通过使用将属性组合在一起的策略来向用户授予访问权限。启用ABAC鉴权器需要额外增加一个。
2025-02-13 14:54:19
843
原创 kubernetes源码分析 kubelet
从官方的架构图中很容易就能找到kubelet执行kubelet -h看到 kubelet 的功能介绍:kubelet 是每个 Node 节点上都运行的主要“节点代理”。使用如下的一个向 apiserver 注册 Node 节点:主机的hostname;覆盖host的参数;或者云提供商指定的逻辑。kubelet 基于PodSpec工作。PodSpec是用YAML或者JSON对象来描述 Pod。Kubelet 接受通过各种机制(主要是 apiserver)提供的一组PodSpec。
2025-02-13 11:14:58
1388
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅