Skip to main content

Mai CLI

mai 是 Mai 平台的命令行工具,可在本地完成模型、数据集、文件和镜像的下载、上传、提交、推送。

如果需要完整命令说明,请查看 README.full.md。

快速开始

1. 安装

适合已经有 Python 3.12+ 的环境:

pip install maind
mai --help

如果在 Windows 上看到 mai.exe is installed ... which is not on PATH,或者运行 mai 提示“不是内部或外部命令”,可以先用不依赖 PATH 的方式运行:

python -m mai --help
python -m mai install

也可以把 Python 用户脚本目录加入 PATH,然后重新打开终端:

$scripts = python -c "import sysconfig; print(sysconfig.get_path('scripts'))"
$userPath = [Environment]::GetEnvironmentVariable("Path", "User")
[Environment]::SetEnvironmentVariable("Path", "$userPath;$scripts", "User")

如果没有 Python,Windows 用户可以按安全策略选择以下任一发行方式:

  1. 安装包(.exe):使用向导安装,可选加入用户 PATH
  2. 单文件 EXE(*-standalone-win-amd64.exe):只下载一个文件,直接运行
  3. Portable 便携包(.zip):解压后运行,不执行安装,不写入系统

这些发行方式都自带嵌入式 Python,无需单独安装。Portable 包或单文件 EXE 可用于禁止安装包的环境。 详情和本地构建方式见 packaging/windows/README.md。

安装包安装或 Portable 包解压到例如 C:\Tools\mai-cli 后,重新打开终端并运行:

mai --help
mai login --url https://your-platform --username USER --password PASS

便携包用户可在解压目录直接运行 .\mai.exe --help 或 .\mai.cmd --help。

download、connect、repo push 等工作区命令不依赖系统 git.exe。少数历史工作区 含有 Git LFS 指针时,下载命令会明确提示安装 Git for Windows。可用下列命令检查可选依赖:

mai install --check
mai install

也可以用 pipx 隔离安装:

pipx install maind
mai --help

2. 登录

交互式登录:

mai login

非交互式登录:

mai login --url https://your-domain --username <USERNAME> --password <PASSWORD>

如果平台使用自签名 HTTPS 证书,可在登录时显式关闭证书校验:

mai login --url https://MASTER_IP --username <USERNAME> --password <PASSWORD> --insecure

该设置会保存到本地配置,后续命令继续生效。也可以通过 MAI_TLS_VERIFY=false 全局关闭;仅建议在确认网络可信时使用。

3. 下载模型或数据集

下载模型:

mai download --model "Qwen2.5-7B-Instruct" --version main

下载数据集:

mai download --dataset "my-dataset" --version main

数据集名称会与当前登录 Token 中的项目身份一起提交给 Datacube 解析,随后使用解析出的 dataset/version/repo ID 获取信息和下载,不需要也不接受客户端传入 project_id。SDK 可直接查询:

from mai import MaiClient

client = MaiClient.from_config_file()
info = client.get_dataset("my-dataset", "main")
print(info.resolution.dataset_id, info.resolution.version_id)
print(info.dataset, info.version)

指定下载目录:

mai download --model "Qwen2.5-7B-Instruct" --version main --dir ./workspace/qwen

平台内部任务也可以按文件版本集 ID 下载:

mai download --fvs "<FVS_ID>" --version main --dir ./workspace/source

常用操作

创建并上传模型

创建模型并初始化本地工作区:

mai create --model "my-model" --description "demo model"
mai connect --model "my-model" --version main
cd ./my-model

把文件放入目录后提交并推送:

mai repo status
mai repo add
mai repo commit -m "update model files"
mai repo push --jobs 8 --s3-jobs 16

mai repo status 是统一的工作区状态命令:同时显示 Git 元数据状态和 DVC 数据状态, 不依赖系统 git.exe。

创建并上传数据集

mai create --dataset "my-dataset" --description "demo dataset"
mai connect --dataset "my-dataset" --version main
cd ./my-dataset

把文件放入目录后提交并推送:

mai repo add
mai repo commit -m "update dataset files"
mai repo push

发布已有本地目录

如果模型或数据集文件已经在本地目录中,可以用 publish 一次完成连接、添加、提交和推送。

发布模型目录:

mai publish --dir ./local-model --model "my-model" --version main -m "publish model"

发布数据集目录:

mai publish --dir ./local-dataset --dataset "my-dataset" --version main -m "publish dataset"

从 Hugging Face 或 ModelScope 同步

从 Hugging Face 同步模型到平台:

mai sync --model hf://Qwen/Qwen2.5-7B --name "qwen2.5-7b" --version main

从 ModelScope 同步数据集到平台:

mai sync --dataset ms://org/my-dataset --name "my-dataset" --version main

文件和镜像

上传文件:

mai file upload ./data.csv --scope personal

集群内调用必须通过 MAI_FILE_CENTER_URL 指向内部 file-service。外部调用未配置该变量时,会使用平台 MAI_API_URL 并自动添加 /file-center 前缀;内部 baize-frontend 地址不会作为文件上传回退地址。

构建平台镜像:

mai image build --repo my-image --tag latest --method dockerfile --dockerfile-url https://example.com/Dockerfile

复制镜像:

mai image copy source:tag target:tag

预置资源示例

仓库内置了与 falsework 平台预置资源一致的 seed 示例,可直接 dry-run 验证:

镜像 seed 会结合镜像是否存在和最近一次构建任务状态进行幂等处理。最近任务为 failed 或 cancelled 时会重新创建构建任务;任务仍在进行或镜像已经存在时会跳过。

mai seed apply --config examples/seed/config.yaml --resources-dir /tmp/mai-seed-resources --dry-run

Docker 环境

如果不想在宿主机安装 Python、Git、DVC、ModelScope、Hugging Face CLI 等依赖,可以直接使用 Docker 镜像。

docker run --rm -it \
  -v "$PWD":/workspace \
  -v "$HOME/.config/mai":/root/.config/mai \
  -w /workspace \
  harbor.mindreon.com/baize/mai-cli:release-v0.1.0 \
  bash

进入容器后直接使用:

mai --help
mai login

Windows 安装包构建(开发者)

原生 Windows x64 上,安装 GNU Make、uv、Inno Setup 6 与 MinGW-w64 或 MSVC Build Tools 后,在 仓库根目录执行:

# 安装 Inno Setup 6(只需执行一次)
winget install --id JRSoftware.InnoSetup --exact --source winget

若没有 winget,可从 Inno Setup 官方下载页 安装。准备完成后执行:

make windows-package

这会同时生成便携包、单文件 EXE、mai.exe 和安装器。指定包名版本时推荐传入小写 version,同时兼容大写 VERSION;release- 前缀会被自动移除:

make windows-package version=release-v0.1.0
# 生成便携包、单文件 EXE 和安装器

兼容写法:make windows-package VERSION=release-v0.1.0。如果同时传入,以小写 version 为准。

产物位于 dist/:

  • mai-cli-<version>-win-amd64.zip(便携包)
  • mai-cli-<version>-setup-win-amd64.exe(安装向导)
  • mai-cli-<version>-standalone-win-amd64.exe(单文件 EXE)

进阶:项目状态和切换

熟悉基础命令后,如果账号下有多个项目,可以查看当前项目状态:

mai status

查看可切换项目:

mai project list

切换当前项目:

mai project use <项目名或项目ID>

切换项目后,后续 create、download、connect、repo push 等命令都会使用新的项目上下文。

常用环境变量

变量 说明
MAI_API_URL 平台地址
MAI_AUTH_TOKEN 登录 token,优先级高于本地配置文件
MAI_TLS_VERIFY HTTPS 证书校验开关,设为 false 可忽略自签名证书,默认 true
MAI_CONFIG_DIR 配置文件目录,默认 ~/.config/mai
MAI_GIT_USER_NAME / MAI_GIT_USER_EMAIL Git 提交作者身份
MAI_REPO_READY_TIMEOUT_MS / MAI_REPO_READY_INTERVAL_MS 等待 FVM 仓库就绪的超时和轮询间隔
MAI_DVC_REMOTE_STORAGE_ENDPOINTURL workload 覆盖 DVC S3 endpoint
MAI_DVC_PUSH_JOBS 未通过 --jobs 指定时的标准 DVC push 并发数,默认 2
MAI_DVC_S3_UPLOAD_JOBS 未通过 --s3-jobs 指定时的 botocore S3 上传并发数,默认 4

完整环境变量说明见 docs/environment.md。

Metadata

Release files for maind 0.1.23

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for maind 0.1.23
File Size Uploaded
maind-0.1.23.tar.gz 285.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for maind 0.1.23
File Interpreter ABI Platform
maind-0.1.23-py3-none-any.whl Python 3 none any Details

Total release size: 367.6 kB

Release files / maind-0.1.23.tar.gz

Download URL maind-0.1.23.tar.gz
Size 285.9 kB
Tags Source
SHA-256 checksum
How to use checksums
01781e1e5bbfa16a5be3be8b5b5f007d8d104f85ebdf97dfe3c9ffc1633c4555
BLAKE2b-256 checksum
How to use checksums
6ed05c37bd324e10cdcf6248644a61f159e49f5ea3c725bd8d6b74b1c71dfd3d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / maind-0.1.23-py3-none-any.whl

Download URL maind-0.1.23-py3-none-any.whl
Size 81.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
fb02c566ea874a1264096480d2a0eec4e382f571a533e3d6e3fb86e8fa7d3436
BLAKE2b-256 checksum
How to use checksums
698eb9301d6139315f162202bd4218321289bb42386b3664c6fccc6c61413b06
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page