Top 5 OSSInsight 年度最佳 MLOps 开源工具

2023-10-31

MLOps,即机器学习的 DevOps。它能够帮助企业或组织更好地管理生产中的机器学习模型的复杂性,从而使机器学习项目更快速、更可靠地推广到市场。
在本文中,我们将回顾  OSSInsight.io 2022 年列出的排名前 5 的最热门开源 MLOps 工具。

MLOps 主要优势

MLOps 的最大优势之一是它使 AI 研究员和软件工程师能够更紧密地协作。AI 研究员可以专注于开发模型,而软件工程师可以专注于实施模型。这种协作有助于确保模型快速高效地部署,并满足业务需求。另一个 MLOps 的优点是它有助于自动化模型开发和部署的过程。这意味着 AI 研究员可以减少做重复性任务的时间,并有更多时间开发新模型。自动化还有助于确保模型一致地以高质量的方式部署。

MLOps 常见实践

MLOps 仍然是一个相对较新的领域(如下所示,以下五个工具大都是在 2018 年首次发布的),并没有通用的实施方法。然而,也有很多常见实践。比如 使用 Pipeline 流水线,流水线有助于自动化构建、测试和部署机器学习模型的过程。

另一种常见实践是 使用容器化技术(例如 Docker)来打包机器学习模型,使得模型可以在不同的环境中轻松部署。

最后,许多 MLOps 从业者 使用监控和日志工具来跟踪生产中机器学习模型的性能。这可以提前发现问题,并有助于提高模型的整体质量。

2022 5 款最佳 MLOps 工具

实施 MLOps 可能具有挑战性,但其好处是显而易见的。采用 MLOps 实践的组织可以提高机器学习模型的质量,并加快开发和部署过程。 在本文中,我们选择了 OSSInsight.io 2022 年排名前 5 的最热门开源 MLOps 工具,即 Jina(排名第 1)、MLFlow(排名第 2)、NNI(排名第 3)、Kubefliow(排名第 4)和 Label Studio(排名第 5)。排名是根据 2022 年在 Github 上的 Star、Pull Request、PR 创建者和 Issue 而定的。

OSSInsight 是一款功能强大的洞察工具,可帮助人们深入分析单个 GitHub 仓库/开发人员,使用相同的指标比较任意两个仓库,并提供全面、有价值和有趋势的开源洞察。

MLOps Tools 排名变化图标题

上图显示了自 2011 年以来每年仓库排名的变化情况。仓库按 Star、Pull Request 、PR 创建者和 Issue 来排名。前 5 工具是 Jina、MLFlow、NNI、Kubeflow 和 Label Studio。

MLOps 排行榜

01 Jina AI

根据 OSSInsight,Jina AI 的同名核心产品 Jina 是目前最热门的 MLOps 开源工具。Jina 是一个 多模态 AI 的 MLOps 框架。它简化了云端的神经搜索和创意 AI 的构建和部署。Jina 极大简化了基础架构 AI 的复杂性,开发者可以轻松将 PoC 升级为生产就绪服务,直接使用 Jina 封装好的高级解决方案工程和 云原生技术

地址:https://get.jina.ai/

Jina AI 的 MLOps 愿景图

Jina AI 的 MLOps 涵盖了从原型设计、服务器化、部署、微调、监控等的全部开发过程。Jina 提供了前沿的云原生功能,先进的解决方案,但学习 Jina 却非常简单。

只需掌握 Jina 的三个基本概念:

  • Document 是基本数据结构。(目前这个项目属于 Linux 基金会,Jina AI正式将DocArray捐赠给Linux基金会
  • Executor 是一个使用 Document 作为 IO 函数的 Python 类。
  • Flow 将 Executors 连接成流水线。

有了这三个概念,人们可以轻松地用 45 行代码构建采用分片技术的 基于语义的文本搜索!

from pprint import pprint
from jina import Flow, requests, DocumentArray, Document, Executor

class MyFeature(Executor):
    @requests
    async def foo(self, docs, **kwargs):
        docs.apply(Document.embed_feature_hashing)
class MyDB(Executor):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.db = DocumentArray()
@requests(on='/index')
    def index(self, docs, **kwargs):
        self.db.extend(docs)
@requests(on='/query')
    def query(self, docs, **kwargs):
        return self.db.find(docs, metric='jaccard', use_scipy=True)[0][:3]
class MyRanker(Executor):
    @requests(on='/query')
    async def foo(self, docs, **kwargs):
        return DocumentArray(sorted(docs, key=lambda x: x.scores['jaccard'].value))
d = Document(uri='https://www.gutenberg.org/files/1342/1342-0.txt').load_uri_to_text()
da = DocumentArray(Document(text=s.strip()) for s in d.text.split('\n') if s.strip())
if __name__ == '__main__':
    f = (
        Flow()
        .add(uses=MyFeature)
        .add(uses=MyDB, shards=3, polling={'/query': 'ALL', '/index': 'ANY'})
        .add(uses=MyRanker)
    )
    with f:
        f.post('/index', da, show_progress=True)
        pprint(
            f.post('/query', Document(text='she smiled too much'))[
                :, ('text', 'scores__jaccard__value')
            ]
        )
调用`f.plot()`来实现 Flow 可视化

使用 Executor Hub,用户可以轻松地使用 LLM 或 Hugging Face 上的预训练模型来对 Document 进行 embedding。此外,在实践中,如果没有适当的领域采用或知识转移,性能通常不理想。微调是提高神经搜索和嵌入相关任务性能的有效解决方案。Jina AI 还提供了 Finetuner 工具,通过简化工作流并在云端处理所有复杂性和基础架构,使微调更简单、更快速、更有效。

最后,Jina AI 还为 Jina 项目提供了免费托管服务,用户可以基于 CPU/GPU 的 Jina Flow,使用 Kubernetes 中的自动配置功能部署。现在处于公共测试阶段,提供免费托管服务。

总的来说,Jina AI 提供了一系列强大的工具和资源,关注公众号,了解最新的 MLOps 动态和最佳实践。

02 MLFlow

地址:https://github.com/mlflow/mlflow

MLflow 排在榜单第 2 名。与专门针对神经搜索和多模态 AI 应用的 Jina 不同,MLflow 是一个更通用的平台,旨在简化机器学习开发,包括跟踪实验、将代码打包成可重复运行的代码、共享和部署模型。它提供了一组轻量级 API,可与任何现有的机器学习应用或库(TensorFlow、PyTorch、XGBoost 等)一起使用,无论你当前在哪里运行 ML 代码(例如在笔记本、独立应用程序或云端)。MLflow 的当前组件有:

  • MLflow Tracking:用于在机器学习实验中记录参数、代码和结果,并使用交互式 UI 进行比较。
  • MLflow Projects:一种使用 Conda 和 Docker 进行可重复运行的代码打包格式,可以与他人分享 ML 代码。
  • MLflow Models:一种模型打包格式和工具,可让您轻松在 Docker、Apache Spark、Azure ML 和 AWS SageMaker 等平台上部署相同的模型(来自任何 ML 库),用于批量和实时评分。
  • MLflow Model Registry:用于协作管理 MLflow 模型的全生命周期的集中式模型存储、一组 API 和 UI。

MLflow Projects 提供了打包可复用数据科学代码的标准格式。每个项目只是一个具有代码或 Git 仓库的目录,并使用描述符文件指定其依赖项以及如何运行代码。MLflow Project 由一个 MLproject 的简单 YAML 文件定义。

name: My Project
conda_env: conda.yaml
entry_points:
  main:
    parameters:
      data_file: path
      regularization: {type: float, default: 0.1}
    command: "python train.py -r {regularization} {data_file}"
  validate:
    parameters:
      data_file: path
    command: "python validate.py {data_file}"

项目可以通过 Conda 环境指定其依赖项。一个项目还可能有多个调用运行的入口点,具有命名参数。您可以使用 mlflow run 命令行工具运行项目,无论是从本地文件还是从 Git 仓库:

mlflow run example/project -P alpha=0.5

mlflow run git@github.com:databricks/mlflow-example.git -P alpha=0.5

MLflow 会自动为项目设置正确的环境并运行它。

03 NNI

地址:_https://github.com/microsoft/nni_

微软的 NNI(神经网络智能)是一个轻量级但功能强大的工具包,可帮助用户自动化特征工程,神经架构搜索,超参数调优和模型压缩,以进行深度学习。NNI 简化了扩展和管理 AutoML 实验的工作。

与更多关注推理的 Jina 不同,NNI 专注于模型训练和实验。它提供了强大且易于使用的 API,用于促进高级训练,如 AutoML。自动神经架构搜索在寻找更好模型方面发挥着越来越重要的作用。最近的研究已经证明了自动 NAS 的可行性,并导致了超过许多手动设计和调整的模型的模型。代表性作品包括 NASNet,ENAS,DARTS,网络形态学和演化。

标题神经架构搜索的过程类似于超参数优化,只不过目标是最佳架构而不是超参数。

一般来说,神经架构搜索通常包括三项任务:搜索空间设计,搜索策略选择和性能评估。这些任务都很麻烦,但在 NNI 中却很容易解决:

# define model space
class Model(nn.Module):
    self.conv2 = nn.LayerChoice([
        nn.Conv2d(32, 64, 3, 1),
        DepthwiseSeparableConv(32, 64)
    ])
model_space = Model()
# search strategy + evaluator
strategy = RegularizedEvolution()
evaluator = FunctionalEvaluator(
    train_eval_fn)
# run experiment
RetiariiExperiment(model_space,
    evaluator, strategy).run()

04 Kubeflow

地址:_https://github.com/kubeflow/kubeflow_

Kubeflow 是 Kubernetes 的机器学习工具包。它最初是谷歌内部运行 Tensorflow 的开源方式。它最初只是一种在 Kubernetes 上运行 TensorFlow 作业的简单方法,但是后来扩展成了一个多体系结构,多云框架,能够运行端到端的机器学习工作流。

上图显示了 Kubeflow 作为在 Kubernetes 之上排列 ML 系统组件的平台。Kubeflow 致力于使 ML 工作流在 Kubernetes 上的部署变得简单,可移植和可扩展。目标不是再次创建其他服务,而是提供一种在不同基础架构上部署机器学习的开源系统的简单方法。您应该能够在任何运行 Kubernetes 的地方运行 Kubeflow。与 Jina,MLFlow 和 NNI 相比,Kubeflow 涵盖了最完整的 ML 生命周期,包括:

  • Training
  • AutoML
  • Deployment
  • Serving
  • Pipelines
  • Manifests
  • Notebooks

与 Jina 的 "Flow" 和 MLFlow 的 "Project" 概念相比,Kubeflow pipeline 涵盖了更多内容。Kubeflow Pipelines 是一个基于 Docker 容器的构建和部署可移植,可扩展的机器学习 (ML) 工作流的平台。具体而言,它包括:

  • 用于管理和跟踪实验,作业和运行的用户界面 (UI)。
  • 用于调度多步 ML 工作流的引擎。
  • 用于定义和操作流程和组件的 SDK。
  • 用于使用 SDK 与系统交互的笔记本。

Kubeflow Pipelines UI 中示例流程的运行时执行图

05 Label Studio

地址:_https://github.com/heartexlabs/label-studio_

Label Studio 是 Heartex 开发的一款开源工具,专注于机器学习生命周期的早期阶段:数据标注。数据标注是将标签添加到数据集的过程,使其能够用于训练机器学习模型。数据标注是非常重要的。首先,它能创建质量更高的数据集。如果数据集未被标记,机器学习模型可能难以从中学习。其次,数据标注可以帮助加速训练过程。第三,数据标注可以提高机器学习模型的结果,使其更加准确。数据标注通常是人工完成的,这是一个耗时且昂贵的过程。

Label Studio 让您可以使用简单的 UI 来标记音频、文本、图像、视频和时间序列等数据类型,并将它们导出到各种模型格式。它可以用于准备原始数据或改进现有的训练数据,以获得更准确的 ML 模型。

您还可以将 Label Studio 与机器学习模型集成,以提供标签的预测(预标记),或进行持续的主动学习。Label Studio ML 后端是一个 SDK,可以让您包装机器学习代码并将其转换为 Web 服务器。然后,就可以将该服务器连接到 Label Studio 实例以执行 2 项任务:

  • 基于模型推理结果动态预注释数据
  • 根据最近注释的数据重新训练或微调模型

例如,要根据示例脚本初始化 ML 后端。

label-studio-ml init my_ml_backend --script label_studio_ml/examples/simple_text_classifier/simple_text_classifier.py
label-studio-ml start my_ml_backend

在定义加载器后,您可以为模型定义两种方法:推理调用和训练调用。您可以使用推理调用即时从模型中获取预标记。必须更新示例 ML 后端脚本中的现有predict方法,使其适用于您的特定用例。

def predict(self, tasks, **kwargs):
    predictions = []
    # Get annotation tag first, and extract from_name/to_name keys from the labeling config to make predictions
    from_name, schema = list(self.parsed_label_config.items())[0]
    to_name = schema['to_name'][0]
    for task in tasks:
        # for each task, return classification results in the form of "choices" pre-annotations
        predictions.append({
            'result': [{
                'from_name': from_name,
                'to_name': to_name,
                'type': 'choices',
                'value': {'choices': ['My Label']}
            }],
            # optionally you can include prediction scores that you can use to sort the tasks and do active learning
            'score': 0.987
        })
    return predictions

编写您自己的代码来覆盖 predict(tasks, **kwargs) 方法,该方法采用 JSON 格式的 Label Studio 任务并以 Label Studio 接受的格式返回预测。

写下你自己的训练调用,通过覆盖fit(annotations,kwargs)方法来更新你的模型的新注释,该方法接受格式化为 JSON 的 Label Studio 注释并返回可以存储有关创建的模型的任意 dict。

def fit(self, completions, workdir=None, **kwargs):
# ... do some heavy computations, get your model and store checkpoints and resources
return {'checkpoints': 'my/model/checkpoints'} # <-- you can retrieve this dict as self.train_output in the subsequent calls

如果你只想在不重新训练模型的情况下预注释任务,你不需要在代码中使用此调用。但如果你确实想根据 Label Studio 的注释重新训练模型,请使用fit(annotations,kwargs)方法。

在将模型代码与类封装、定义加载器以及定义方法之后,你就可以将模型作为 ML 后端与 Label Studio 一起使用了。

很难否认,任何机器学习模型的成功在很大程度上取决于其训练数据的质量。这就是为什么 Label Studio 在 2022 年排名较高,在 MLOps 中起着至关重要的作用。

在内部采用 MLOps 的公司

作为机器学习的重要一环,MLOps 在过去的一年里已经得到了越来越多公司的采用。我们发现越来越多的公司在采用 MLOps 实践,并且分享了他们的经验。特别是,MLOps 有两种主要的方法:中心化方法 和 分散化方法

  • 中心化方法的典型代表是谷歌和 Facebook,他们有负责开发和管理整个 ML 流程的中心化团队。中心化方法的优点在于能够内部开发和管理整个 ML 流程,这样可以更好地控制和透明度。但缺点是可能会变得非常隔离,不同的团队相互独立工作。
  • 分散化方法的典型代表是亚马逊和 Netflix,他们有分散的团队,分别管理 ML 流程的一部分。分散化方法的优点在于能够更快地行动并且更灵活,因为每个团队只负责 ML 管道的一部分。但缺点是透明度较低且更难以追踪问题。

在 2022 年,最佳的 MLOps 设置既包含中心化的方法,也包含分散化的方法,具体取决于公司的需求。例如,一家公司可能有一个中心化的团队负责开发 ML 算法,而一个分散化的团队负责训练和部署模型。

向 2023 迈进!

展望 2023 年,我们预计会有更多的公司采用 MLOps 实践,MLOps 的好处将变得更加明显。特别是 在多模态 AI 的范式转变 中,更多的文本、图像、视频,甚至 3D 模型数据,我们将看到数据集变得更加复杂,自动化数据管道和机器学习管理流程的需求将变得更加关键。

在 2023 年,最成功的 MLOps 配置将是能在人、流程和工具之间找到正确平衡的配置。我们预计,最受迎的开源 MLOps 工具将是那些提供易于使用的界面,并允许自定义以满足特定需求的工具。本文中提到的工具和平台将继续发展并变得更加友好,使它们能够被更广泛的用户使用。我们也预计会看到新的平台出现,以及向现有平台添加新功能和功能。

就具体工具而言,我们认为版本控制工具将变得越来越重要,用于管理 ML 代码和模型。数据注释和标记工具也将获得更多普及,因为对高质量训练数据的需求变得更加明显。最后,模型管理工具将成为管理生产中部署的各种机器学习模型的必要工具。总的来说,我们预计 MLOps 领域将变得更加多元,将提供更多的工具来满足不同组织的需求。

2023 年,MLOps 是所有想要在不断变化的机器学习领域保持竞争力的公司必不可少的一部分!让 MLOps 加速您的发展,建立机器学习能力,在竞争中脱颖而出!

原文链接

https://jina.ai/news/seo-is-dead-long-live-llmo/

更多技术文章

Jina AI创始人肖涵博士解读多模态AI的范式变革

语音生成图像任务| 模型微调神器Finetuner

DocArray + Redis:快到飞起来的推荐系统

Jina AI正式将DocArray捐赠给Linux基金会

搜索是过拟合的生成;生成是欠拟合的搜索

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Top 5 OSSInsight 年度最佳 MLOps 开源工具 的相关文章

随机推荐

  • 西门子dcs系统组态手册下载_PLC/DCS/HMI 知识普及

    什么是PLC 可编程控制器 简称PLC Programmable logic Controller 是指以计算机技术为基础的新型工业控制装置 在1987年国际电工委员会颁布的PLC标准草案中对PLC做了如下定义 PLC是一种专门为在工业环境
  • 原版安装Win10 1909专业版 64位MSDN镜像2020 05

    原版安装Win10 1909专业版 64位MSDN镜像2020 05 一 更新内容 1 去除预装kms激活 未激活的可以通过桌面自行激活 2 提升商店购买应用的速度性能 3 解决在IE浏览器中阻碍下载和安装 NET组件的问题 4 更新修复补
  • Qt5.14.2 MInGW静态编译配置教程

    Qt5 14 2 MinGW静态编译教程 1 安装Qt 1 1 下载安装包 1 2 安装 2 工具的下载安装 3 检查上述配置是否成功 4 静态编译qmake 4 1 静态编译配置 4 2 编译 4 3 安装静态库 4 4新增静态编译 1
  • SQL Server(五)-视图

    与表一样 视图也是由字段和记录组成的 只是这些字段和记录来源于其他被引用的表或视图 所以视图并不是真实存在的 而是一张虚拟的表 视图中的数据并不是存在于视图中的 而是存在于被引用的数据表当中的 当被引用的数据表中的记录内容改变时 视图中的记
  • 临沂地区的OLED拼接屏有哪些独特优点?

    临沂oled拼接屏是一种高清晰度的显示屏 由多个oled屏幕拼接而成 它可以用于商业广告 展览 会议 演出等场合 具有高亮度 高对比度 高色彩饱和度 高刷新率等优点 能够吸引人们的眼球 提高信息传递效果 临沂oled拼接屏的优点之一是高亮度
  • 虚拟偶像是未来趋势吗?

    Hello 我的朋友 这里是古希伯 今天聊聊 虚拟偶像行业是不是未来的趋势 虚拟偶像零都知道吧 日本初音未来 洛天依诸多的 日本虚拟偶像行业市场是最为发达的 日漫这一块本身具有先天优势存在 乃至于国内诸多公司都没有能力完全复刻 虚拟偶像目前
  • slot-插槽的基本使用-具名插槽的使用(重要)

    slot 插槽的基本使用 具名插槽的使用 为什么使用slot slot翻译为插槽 1 在生活中很多地方都有插槽 电脑的USB插槽 插板当中的电源插槽 2 插槽的目的是让我们原来的设备具有更多的扩展性 3 比如电脑的USB我们可以插入U盘 硬
  • 手撸,自定义application.yml配置项

    文章目录 前言 教程 1 加入配置依赖 及maven插件 2 元注解 分析 3 配置文件 4 测试能不能用 5 怎么从配置里面取值 并加载呢 第一 我们在配置中加入值 第二 编写一个自动配置类 前言 我们现在在springboot中 极其简
  • Spring Dynamic Modules - DMserver

    spring dm server 官网 http static springsource com projects dm server 1 0 x programmer guide htmlsingle programmer guide h
  • 英语发音规则---gh

    英语发音规则 gh 一 总结 一句话总结 gh字母组合的读音在中学英语课本中归纳起来主要有 发音 和 不发音 两种情况 gh字词首是发 g 因为需要开头啊 例如 ghost g st n 鬼 幽灵 gh在词尾读作 f 因为需要尾巴 例如 l
  • 什么是相关性

    我们曾经讲过 默认情况下 返回结果是按相关性倒序排列的 但是什么是相关性 相关性如何计算 每个文档都有相关性评分 用一个正浮点数字段 score 来表示 score 的评分越高 相关性越高 查询语句会为每个文档生成一个 score 字段 评
  • OPENCV+QT环境配置

    qt opencv开发入门 4步搞定opencv环境配置2 https www bilibili com video BV1f34y1v7t8 vd source 0aeb782d0b9c2e6b0e0cdea3e2121eba 第一步 安
  • U20.4 升级 pytorch 1.11

    一 系统环境 1 系统已安装 pytorch 1 7 1 8 a pip install torch 1 8 2 cu111 torchvision 0 9 2 cu111 torchaudio 0 8 2 f https download
  • 小编必看,教你如何使用微信公众号编辑器快速排版精美文章

    对于小编而言 写作就是每天的日常 图文排版是公众号的形象 也是新媒体运营小编必须掌握的技能 一篇文章除了内容优质之外 排版也是非常重要的 好的排版才能让读者有更好的阅读体验 俗话说 工欲善其事 必先利其器 众多微信公众号编辑器中 推荐使用来
  • CMAKE语法:add_definitions、add_compile_options

    前言 CMAKE命令通用理解 command
  • SQL_开发技巧(附阿里巴巴开发规范)

    目录 一 数据库命令规范 1 1 explain 1 2 单表delete或者update语句 加个limit 1 3 where后字段 隐式转换 1 4 减少不必要的查询字段 1 5 SQL命令行修改数据 养成begin commit 事
  • 【ProVerif学习笔记】6:握手协议(handshake protocol)建模

    这节先不继续往下看 巩固一下对ProVerif建模握手协议的理解 握手协议的流程如下 ex handshake pv 只验证保密性 手册里在引入security性质之前 握手协议的模型如下 对称加密相关 对称密钥 type key 对称加密
  • Cookie中允许的字符

    本文翻译自 Allowed characters in cookies this one s a quickie 这是一个快捷方式 What are the allowed characters in both cookie name an
  • Latex Skills

    ModernCV http 519488126 blog 163 com blog static 722401602014010555221 Paper 1 Blank 两个quad空格 a qquad b a qquad b 两个m的宽度
  • Top 5 OSSInsight 年度最佳 MLOps 开源工具

    MLOps 即机器学习的 DevOps 它能够帮助企业或组织更好地管理生产中的机器学习模型的复杂性 从而使机器学习项目更快速 更可靠地推广到市场 在本文中 我们将回顾 OSSInsight io 2022 年列出的排名前 5 的最热门开源