前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >KubeGems教学系列 - 快速体验 Model X

KubeGems教学系列 - 快速体验 Model X

作者头像
云原生小白
发布2022-11-11 16:50:42
4520
发布2022-11-11 16:50:42
举报
文章被收录于专栏:LokiLoki

什么是 Model X

Model X 是一个简单、高性能、 跨平台和可扩展的用于存储机器学习场景下的模型仓储服务。它参考了 OCI、Git Lfs 和 对象存储的设计思想和在 Kubernetes 中运行算法服务的场景,为用户提供了一个便捷的可版本化的模型管理解决方案。更多关于 ModelX 设计可参考文章《ModelX一款开源的机器学习模型管理仓库》 https://www.kubegems.io/blog/kubegems-modelx

目前 Model X包含了三个主要组件:

  • modelx (ModelX Cli) Modelx 用户侧客户端,可用它来在本地初始化、推送、拉取和版本管理模型文件
  • modexd (ModelX Server) Modelx 服务端, 它是一个服务 OCI 协议标准的API Server,它主要响应来至CLI的认证和模型管理的请求
  • modelxdl (ModelX Download Tools) Modelx下载工具,它主要用于在 Kubernetes 中将模型从商店中下载到指定的挂载路径

Model X Registry

  • 使用 Git 克隆代码仓库 https://github.com/kubegems/modelx.git
  • 进入 modelx 目录,执行下列命令快速拉取一个带 Minio 服务的 Modelx 模型仓库
代码语言:javascript
复制
$ export ADVERTISED_IP=<Host_IP>   ## 设置你的主机 IP
$ sed -i "s/__ADVERTISED_IP__/${ADVERTISED_IP}/g" docker-compose.yaml
$ docker compose up -d

# 查看服务运行状态
$ docker compose ps 
NAME                  COMMAND                  SERVICE             STATUS              PORTS
modelx-minio-1        "/usr/bin/docker-ent…"   minio               running             0.0.0.0:9000->9000/tcp
modelx-minio-init-1   "mkdir -p /data/mode…"   minio-init          exited (0)
modelx-modelxd-1      "/app/modelxd-linux-…"   modelxd             running             0.0.0.0:8080->8080/tcp

此时本地监听的 8080 端口即为Model X的模型仓库地址。

Model X Registry服务更多的配置参数可参考 https://github.com/kubegems/modelx

Model X CLI

下载最新的 ModelX CLI二进制代码 https://github.com/kubegems/modelx/releases/latest

添加算法仓库
  • 添加和登录仓库
代码语言:javascript
复制
#添加仓库
$ modelx repo add modelx http://modelx.kubegems.io

#登录仓库
$ modelx login modelx         #modelx registry没有配置 OIDC 时,暂时无需 token 认证,在此处按回车跳过即可
Token:
Login successful for modelx
  • 参看仓库列表
代码语言:javascript
复制
$ modelx list repo
+---------+----------------------------+
| NAME    | URL                        |
+---------+----------------------------+
| modelx  | http://modelx.kubegems.io  |
+---------+----------------------------+
本地初始化和推送算法模型
  • 本地初始化一个模型目录
代码语言:javascript
复制
# 初始化模型目录
$ modelx init class

Modelx model initialized in class

# 模型目录结构
$ tree class
class
├── modelx.yaml    # 模型描述信息
└── README.md      # 模型 ReadMe 信息
  • 添加测试文件
代码语言:javascript
复制
$ echo "some script" > scripy.sh
$ echo -n "some binary" > binary.dat
  • 推送模型到仓库, 资源路径结构 <仓库名>/<项目名>/<模型名>@<模型版本>
代码语言:javascript
复制
# moldex push <仓库名>/<项目名>/<模型名>@<模型版本>
$ modelx push modelx/library/class@v1

Pushing to http://modelx.kubegems.io/library/class@v1
17e682f0 [++++++++++++++++++++++++++++++++++++++++] done
17e682f0 [++++++++++++++++++++++++++++++++++++++++] done
17e682f0 [++++++++++++++++++++++++++++++++++++++++] done
b6f9dd31 [++++++++++++++++++++++++++++++++++++++++] done
test.img [++++++++++++++++++++++++++++++++++++++++] done
4c513e54 [++++++++++++++++++++++++++++++++++++++++] done

Modelx 的版本永远按照当前目录下的文件为准,通过@<模型版本>推送到Registry仓库

拉取和查看算法模型
  • 查看模型版本列表
代码语言:javascript
复制
$ modelx list modelx/library/class

+---------+----------------------------------------------------+--------+
| VERSION | URL                                                | SIZE   |
+---------+----------------------------------------------------+--------+
| v3      | https://modelx.kubegems.io/library/class@v3        | 4.29GB |
| v2      | https://modelx.kubegems.io/library/class@v2        | 4.29GB |
| v1      | https://modelx.kubegems.io/library/class@v1        | 4.29GB |
+---------+----------------------------------------------------+--------+

# 下载模型, 会在本地创建 class 的目录
$ modelx pull modelx/library/class@v1
模型元数据

模型目录下的 modelx.yaml为算法的一些描述信息,它和 helm 中的chart.yaml类型,里面定义了一些通用的数据,比如模型的基本描述、运行框架、维护者和模型的输入、输出等信息

代码语言:javascript
复制
config:
  inputs: {}
  outputs: {}
description: This is a modelx model
framework: <some framework>
maintainers:
  - maintainer
modelFiles: []
tags:
  - modelx
  - <other>
task: ""

总结

本文主要介绍了如何快速运行和使用 Model X 来管理模型,Model X 项目还非常的年轻,仍有很多功能需继续完善,我们非常欢迎有想法的同学参与交流和贡献!💪🏻

接下来本系列会持续更新《KubeGems教学系列 - 利用 Model X 创建模型商店》敬请关注!

你可能还喜欢

点击下方图片即可阅读

GitHub 搜索【KubeGems】或直接访问 https://kubegems.io/ 了解更多.

关注公众号【云原生小白】,回复「入群」加入KubeGems 和 Loki 微信群

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-10-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 云原生小白 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是 Model X
  • Model X Registry
  • Model X CLI
    • 添加算法仓库
      • 本地初始化和推送算法模型
        • 拉取和查看算法模型
          • 模型元数据
          • 总结
          相关产品与服务
          容器服务
          腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档