V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
dayeye2006199
V2EX  ›  程序员

算法工程师的开发环境都是什么样的?

  •  
  •   dayeye2006199 · 2022-04-09 08:25:23 +08:00 · 3992 次点击
    这是一个创建于 993 天前的主题,其中的信息可能已经有所发展或是发生改变。

    各位算法工程师,你们平时在公司内部开发模型,做实验,上线模型的环境是什么样的?方便分享一下经验吗? 我们最近想在内部统一开发环境,这是我们初步的构想:

    1. 使用 jupyterhub 跑在 k8s 上为多位工程师自助式提供 jupyter 的环境
    2. 提供若干个常见的算法开发镜像,启动 jupyter 环境的时候可以选择( tensorflow ,pytorch 之类的)
    3. 使用 GPU 设备插件,来像算法同事提供带 GPU 的环境
    4. 鼓励大家使用 mlflow 来管理实验
    5. 使用kubeflow pipeline和 notebook 中的elyra 插件来使用多个 notebook 构建复杂的算法流程,方便重复实验
    6. 批量推理的话也是使用 kubeflow pipeline 来完成
    7. 在线推理的话使用kserve通过写 yaml 的方式完成

    这套东西看起来很美好,就是组件比较多,比较大的依赖 kubeflow 这个项目,这个项目的成熟度不知如何。

    不知道大家有什么最佳实践可以分享吗?公司属于中小规模,没有什么历史负担。已经在使用 k8s ,业务主要是提供各种定制化的 AI 服务 API ,所以对上线速度和开发效率比较看重。

    谢谢

    12 条回复    2022-04-12 00:49:18 +08:00
    Calibans
        1
    Calibans  
       2022-04-09 09:31:56 +08:00 via iPhone
    同问
    0x4F5DA2
        2
    0x4F5DA2  
       2022-04-09 09:44:53 +08:00
    现在做 cv 相关的算法,感觉整这些上手难度还挺大的。有时候想把最新论文的开源代码跑起来,在你这套框架下面就不知道怎么弄,目测工作量会很大。

    之前实习过三家公司。有两家是在 docker 里跑 jupyter lab 或者 vscode ,提供终端和代码编辑,然后就能像用物理机一样用,也可以支持类 slurm 那样提交任务排队等调度;还有一家用的是 slurm ,需要在本地开发并调试好之后提交任务去跑。
    0x4F5DA2
        3
    0x4F5DA2  
       2022-04-09 09:50:11 +08:00
    最简单的肯定提供物理机,然后一人一个账号,用来做开发和调试,然后写个脚本定期杀长时间的 gpu 任务。然后整一个 slurm 的集群,用来提交任务跑代码。
    dayeye2006199
        4
    dayeye2006199  
    OP
       2022-04-09 10:03:22 +08:00 via Android
    @0x4F5DA2 Jupyter 带 terminal 的环境,可以要一个带 GPU 的 lab 容器,然后 gitclone 开源代码到容器里调试运行,是否可以满足需要?

    vscode 也可以作为开发环境提供。容器里面运行一个 coder 的进程,然后暴露给用户。
    yzbythesea
        5
    yzbythesea  
       2022-04-09 10:58:33 +08:00
    上线模型都是基于云计算厂商已有服务搭建的。本地开发就是容器化。
    tfdetang
        6
    tfdetang  
       2022-04-09 11:44:56 +08:00   ❤️ 1
    1 、以前也用过 kubeflow 的方案。说实话维护起来还是蛮重的,学习成本也并不低;
    2 、kubeflow+jupyterhub 那套用来做数据探索和模型 prototype 还是非常好用的。 正式的训练任务还是写成代码工程进行版本管理的,用 notebook 串联还是觉得不是很严谨;
    3 、我们现在实验管理也都是完全放在 mlflow 上了,还是很方便的。训练以后关键的配置文件和模型一起作为 artifacts 放到对象存储上,保证拉取模型的时候与配套的配置一起使用;

    4 、推理那块我们用的是 Triton Serving 的推理框架(不过一些 tensorflow 的模型还跑在 TF serving 下)
    0x4F5DA2
        7
    0x4F5DA2  
       2022-04-09 11:57:07 +08:00
    @dayeye2006199 我觉得吧,在不改变现有的使用习惯的前提下,提供新的功能,就还 OK
    Jasonkkk
        8
    Jasonkkk  
       2022-04-09 20:56:13 +08:00 via iPhone
    @0x4F5DA2 我们离线模型就是这样的,甚至没有 slurm 。也可以选择在公司级别的云平台上跑例行。可能我们是策略岗所以没这些环境,研究员可能专业点
    zhoujinjing09
        9
    zhoujinjing09  
       2022-04-09 23:23:05 +08:00
    你们有专人维护 k8s 吗,kubeflow 维护起来还是比较麻烦的
    dayeye2006199
        10
    dayeye2006199  
    OP
       2022-04-11 00:36:08 +08:00
    各位老铁收藏很热情,回答的热情也走起来把
    suixn
        11
    suixn  
       2022-04-11 10:26:02 +08:00
    TME 之前开源了一套方案,可以参考下。
    https://github.com/tencentmusic/cube-studio
    dayeye2006199
        12
    dayeye2006199  
    OP
       2022-04-12 00:49:18 +08:00 via Android
    @suixn 恩这个是在 kubeflow 的多个组件上进行了定制和二次开发吗?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2683 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 11:46 · PVG 19:46 · LAX 03:46 · JFK 06:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.