KubeGems教学系列 - 体验 Model X 模型仓库

什么是 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 模型仓库
$ 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

添加算法仓库
  • 添加和登录仓库
#添加仓库
$ modelx repo add modelx http://modelx.kubegems.io

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

Modelx model initialized in class

# 模型目录结构
$ tree class
class
├── modelx.yaml    # 模型描述信息
└── README.md      # 模型 ReadMe 信息
  • 添加测试文件
$ echo "some script" > scripy.sh
$ echo -n "some binary" > binary.dat
  • 推送模型到仓库, 资源路径结构 <仓库名>/<项目名>/<模型名>@<模型版本>
# 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仓库

拉取和查看算法模型
  • 查看模型版本列表
$ 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类型,里面定义了一些通用的数据,比如模型的基本描述、运行框架、维护者和模型的输入、输出等信息

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 创建模型商店》敬请关注!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值