02 2024 档案

摘要:2、go-kit三层结构 go-kit和MVC一样也有三层结构endpoint,service, transport,通过这三层结构来实现,接收一个请求,然后返回一个结果。 1.Transport Transport处于该微服务的最上层,主要负责于HTTP, gRPC,thrift等相关的逻辑,负责 阅读全文
posted @ 2024-02-25 10:30 muzinan110 阅读(34) 评论(0) 推荐(0) 编辑
摘要:分布式计算框架Ray 当我们要构建一个涉及大规模数据处理或者复杂计算的应用,传统的方式是使用现成的大数据框架,例如 Apache Flink 和 Apache Spark。这些系统提供的API通常基于某种特定的计算范式(例如DataStream、DataSet),要求用户基于这些特定的计算范式实现应 阅读全文
posted @ 2024-02-25 09:36 muzinan110 阅读(213) 评论(0) 推荐(0) 编辑
摘要:下图展示了 Koordinator 系统的整体架构和各组件的角色分工,其中绿色部分描述了 K8s 原生系统的各个组件,蓝色部分是 Koordinator 在此基础上的扩展实现。从整个系统架构来看,我们可以将 Koordinator 分为中心管控和单机资源管理两个维度。在中心侧,Koordiantor 阅读全文
posted @ 2024-02-25 09:35 muzinan110 阅读(239) 评论(0) 推荐(0) 编辑
摘要:架构 - Queue - Queue是容纳一组PodGroup的队列,也是PodGroup获取集群资源的划分依据。 - PodGroup - PodGroup是一组强关联的pod,对应批处理workload。 - VolcanoJob - VolcanoJob(vcjob)是自定义的Job资源类型, 阅读全文
posted @ 2024-02-25 09:31 muzinan110 阅读(743) 评论(0) 推荐(0) 编辑
摘要:Kubeflow核心组件 notebook(JupyterHub) - 大多数项目的第一步是某种形式的原型设计和实验。Kubeflow用于原型设计和实验的工具是JupyterHub(https://jupyter.org/hub),这是一个多用户中心,可以生成、管理和代理单用户Jupyter not 阅读全文
posted @ 2024-02-25 09:21 muzinan110 阅读(316) 评论(0) 推荐(0) 编辑
摘要:TensorFlow,这是个很形象的比喻,意思是 张量(Tensor)在神经网络中流动(Flow)。 在数学中,张量是一种几何实体(对应的有一个概念叫矢量),广义上可以表示任何形式的数据。在NumPy等数学计算库或TensorFlow等深度学习库中,我们通常使用多维数组来描述张量,所以不能叫做矩阵, 阅读全文
posted @ 2024-02-25 09:17 muzinan110 阅读(30) 评论(0) 推荐(0) 编辑
摘要:架构 Horovod主要由数据通信层、通信控制层、深度学习框架接口层、启动层四部分组成。其中启动层通过horovodrun或mpirun启动训练进程,之后每个训练进程通过调用TensorFLow、PyTorch、MXNet等框架(python train.py)进行单个结点的数据输入、参数更新,在每 阅读全文
posted @ 2024-02-25 09:12 muzinan110 阅读(69) 评论(0) 推荐(0) 编辑
摘要:Fluid 系统架构 Fluid 是构建在 K8s 上的系统,对原生 K8s 具备良好的兼容性,无需修改任意代码。如上图所示,用户需要定义两个 CRD,分别是 Dataset 和 Runtime。Dataset 是数据集的通用定义,这是我们提供的 K8s 资源对象,需要写 YAML 文件来定义数据集 阅读全文
posted @ 2024-02-25 09:07 muzinan110 阅读(272) 评论(0) 推荐(0) 编辑
摘要:在Kubernetes的标准框架里,容器是只有1个网络平面的。即容器里面,只有1个eth0网卡。所以无论是利用overlay实现容器隧道网络,还是underlay实现容器网络直通,其目的都是解决容器网络“通与不通”的问题。 而大规模AI集群中,百亿、千亿级别参数量的大模型通常需要做分布式训练,这时参 阅读全文
posted @ 2024-02-25 07:13 muzinan110 阅读(216) 评论(0) 推荐(0) 编辑
摘要:工作原理 通过扩展的方式管理 GPU 资源 Kubernetes 本身是通过插件扩展的机制来管理 GPU 资源的,具体来说这里有两个独立的内部机制。 第一个是 Extend Resources,允许用户自定义资源名称。而该资源的度量是整数级别,这样做的目的在于通过一个通用的模式支持不同的异构设备,包 阅读全文
posted @ 2024-02-25 06:51 muzinan110 阅读(78) 评论(0) 推荐(0) 编辑
摘要:Python 内存管理层次: 众所周知,计算机硬件资源由操作系统负责管理,内存资源也不例外。应用程序通过 系统调用 向操作系统申请内存,而 C 库函数则进一步将系统调用封装成通用的 内存分配器 ,并提供了 malloc 系列函数。 C 库函数实现的通用目的内存管理器是一个重要的分水岭,即内存管理层次 阅读全文
posted @ 2024-02-24 21:19 muzinan110 阅读(21) 评论(0) 推荐(0) 编辑
摘要:GIL 由来 我们先思考一个问题:我们在前面介绍的 list 、 dict 等内建对象是 线程安全 的吗? 在 Python 层面,list 、dict 等内建对象是线程安全的,这是最基本的常识。研究 list、dict 等内建对象源码时,我们并没有看到任何 互斥锁 的痕迹,这多少有点令人意外。以  阅读全文
posted @ 2024-02-24 21:14 muzinan110 阅读(12) 评论(0) 推荐(0) 编辑
摘要:哈希值 Python 内置函数 hash 返回对象 哈希值 ,哈希表 依赖 哈希值 索引元素: 根据哈希表性质, 键对象 必须满足以下两个条件,否则哈希表便不能正常工作: 哈希值在对象整个生命周期内不能改变; 可比较,且比较相等的对象哈希值必须相同; 满足这两个条件的对象便是 可哈希 ( hasha 阅读全文
posted @ 2024-02-24 21:12 muzinan110 阅读(95) 评论(0) 推荐(0) 编辑
摘要:list 对象是一种 容量自适应 的 线性容器 ,底层由 动态数组 实现。动态数组结构决定了 list 对象具有优秀的尾部操作性能,但头部操作性能却很差劲。 容量调整 当我们调用 append 、pop 、insert 等方法时,列表长度随之发生变化。当列表长度超过底层数组容量时,便需要对底层数组进 阅读全文
posted @ 2024-02-24 21:07 muzinan110 阅读(91) 评论(0) 推荐(0) 编辑
摘要:面向对象理论中“ 类 ”和“ 对象 ”这两个重要概念,在 Python 内部均以对象的形式存在。 “类”是一种对象,称为 类型对象 ;“类”实例化生成的“对象”也是对象,称为 实例对象 。 根据对象不同特点还可进一步分类: 类别特点 可变对象 对象创建后可以修改 不可变对象 对象创建后不能修改 定长 阅读全文
posted @ 2024-02-24 21:02 muzinan110 阅读(45) 评论(0) 推荐(0) 编辑
摘要:go编译器 Go 语言的编译器完全用 Go 语言本身来实现,它完全实现了从(编译)前端到后端的所有工作 Golang 的生态中相关工具我们能用到的有 pprof 和 trace。pprof 可以看 CPU、内存、协程等信息在压测流量进来时系统调用的各部分耗时情况。而 trace 可以查看 runti 阅读全文
posted @ 2024-02-24 20:58 muzinan110 阅读(36) 评论(0) 推荐(0) 编辑
摘要:系统调用是指使用类似函数调用的方式调用操作系统提供的API。虽然从概念上来说系统调用和函数调用差不多,但本质上它们有很大的不同(call vs int/syscall) 操作系统的代码位于内核地址空间,而CPU在执行用户代码时特权等级很低,无权访问需要最高优先级才能访问的内核地址空间的代码和数据,所 阅读全文
posted @ 2024-02-24 20:54 muzinan110 阅读(45) 评论(0) 推荐(0) 编辑
摘要:所有在 UNIX 系统上运行的程序最终都会通过 C 系统调用来和内核打交道。用其他语言编写程序进行系统调用,方法不外乎两个:一是自己封装,二是依赖 glibc、或者其他的运行库。Go 语言选择了前者,把系统调用都封装到了 syscall 包。封装时也同样得通过汇编实现。 当M一旦进入系统调用后,会脱 阅读全文
posted @ 2024-02-24 20:48 muzinan110 阅读(234) 评论(0) 推荐(0) 编辑
摘要:如果想兼顾开发效率,又能保证高并发,协程就是最好的选择。它可以在保持异步化运行机制的同时,用同步方式写代码(goroutine-per-connection),这在实现高并发的同时,缩短了开发周期,是高性能服务未来的发展方向。 CPU 和 IO 设备是不同的设备,能并行运行。合理调度程序,充分利用硬 阅读全文
posted @ 2024-02-24 20:39 muzinan110 阅读(102) 评论(0) 推荐(0) 编辑
摘要:mutator 申请内存是以应用视角来看问题,我需要的是某一个 struct,某一个 slice 对应的内存,这与从操作系统中获取内存的接口(比如mmap)之间还有一个鸿沟。需要由 allocator 进行映射与转换,将以“块”来看待的内存与以“对象”来看待的内存进行映射。在现代 CPU 上,我们还 阅读全文
posted @ 2024-02-24 20:32 muzinan110 阅读(49) 评论(0) 推荐(0) 编辑
摘要:性能优化流程理清待优化代码的常用逻辑与场景根据实际场景编写压测用例使用pprof 或者火焰图等工具取得数据找到热点代码重点优化 Profilingpprof 是用于可视化和分析性能分析数据的工具。为什么pprof可以帮助我们分析Go程序性能呢?因为它可以采集程序运行时数据:比如说协程栈,这样服务阻塞 阅读全文
posted @ 2024-02-24 20:25 muzinan110 阅读(71) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示