Files
openmind/docs/zh/basic_tutorial/cli.md
humphrey007 ab6aae6bcd !188 支持多社区下载(eval)
Merge pull request !188 from humphrey007/endpoint
2025-04-28 08:07:11 +00:00

19 KiB
Raw Blame History

命令行接口

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
    

    回显示例如下。

    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的AutoModelForCausalLMAutoModelForSeq2SeqLM类模型评估。且该特性目前支持的模型范围有限制,请开发者使用时自行判定推理评估效果。

此接口仅支持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两种方式提供推理服务。

此接口仅支持PyTorch框架。

LMDeploy

环境准备

不同于openMind Library v1.0.0版本默认配套的PyTorch 2.1.0当前该接口的LMDeploy部署能力依赖于PyTorch 2.3.1版本即使用该功能需要修改环境中的PyTorch版本。对此我们强烈建议用户创建新环境进行模型部署新建环境可参考openMind Library安装指南

在安装LMDeploy之前请确保环境中存在setuptoolswheel。另外可执行以下命令检验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
    

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接口