Skip to content

L4-1024/ascend-test

Repository files navigation

ascend-test

![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg null)

ascend-test 是专为昇腾硬件打造的模型测试框架,用于验证镜像交付的正确性,并为用户/开发者提供极简的模型运行体验。 框架已集成 sglang、vllm、torch原生、mindie-sd等多种推理引擎,内置 30+ 大模型推理模型及少量训练模型,覆盖主流场景,开箱即用。

📋 支持的模型

当前支持的模型清单请参考:Ascend-SACT/ascend-test/reports/total-report.md

🆕 最新更新

  • 功能优化:优化了 apply_patch 功能,支持处理多个 software_patches 并优化补丁路径查找
  • 文档完善:更新了模型适配文档、技能文档和模型下载说明

🚀 快速开始

1. 环境准备

1.1 容器环境(推荐)

  • 昇腾A2服务器
docker pull swr.cn-north-4.myhuaweicloud.com/ascend-sact/ascend-a2-ubuntu:latest
  • 昇腾A3服务器
docker pull swr.cn-north-4.myhuaweicloud.com/ascend-sact/ascend-a3-ubuntu:latest

1.2 容器运行

docker run -it --rm --name ascend-model \
    --privileged \
    --network host \
    --device /dev/davinci_manager \
    --device /dev/davinci0 \
    --device /dev/davinci1 \
    --device /dev/davinci2 \
    --device /dev/davinci3 \
    --device /dev/davinci4 \
    --device /dev/davinci5 \
    --device /dev/davinci6 \
    --device /dev/davinci7 \
    --device /dev/hisi_hdc \
    --device /dev/devmm_svm \
    -v /usr/local/dcmi:/usr/local/dcmi \
    -v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi \
    -v /usr/local/Ascend/driver/tools/hccn_tool:/usr/local/Ascend/driver/tools/hccn_tool \
    -v /usr/local/Ascend/driver/lib64:/usr/local/Ascend/driver/lib64 \
    -v /usr/local/Ascend/driver/version.info:/usr/local/Ascend/driver/version.info \
    -v /data:/data \
    swr.cn-north-4.myhuaweicloud.com/ascend-sact/{image_name}:{tag} \
    bash

2. 基本使用

关注/workspace/ascend-test/examples/global_config.json下的文件配置

  • models, 替换为当前模型的下载全局路径(以Qwen3.5-0.8B为例,如果本地模型路径是:/workspace/public/models/Qwen/Qwen3.5-0.8B,则当前配置文件中models路径配置为/workspace/public/models,Qwen/Qwen3.5-0.8B为ModelScope的模型ID坐标)
  • outputs,替换为模型的输出路径(例如,文生视频的输出文件全局路径)

上述两个变量同时可以通过环境变量覆盖GLOBALMODELSGLOBAL_OUTPUS替代

export GLOBAL_MODELS=xxxxx export GLOBAL_OUTPUS= xxxx

2.1 查看支持的引擎和模型

# 查看引擎支持的模型
run -e vllm
run -e torch
run -e sglang
示例输出

执行 run -e torch 命令的示例输出:

============================================================
引擎: torch
============================================================
支持的模型数: 2

支持的模型列表:
  1. mova-360p-8-npu-inference
  2. mova-720p-8-npu-inference
============================================================

2.2 运行单个模型

# 运行VLLM引擎下的MiMo-VL-7B-RL-2508模型(按名称)
run -e vllm MiMo-VL-7B-RL-2508

# 运行Torch引擎下的第一个模型(按序号)
run -e torch 1

# 运行SGLang引擎下的Wan2.1-T2V-1.3B-Diffusers模型(按名称)
run -e sglang Wan2.1-T2V-1.3B-Diffusers

2.3 批量运行模型

# 批量运行Torch引擎下的所有模型
run -e torch -b

# 批量运行VLLM引擎下的所有模型
run -e vllm -b

# 跨引擎批量测试
run -m torch vllm sglang

2.4 服务端模式

对于 VLLM 和 SGLang 引擎,支持以API Server服务化的方式启动:

# 以服务端模式启动sglang引擎并指定模型(按序号)
run -e sglang -s 1

# 以服务端模式启动VLLM引擎并指定模型(按名称)
run -e vllm -s qwen3-32b

2.5 服务端模式说明

服务端模式启动后,会在指定端口提供API服务:

  • VLLM引擎: 默认端口 8000
  • SGLang引擎: 默认端口 30000

启动后可以通过 HTTP 请求访问相应的 API 接口,例如:

# 测试VLLM服务
curl http://localhost:8000/v1/models

# 测试SGLang服务
curl http://localhost:30000/v1/models

2.6 快速验证模式

在开发和测试阶段,可以使用快速验证模式加快测试速度:

# 启用快速验证模式运行单个模型(按名称)
run -e vllm MiMo-VL-7B-RL-2508 -f

# 启用快速验证模式运行单个模型(按序号)
run -e torch 1 -f

# 启用快速验证模式批量运行
run -e torch -b -f

🔧 项目架构

1. 核心架构

1.1 运行器架构

项目采用了基于 Runner 基类的继承架构:

  • Base Runner:定义了通用的运行逻辑和接口
  • Engine-specific Runners:针对不同引擎的具体实现

每个运行器负责:

  • 加载和管理模型配置
  • 执行模型测试
  • 收集和报告测试结果
  • 清理资源

1.2 配置管理

  • 全局配置examples/global_config.json 中定义模型路径和输出路径
  • 引擎配置:每个引擎有独立的配置目录,包含具体模型模型的配置
  • 模型配置:每个模型模型有详细的配置,包括模型名称、脚本路径等

1.3 验证系统

  • 模型验证:验证模型的可用性和兼容性
  • 快速验证模式:使用 dummy 模型和减少推理步骤以加快测试速度
  • 验证结果收集:记录验证过程中的成功和失败情况

1.4 报告生成

  • Markdown 报告:生成详细的测试报告,包括执行时间、成功/失败状态等
  • 验证摘要:汇总验证结果,提供通过率统计

2. 代码结构

ascend-test/
├── ascend/             # 核心代码目录
│   ├── config/         # 配置相关
│   ├── reporter/       # 报告生成
│   ├── runner/         # 引擎运行器
│   ├── dummy_params.py # 快速验证模式参数
│   ├── globals.py      # 全局变量
│   ├── model_metadata.py # 模型元数据
│   └── validator.py    # 验证逻辑
├── bash/               # Bash 脚本
├── config/             # 配置文件
├── docs/               # 文档
├── examples/           # 示例配置
│   ├── sglang/         # SGLang 引擎示例
│   ├── torch/          # Torch 引擎示例
│   ├── vllm/           # VLLM 引擎示例
│   ├── mindie-sd/      # MindIE 稳定扩散引擎示例
│   ├── mindie-llm/     # MindIE LLM 引擎示例
│   ├── mindspeed-mm/   # MindSpeed 多模态引擎示例
│   └── global_config.json # 全局配置
├── prompt/             # 提示词
├── reports/            # 测试报告
├── test/               # 测试代码
├── tools/              # 工具脚本
├── main.py             # 主入口
└── pyproject.toml      # 项目配置

📦 持续集成

1. CI/CD 流程

ascend-test 项目支持以下 CI/CD 流程:

1.1 模型验证 CI

可以集成到 CI 流程中,定期验证模型的可用性和性能:

# 在CI中运行快速验证
run -e vllm -b -f
run -e torch -b -f
run -e sglang -b -f

1.2 镜像验证 CI

在镜像构建完成后,可以使用 ascend-test 验证镜像的正确性:

# 验证镜像中的模型运行情况
docker run -it --privileged --network host <new-image> \
  bash -c "cd /workspace/ascend-test && run -e vllm -c MiMo-VL-7B-RL-2508 -f"

🤝 开发者集成

1. 新增模型支持

开发者可以通过以下步骤添加新模型:

  1. 明确引擎选择:根据模型类型选择合适的引擎(torch、vllm、sglang等)
  2. 创建配置文件:在对应引擎的配置目录下创建配置文件
  3. 提供封装脚本:参考已有的样例,提供封装的运行脚本
  4. 测试验证:使用快速验证模式测试新模型

2. 新增引擎支持

开发者可以通过以下步骤添加新引擎:

  1. 创建运行器:创建继承自 Runner 基类的引擎实现
  2. 注册引擎:在 main.py 中注册新引擎
  3. 添加配置:在 examples 目录下添加引擎配置
  4. 测试验证:测试新引擎的功能和性能

3. 补丁管理

项目提供了补丁管理功能,用于适配模型和引擎:

  • apply_patch.py:根据 meta.json 配置自动应用补丁
  • download_patch.py:下载所需的补丁文件
  • 模型补丁映射:通过 model_patch_mapping.json 管理模型与补丁的对应关系

最新优化:

  • 支持处理多个 software_patches
  • 优化补丁路径查找逻辑
  • 提供更灵活的补丁管理机制

🤗 贡献

我们欢迎社区贡献!如果您有兴趣为项目做出贡献,请:

  1. Fork 仓库
  2. 创建特性分支
  3. 提交更改
  4. 推送到分支
  5. 创建 Pull Request

📄 许可证

本项目采用 Apache 2.0 许可证。详见 LICENSE 文件。

📞 联系方式

如有问题或建议,请通过以下方式联系我们:


享受在昇腾硬件上运行模型的乐趣! 🎉

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors