无限可能的想象力

认真做事,用心写代码

Torchelastic agent和user worker之间故障转移约定

本文翻译自pytorch源码中torch.distributed.elastic包: github地址 Torchelastic agent 和 user worker故障转移合约: TL;DR;: TE(torchelastic) 期望 user workers 在 5 分钟内完成漂移(drift) 最好将 DDP app 设计为所有workers都失败,而不是单个...

kubeflow分布式训练:training-operator的设计以及实现

本文简单介绍了kubeflow的整体架构,重点关注模型训练training-operator; 以PytorchJob为例,介绍CRD(Custom Resource Definition)的设计以及实现 kubeflow 简介 Kubeflow 是一个开源项目社区和生态系统,旨在解决机器学习 (ML) 生命周期中的每个阶段 ,并支持主流的开源工具和框架。Kubeflow 使 K...

langgraph设计解读-简介以及示例

2024年,随着OpenAI的Assistants API广泛使用,智谱、百度文心一言等大模型开始大力主推Agent,Agent在业界引起了极大的影响。其中,有一些AI领域大佬很认同Agent的未来前景:比如,Andrew Ng(吴恩达)在3月份分享的 AI agentic workflows; 作为AI从业者,我们快速落地了 Agent 在业务场景中的应用;同时,也非常看好 m...

在Github上将原仓库新建的分支同步到fork仓库中

问题描述:在Github上将原仓库新建的分支同步到fork仓库中 具体的解决步骤如下: 与源仓库建立关系 git remote add stream git@github.com:apache/dubbo-rust.git 拉取源仓库的数据 git fetch upstream 新建本地分支,并与远程分支建立追踪...

rust中,str vs String以及self vs Self的区别

str与String之间的区别 String是在heap上动态分配的字符串类型,类似 Vec;使用场景:当你需要拥有或修改字符串数据时。 str 是 UTF-8字节的不可变序列,内存中长度可变。因为str的大小是未知的,你只能通过指针来操作str。这意味着str通常以&str出现:表示指向UTF-8数据的引用;通常也称为string slice或者仅仅是slice。slice仅仅...

mongo-go-driver中topology的实现

topology模块是driver最重要的模块之一,该模块用来维护mongodb数据库的Deployment,以及每个Server的状态和Connection pool。 topology模块下有Topology、Server、Connection、Pool核心类型: Topology:负责监控MongoDB的部署状态,并通过server selection算法来选择Server。...

mongo-go-driver中RTTMonitor

本文介绍mongodb-go-driver中RTTMonitor模块的设计以及实现。 RTT(Round-Trip Time)在计算机中表示进行一次网络请求需要的往返时间。 RTTMonitor的工作原理为:在固定的时间间隔内,向Server发起Hello(heartbeat),同时记录对应的RTT为一个采样。 其中,minRTT是采样samples中的最小值;如果samples的样本数...

protocol buffer编码

Protocol buffers provide a language-neutral, platform-neutral, extensible mechanism for serializing structured data in a forward-compatible and backward-compatible way. It’s like JSON, except it’s ...

MongoDB查询性能优化

问题 分析一个业务问题,具体背景如下: 100w单表数据集,业务主键和node_ids(list类型)字段,对业务主键创建了唯一索引,对node_ids字段创建了普通索引。 查询语句如下:db.client.find({"node_ids": {"$in": [","]}})。 该条件会匹配全量数据,简单说:会查全表。 在ssd的机器上,查询时间花费了10s。 WT原理 mongoDB...

rust 所有权

所有权 根据内存管理方式的不同,主流的编程语言可以划分为: 安全优先:由垃圾收集器来管理内存,比如Java、Python、Golang 控制优先:由开发者负责释放内存,比如C、C++ Rust旨在同时保证安全和性能。Rust以这种方式来解决这个问题:严格限制程序使用指针的方式。 这些规则为Rust实现安全的并发编程奠定了基础。使用Rust的线程原语,保证内存安全的规则可以...