Model X 是一个简单、高性能、 跨平台和可扩展的用于存储机器学习场景下的模型仓储服务。它参考了 OCI、Git Lfs 和 对象存储的设计思想和在 Kubernetes 中运行算法服务的场景,为用户提供了一个便捷的、可版本化的模型管理解决方案。更多关于 ModelX 设计可参考文章《ModelX一款开源的机器学习模型管理仓库》 https://www.kubegems.io/blog/kubegems-modelx
目前 Model X包含了三个主要组件:
https://github.com/kubegems/modelx.git
$ 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
下载最新的 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 创建模型商店》敬请关注!
你可能还喜欢
点击下方图片即可阅读
GitHub 搜索【KubeGems】或直接访问 https://kubegems.io/ 了解更多.
关注公众号【云原生小白】,回复「入群」加入KubeGems 和 Loki 微信群