21 KiB
命令行接口
openMind Library提供命令行接口(command-line interface, CLI),支持用户在shell环境下交互式实现文件上传、文件下载、模型查询、模型微调、模型合并、模型删除、模型评估、单轮推理和多轮对话操作。openmind-cli简化了流程,让用户能够以低代码模式迅速启动并使用社区中的模型资源,实现了开箱即用的体验,降低了技术门槛。
openMind Library命令行接口内置于openMind Library中,安装openMind Library即可使用,详细步骤参考openMind Library安装指南。
目前支持的命令行接口/接口功能/多社区下载支持明细如下:
命令行接口 | 功能简述 | 多社区下载支持 | 备注 |
---|---|---|---|
train | 模型训练 | modelers/huggingface | |
export | 模型合并 | modelers/huggingface | |
eval | 大语言模型评估 | modelers/huggingface | |
chat | 多轮对话 | modelers/huggingface | |
deploy | 模型部署 | modelers/huggingface | 仅在backend为lmdeploy时支持从huggingface下载权重 |
env | 运行环境查看 | / | |
run | 单轮推理 | modelers | |
pull | 文件下载 | modelers | |
push | 文件上传 | modelers | |
rm | 本地模型删除 | modelers | |
list | 本地模型查询 | modelers |
您可以通过设置环境变量 OPENMIND_PLATFORM
来指定模型权重和数据集的下载社区源。目前支持HuggingFace社区和魔乐(Modelers)社区。
-
若希望从 魔乐社区 下载(默认行为),该环境变量不需做任何设置。
-
若希望从 Hugging Face 社区 下载模型权重和数据集,请设置以下环境变量:
export OPENMIND_PLATFORM="huggingface"
一旦设置该环境变量,模型和数据集的下载源将统一使用同一社区,暂不支持为模型和数据集分别设置不同的下载来源。
本地模型查询
openmind-cli list
用于查询并回显本地已下载的模型清单,可以查询模型缓存目录和指定下载目录。
此接口支持PyTorch和MindSpore框架。
接口调用示例如下。
-
遍历查询环境变量所定义的缓存目录下存储的模型。
openmind-cli list
回显示例如下。
-
遍历查询~/.cache2/openmind/hub目录下缓存的模型。
openmind-cli list --cache_dir ~/.cache2/openmind/hub
注意此处
--cache_dir
指定的缓存路径优先级高于环境变量所指定的缓存路径优先级。 -
遍历查询./目录下的模型。
openmind-cli list --local_dir ./
-
遍历查询
--local_dir
和--cache_dir
目录下的模型。openmind-cli list --local_dir ./ --cache_dir ~/.cache2/openmind/hub
openmind-cli list
的全量参数可以参考openmind-cli list接口。
模型训练
openmind-cli train
用于在shell环境下启动训练流程,集成了PyTorch框架下主流第三方工具的功能,提供了一键式的模型训练解决方案,涵盖了从数据处理、多站点权重加载,到低参数训练、量化适配,训练和跟踪的全流程功能。同时,openMind Library还提供了昇腾NPU亲和算子优化等加速手段,显著提升模型训练效率。(注:此接口目前仅支持PyTorch框架)
接口调用示例如下:
openmind-cli train demo.yaml
模型合并
openmind-cli export
用于完成LoRA微调后的权重合并,经过LoRA微调训练后,保存的权重并非完整模型的权重,而是适配器的权重文件。这种权重文件仅包含LoRA层相关的参数,因此需要与预训练的基础模型权重一起加载才能使用。(注:此接口目前仅支持PyTorch框架)
接口调用示例如下:
openmind-cli export demo.yaml
openmind-cli export
详细使用方法参见openMind Library模型微调文档
本地模型删除
openmind-cli rm
用于删除给定的本地模型,可以指定模型缓存目录以及本地目录。
此接口支持PyTorch和MindSpore框架。
接口调用示例如下。
-
删除默认缓存路径下的bluelm_7b_chat模型。
openmind-cli rm PyTorch-NPU/bluelm_7b_chat
遍历查询默认缓存路径下的bluelm_7b_chat模型,若成功找到,则将其删除,并回显执行结果以及删除模型的原存储路径;如果没有找到,报错反馈给用户。
以下是成功删除的回显示例:
Deleted file path: /xxx/.cache/openmind/hub/models--PyTorch-NPU-bluelm_7b_chat File deleted successfully.
-
删除指定缓存路径下的bluelm_7b_chat模型。
openmind-cli rm --repo_id PyTorch-NPU/bluelm_7b_chat --cache_dir ~/.cache2/openmind/hub
遍历查询~/.cache2/openmind/hub目录下的bluelm_7b_chat模型,如找到,则将其删除,注意此处
--cache_dir
指定的缓存路径优先级高于环境变量所指定的缓存路径优先级。 -
删除指定本地路径下的bluelm_7b_chat模型。
openmind-cli rm --repo_id PyTorch-NPU/bluelm_7b_chat --local_dir /your/local/path/
遍历查询/your/local/path/目录下的bluelm_7b_chat模型,如找到,则将其删除;如果没有找到,报错反馈给用户。
-
删除指定缓存路径和指定本地路径下的bluelm_7b_chat模型。
openmind-cli rm --repo_id PyTorch-NPU/bluelm_7b_chat --local_dir /your/local/path/ --cache_dir ~/.cache2/openmind/hub
遍历查询
--local_dir
和--cache_dir
目录下的bluelm_7b_chat模型,如找到,则将其删除;如果没有找到,报错反馈给用户。以下是两个路径均存在对应模型的回显示例:
Deleted file path: /your/local/path/models--PyTorch-NPU-bluelm_7b_chat Deleted file path: /xxx/.cache2/openmind/hub/models--PyTorch-NPU-bluelm_7b_chat Files deleted successfully.
openmind-cli rm
的全量参数可以参考openmind-cli rm接口。
文件下载
openmind-cli pull
用于下载指定模型/数据集/体验空间文件至缓存下载目录或本地下载目录。
此接口支持PyTorch和MindSpore框架。
接口调用示例如下。
-
下载PyTorch-NPU/bert_base_cased至默认缓存下载路径。
openmind-cli pull --repo_id PyTorch-NPU/bert_base_cased
以下是成功下载的回显示例:
Pull PyTorch-NPU/bert_base_cased finished, saved in /xxx/.cache/openmind/hub/models--PyTorch-NPU--bert-base-cased/snapshots/xxxxxx
openmind-cli pull
的全量参数可以参考openmind-cli pull接口。
文件上传
openmind-cli push
用于上传指定目录下的文件至指定仓库。
此接口支持PyTorch和MindSpore框架。
接口调用示例如下。
-
将当前目录下的文件上传至your_organization/your_repo仓库。
openmind-cli push --repo_id your_organization/your_repo --token xxx
以下是成功上传的回显示例:
Push to your_organization/your_repo finished
openmind-cli push
的全量参数可以参考openmind-cli push接口。
单轮推理
openmind-cli run
基于指定模型进行单轮推理。
此接口支持PyTorch和MindSpore框架。实现方式为pipeline,兼容所有pipeline支持的模型。若推理不兼容的模型,pipeline会给出对应模型的报错。
接口调用示例如下。
-
针对
text-generation
任务,使用PyTorch框架下的默认模型Baichuan/baichuan2_7b_chat_pt
进行推理。openmind-cli run --task text-generation --framework pt --input "What is AI?"
-
使用模型
PyTorch-NPU/bert_base_cased
进行fill-mask
任务推理。openmind-cli run --model PyTorch-NPU/bert_base_cased --task fill-mask --input "An apple a day, keeps [MASK] away"
-
通过默认tag的镜像,针对
text-generation
任务,使用PyTorch框架下的默认模型Baichuan/baichuan2_7b_chat_pt
进行推理。openmind-cli run --task text-generation --framework pt --input "What is AI?"
openmind-cli run
的全量参数可以参考openmind-cli run接口。
多轮对话
openmind-cli chat
基于指定模型开启多轮对话,输入exit
退出会话,输入clear
清除上下文对话记忆。
接口调用示例如下。
-
通过yaml文件解析开启多轮对话。
openmind-cli chat example.yaml
example.yaml
文件示例内容如下:model_name_or_path: Baichuan/Baichuan2_7b_chat_pt # 多轮对话使用的模型 template: baichuan2 device: 0 # 多轮对话模型的运行设备 backend: "transformers" # 多轮对话模型运行依赖的后端
-
通过键值对开启多轮对话。
openmind-cli chat --model_id Qwen2.5-7B-Chat --device 0
-
基于MindSpore框架,使用MindFormers开启多轮对话。
openmind-cli chat --model_name_or_path AI-Research/qwen1_5_7b_chat_ms --backend mindformers --device 0
openmind-cli chat
的全量参数可以参考openmind-cli chat接口。
同时我们也开放了chat相关的SDK接口,您可以通过调用接口的方式直接启动对话,以下为具体示例,您可以通过python chat_demo.py
启动示例:
#chat_demo.py脚本
from openmind import run_chat
run_chat(
model_name_or_path="AI_Connect/Qwen2_0.5B",
template="qwen",
bf16=True,
device=2
)
大语言模型评估
使用多种后端框架,对原始模型和训练后的模型给出标准化的评测指标。当前支持的框架为:
- lm-eval
lm-eval
在backend参数选择lmeval
时,使用EleutherAI lm-evaluatin-harness评估LLM,仅支持transformers的AutoModelForCausalLM
和AutoModelForSeq2SeqLM
类模型评估。且该特性目前支持的模型范围有限制,请开发者使用时自行判定推理评估效果。
此接口仅支持PyTorch框架。
目前支持的任务类型与使用方法如下。
-
arithmetic:这个任务用于评估模型进行基础算术运算的能力,它包括加法、减法、乘法和除法等基本数学问题。当你需要测试模型的基本数学计算能力时,可以使用这个任务。
-
gsm8k:这个任务它包含了一系列的小学数学问题,用于评估模型解决实际数学问题的能力,特别是需要多步骤推理的问题。当你需要评估模型在解决复杂数学问题上的表现时,可以使用这个任务。
-
mmlu:这个任务是一个多语言的多项选择问题集,用于评估模型在不同语言和文化背景下的理解和推理能力。当你需要测试模型在多种语言上的泛化能力时,可以使用这个任务。
-
mgsm_cot_native 这个任务它要求模型在解决问题时,使用问题的语言来生成中间推理步骤。当你需要评估模型在多语言环境中进行复杂推理,并能够以问题的语言生成推理步骤的能力时,可以使用这个任务。
-
mgsm_direct:这个任务则它要求模型直接解决问题,不提供额外的提示或步骤。当你需要评估模型在没有任何辅助的情况下解决数学问题的能力时,可以使用这个任务。
-
truthfulqa:这个任务用于评估模型在给定上下文中进行真实问答的能力。它要求模型能够理解问题并提供真实、准确的答案。当你需要评估模型在理解和回答真实世界问题上的能力时,可以使用这个任务。
-
hellaswag:这个任务是一个常识推理任务,它要求模型从给定的选项中选择最合适的接下来可能发生的事件,它用于评估模型的常识推理能力。当你需要测试模型的常识推理和预测能力时,可以使用这个任务。
-
ai2_arc:这个任务是一个需要模型进行深入推理和解决问题的任务,它通常包含科学问题和需要复杂推理的问题。当你需要评估模型在解决需要深入推理和背景知识的问题上的能力时,可以使用这个任务。
接口调用示例如下。
-
使用
ai2_arc
数据集评估Baichuan/Baichuan2_7b_chat_pt
精度。openmind-cli eval --model_name_or_path Baichuan/Baichuan2_7b_chat_pt --device 0 --tasks arithmetic --batch_size 64
-
使用
ai2_arc
数据集,单机多卡评估Baichuan/Baichuan2_7b_chat_pt
精度。export ASCEND_RT_VISIBLE_DEVICES=0,1,2,3 openmind-cli eval --model_name_or_path Baichuan/Baichuan2_7b_chat_pt --tasks ai2_arc --batch_size 64
-
显示当前支持的任务(评估集)
openmind-cli eval --tasks list
以下是执行结果:
Available tasks: - arithmetic - gsm8k - mmlu - mgsm_cot_native - mgsm_direct - truthfulqa - hellaswag - ai2_arc
openmind-cli eval
的全量参数可以参考openmind-cli eval接口。
同时我们也为您提供了eval相关SDK接口,您可以通过python脚本形式快速调起评估流程,以下为脚本示例,您可以通过python eval_demo.py
调起评估流程:
#eval_demo.py
from openmind import run_eval
run_eval(
model_name_or_path="AI_Connect/Qwen2_0.5B",
backend="lmeval",
device=2,
tasks="gsm8k",
batch_size=64,
limit=1,
)
模型部署
openmind-cli deploy
用于在单机环境下部署openai接口服务。目前支持MindIE、LMDeploy和vLLM三种方式提供推理服务。
此接口仅支持PyTorch框架。
LMDeploy
环境准备
不同于openMind Library v1.0.0版本默认配套的PyTorch 2.1.0,当前该接口的LMDeploy部署能力依赖于PyTorch 2.3.1版本,即使用该功能需要修改环境中的PyTorch版本。对此,我们强烈建议用户创建新环境进行模型部署,新建环境可参考openMind Library安装指南。
在安装LMDeploy之前,请确保环境中存在setuptools
和wheel
。另外,可执行以下命令检验torch_npu以及NPU环境是否可用,以确保LMDeploy顺利安装。
python -c "import torch_npu;print(torch_npu.npu.is_available());"
'''
True
'''
LMDeploy安装命令如下:
git clone -b v0.6.4 https://github.com/InternLM/lmdeploy.git
cd lmdeploy
pip install -e .
pip install dlinfer-ascend==0.1.7
接口调用示例
-
从魔乐社区上获取模型
AI-Research/Qwen2-7B
在默认端口1025上进行部署。openmind-cli deploy --model_name_or_path AI-Research/Qwen2-7B --backend lmdeploy
-
使用本地
Qwen2-7B
模型在指定端口1025上进行部署。openmind-cli deploy --model_name_or_path /path/to/your/Qwen2-7B --backend lmdeploy --port 1025
交互示例
部署成功后,可以在同服务器上使用curl进行交互。
-
查看模型列表
v1/models
curl http://127.0.0.1:1025/v1/models
-
对话
v1/chat/completions
curl http://127.0.0.1:1025/v1/chat/completions \ -H 'Content-Type: application/json' \ -d '{ "model": "AI-Research/Qwen2-7B", "messages": "推荐一个海边度假的地方" }'
MindIE
接口调用示例
-
从魔乐社区上获取模型
MindIE/llama2_7b
在默认端口1025上进行部署。openmind-cli deploy --model_name_or_path MindIE/llama2_7b --backend mindie
-
使用本地
llama2_7b
模型在指定端口1025上进行部署,指定0,1号卡。openmind-cli deploy --model_name_or_path /path/to/your/llama2_7b --backend mindie --port 1025 --world_size 2 --npu_device_ids '0,1'
-
停止MindIE服务
openmind-cli deploy stop
交互示例
部署成功(执行npu-smi info
看到相关进程)后,可以在同服务器上使用curl进行交互。
-
查看模型列表
v1/models
curl http://127.0.0.1:{port}/v1/models
-
对话
v1/chat/completions
curl "http://127.0.0.1:{port}/v1/chat/completions" \ -H "Content-Type: application/json" \ -d '{ "model": "llama2_7b", "messages": [ { "role": "user", "content": "如何养生?" } ], "max_tokens": 128 }'
-
停止MindIE服务
openmind-cli deploy stop
vLLM
环境准备
基于openMind Library基础环境,vLLM还需要满足以下软件配置要求:
- Python >= 3.9
- CANN == 8.1.RC1
- PyTorch == 2.6.0
- torch-npu == 2.6.0rc1
- vllm == 0.7.3
- vllm-ascend == 0.7.3rc2
确保固件驱动和CANN安装配置无误后,可以执行以下命令安装:
# 安装vllm和torch
pip install vllm==0.7.3
pip install torch==2.6.0
# 安装配套的torchvision, torchaudio和torch-npu
pip install torchvision==0.21.0
pip install torchaudio==2.6.0
pip install torch-npu==2.6.0rc1
#安装vllm-ascend
pip install vllm-ascend==0.7.3rc2
更加详细的安装教程可参考vllm-ascend环境准备教程。
接口调用示例
-
从魔乐社区上获取模型
AI-Research/Qwen2.5-7B
在默认端口1025上进行部署。openmind-cli deploy --model_name_or_path AI-Research/Qwen2.5-7B --backend vllm
-
使用本地
Qwen2.5-7B
模型在指定端口1025上进行多卡部署,指定0,1,2,3号卡,指定模型权重和激活的数据类型为bf16。ASCEND_RT_VISIBLE_DEVICES=0,1,2,3 openmind-cli deploy \ --model_name_or_path /path/to/your/Qwen2.5-7B \ --backend vllm \ --port 1025 \ --backend_config "tensor-parallel-size=4,dtype=bfloat16"
交互示例
部署成功后,可以在同服务器上使用curl进行交互。
-
查看模型列表
v1/models
curl http://127.0.0.1:1025/v1/models | python3 -m json.tool
-
文本补全
v1/completions
curl http://127.0.0.1:1025/v1/completions \ -H "Content-Type: application/json" \ -d '{ "model": "AI-Research/Qwen2.5-7B", "prompt": "Beijing is a", "max_tokens": 5, "temperature": 0 }' | python3 -m json.tool
-
对话
v1/chat/completions
curl http://127.0.0.1:1025/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{ "model": "AI-Research/Qwen2.5-7B", "messages": [{"role": "user", "content": "Recommend a place for a seaside holiday."}], "max_tokens": 64, "temperature": 0 }' | python3 -m json.tool
openmind-cli deploy
的全量参数可以参考openmind-cli deploy接口。
同时我们也为您提供了deploy相关SDK接口,您可以通过python脚本形式快速调起评估流程,以下为脚本示例,您可以通过python deploy_demo.py
调起评估流程:
#deploy_demo.py
from openmind import run_deploy
run_deploy(
model_name_or_path="AI_Connect/Qwen2_0.5B",
backend="lmdeploy",
device=2,
)
运行环境查看
openmind-cli env
用于列出当前的运行环境(安装的依赖库)。
接口调用示例如下。
-
列出当前运行环境安装的依赖库。
openmind-cli env
以下是显示结果示例:
- `openmind` version: 0.9.1 - `openmind_hub` version: 0.9.0 - Platform: Linux-4.19.90-vhulk2111.1.0.h963.eulerosv2r10.aarch64-aarch64-with-glibc2.34 - Python version: 3.10.13 - PyTorch version (NPU?): 2.1.0 (2.1.0.post8) - MindSpore version: not installed - MindFormers version: not installed - Transformers version: 4.43.3 - Accelerate version: 0.30.1 - Datasets version: 2.20.0 - Evaluate version: 0.4.2 - DeepSpeed version: not installed - Lm-evaluation-harness version: 0.4.3
openmind-cli env
的全量参数可以参考openmind-cli env接口。