分布式计算框架学习笔记
一、🌐 为什么需要分布式计算框架?
-
资源受限:单台机器 CPU/GPU 内存有限。
-
任务复杂:模型训练、数据处理、仿真并发等任务耗时严重。
-
并行优化:通过任务拆分和并行执行提升效率。
-
可扩展部署:适配从本地开发到多节点集群环境。
二、🧱 分布式计算框架分类
类型 | 代表框架 | 适用场景 |
---|---|---|
通用分布式计算 | Ray, Dask | 并行任务调度、RL、大规模实验 |
分布式深度学习 | Horovod, TorchElastic, DeepSpeed | 大模型训练,GPU 资源分配 |
大数据计算 | Apache Spark, Hadoop | ETL、SQL、批处理分析 |
消息传递模型 | MPI, RPC | 底层通信与高性能计算 |
调参和实验管理 | Ray Tune, Optuna | 超参搜索,RL/ML 实验调度 |
三、🔧 核心框架详解
1. Ray ⭐⭐⭐⭐⭐
-
特点:多用途通用框架,涵盖 RLlib(强化学习)、Tune(调参)、Serve(部署)、Data(数据处理)
-
编程范式:Actor 模型,remote function,支持多进程/节点自动资源调度
-
应用:强化学习、数据并行仿真、调参、大模型训练调度
2. Dask
-
特点:专注于分布式数据科学,像并行版 NumPy/Pandas
-
编程范式:延迟执行 DAG,支持 DataFrame/Array/Bag 类型
-
应用:大规模数据分析,适合数据工程前处理
3. Horovod
-
特点:TensorFlow/PyTorch/Keras 分布式训练库,基于 MPI/NCCL 实现高效梯度同步
-
编程范式:AllReduce 通信模型
-
应用:分布式深度学习模型同步训练(例如 GPT 类模型)
4. Spark
-
特点:大数据处理框架,基于 RDD/SQL/DataFrame
-
编程范式:批处理模型,支持流式处理
-
应用:数据仓库、日志处理、推荐系统离线训练等
与其他常见分布式计算框架对比:
框架 | 特点 | 优势 | 劣势 | 是否支持强化学习 |
---|---|---|---|---|
Ray | 分布式任务调度,RLlib + Tune + Serve | 全功能一体化,RL 特化 | 学习曲线稍高 | ✅(非常优秀) |
Dask | 面向数据分析的并行计算(类似 Pandas) | 易上手,适合分布式 NumPy/Pandas | 不适合复杂 RL 场景 | ❌(弱) |
Horovod | 分布式深度学习训练(TensorFlow/PyTorch) | 高性能同步训练 | 仅支持监督学习,依赖硬件网络 | ❌(非设计用途) |
TorchElastic / Torch Distributed | PyTorch 原生分布式训练 | 强适配 PyTorch,适合大模型训练 | 配置复杂,RL 不适配 | ❌(需自定义) |
MPI4py | Python 封装的 MPI(消息传递接口) | 底层高性能 | 非常底层,开发难度大 | ❌(仅构建基础) |
Spark | 分布式数据处理和大数据分析 | 大数据 ETL、SQL、批处理强 | 对 RL 不友好 | ❌ |
PettingZoo + SuperSuit | 多智能体环境库(不是分布式框架,但常与 RL 结合) | 快速构建 RL 环境 | 需配合 Ray 使用 | ✅(辅助性) |
四、🧠 学习重点概念整理
概念 | 说明 |
---|---|
任务调度(Task Scheduling) | 分配计算任务到多个 worker/node 上执行。 |
资源管理(Resource Management) | 控制 CPU、GPU、内存等资源的使用与分配。 |
分布式数据并行(DDP) | 同步梯度方式在多个设备间训练模型副本。 |
模型并行(Model Parallel) | 将模型切分在多个设备运行(如 GPT-3)。 |
Actor 模型 | 每个 actor 表示一个带状态的执行单元。 |
AllReduce | 用于多个 GPU 间同步参数(Horovod 的核心)。 |
DAG(有向无环图) | Dask、Spark 中的任务依赖调度图。 |
以RAY为例,Ray 是一个由 UC Berkeley 开发的开源分布式计算框架,主要用于加速 Python 应用的并行处理,特别适用于大规模机器学习、强化学习和数据处理任务。以下是 Ray 模块的核心内容总结:
🔧 Ray 的核心功能模块:
模块 | 功能简述 |
---|---|
ray Core | 提供远程任务(remote functions)和 actor 的并行计算框架,是 Ray 的基础。 |
ray[rllib] | 强化学习库,支持多种 RL 算法(如 PPO、DQN),用于构建和训练分布式强化学习系统。 |
ray[train] | 用于分布式机器学习模型训练,支持与 PyTorch、TensorFlow 等深度学习框架集成。 |
ray[tune] | 超参数调优工具,支持分布式、自动化的超参搜索(网格搜索、贝叶斯优化、HyperBand 等)。 |
ray[serve] | 用于在线部署模型服务的高性能框架,支持 RESTful API 接口,适合生产环境。 |
ray[data] | 面向大规模数据处理的模块,支持批处理、数据流水线等,适用于训练数据预处理。 |
🧠 核心概念:
概念 | 说明 |
---|---|
remote function | 用 @ray.remote 修饰的函数,可并发执行。 |
Actor | 带状态的并发计算单元,适用于有状态服务,如强化学习中的环境或策略。 |
任务调度 | Ray 自动将任务分布到多个 CPU/GPU 节点上执行。 |
分布式调度器 | 支持多节点集群运行,不需要手动管理通信。 |
✅ Ray 的优势:
-
易用性:Python 原生语法扩展即可实现并行计算。
-
高扩展性:从单机到大规模集群,支持资源自动调度。
-
生态系统完善:集成了训练(Train)、部署(Serve)、调参(Tune)、强化学习(RLlib)等工具。
-
与现有框架兼容:支持 PyTorch、TensorFlow、XGBoost、LightGBM 等。
📦 安装方式示例:
pip install ray # 安装基础版本
pip install "ray[default]" # 安装完整版本
pip install "ray[rllib]" # 安装强化学习模块
📌 强化学习:
结合强化学习(Reinforcement Learning, RL)的使用,Ray 的模块主要以其子模块 RLlib 为核心,提供了一个高度模块化、可扩展、支持分布式训练的强化学习框架。下面是围绕强化学习在 Ray 中使用的归纳总结和示例:
📚 (1)、RLlib 支持的主要算法
-
离策略算法:DQN, DDPG, TD3, SAC
-
策略梯度类算法:PPO, A3C, IMPALA, APPO
-
多智能体算法:MADDPG, QMIX
-
模块化训练:支持 Policy/Trainer/env 自定义替换
🧩 (2)、使用 RLlib 的关键步骤
-
定义环境(可自定义,也可使用 Gym)
-
选择算法并配置 Trainer
-
使用 Tune 进行训练和调优
-
使用训练好的策略进行评估或部署
✅ (3)、Ray RLlib 强化学习实例(使用 PPO 训练 CartPole)
import ray
from ray import tune
from ray.rllib.algorithms.ppo import PPOConfig# 初始化 Ray(本地或集群)
ray.init()# 使用 PPOConfig 创建训练器
config = PPOConfig().environment(env="CartPole-v1").rollouts(num_rollout_workers=1)# 启动训练
tune.Tuner("PPO",run_config=tune.RunConfig(stop={"episode_reward_mean": 200}),param_space=config.to_dict(),
).fit()
训练完成后,可以加载并评估模型:
from ray.rllib.algorithms.ppo import PPO# 加载训练好的策略
algo = PPO.from_checkpoint("/path/to/checkpoint")# 与环境交互
env = algo.workers.local_worker().env
obs = env.reset()
done = False
while not done:action = algo.compute_single_action(obs)obs, reward, done, info = env.step(action)env.render()
🧠 (4)、优势总结(RLlib + Ray)
优势 | 说明 |
---|---|
分布式能力强 | 原生支持多进程、多节点分布式训练。 |
算法库丰富 | 包含多种算法,便于实验和工程落地。 |
易于集成 | 可与自定义 Gym 环境、Torch 模型无缝对接。 |
超参数优化方便 | 与 ray.tune 一体化调参支持。 |
可扩展性好 | 支持多智能体、异步采样、大规模集群训练。 |
五、📊 框架对比表(总结)
框架 | 适合任务 | 编程复杂度 | 分布式能力 | 强化学习支持 | 部署能力 |
---|---|---|---|---|---|
Ray | RL、调参、训练、仿真 | 中 | ⭐⭐⭐⭐⭐ | ✅ 强 | ✅ Serve 模块 |
Dask | 数据分析、并行任务 | 低 | ⭐⭐⭐ | ❌ | ❌ |
Horovod | 多 GPU 模型训练 | 中 | ⭐⭐⭐⭐ | ❌ | ❌ |
Torch DDP | 分布式训练 | 高 | ⭐⭐⭐⭐ | ❌ | ❌ |
Spark | 大数据处理 | 高 | ⭐⭐⭐⭐⭐ | ❌ | ❌ |
六、📌 学习路径建议
-
基础入门(建议先学 Ray 或 Dask)
-
学习 Actor 模型与
@ray.remote
用法 -
学会创建简单任务调度 + 分布式环境(Ray init 本地/远程)
-
-
强化学习方向推荐
-
深入 Ray RLlib:熟悉 Trainer/Policy/env 结构
-
用 Ray Tune 搜索 RL 超参数
-
构建多智能体环境,测试并发仿真性能
-
-
分布式训练方向推荐
-
理解 PyTorch DDP 或 Horovod 的梯度同步原理
-
掌握多 GPU/多节点训练配置与调试
-
实践部署(配合 Ray Serve 或 Triton)
-
-
数据处理方向推荐
-
掌握 Dask 或 Spark 的 DataFrame 并行操作
-
理解延迟计算、DAG 调度机制
-
七、📂 附加资源推荐
-
📘 Ray 官方文档:https://docs.ray.io
-
📘 Horovod 入门教程:GitHub - horovod/horovod: Distributed training framework for TensorFlow, Keras, PyTorch, and Apache MXNet.
-
📘 Dask 快速开始:Dask — Dask documentation
-
📘 Spark 教程(中文):https://spark.apachecn.org
-
📺 推荐课程:Berkeley CS285 强化学习、HuggingFace DDP 实践指南
相关文章:
分布式计算框架学习笔记
一、🌐 为什么需要分布式计算框架? 资源受限:单台机器 CPU/GPU 内存有限。 任务复杂:模型训练、数据处理、仿真并发等任务耗时严重。 并行优化:通过任务拆分和并行执行提升效率。 可扩展部署:适配从本地…...

数据库管理与高可用-MySQL故障排查与生产环境优化
目录 #1.1MySQL单案例故障排查 1.1.1MySQL常见的故障排查 1.1.2MySQL主从故障排查 #2.1MySQL优化 2.1.1硬件方面的优化 2.1.2进程方面的优化 #3.1MySQL存储引擎 3.1.1 MyISAM存储引擎 3.1.2 InnoDB存储引擎 1.1MySQL单案例故障排查 1.1.1MySQL常见的故障排查 (1&…...
rk3506上移植lvgl应用
本文档介绍如何在开发板上运行以及移植LVGL。 1. 移植准备 硬件环境:开发板及其配套屏幕 开发板镜像 主机环境:Ubuntu 22.04.5 2. LVGL启动 出厂系统默认配置了 LVGL,并且上电之后默认会启动 一个LVGL应用 。 LVGL 的启动脚本为/etc/init.d/pre_init/S00-lv_demo,…...
Java求职者面试指南:Spring、Spring Boot、Spring MVC与MyBatis技术点解析
Java求职者面试指南:Spring、Spring Boot、Spring MVC与MyBatis技术点解析 第一轮:基础概念问题 请解释Spring框架的核心容器是什么?它的作用是什么? 程序员JY回答:Spring框架的核心容器是IoC容器(控制反转…...
Flask和Django,你怎么选?
Flask 和 Django 是 Python 两大最流行的 Web 框架,但它们的设计哲学、目标和适用场景有显著区别。以下是详细的对比: 核心区别:哲学与定位 Django: 定位: "全栈式" Web 框架。奉行"开箱即用"的理念。 哲学: "包含…...

LangChain + LangSmith + DeepSeek 入门实战:构建代码生成助手
本文基于 Jupyter Notebook 实践代码,结合 LangChain、LangSmith 和 DeepSeek 大模型,手把手演示如何构建一个代码生成助手,并实现全流程追踪与优化。 一、环境准备与配置 1. 安装依赖 pip install langchain langchain_openai2. 设置环境变…...
湖北理元理律师事务所:债务清偿方案中的法律技术革新
文/金融法律研究组 当前债务服务市场存在结构性矛盾:债权人追求快速回款,债务人需要喘息空间。湖北理元理律师事务所通过创新法律技术,在《企业破产法》《民法典》框架下构建梯度清偿模型,实现多方利益平衡。 一、个人债务优化的…...
大模型的LoRa通讯详解与实现教程
一、LoRa通讯技术概述 LoRa(Long Range)是一种低功耗广域网(LPWAN)通信技术,由Semtech公司开发,特别适合于物联网设备的长距离、低功耗通信需求。LoRa技术基于扩频调制技术,能够在保持低功耗的同时实现数公里甚至数十公里的通信距离。 LoRa的主要特点 长距离通信:在城…...

【Elasticsearch基础】Elasticsearch批量操作(Bulk API)深度解析与实践指南
目录 1 Bulk API概述 1.1 什么是批量操作 1.2 Bulk API的优势 2 Bulk API的工作原理 2.1 请求处理流程 2.2 底层机制 3 Bulk API的使用方法 3.1 基本请求格式 3.2 操作类型示例 3.3 响应格式 4 Bulk API的最佳实践 4.1 批量大小优化 4.2 错误处理策略 4.3 性能调…...
PCA笔记
✅ 问题本质:为什么让矩阵 TT 的行列式为 1? 这个问题通常出现在我们对数据做**线性变换(旋转/缩放)**的时候,比如在 PCA 中把数据从原始坐标系变换到主成分方向时。 📌 回顾一下背景 在 PCA 中ÿ…...

MySQL 数据库深度剖析:事务、SQL 优化、索引与 Buffer Pool
在当今数据驱动的时代,数据库作为数据存储与管理的核心,其性能与可靠性至关重要。MySQL 作为一款广泛使用的开源数据库,在众多应用场景中发挥着关键作用。在这篇博客中,我将围绕 MySQL 数据库的核心知识展开,涵盖事务及…...

MAZANOKE结合内网穿透技术实现跨地域图像优化服务的远程访问过程
文章目录 前言1. 关于MAZANOKE2. Docker部署3. 简单使用MAZANOKE4. 安装cpolar内网穿透5. 配置公网地址6. 配置固定公网地址总结 前言 在数字世界高速发展的今天,您是否察觉到那些静默增长的视觉数据正在悄然蚕食存储空间?随着影像记录成为日常习惯&…...
迁移科技3D视觉系统:重塑纸箱拆垛场景的智能革命
一、传统拆垛场景的困局与破局之道 在汽车零部件仓库中,每天有超过2万只异形纸箱需要拆垛分拣。传统人工拆垛面临三大挑战: 效率瓶颈:工人每小时仅能处理200-300件,且存在间歇性疲劳安全隐患:20kg以上重箱搬运导致年…...

World-writable config file /etc/mysql/mysql.conf.d/my.cnf is ignored
https://stackoverflow.com/questions/53741107/mysql-in-docker-on-ubuntu-warning-world-writable-config-file-is-ignored 修改权限 -> 重启mysql # 检查字符集配置 SHOW VARIABLES WHERE Variable_name IN (character_set_server, character_set_database ); --------…...
JS的传统写法 vs 简写形式
一、条件判断与逻辑操作 三元运算符简化条件判断 // 传统写法 let result; if (someCondition) {result yes; } else {result no; }// 简写方式 const result someCondition ? yes : no;短路求值 // 传统写法 if (condition) {doSomething(); }// 简写方式 condition &…...

信息收集:从图像元数据(隐藏信息收集)到用户身份的揭秘 --- 7000
目录 🌐 访问Web服务 💻 分析源代码 ⬇️ 下载图片并保留元数据 🔍 提取元数据(重点) 👤 生成用户名列表 🛠️ 技术原理 图片元数据(EXIF 数据) Username-Anarch…...
OCC笔记:TDF_Label中有多个相同类型属性
注:OCCT版本:7.9.1 TDF_Label中有多个相同类型的属性的方案 OCAF imposes the restriction that only one attribute type may be allocated to one label. It is necessary to take into account the design of the application data tree. For exampl…...

如何优雅地绕过限制调用海外AI-API?反向代理与API中转技术详解
阅读时长 | 8分钟 适用读者 | 需要跨境调用OpenAI等AI服务的开发者/企业 一、问题背景:为什么需要代理? 最近在技术社区看到这样的求助: "公司服务器在国内,但业务需要调用OpenAI接口,直接访…...

【自然语言处理】大模型时代的数据标注(主动学习)
文章目录 A 论文出处B 背景B.1 背景介绍B.2 问题提出B.3 创新点 C 模型结构D 实验设计E 个人总结 A 论文出处 论文题目:FreeAL: Towards Human-Free Active Learning in the Era of Large Language Models发表情况:2023-EMNLP作者单位:浙江大…...

React与原生事件:核心差异与性能对比解析
💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「storms…...
Go 并发编程基础:select 多路复用
select 是 Go 并发编程中非常强大的语法结构,它允许程序同时等待多个通道操作的完成,从而实现多路复用机制,是协程调度、超时控制、通道竞争等场景的核心工具。 一、什么是 select select 类似于 switch 语句,但它用于监听多个通…...

暴雨新专利解决服务器噪音与性能悖论
6月1日,我国首部数据中心绿色化评价方面国家标准《绿色数据中心评价》正式实施,为我国数据中心的绿色低碳建设提供了明确指引。《评价》首次将噪音控制纳入国家级绿色评价体系,要求从设计隔声结构到运维定期监测实现闭环管控,加速…...

Go 语言中的内置运算符
1. 算术运算符 注意: (自增)和--(自减)在 Go 语言中是单独的语句,并不是运算符。 package mainimport "fmt"func main() {fmt.Println("103", 103) // 13fmt.Println("10-3…...
Spring Boot 中实现 HTTPS 加密通信及常见问题排查指南
Spring Boot 中实现 HTTPS 加密通信及常见问题排查指南 在金融行业安全审计中,未启用HTTPS的Web应用被列为高危漏洞。通过正确配置HTTPS,可将中间人攻击风险降低98%——本文将全面解析Spring Boot中HTTPS的实现方案与实战避坑指南。 一、HTTPS 核心原理与…...
项目研究:使用 LangGraph 构建智能客服代理
概述 本教程展示了如何使用 LangGraph 构建一个智能客服代理。LangGraph 是一个强大的工具,可用于构建复杂的语言模型工作流。该代理可以自动分类用户问题、分析情绪,并根据需要生成回应或升级处理。 背景动机 在当今节奏飞快的商业环境中,…...

JS面试常见问题——数据类型篇
这几周在进行系统的复习,这一篇来说一下自己复习的JS数据结构的常见面试题中比较重要的一部分 文章目录 一、JavaScript有哪些数据类型二、数据类型检测的方法1. typeof2. instanceof3. constructor4. Object.prototype.toString.call()5. type null会被判断为Obje…...
创客匠人:如何通过创始人IP打造实现知识变现与IP变现的长效增长?
在流量红利逐渐消退的当下,创始人IP的价值愈发凸显。它不仅能够帮助中小企业及个人创业者突破竞争壁垒,还能成为企业品牌影响力的核心资产。然而,市场上IP孵化机构鱼龙混杂,如何选择一家真正具备长期价值的合作伙伴?创…...

【靶场】XXE-Lab xxe漏洞
前言 学习xxe漏洞,搭了个XXE-Lab的靶场 一、搭建靶场 现在需要登录,不知道用户名密码,先随便试试抓包 二、判断是否存在xxe漏洞 1.首先登录抓包 看到xml数据解析,由此判断和xxe漏洞有关,但还不确定xxe漏洞是否存在。 2.尝试xxe 漏洞 判断是否存在xxe漏洞 A.send to …...

开源项目实战学习之YOLO11:12.6 ultralytics-models-tiny_encoder.py
👉 欢迎关注,了解更多精彩内容 👉 欢迎关注,了解更多精彩内容 👉 欢迎关注,了解更多精彩内容 ultralytics-models-sam 1.sam-modules-tiny_encoder.py2.数据处理流程3.代码架构图(类层次与依赖)blocks.py: 定义模型中的各种模块结构 ,如卷积块、残差块等基础构建…...

Python[数据结构及算法 --- 栈]
一.栈的概念 在 Python 中,栈(Stack)是一种 “ 后进先出(LIFO)”的数据结构,仅允许在栈顶进行插入(push)和删除(pop)操作。 二.栈的抽象数据类型 1.抽象数…...