avatar

Wang's Blog

Be Open, Share Knowledge, Keep Learning

  • 首页
  • 数理基础
  • 宇宙机
  • LLM
  • 管理与经济
  • 游戏
Home Ray
文章

Ray

Posted 2025-09-28 Updated 2025-09- 12
By Administrator
4~5 min read

Ray的介绍

Hello,Ray

import ray
import time

# Start Ray.
ray.init()

@ray.remote
def f(x):
    time.sleep(1)
    return x

# Start 4 tasks in parallel.
result_ids = []
for i in range(4):
    result_ids.append(f.remote(i))
    
# Wait for the tasks to complete and retrieve the results.
# With at least 4 cores, this will take 1 second.
results = ray.get(result_ids)  # [0, 1, 2, 3]

以上代码演示了Ray如何将一个普通函数变成一个可以并行运行在多核或多机上的远程任务。Ray的工作流程不是线性的,分为任务分发和结果收集两个阶段:

  • ray.init():这个命令是启动Ray的引擎,初始化了Ray的运行时,包括任务调度器和本地工作进程。

  • @ray.remote:这是代码的核心,这个装饰器告诉 Ray:“不要像普通函数一样执行 f(x)。当这个函数被调用时,把它当作一个远程任务,发送给 Ray 的工作进程去执行。

1.任务分发:

for i in range(4): 循环执行了 4 次。但这里的调用是 f.remote(i),而不是 f(i)

  • f.remote() 是一个非阻塞的调用。当你的程序执行到这一行时,它会立刻把 f(i) 这个任务扔给 Ray,然后继续往下执行,它不会等待任务完成

  • f.remote() 不会返回最终结果,它会返回一个未来对象(Future Object),也就是 result_id。这个对象只是一个占位符,代表着某个任务的最终结果

因此,for循环几乎是瞬间完成,程序在不到1ms的时间里,把4个任务全部扔给了Ray,然后Ray在后台并行地执行。

2.结果收集:

results = ray.get(result_ids) 这是 f.remote() 调用的另一半。ray.get() 是一个阻塞的调用

  • 它告诉你的程序:“等等。停在这里,直到所有 result_ids 对应的任务都执行完成,并且结果都可用时,你才能继续往下走。

  • 因为 Ray 在后台并行地运行了这 4 个任务,每个任务需要 1 秒钟。在拥有足够核心的情况下,它们会同时开始和结束。所以,ray.get() 只会等待大约 1 秒钟,而不是 4 秒钟。

LLM
License:  CC BY 4.0
Share

Further Reading

Sep 28, 2025

代码阅读与运行1

RLHF 试着运行了一份非常基础的RLHF代码,来源于:https://github.com/lansinuote/Simple_RLHF_tiny B站上有对应视频 📁项目结构 Simple_RLHF_tiny-main/ ├── 🔧 核心代码文件 │ ├── util.py # 工具类:To

Sep 28, 2025

大模型入门(6)——Agent、MCP、FunctionCall

内容来自B站视频:【10分钟讲清楚 Prompt, Agent, MCP 是什么】https://www.bilibili.com/video/BV1aeLqzUE6L?vd_source=a704063646d181fb265230f6b49cca81 System Prompt和User Pro

Sep 28, 2025

代码阅读与运行2

这次运行的是大名鼎鼎的OpenRLHF 遇到的一些问题 自己的设备是colab提供的A100 GPU,显存40GB 安装的过程没有太大问题,都能顺利解决,安装之后按照README的顺序试着用以下命令启动SFT的训练(提供的脚本还没试过) !deepspeed --module openrlhf.cl

OLDER

Qwen2.5-3B(GRPO)的复现实验记录

NEWER

n8n和Agent

Recently Updated

  • C++
  • Hello World
  • 数据仓库复习整理
  • 代码阅读与运行1
  • 大模型入门(6)——Agent、MCP、FunctionCall

Trending Tags

Halo 前端 强化学习 Python obsidian

Contents

©2026 Wang's Blog. Some rights reserved.

Using the Halo theme Chirpy