BentoML核心概念(四):模型和 Bento 管理

简介: BentoML 提供易于使用的本地和集中式商店来管理模型和bentos。本文重点介绍基于本地文件系统的模型和 bento 商店的使用。 要了解有关集中式商店解决方案的更多信息,请参阅 BentoML Yatai。

管理模型


创建模型

回想一下之前的入门指南,模型是使用特定框架的 save() 函数保存的。 在示例中,我们将 sklearn 模块中的 save() 函数用于 Scikit Learn 框架,具体如下所示。

import bentoml.sklearn
bentoml.sklearn.save("iris_classifier_model", clf)
复制代码


模型也可以从支持的框架专有的注册表中导入。在下面的示例中,模型是从 MLFlow 模型注册表中导入的。

import bentoml.mlflow
bentoml.mlflow.import_from_uri("mlflow_model", uri=mlflow_registry_uri)
复制代码


默认情况下,保存和导入的模型会添加到位于 $HOME/bentoml/models 目录中的基于本地文件系统的模型仓库中。

列出模型

要列出所有创建的模型,请使用 bentoml.models 模块中的 list() Python 函数或models list CLI 命令。

Python 函数示例如下:

import bentoml.models
bentoml.models.list() # get a list of all models
# [
#   {
#     tag: Tag("iris_classifier_model", "vkorlosfifi6zhqqvtpeqaare"),
#     framework: "SKLearn",
#     created: 2021/11/14 03:55:11
#   },
#    {
#     tag: Tag("iris_classifier_model", "vlqdohsfifi6zhqqvtpeqaare"),
#     framework: "SKLearn",
#     created: 2021/11/14 03:55:15
#   },
#   {
#     tag: Tag("iris_classifier_model", "vmiqwpcfifi6zhqqvtpeqaare"),
#     framework: "SKLearn",
#     created: 2021/11/14 03:55:25
#   },
#   {
#     tag: Tag("fraud_detection_model", "5v4pdccfifi6zhqqvtpeqaare"),
#     framework: "PyTorch",
#     created: 2021/11/14 03:57:01
#   },
#   {
#     tag: Tag("fraud_detection_model", "5xorursfifi6zhqqvtpeqaare"),
#     framework: "PyTorch",
#     created: 2021/11/14 03:57:45
#   },
# ]
bentoml.models.list("iris_classifier_model") # get a list of all versions of a specific model
bentoml.models.list(Tag("iris_classifier_model", None))
# [
#   {
#     tag: Tag("iris_classifier_model", "vkorlosfifi6zhqqvtpeqaare"),
#     framework: "SKLearn",
#     created: 2021/11/14 03:55:11
#   },
#    {
#     tag: Tag("iris_classifier_model", "vlqdohsfifi6zhqqvtpeqaare"),
#     framework: "SKLearn",
#     created: 2021/11/14 03:55:15
#   },
#   {
#     tag: Tag("iris_classifier_model", "vmiqwpcfifi6zhqqvtpeqaare"),
#     framework: "SKLearn",
#     created: 2021/11/14 03:55:25
#   },
# ]
复制代码


命令行示例如下:

> bentoml models list # list all models
MODEL                 FRAMEWORK   VERSION                    CREATED
iris_classifier_model SKLearn     vkorlosfifi6zhqqvtpeqaare  2021/11/14 03:55:11
iris_classifier_model SKLearn     vlqdohsfifi6zhqqvtpeqaare  2021/11/14 03:55:15
iris_classifier_model SKLearn     vmiqwpcfifi6zhqqvtpeqaare  2021/11/14 03:55:25
fraud_detection_model PyTorch     5v4pdccfifi6zhqqvtpeqaare  2021/11/14 03:57:01
fraud_detection_model PyTorch     5xorursfifi6zhqqvtpeqaare  2021/11/14 03:57:45
> bentoml models list iris_classifier # list all version of my-model
MODEL           FRAMEWORK   VERSION          CREATED
iris_classifier_model PyTorch     vkorlosfifi6zhqqvtpeqaare  2021/11/14 03:55:11
iris_classifier_model PyTorch     vlqdohsfifi6zhqqvtpeqaare  2021/11/14 03:55:15
iris_classifier_model SKLearn     vmiqwpcfifi6zhqqvtpeqaare  2021/11/14 03:55:25
复制代码


要获取模型信息,请使用bentoml.models模块下的 get() 函数或models get CLI 命令。

Python 函数示例如下:

import bentoml.models
bentoml.models.get("iris_classifier_model:vmiqwpcfifi6zhqqvtpeqaare")
bentoml.models.get(Tag("iris_classifier_model", "vmiqwpcfifi6zhqqvtpeqaare"))
# Model(
#   tag: Tag("iris_classifier_model", "vmiqwpcfifi6zhqqvtpeqaare"),
#   framework: "SKLearn",
#   created: 2021/11/14 03:55:25
#   description: "The iris classifier model"
#   path: "/user/home/bentoml/models/iris_classifier_model/vmiqwpcfifi6zhqqvtpeqaare"
# )
复制代码


命令行示例如下:

> bentoml models get iris_classifier_model:vmiqwpcfifi6zhqqvtpeqaare
TAG         iris_classifier_model:vmiqwpcfifi6zhqqvtpeqaare
FRAMEWORK   SKLearn
CREATED     2021/9/21 10:07:45
DESCRIPTION The iris classifier model
PATH        /user/home/bentoml/models/iris_classifier_model/vmiqwpcfifi6zhqqvtpeqaare
复制代码


删除模型

要删除模型存储中的模型,请使用 bentoml.models 模块下的delete()函数或 models delete CLI 命令。

Python 函数示例如下:

import bentoml.models
bentoml.models.delete("iris_classifier_model:vmiqwpcfifi6zhqqvtpeqaare", skip_confirm=True)
复制代码


命令行示例如下:

> bentoml models delete iris_classifier_model:vmiqwpcfifi6zhqqvtpeqaare
复制代码


管理 Bentos


创建 Bentos

Bentos是通过 bento 构建过程创建的。 回想一下入门指南,bentos 是使用 build CLI 命令构建的。 有关更多详细信息,请参阅构建Bentos

默认情况下,内置的bentos被添加到位于 $HOME/bentoml/bentos 下的基于本地文件系统的bento商店中。

> bentoml build
复制代码


列出 Bentos

要查看Bento商店中的Bentos,请使用 list CLI 命令。

> bentoml list
BENTO                   VERSION                    LABELS      CREATED
iris_classifier_service v5mgcacfgzi6zdz7vtpeqaare  iris,prod   2021/09/19 10:15:50
复制代码


删除 Bentos

要删除Bento商店中的Bentos,请使用 delete CLI 命令。

> bentoml delete iris_classifier_service:v5mgcacfgzi6zdz7vtpeqaare


相关文章
|
2月前
|
存储 JSON 数据格式
2.核心概念
2.核心概念
|
8天前
|
监控 Kubernetes 测试技术
概括模型开发部署流程
**模型部署流程概览:**训练完成的大型语言模型经验证评估,进行剪枝量化后导出为标准格式。封装成API,部署到云服务器,考虑GPU资源与安全。通过Docker或Kubernetes管理,集成后端服务,确保负载均衡和安全。监控性能,执行A/B测试和灰度发布,持续优化与维护。每个步骤涉及团队协作与线上稳定性。
11 1
|
11天前
|
存储 Kubernetes 调度
K8S中的核心概念
【6月更文挑战第25天】k8s资源对象可以用yaml或者json格式声明。每个资源对象都有自己的特定结构定义,并统一保存在etcd这种非关系型数据库中。
|
2月前
|
存储 C# 开发者
深入了解 C#编程的核心概念
【4月更文挑战第20天】C#是一种强大的面向对象编程语言,关键概念包括:面向对象(类、对象、继承、多态)、封装、数据类型、变量与常量、控制流、异常处理、委托和事件、泛型及集合。掌握这些概念并通过阅读代码、实践编写和学习新技巧行动,是成为熟练C#开发者的基石。了解并运用这些核心概念能提升代码效率、灵活性和可维护性。
|
2月前
|
设计模式 API 数据库
【C/C++ 设计思路】C++中解耦策略的艺术:有效管理复杂依赖关系
【C/C++ 设计思路】C++中解耦策略的艺术:有效管理复杂依赖关系
97 3
|
定位技术 uml
「应用架构」TOGAF建模之应用架构:应用程序和用户位置图
「应用架构」TOGAF建模之应用架构:应用程序和用户位置图
|
存储 架构师 定位技术
「应用架构」TOGAF建模之应用架构师:应用程序通信图
「应用架构」TOGAF建模之应用架构师:应用程序通信图
|
定位技术 uml
「应用架构」TOGAF建模:应用程序和用户位置图
「应用架构」TOGAF建模:应用程序和用户位置图
|
XML 存储 JSON
「领域驱动设计」集成有界上下文的策略
「领域驱动设计」集成有界上下文的策略
|
微服务
「参考架构模型」使用ArchiMate的参考企业架构模型
「参考架构模型」使用ArchiMate的参考企业架构模型

热门文章

最新文章

  • 1
    流量控制系统,用正则表达式提取汉字
    27
  • 2
    Redis09-----List类型,有序,元素可以重复,插入和删除快,查询速度一般,一般保存一些有顺序的数据,如朋友圈点赞列表,评论列表等,LPUSH user 1 2 3可以一个一个推
    27
  • 3
    Redis08命令-Hash类型,也叫散列,其中value是一个无序字典,类似于java的HashMap结构,Hash结构可以将对象中的每个字段独立存储,可以针对每字段做CRUD
    27
  • 4
    Redis07命令-String类型字符串,不管是哪种格式,底层都是字节数组形式存储的,最大空间不超过512m,SET添加,MSET批量添加,INCRBY age 2可以,MSET,INCRSETEX
    28
  • 5
    S外部函数可以访问函数内部的变量的闭包-闭包最简单的用不了,闭包是内层函数+外层函数的变量,简称为函数套函数,外部函数可以访问函数内部的变量,存在函数套函数
    25
  • 6
    Redis06-Redis常用的命令,模糊的搜索查询往往会对服务器产生很大的压力,MSET k1 v1 k2 v2 k3 v3 添加,DEL是删除的意思,EXISTS age 可以用来查询是否有存在1
    31
  • 7
    Redis05数据结构介绍,数据结构介绍,官方网站中看到
    22
  • 8
    JS字符串数据类型转换,字符串如何转成变量,+号只要有一个是字符串,就会把另外一个转成字符串,- * / 都会把数据转成数字类型,数字型控制台是蓝色,字符型控制台是黑色,
    20
  • 9
    JS数组操作---删除,arr.pop()方法从数组中删除最后一个元素,并返回该元素的值,arr.shift() 删除第一个值,arr.splice()方法,删除指定元素,arr.splice,从第一
    21
  • 10
    定义好变量,${age}模版字符串,对象可以放null,检验数据类型console.log(typeof str)
    20