V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
JeffersonQin
V2EX  ›  分享创造

Python 并行脚手架

  •  
  •   JeffersonQin ·
    JeffersonQin · 262 天前 · 2688 次点击
    这是一个创建于 262 天前的主题,其中的信息可能已经有所发展或是发生改变。

    做 data preprocessing 和跑批量任务的时候经常会遇到下面的情况:

    • 单 Python 进程根本跑不快,需要 multiprocess
    • 因为可能会意外退出,所以要写一个 cache 的检查逻辑之前是不是执行过,执行过就跳过
    • 每次都是复制粘贴以前类似的代码,但修修改改很容易改错
    • 如果上 PyTorch 的话先要 spawn process 重新 load 模型,还得分数据,烦不胜烦

    为解决上述烦恼,做了一个并行框架,项目地址: https://github.com/JeffersonQin/akasaka

    代码非常简单但重在实用,已发布 PyPi 。

    例子: https://github.com/JeffersonQin/akasaka/blob/master/examples/print.py

    还支持 PyTorch CUDA 的 spawning, 在多卡集群上,用户可以只提供 load_model, get_dataloader, execute() 函数,即可多卡自动数据分割 + 并发执行,一步到位解决重复劳动

    3 条回复    2024-04-07 23:55:29 +08:00
    Peiiii
        1
    Peiiii  
       261 天前 via Android   ❤️ 1
    让我想到了研究生做实验的时候需要跑上万个任务,为了方便写了一个批量跑任务的命令行的工具。

    https://gitee.com/peiiii/jobx

    任务都定义在 yaml 模板里,yaml 模板里支持导入 python 代码,支持在循环里定义任务,这样一个 yaml 就可以对应一批任务,当时用这个测试各种参数组合。
    founddev
        2
    founddev  
       259 天前   ❤️ 1
    看了一下,代码写的不错
    GARLICTRUMP
        3
    GARLICTRUMP  
       259 天前
    感觉 Python 的并行需求都可以用 ray 来解
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2133 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 16:10 · PVG 00:10 · LAX 08:10 · JFK 11:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.