自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 收藏
  • 关注

原创 Ray 源码分析(16)—Ray Serve

Ray Serve 是一个可扩展的模型服务库,用于构建在线推理 API。Serve 与框架无关,因此你可以使用一个单一的工具包来服务从使用 PyTorch、TensorFlow 和 Keras 等框架构建的深度学习模型,到 Scikit-Learn 模型,再到任意 Python 业务逻辑的所有内容。它具有多项用于服务大语言模型的特性和性能优化,例如响应流、动态请求批处理、多节点 / 多 GPU 服务等。

2025-01-12 06:28:24 2319

原创 Ray 源码分析系列(15)—Ray Dag

dag.experimental_compile 能够提升20%训练吞吐,并且以更低的开发成本实现不同并行策略,所以好奇地分析一下dag和compiled graph有什么可以学习的地方吧

2025-01-10 08:00:00 1319

原创 Ray 源码分析系列(14)—Ray Workflow

Ray Workflows 为了提供任务的持久性(durability),采用了惰性的 Ray DAG API。这种方式将任务有向无环图(DAG)的定义和执行分离开来。在使用 DAG API 时,任务的定义阶段只是构建了计算图,并不会立即执行任务。

2025-01-09 08:00:00 1096

原创 Ray 源码分析系列(13)—RayData

Ray Data 是一个适用于机器学习工作负载的可扩展数据处理库。它提供了灵活且高性能的应用程序编程接口(APIs),可用于扩展离线批量推理、数据预处理以及为机器学习训练导入数据。Ray Data 采用流式执行方式,能够高效处理大规模数据集 。

2025-01-08 09:00:00 2474

原创 Ray 源码分析系列(12)—python/ray._private

特性描述设计亮点插件架构支持多种运行时环境插件(pip, conda, working_dir等)可扩展性强,易于添加新插件引用计数使用ReferenceTable管理环境引用防止资源泄漏,自动清理未使用资源并发控制使用asyncio.Lock控制环境创建防止同一环境被并发创建缓存机制使用_env_cache缓存环境创建结果提高性能,避免重复创建错误处理详细的错误日志和重试机制提高系统健壮性超时控制支持自定义环境创建超时时间防止长时间阻塞资源清理。

2025-01-07 09:00:00 1081

原创 Ray 源码分析系列(11)—task

特性描述实现方式依赖隔离确保 Task 之间的依赖关系清晰,数据不混淆ObjectID 标识、Object Store 隔离、独立进程执行C++ 调用 Python实现跨语言调用,支持 Python Task 执行Python Worker 进程、gRPC 通信、Python/C API依赖解析确保 Task 依赖的数据可用后再调度动态解析 ObjectID 依赖关系任务执行确保 Task 在独立环境中执行独立进程、隔离的 Python 解释器。

2025-01-06 08:15:00 672

原创 Ray 源码分析系列(10)—stats

由于代码没有什么特别的,基本是调用https://github.com/census-instrumentation/opencensus-cpp 里面的库把数据进行上报,这篇文章就不展开讲了,核心内容就是上面这张大表。

2025-01-05 08:30:00 2314

原创 Ray 源码分析系列(9)—cgroup

什么是 cgroup?cgroup(Control Group)是 Linux 内核的一项功能,用于限制、记录和隔离进程组的资源使用情况。cgroup 允许系统管理员对CPU、内存、磁盘 I/O、网络带宽等资源进行分配和限制,从而实现资源的有效管理和隔离。cgroup的控制参数都在里面,在笔者自己的电脑上ls可以看到所有的资源限制:注意,这里面分配的资源是docker run 的时候指定的,并不是host物理机上的所有。感兴趣的话可以在自己电脑上实操看看。cgroup 的主要功能资源限制。

2025-01-04 08:30:00 1352

原创 Ray 源码分析系列(8)—RuntimeEnv

----------- 方法一:ray 初始化的时候统一环境# 使用 Ray 客户端连接到远程集群# ----------- 方法二:每个actor或者task 实例化以后选择不同的环境# 调用在指定运行时环境中运行的远程任务。# 实例化在指定运行时环境中运行的actor。# ----------- 方法三:每个actor或者task初始化的时候就选择不同的环境# 在任务定义中指定运行时环境。通过 `g.remote()` 的未来调用使用此运行时环境,除非通过使用。

2025-01-03 09:24:38 1179

原创 Ray 源码分析系列(7)—RPC

类别特性实现方式优势容错设计服务状态恢复GcsStatus 返回码 + 幂等操作保证集群状态一致性扩展性分页和过滤limit + filters 参数支持大规模集群查询性能优化选择性字段返回optional 字段 + skip 标记减少网络传输开销资源管理实时资源视图周期性更新 + 事件触发准确调度决策监控告警系统瓶颈检测资源使用统计 + 阈值检测及时发现系统问题命名空间多租户隔离ray_namespace 字段支持多用户场景安全特性TLS支持。

2025-01-02 07:23:31 1014

原创 Ray 源码分析系列(6)—CoreWorker

文件名主要类核心功能关键特性CoreWorker工作进程管理- 任务提交执行- 对象存取- Actor管理引用计数- 对象生命周期- 内存管理- 垃圾回收任务管理- 任务调度- 状态追踪- 重试机制内存存储- 对象缓存- 快速访问- 本地存储Actor管理- Actor创建- 状态维护- 调用管理特性实现位置优化目标实现方式本地缓存减少网络IO内存对象缓存引用追踪内存管理分布式GC批量操作提高吞吐任务批处理异步执行提高并发。

2025-01-01 08:02:28 902

原创 Ray 源码分析系列(5)—Raylet

写到这里真不容易,窗外已经太阳高高照,但基本把raylet的整个脉络给理清楚,还挺舒服。不得不说里面很多的实现都非常solid。如果你也看到了这里,别忘了一键三连呀,Enjoy!

2024-12-31 07:56:57 1186

原创 Ray 源码分析系列(4)—Object Manager

ObjectManager 作为ray object store的核心,保证了local节点的内存得到高效利用,同时依靠plasma store 支撑了数据在不同节点之间的流动。这是大多数分布式调度框架都不具备的,这样一体化的设计值得深入学习。

2024-12-30 08:37:50 1329

原创 Ray 源码分析系列(3)—GCS

认真看过ray的论文就会知道,并不是所有的task或者actor都会先发送到gcs中。当worker节点有足够的资源能够完成提交graph的执行的时候,local scheduler是不会也不需要借助gcs来完成跨节点计算的,这样的设计不得不说真的是太赞了。因为,大部分调度框架是不感知真实负载的,纯纯的就是一个资源分发器。这篇文章详细地分析了gcs的核心代码实现,如果你能看到这里,别忘了一键三联,Enjoy!

2024-12-29 08:12:08 1221

原创 Ray 源码分析系列(2)—编译

Ray能被OpenAI、微信、字节等大厂采用,必定有其独特优势,这个系列的文章将会深入分析Ray的绝大部分核心代码。

2024-12-28 19:59:01 835

原创 Ray 源码分析系列(1)—架构

Ray能被OpenAI、微信、字节等大厂采用,必定有其独特优势,这个系列的文章将会深入分析Ray的绝大部分核心代码。

2024-12-28 19:49:45 981

空空如也

空空如也

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

TA关注的人

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