您当前的位置:首页 > 电脑百科 > 人工智能

字节跳动开源云原生机器学习平台 Klever

时间:2021-02-19 11:15:42  来源:  作者:

字节跳动基础架构团队基于火山引擎机器学习平台 Clever 及其丰富的行业落地经验,推出开源项目 Klever,以工程化的方式降低智能技术落地门槛,助力企业快速打造智能业务。

作者: 陈军(字节跳动)

发布:火山引擎云原生

项目地址: github.com/kleveross

近年来,智能技术不论是在学术界还是工业界都取得了突破性进展。机器学习、深度学习开始在各行各业扮演重要角色:业务上,帮助企业优化运营、提高效率、改善客户体验;管理上,参与后台自动化运营,完成数据处理和提取等任务。

然而,随着越来越多企业开始尝试落地智能技术,一个严峻的问题也逐渐暴露出来:从算法技术选型到模型最终上线,这个过程涉及大量工程化任务对接。 算法工程师们掌握着丰富的先进算法,但算法能力的实现通常离不开底层计算资源和系统架构的支撑,如何实现从开发、模型训练、模型管理、模型服务全链路高效、敏捷、自动化管理,进而实现企业的智能化转型,仍是当前智能技术领域亟待解决的问题之一。

开源机器学习平台 Klever

针对上述问题,字节跳动基础架构团队多年来就智能技术的工程化问题进行了长期探索。

2020 年,字节跳动旗下的数字服务与智能科技品牌火山引擎携我们的技术实践落地国内某金融机构,使其模型上线效率提升了 10 倍,GPU 资源使用率提高 50%,自主创新能力大幅提高。

这类落地最佳实践让我们深刻认识到了智能技术对企业业务持续增长的重要性,也让我们了解到缺乏工程化工具已经成为当下企业应用智能技术的一大掣肘。为此, 我们决定推出开源机器学习平台 Klever 。

Klever 是一个支持 OCI(Open Container Initiative)标准存储训练模型、支持在线模型服务部署的云原生机器学习平台。算法科学家可以使用 Klever 进行 模型管理 、 模型解析 、 模型转换 、 模型服务 ,它已经解决了智能技术落地流程中的如下问题:

  • 模型的管理和分发
  • 模型解析和转换
  • 在线模型服务部署和管理

同时,基于字节跳动在机器学习和云原生开源社区的技术积累,Klever 提供强大、通用的开源技术标准,方便企业无缝迁移线上应用。未来,它还将进一步支持模型开发、模型训练等一系列智能模型开发和管理流程,降低技术落地门槛,助力企业快速打造智能业务、全面实现智能化转型。

Klever 概述

系统架构

Klever 有四个自研发的组件,并依赖三个开源组件:

  • ormb :模型打包、解压、上传、下载工具(点击了解 ormb)
  • model-registry :模型仓库及模型服务 API 管理层
  • modeljob-operator :ModelJob controller,管理模型解析、模型转换任务
  • klever-web :前端组件
  • Istio :开源服务网格组件,模型服务通过 Istio 对外暴露模型服务地址,实现模型服务按内容分流和按比例分流
  • Harbor :模型底层存储组件,对模型配置和模型文件进行分层存储
  • Seldon Core :开源模型服务管理的 Seldon Deployment CRD 的 controller,通过 SeldonDeployment CR 实现模型服务的管理
字节跳动开源云原生机器学习平台 Klever

 

使用场景

如前所述,目前机器学习平台 Klever 率先实现的是从模型仓库到模型服务的自动化管理,具体来说,它可以支持以下两种应用场景:

  • 模型管理
    • 开发的模型在团队内外、公司内外通过 ormb + Harbor 进行管理和分发
    • 用户如果有现成的模型文件,但是不知道如何构建模型服务,那么可通过将模型导入系统,一键部署模型服务
    • 用户可导入模型,获取模型的输入输出等模型内部信息
  • 模型服务
    • 支持简单模型服务和基于流量比例及内容分流的高级模型服务
    • 用户可通过构建自定义镜像的方式支持自定义模型服务
    • 支持 GPU 和 非 GPU 模式部署模型服务

Klever 特性

Klever 有三大特性。

首先,通过与 Harbor 结合,它可以满足 OCI 标准的模型仓库管理,用户可以像使用 Docker 管理镜像一样管理机器学习模型。

其次,整个系统可通过容器化的方式部署在 Kubernetes 容器管理平台之上,用户无需管理模型解析、模型转换、模型服务实际运行在哪台物理机之上,系统会自动调度和运行资源充足的机器,并在模型服务负载较高时自动弹性伸缩。

最后,由于机器学习在不同训练过程中往往使用不同的数据集,会产生不同的模型,Klever 支持多种模型服务运行时,可将产生的模型用于提供生产环境可用的在线服务。

字节跳动开源云原生机器学习平台 Klever

 

模型管理

ORMB 命令行管理

ORMB 是 Klever 下的一个命令行管理工具子项目,可以像 Docker 管理镜像一样管理模型。它支持 OCI 标准,可以对模型文件和模型属性进行分层存储管理。

字节跳动开源云原生机器学习平台 Klever

 

支持的命令类型:

字节跳动开源云原生机器学习平台 Klever

 

执行 ormb save 保存模型时,我们需要按照如下目录格式管理模型,其中 ormbfile.yaml 文件格式请参考 spec-v1alpha1.md

字节跳动开源云原生机器学习平台 Klever

 

模型解析与转换

Klever 通过自动 ModelJob CR 进行模型解析和模型转换任务的管理,模型解析任务需要设置模型的格式及模型的 URI,模型转换任务则需要设置模型源模型格式、目标模型格式及模型 URI。

字节跳动开源云原生机器学习平台 Klever

 


字节跳动开源云原生机器学习平台 Klever

 

模型解析和转换的执行通过自定义脚本的方式实现,每种类型的模型解析和模型转换任务都有对应的脚本,脚本在 github.com/kleveross/klever-model-registry/tree/master/scripts 下集中管理。 解析内容主要包括 inputs、outputs、operators。任务通过 status 的 message 和 phase 字段可以返回给用户任务当前执行的状态,并在异常时返回异常信息。

模型拉取

模型解析和转换任务执行之前,需要将模型文件拉取到 Container 中并重新组织为模型服务器需要的目录格式,此过程通过扩展 ORMB 实现了一个 ormb-stororage-initializer 容器,该容器作为任务的 initContainer 存在,它将模型 pull & export 到 /mnt/input 目录下,模型解析和转换任务的容器和 initContainer 共享 /mnt/input 挂载点使用下载的模型。

支持的模型格式

字节跳动开源云原生机器学习平台 Klever

 

模型服务

Klever 基于 Seldon-Core 实现模型服务,创建模型服务会首先创建一个 Seldon Deployment ,并在其 Init Container 中通过 ormb-storage-initializer 下载模型。

若模型为 PMML 格式,将使用 OpenScoring 镜像启动服务;若模型为其他 Triton Server 支持的模型格式,将使用 Triton Server 镜像启动服务.镜像中会自动通过 ormbfile.yaml 中的信息生成 Triton Server 所需要的 config.pbtxt 文件。

模型推理运行时

当前 Klever 已支持通过 Nvidia Triton Server 模型服务器部署深度学习模型服务,通过 OpenScoring 部署 PMML 格式的传统机器学习模型。我们还在完善对 Spark MLlib、MLFlow 及 XGBoost 模型服务器的支持,会在近期完成。

字节跳动开源云原生机器学习平台 Klever

 

支持的模型格式

  • SavedModel
  • ONNX
  • GraphDef
  • NetDef
  • TensorRT with GPU
  • TorchScript
  • PMML

服务访问方式

部署为模型服务之后,用户如何通过 API 接口进行模型服务的访问呢?对于 Nvidia Triton Server 渲染的模型服务,访问地址为:

字节跳动开源云原生机器学习平台 Klever

 

对于 OpenScoring 渲染的模型服务,访问地址为:

字节跳动开源云原生机器学习平台 Klever

 

其中,servingName 为模型服务的名称,在创建模型服务的时候需要指定该名称。

部署

讲到这里,大家是否已经迫不及待地想安装和使用 Klever 了呢?Klever 提供一键部署安装的脚本,同时也支持详细的部署文档,你只需要有一个 Kubernetes 环境即可安装部署。

字节跳动开源云原生机器学习平台 Klever

 

RoadMap

当前,在字节跳动内部,我们仍在基于各类实践完善云原生机器学习工程化平台的构建想法,丰富 Klever 的功能和内涵。在外部市场,火山引擎推出的商业化版机器学习平台 Clever 已在金融、制造、零售、能源等行业拥有成熟的解决方案,为各行业头部客户业务的持续增长提供赋能,也为 Klever 开源提供重要实战经验。

当前 Klever 仅支持模型文件及模型元数据的基本属性的存储和管理,以及支持在线模型服务的功能。但是 Klever 的使命远不止于此,未来它将完成从训练到模型、再到模型服务的全链路管理。

  • 权限管理
  • 更完善的模型解析和转换
  • 模型服务器
  • 支持 XGboost
  • 支持 MLflow
  • 支持 Spark MLlib
  • 支持推理图
  • 支持多种发布策略,例如灰度发布、金丝雀发布等
  • 更完善的分流策略
  • 边缘部署

为了实现这一蓝图,我们在此呼吁开源社区开发者的力量, 欢迎更多志同道合的朋友加入我们 !

相关链接

https://github.com/kleveross/ormb

https://github.com/kleveross/klever-model-registry

https://github.com/kleveross/klever-web

https://github.com/istio/istio

https://github.com/goharbor/harbor

https://github.com/SeldonIO/seldon-core

作者:字节跳动基础架构

来源:微信公众号: K8sMeetup社区

出处:https://mp.weixin.qq.com/s?__biz=Mzg3ODAzMTMyNQ==&mid=2247488231&idx=1&sn=e8155a2be9135c5d88a011dc78c8d057



Tags:机器学习   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
基于算法的业务或者说AI的应用在这几年发展得很快。但是,在实际应用的场景中,我们经常会遇到一些非常奇怪的偏差现象。例如,Facebook将黑人标记为灵长类动物、城市图像识别系统...【详细内容】
2021-11-08  Tags: 机器学习  点击:(32)  评论:(0)  加入收藏
这是几位机器学习权威专家汇总的725个机器学习术语表,非常全面了,值得收藏! 英文术语 中文翻译 0-1 Loss Function 0-1损失函数 Accept-Reject Samplin...【详细内容】
2021-10-21  Tags: 机器学习  点击:(43)  评论:(0)  加入收藏
要开始为开源项目做贡献,有一些先决条件:1. 学习一门编程语言:由于在开源贡献中你需要编写代码才能参与开发,你需要学习任意一门编程语言。根据项目的需要,在后期学习另一种语言...【详细内容】
2021-10-20  Tags: 机器学习  点击:(37)  评论:(0)  加入收藏
作者:阿米特·V. 乔希(Ameet V Joshi)来源:华章科技 01 人工智能艾伦·图灵(Alan Turing)对人工智能的定义如下:如果窗帘后面有一台机器,并且有人正在与之互动(无论以何...【详细内容】
2021-09-07  Tags: 机器学习  点击:(74)  评论:(0)  加入收藏
字节跳动基础架构团队基于火山引擎机器学习平台 Clever 及其丰富的行业落地经验,推出开源项目 Klever,以工程化的方式降低智能技术落地门槛,助力企业快速打造智能业务。作者: 陈...【详细内容】
2021-02-19  Tags: 机器学习  点击:(170)  评论:(0)  加入收藏
特征选择是识别和选择与目标变量最相关的输入变量子集的过程。特征选择最简单的情况可能是存在数字输入变量和用于回归预测建模的数字目标的情况。这是因为可以计算出每个输...【详细内容】
2021-01-15  Tags: 机器学习  点击:(117)  评论:(0)  加入收藏
1、集成学习及Boosting算法集成学习属于机器学习,它是一种“训练思路”,并不是某种具体的方法或者算法。集成学习的核心思想是把已有的算法进行结合,从而得到更好的效果。集成...【详细内容】
2020-12-29  Tags: 机器学习  点击:(176)  评论:(0)  加入收藏
“终有一天,人工智能会像我们看待非洲平原上低级生物的化石一样看待我们。在人工智能眼中,人类只是直立行走的猿猴,用着粗糙的语言和简陋的工具,从诞生起就注定会灭绝。”&mdash...【详细内容】
2020-12-17  Tags: 机器学习  点击:(147)  评论:(0)  加入收藏
专注Python、AI、大数据,请关注公众号七步编程!人工智能方向的项目,和数据可视化是紧密相连的。模型训练过程中梯度下降过程是什么样的?损失函数的走向如何?训练模型的准确度怎么...【详细内容】
2020-10-15  Tags: 机器学习  点击:(355)  评论:(0)  加入收藏
在数据领域,很多人都在说机器学习,但是只有很少的人能说清楚怎么回事。网上关于机器学习的文章,大多都是充斥各种定理的厚重学术三部曲(我搞定半个定理都够呛),或是关于人工智能...【详细内容】
2020-09-25  Tags: 机器学习  点击:(111)  评论:(0)  加入收藏
▌简易百科推荐
作为数据科学家或机器学习从业者,将可解释性集成到机器学习模型中可以帮助决策者和其他利益相关者有更多的可见性并可以让他们理解模型输出决策的解释。在本文中,我将介绍两个...【详细内容】
2021-12-17  deephub    Tags:AI   点击:(15)  评论:(0)  加入收藏
基于算法的业务或者说AI的应用在这几年发展得很快。但是,在实际应用的场景中,我们经常会遇到一些非常奇怪的偏差现象。例如,Facebook将黑人标记为灵长类动物、城市图像识别系统...【详细内容】
2021-11-08  数据学习DataLearner    Tags:机器学习   点击:(32)  评论:(0)  加入收藏
11月2日召开的世界顶尖科学家数字未来论坛上,2013年诺贝尔化学奖得主迈克尔·莱维特、2014年诺贝尔生理学或医学奖得主爱德华·莫索尔、2007年图灵奖得主约瑟夫·斯发斯基、1986年图灵奖得主约翰·霍普克罗夫特、2002...【详细内容】
2021-11-03  张淑贤  证券时报  Tags:人工智能   点击:(39)  评论:(0)  加入收藏
鉴于物联网设备广泛部署、5G快速无线技术闪亮登场,把计算、存储和分析放在靠近数据生成的地方来处理,让边缘计算有了用武之地。 边缘计算正在改变全球数百万个设备处理和传输...【详细内容】
2021-10-26    计算机世界  Tags:边缘计算   点击:(45)  评论:(0)  加入收藏
这是几位机器学习权威专家汇总的725个机器学习术语表,非常全面了,值得收藏! 英文术语 中文翻译 0-1 Loss Function 0-1损失函数 Accept-Reject Samplin...【详细内容】
2021-10-21  Python部落    Tags:机器学习   点击:(43)  评论:(0)  加入收藏
要开始为开源项目做贡献,有一些先决条件:1. 学习一门编程语言:由于在开源贡献中你需要编写代码才能参与开发,你需要学习任意一门编程语言。根据项目的需要,在后期学习另一种语言...【详细内容】
2021-10-20  TSINGSEE青犀视频    Tags:机器学习   点击:(37)  评论:(0)  加入收藏
SimpleAI.人工智能、机器学习、深度学习还是遥不可及?来这里看看吧~ 从基本的概念、原理、公式,到用生动形象的例子去理解,到动手做实验去感知,到著名案例的学习,到用所学来实现...【详细内容】
2021-10-19  憨昊昊    Tags:神经网络   点击:(47)  评论:(0)  加入收藏
语言是人类思维的基础,当计算机具备了处理自然语言的能力,才具有真正智能的想象。自然语言处理(Natural Language Processing, NLP)作为人工智能(Artificial Intelligence, AI)的核心技术之一,是用计算机来处理、理解以及运...【详细内容】
2021-10-11    36氪  Tags:NLP   点击:(48)  评论:(0)  加入收藏
边缘计算是什么?近年来,物联网设备数量呈线性增长趋势。根据艾瑞测算, 2020年,中国物联网设备的数量达74亿,预计2025年突破150亿个。同时,设备本身也变得越来越智能化,AI与互联网在...【详细内容】
2021-09-22  汉智兴科技    Tags:   点击:(54)  评论:(0)  加入收藏
说起人工智能,大家总把它和科幻电影中的机器人联系起来,而实际上这些科幻场景与现如今的人工智能没什么太大关系。人工智能确实跟人类大脑很相似,但它们的显著差异在于人工智能...【详细内容】
2021-09-17  异步社区    Tags:人工智能   点击:(57)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条