- 博客(482)
- 资源 (5)
- 收藏
- 关注

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

原创 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
4046
4

原创 通过生产环境流量录制/线下回放 配合基于云原生的灰度发布 实现保质保量的持续集成
流量回放/复制, 从测试的角度, 本质是:通过把线上的真实流量复制到线下环境,解决测试环境模拟不够真实,或覆盖不够全面的问题。
2022-08-15 10:04:57
940
1

原创 深入理解k8s operator 机制
Kubernetes 提供了一种扩展机制,允许我们定义自己的资源类型,称为自定义资源。在集群上运行一个 pod 来监控某种类型的自定义资源并基于它管理其他资源,这就是 Operator模式。
2021-12-07 16:33:43
5690

原创 通过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
2731
3

原创 硬核讲解JDK1.8的ConcurrentHashMap为何放弃分段锁改用CAS + synchronized
jdk1.7分段锁的实现和hashmap一样,在jdk1.7中ConcurrentHashMap的底层数据结构是数组加链表。和hashmap不同的是ConcurrentHashMap中存放的数据是一段段的,即由多个Segment(段)组成的。每个Segment中都有着类似于数组加链表的结构。关于SegmentConcurrentHashMap有3个参数:initialCapacity:初...
2020-04-15 04:21:03
39962
13
原创 关于 DeepSeek 架构 混合专家模型MoE
在人工智能领域,大模型发展势头正猛,但也遇到了不少难题,像计算成本高、处理复杂任务能力有限等。混合专家模型(MoE)的诞生,为这些困境提供了新的解决思路。
2025-02-06 15:32:18
288
原创 深入理解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
1205
原创 每期一个小窍门:活用 Golang 中的 Context
等信息,且获取订单、推荐、物流信息分别有 500 毫秒、400 毫秒、700 毫秒的超时限制。在 Golang 并发和分布式系统中不可或缺,掌握它有助于开发高效应用。各分支任务要有超时控制,且单个分支超时时不能影响整体流程;再看自定义场景,有一个查询接口需在 1 秒内完成,要传递。在此过程中,存在诸多问题:需在。并传值,子函数中也根据需求设置超时和获取值。分别处理订单详情、推荐商品和物流信息,且这些。这里设置 1 毫秒超时,超时会输出。子goroutine。子goroutine。子goroutine。
2025-01-10 11:28:18
239
原创 开源 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
1772
原创 Sealos 快速创建k8s 集群
Sealos 是一个用于管理 Kubernetes 集群的开源工具。它提供了一种简单、高效的方式来部署、管理和监控 Kubernetes 集群。通过 Sealos,用户可以快速创建和配置 Kubernetes 集群,实现容器化应用的部署和管理。
2024-09-24 10:18:55
773
原创 深入探讨 Flannel 技术:性能、缺陷与优点
深入探讨 Flannel 技术:性能、缺陷与优点Flannel,是一种常见 CNI(Container Network Interface)插件本文将探讨 Flannel 的性能表现和优缺点。
2024-09-13 16:05:41
433
原创 分布式共识(一致性)算法(协议) Paxos 简介
在分布式系统中,确保各节点间的数据一致性是核心挑战之一。Paxos算法,作为解决此问题的经典方法,通过分布式共识机制允许网络中的多数节点就某值达成一致,即便面对消息延迟、节点失效等复杂情形。Paxos算法以其高度的理论性和技术难度而闻名,但理解其基本思想并不难。
2024-09-09 14:05:00
434
原创 Linux 虚拟网络三大基石:Namespace、Veth pair 与 Bridge
Namespace提供了隔离的环境,Veth连接了不同的命名空间,而Bridge则扩展了网络的连接范围,三者缺一不可。在Namespace中,每个进程仿佛拥有自己的全局资源实例,而这些资源的变更仅在同一Namespace内部的进程间可见,对外部进程则完全透明。通过对Bridge的配置,我们可以实现在同一个Namespace内部或跨越Namespace的多节点互联,甚至可以连接物理网络,实现虚拟网络与现实网络的互通有无。有了Namespace的隔离机制,接下来的问题是如何在这些隔离的环境中建立通信。
2024-09-04 11:22:25
713
原创 VXLAN 为何采用UDP
VXLAN是一种网络虚拟化技术,它通过在UDP数据包中封装MAC地址和IP信息,使得二层网络(如以太网)能够跨越三层网络(如IP网络)进行扩展。这种封装方式不仅支持TCP流量的传输,还能有效处理大规模数据中心中的网络隔离和扩展问题。VXLAN的主要优势在于其灵活性和扩展能力。通过采用UDP封装,VXLAN避免了TCP连接建立的复杂性,减少了数据传输的开销。同时,由于VXLAN是在内核中实现的,相比用户态实现的隧道技术,它在性能上更加高效。
2024-09-04 10:16:29
863
原创 每期一个小窍门: 聊聊 pause 容器
综上所述,pause容器在Kubernetes Pod中起到了关键的基础设施作用,不仅保证了网络和进程的隔离性,还维护了Pod的生命周期和稳定性。这些特点使得pause容器成为Kubernetes中不可或缺的一部分,对于理解Pod的工作原理至关重要。pause容器在Kubernetes中的作用非常重要,它负责维护。,确保Pod内部不同容器间的。
2024-09-03 21:17:44
548
原创 每期一个小窍门: docker 多阶段镜像打包
使用多阶段镜像 本质上是打包与运行期的依赖分离 可以减小最终镜像大小。打包使用800M的 golang:1.23。运行期使用几M的alpine。
2024-08-27 09:39:21
193
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
798
原创 每期一个小窍门: 关于 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
330
原创 每期一个小窍门: Goland 配置跳板机登陆并使用dlv 远程调试
本地 访问 localhost:6000 --> 转发到跳板机:22 --> 再转发到指定内网地址。好了 第一件事完毕 本地已经可以直接登陆到远程被跳机了。本机公钥 copy 到跳板机 和内网被跳机。本机 .ssh/config。
2024-08-15 20:52:45
304
原创 每期一个小窍门: 使用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
472
原创 使用kubebuilder 遇到的 262144 bytes 超长问题
make install报错metadata.annotations: Too long: must have at most 262144 bytes。修复方法:打开Makefile,在。最后成功install。
2024-08-01 20:25:10
519
原创 每期一个小窍门: 使用Gin 与 client-go 操作k8s (中)
本文承接上文后面应该还会有个下 应该是个operator的全程demo。
2024-07-30 20:19:16
562
原创 每期一个小窍门: 使用client-go 操作k8s (上)
然后把apiserver公网暴露出来 并拿到apiserver的远程conf文件。身边要有一个k8s集群 阿里云ask可以免费使用 注意是ask 不是ack。好了 各位再见 下次再会。运行结果: 可以通的。
2024-07-27 16:20:24
320
原创 每期一个小窍门 k8s版本的 Prometheus + grafana + alertmanager 三件套部署监控落地
不要局限于组件本身 比如这一套组件要目标导向的去找组件 比如我想监控什么metrics 这个metrics 的安全阈值是多少 监控要不要做 高了代表什么 会产生什么级联影响 指标要有个重要性排序 最致命的肯定告警优先级要特殊对待 这些可能要和开发一同去设计 去排序优先级 只有拥有全链路的重要瓶颈的监控指标 业务接口才是真正运维侧可视化的 才会让团队放心
2024-05-29 14:37:00
471
1
原创 Qwen-14B-Chat 非量化微调
我选择的方案是最普遍的 lora + deepspeed +zero3 + bf16 + 单机多卡 这套通用方案。训练数据自己去弄吧 符合qwen需要的格式就行。然后找到输出目录 直接进行合并 生成新的模型。显存四卡 每张卡大概使用20g左右这样子。
2024-05-17 17:22:10
696
原创 模型的训练三阶段 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
895
原创 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
243
原创 每期一个小窍门: 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
323
原创 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
1600
原创 golang视角下 protobuf 的安装 从proto文件到go文件
Protocol Buffers(protobuf)是一种由Google开发的轻量级、高效的数据序列化格式。它设计的目的是为了在不同系统之间进行数据交换,同时保持数据的结构化和高效传输。
2024-01-25 18:27:01
825
原创 QA 这个职位在中国有前途么?转自知乎
纯手工的测试工程师逐渐被削弱地位和裁减. 但是他们不会灭绝, 依然有不少的领域或者基础的工作是要靠大量的纯手工测试来保证的. 取而代之的, 是一种广被欢迎的测试开发工程师. 他们不仅可以做手工测试, 也可以做测试技术的应用. 所以他们能发现更深层的问题, 和研发的思路也接近. 同时在质量保证上有自己的独特经验和能力. 他们的主要技能是自动化, 性能分析 业务分析. 用于解决日常的测试需求. 他们也会开发适当的测试工具.使用qtp,selenium,watir,或者是其他的技术框架来自动化测试工作的。
2024-01-05 11:16:30
652
原创 每期一个小窍门: mysql的四个系统库的作用
“information_schema”是 MySQL 系统自带的数据库,主要保存 MySQL 数据库服务器的系统信息,比如数据库的名称、数据表的名称、字段名称、存取权限、数据文件所在的文件夹和系统使用的文件夹,等等。“performance_schema”是 MySQL 系统自带的数据库,可以用来监控 MySQL 的各类性能指标。“sys”数据库是 MySQL 系统自带的数据库,主要作用是,以一种更容易被理解的方式展示 MySQL 数据库服务器的各类性能指标,帮助系统管理员和开发人员监控 MySQL
2023-10-17 23:28:15
288
原创 每期一个小窍门: Graphviz 配合 pprof 分析 go 性能问题
graphviz (英文:Graph Visualization Software的缩写)是一个由AT&T实验室启动的开源工具包,用于绘制DOT语言脚本描述的图形。graphviz也提供了供其它软件使用的库。graphviz是一个自由软件,其授权为Eclipse Public License。看 fmt.print 被我们找到了。采样过后会自动跳转到浏览器。
2023-09-06 17:03:54
313
apache-doris-1.0.0-incubating-bin.tar.gz
2022-06-01
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人