自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

李昊轩的博客

兼听则明 从善如流

  • 博客(488)
  • 资源 (5)
  • 收藏
  • 关注

原创 从“叠加”到“重叠”:Overlay 与 Overlap 双引擎驱动技术性能优化

摘要: 技术优化中,"Overlay"与"Overlap"常被混淆,但二者逻辑迥异:Overlay通过分层复用资源(如容器镜像共享),实现空间优化;Overlap通过并行交叉耗时环节(如异步IO),压缩整体耗时。典型场景包括容器存储(OverlayFS)、分布式网络(VXLAN)等分层复用,以及API批量调用、数据流水线等时间重叠。两者可协同使用,如容器环境下既用Overlay优化存储,又用Overlap加速启动流程,实现"空间+时间"双重性能提升

2025-09-02 11:32:22 1058

原创 PD分离与EP分离技术

在拥有Mixture of Experts (MoE) 架构的大型语言模型中,模型包含多个“专家”子网络。Expert Parallelism 是一种将这些不同的专家子网络分布到多个计算设备(例如GPU)上的并行计算技术。每个计算设备负责存储和运行模型中一部分的专家。当输入数据进入模型时,一个“门控网络”(gating network)会决定将哪些输入路由到哪些专家进行处理。只有被选中的专家会对特定的输入进行计算,最终它们的输出会被合并以产生最终结果。

2025-03-31 11:53:29 2836

原创 开源 vGPU 方案 HAMi 解析

HAMi 全称为 Heterogeneous AI Computing Virtualization Middleware,是一个异构算力虚拟化平台。它最初源自第四范式的 k8s-vgpu-scheduler,如今不仅开源,还将核心的 vCUDA 库 libvgpu.so 开放出来。当前,HAMi 在 NVIDIA GPU 的 vGPU 方案方面表现出色,为我们提供了一种有效的 GPU 资源共享和切分解决方案。HAMi 提供了丰富的自定义配置选项,通过在安装过程中使用-set参数来修改。

2025-01-08 15:57:16 2653

原创 通过生产环境流量录制/线下回放 配合基于云原生的灰度发布 实现保质保量的持续集成

流量回放/复制, 从测试的角度, 本质是:通过把线上的真实流量复制到线下环境,解决测试环境模拟不够真实,或覆盖不够全面的问题。

2022-08-15 10:04:57 996 1

原创 通过PowerMockito来模拟时钟回拨, 验证改进版雪花算法是否起效

改进版雪花算法详见上篇传送门简单说明: 通过PowerMockito来mock雪花算法中获取时间的算法, 从而实现伪造时间覆盖.测试类import org.junit.Assert;import org.junit.Before;import org.junit.Test;import org.junit.runner.RunWith;import org.powermock.api.mockito.PowerMockito;import org.powermock.core.classlo

2021-04-21 17:56:15 2778 3

原创 分层架构下的跨层通信:接口抽象如何解决反向调用

本文探讨了分层架构中实现反向通知的接口解耦方法。通过"K8S错峰控制器"的三层架构示例,展示了ResourceManager→StrategyManager→Dispatcher的单向依赖链。为解决策略更新需反向通知Dispatcher的需求冲突,提出了"接口订阅"模式:在策略层定义ReloadNotifier接口,由调度层实现该接口并在初始化阶段注册,使下层通过接口适配上层的通知契约。这种设计既保持了分层架构的单向依赖原则,又实现了模块间的松耦合通信,有效提升了系统

2025-08-10 14:35:02 319

原创 Go 工程化全景:从目录结构到生命周期的完整服务框架

本文介绍了生产级Go服务的标准化构建方法,包括目录结构设计和生命周期管理。目录组织采用分层设计,包含internal/model数据模型层、业务逻辑层及通用工具库。重点讲解了服务生命周期的闭环管理:通过bootstrap包实现有序初始化(配置→日志→客户端→业务服务)和优雅退出(反向释放资源)。主程序入口使用cobra处理命令行参数,确保启动逻辑简洁可靠。该框架可帮助开发者构建结构清晰、稳定性高的Go服务。

2025-08-03 17:54:10 943

原创 每期一个小窍门:用 “抢鸡蛋” 读懂 Go 并发核心 —— 为什么 “通信” 比 “共享内存” 更靠谱?

本文通过“抢鸡蛋”的例子生动演示了Go语言并发编程的核心思想——"通过通信共享内存"。生产者通过无缓冲通道发送11个鸡蛋,100个消费者从通道获取鸡蛋,利用chan传递数据和sync.WaitGroup控制流程。这种方式避免了传统共享内存需要加锁的问题,通道本身具有并发安全性,通过关闭通道传递结束信号,WaitGroup自动管理任务状态。与共享内存相比,通信方案更简洁高效,无需处理锁的复杂性,体现了Go语言"不要通过共享内存来通信,而要通过通信来共享内存"的并发哲学。

2025-07-27 14:38:09 340

原创 # Go语言并发陷阱:为什么channel同步了,数据却偶尔打印不出来?

摘要:Go语言并发编程中偶发"打印结果丢失"问题,根源在于主协程提前退出导致内核缓冲区未及时刷新。文章分析了数据从代码到终端的三个缓冲区层级(Go用户态→OS内核→终端设备),指出通道同步虽保证数据传递但不确保打印完成。特别在首次运行时,编译缓存导致的启动时间差异会放大该问题。解决方案需三重保障:通道同步确保数据传递、os.Stdout.Sync()强制刷新内核缓冲区、sync.WaitGroup确保主协程等待子协程完成完整打印流程。(149字)

2025-07-27 13:15:38 754

原创 Unix、Linux、POSIX、Minix 区别与联系

摘要: Unix作为现代操作系统的技术原型,提出了"一切皆文件"、管道工具等核心设计,并分化出BSD和System V等分支。Linux在Unix基础上重构,通过GPL开源和POSIX兼容性迅速扩张,成为服务器、嵌入式等领域的首选。POSIX标准规范了跨系统接口,确保软件可移植性。Minix采用微内核架构,主要用于教学和嵌入式场景。四者对比显示,从Unix到Linux的发展体现了标准化接口与开源协作对技术普及的推动作用。

2025-06-20 16:55:29 458

原创 关于 DeepSeek 架构 混合专家模型MoE

在人工智能领域,大模型发展势头正猛,但也遇到了不少难题,像计算成本高、处理复杂任务能力有限等。混合专家模型(MoE)的诞生,为这些困境提供了新的解决思路。

2025-02-06 15:32:18 371

原创 深入理解k8s中的容器存储接口(CSI)

Pod调度到节点后,AD控制器创建VolumeAttachment对象,External Attacher调用CSI插件挂接存储卷,完成后更新状态。:用户创建PVC,K8s根据PVC和StorageClass,让External Provisioner调用CSI插件创盘,之后创建PV并绑定PVC。:Kubelet发现使用CSI类型PV的Pod调度到本节点,等待VolumeAttachment状态就绪,调用CSI插件挂载。,而且存储插件特权高,存在安全隐患。CSI的出现,就是为了解决这些问题,把。

2025-02-05 15:40:34 1535

原创 每期一个小窍门:活用 Golang 中的 Context

等信息,且获取订单、推荐、物流信息分别有 500 毫秒、400 毫秒、700 毫秒的超时限制。在 Golang 并发和分布式系统中不可或缺,掌握它有助于开发高效应用。各分支任务要有超时控制,且单个分支超时时不能影响整体流程;再看自定义场景,有一个查询接口需在 1 秒内完成,要传递。在此过程中,存在诸多问题:需在。并传值,子函数中也根据需求设置超时和获取值。分别处理订单详情、推荐商品和物流信息,且这些。这里设置 1 毫秒超时,超时会输出。子goroutine。子goroutine。子goroutine。

2025-01-10 11:28:18 306

原创 Sealos 快速创建k8s 集群

Sealos 是一个用于管理 Kubernetes 集群的开源工具。它提供了一种简单、高效的方式来部署、管理和监控 Kubernetes 集群。通过 Sealos,用户可以快速创建和配置 Kubernetes 集群,实现容器化应用的部署和管理。

2024-09-24 10:18:55 900

原创 深入探讨 Flannel 技术:性能、缺陷与优点

深入探讨 Flannel 技术:性能、缺陷与优点Flannel,是一种常见 CNI(Container Network Interface)插件本文将探讨 Flannel 的性能表现和优缺点。

2024-09-13 16:05:41 594

原创 分布式共识(一致性)算法(协议) Paxos 简介

在分布式系统中,确保各节点间的数据一致性是核心挑战之一。Paxos算法,作为解决此问题的经典方法,通过分布式共识机制允许网络中的多数节点就某值达成一致,即便面对消息延迟、节点失效等复杂情形。Paxos算法以其高度的理论性和技术难度而闻名,但理解其基本思想并不难。

2024-09-09 14:05:00 492

原创 Linux 虚拟网络三大基石:Namespace、Veth pair 与 Bridge

Namespace提供了隔离的环境,Veth连接了不同的命名空间,而Bridge则扩展了网络的连接范围,三者缺一不可。在Namespace中,每个进程仿佛拥有自己的全局资源实例,而这些资源的变更仅在同一Namespace内部的进程间可见,对外部进程则完全透明。通过对Bridge的配置,我们可以实现在同一个Namespace内部或跨越Namespace的多节点互联,甚至可以连接物理网络,实现虚拟网络与现实网络的互通有无。有了Namespace的隔离机制,接下来的问题是如何在这些隔离的环境中建立通信。

2024-09-04 11:22:25 820

原创 VXLAN 为何采用UDP

VXLAN是一种网络虚拟化技术,它通过在UDP数据包中封装MAC地址和IP信息,使得二层网络(如以太网)能够跨越三层网络(如IP网络)进行扩展。这种封装方式不仅支持TCP流量的传输,还能有效处理大规模数据中心中的网络隔离和扩展问题。VXLAN的主要优势在于其灵活性和扩展能力。通过采用UDP封装,VXLAN避免了TCP连接建立的复杂性,减少了数据传输的开销。同时,由于VXLAN是在内核中实现的,相比用户态实现的隧道技术,它在性能上更加高效。

2024-09-04 10:16:29 1094

原创 每期一个小窍门: 聊聊 pause 容器

综上所述,pause容器在Kubernetes Pod中起到了关键的基础设施作用,不仅保证了网络和进程的隔离性,还维护了Pod的生命周期和稳定性。这些特点使得pause容器成为Kubernetes中不可或缺的一部分,对于理解Pod的工作原理至关重要。pause容器在Kubernetes中的作用非常重要,它负责维护。,确保Pod内部不同容器间的。

2024-09-03 21:17:44 629

原创 每期一个小窍门: docker 多阶段镜像打包

使用多阶段镜像 本质上是打包与运行期的依赖分离 可以减小最终镜像大小。打包使用800M的 golang:1.23。运行期使用几M的alpine。

2024-08-27 09:39:21 247 1

原创 每期一个小窍门 golang中 CGO_ENABLED 含义

总结起来,使用CGO_ENABLED=0编译会慢一些是因为编译器需要额外的时间来处理CGO相关的代码,并且无法使用C语言的优化技术,同时还需要处理更多的Go代码。CGO_ENABLED是一个环境变量,用于控制Go编译器是否启用CGO(C语言调用Go函数)功能。当CGO_ENABLED=0时,表示禁用CGO功能。

2024-08-26 17:39:10 1469

原创 每期一个小窍门: 关于 golang 2006年1月2日15时4分5秒 这个时间彩蛋

在Go语言中,time.Format方法的参数使用的是一种固定的格式化布局,这个布局是以Go的发布日——2006年1月2日15时4分5秒(对应于常量Mon Jan 2 15:04:05 MST 2006)为模板来指示时间的格式。在使用 time.Format 方法时,必须使用上面这个准确的时间来指定你想要的格式,因为Go语言将使用这个布局字符串中的数字位置来识别相应的时间部分。比如,如果你想要小时和分钟,你就使用 “15:04” 作为格式字符串。

2024-08-22 11:15:58 376

原创 每期一个小窍门: Goland 配置跳板机登陆并使用dlv 远程调试

本地 访问 localhost:6000 --> 转发到跳板机:22 --> 再转发到指定内网地址。好了 第一件事完毕 本地已经可以直接登陆到远程被跳机了。本机公钥 copy 到跳板机 和内网被跳机。本机 .ssh/config。

2024-08-15 20:52:45 432

原创 每期一个小窍门:全世界最简单的go exporter 例子

调用链路我大概描述下。

2024-08-07 16:35:09 315

原创 每期一个小窍门: 使用kubebuilder 生成operator脚手架 并操作控制自定义CRD副本数 (下)

然后这边 kubectl get pod 可以看到如我们所愿 有5个启动的pod 对应了上方的部署文件。通过拿到的运行期状态 来跟部署文件的期望状态对比 然后进行不同业务响应就ok了。写好这个文件后 直接通过自带的make命令 install 到k8s中。有了这个dacar类型之后 我们徒手制作一个这个类型的部署文件。由于这个是demo 我们就不把operator部署到集群侧了。在这个文件中定义 dacar 这个crd的spec。我们发现可以查看到这个crd了。apply 这个文件后。

2024-08-03 15:30:52 563

原创 使用kubebuilder 遇到的 262144 bytes 超长问题

make install报错metadata.annotations: Too long: must have at most 262144 bytes。修复方法:打开Makefile,在。最后成功install。

2024-08-01 20:25:10 706 1

原创 每期一个小窍门: 使用Gin 与 client-go 操作k8s (中)

本文承接上文后面应该还会有个下 应该是个operator的全程demo。

2024-07-30 20:19:16 612

原创 每期一个小窍门: 使用client-go 操作k8s (上)

然后把apiserver公网暴露出来 并拿到apiserver的远程conf文件。身边要有一个k8s集群 阿里云ask可以免费使用 注意是ask 不是ack。好了 各位再见 下次再会。运行结果: 可以通的。

2024-07-27 16:20:24 356

原创 每期一个小窍门 k8s版本的 Prometheus + grafana + alertmanager 三件套部署监控落地

不要局限于组件本身 比如这一套组件要目标导向的去找组件 比如我想监控什么metrics 这个metrics 的安全阈值是多少 监控要不要做 高了代表什么 会产生什么级联影响 指标要有个重要性排序 最致命的肯定告警优先级要特殊对待 这些可能要和开发一同去设计 去排序优先级 只有拥有全链路的重要瓶颈的监控指标 业务接口才是真正运维侧可视化的 才会让团队放心

2024-05-29 14:37:00 540 1

原创 Qwen-14B-Chat 非量化微调

我选择的方案是最普遍的 lora + deepspeed +zero3 + bf16 + 单机多卡 这套通用方案。训练数据自己去弄吧 符合qwen需要的格式就行。然后找到输出目录 直接进行合并 生成新的模型。显存四卡 每张卡大概使用20g左右这样子。

2024-05-17 17:22:10 864

原创 每期一个小窍门: AutoDL 开启关闭学术加速

【代码】每期一个小窍门: AutoDL 开启关闭学术加速。

2024-05-17 12:49:51 989

原创 vscode 通过ssh 远程执行ipynb +可以切换conda env

主要是保证几个点。

2024-05-14 23:00:43 824 1

原创 Fastchat + vllm + ray + Qwen1.5-7b 在2080ti 双卡上 实现多卡推理加速

Ray 是一个高性能的分布式计算框架,由UC Berkeley RISELab 开发,支持Python 语言,并可与PyTorch 等机器学习框架结合使用。在隐私计算方面,Ray提供了数据隐私保护,支持数据共享和协作,同时允许在不泄露原始数据的情况下进行深度学习模型训练。OpenAI API提供OpenAI兼容的API服务,接受请求后,先向Controller获取Model Worker地址,再向Model Worker实例发送请求生成文本,最后返回OpenAI兼容的报文。执行情况如下 并发速度还不错。

2024-05-11 14:56:39 4497 5

原创 模型的训练三阶段 Pretraining SFT RLHF

人工先介入,通过对同一个Prompt生成答案的排序来训练一个Reward Model。再用Reward Model去反馈给SFT Model,通过评价生成结果的好坏,让模型更倾向于生成人们喜好的结果。最终生成的Model叫做RLHF model。给模型海量的文本进行训练,99%的计算量花费在这个阶段,输出的模型叫做base model,能做的事情就是像成语接龙一样不断的完成一段话。人工介入,给出高质量的文本问答例子。经过问答式训练的Model叫做SFT model,就可以正常回答人的问题了。

2024-03-25 01:08:12 1044

原创 CommandNotFoundError: Your shell has not been properly configured to use ‘conda activate‘.解决方案 亲测有效

【代码】CommandNotFoundError: Your shell has not been properly configured to use ‘conda activate‘.解决方案 亲测有效。

2024-03-24 16:49:52 258

原创 Centos开机网卡自启动失败

关闭 NetworkManager 服务。重启就会发现网卡已经可以自动启动了。

2024-02-23 15:48:03 657

原创 虚拟机的四种网络模式对比

nat网络地址转换nat网络桥接内网模式仅主机。

2024-02-23 13:32:47 656

原创 每期一个小窍门: go不同项目之间的引用

那么你有一个包moda, 放在/home/aio/moda下面, 然后你想用go mod, 那么会执行go mod init A包名。然后你的modb也需要用go mod, 所以你执行go mod init modb。然后你就得到了go.mod文件。不出意外的话, 应该就引用到了。

2024-01-28 13:02:54 362

原创 Mac os docker login : error getting credentials

2、修改 $home/.docker/config.json 的配置,删除 “credsStore”: “desktop” 或者 将值改为"osxkeychain"第二步的 credsStore 是 docker 的存储身份凭证的设置。osxkeychain 是钥匙串。1、修改钥匙串的 docker 关键字相关设置,解决访问策略问题, 允许所有应用程序访问。但遇到了新的问题,重启 docker 后,还是会恢复这个配置,目前。

2024-01-27 15:17:20 1794

原创 golang视角下 protobuf 的安装 从proto文件到go文件

Protocol Buffers(protobuf)是一种由Google开发的轻量级、高效的数据序列化格式。它设计的目的是为了在不同系统之间进行数据交换,同时保持数据的结构化和高效传输。

2024-01-25 18:27:01 879

apache-doris-1.0.0-incubating-bin.tar.gz

apache-doris-1.0.0-incubating-bin.tar.gz apache-doris-1.0.0-incubating-bin.tar.gz apache-doris-1.0.0-incubating-bin.tar.gz 看不惯别人收费的 开源的东西 收钱好意思?

2022-06-01

Sharding-Proxy

Mysql 分库中间件 Sharding-Proxy 下载

2021-02-23

dockerpackage.zip

解压后为两个文件 一个为mycat1.6.6 的linux安装包, 一个是mycat的dockerfile

2021-06-01

elk 5.6.4 三件套

elk三件套

2020-10-27

HW7_HaoxuanLi.rar

小作业 自己留作备用

2019-12-17

空空如也

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

TA关注的人

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