8 篇文章带有标签 “mindie”

华为 Atlas 800I A2 大模型部署实战(八):GPUStack 实现 GPU 集群化管理

本文章详细介绍了华为 Atlas 800I A2 推理服务器上部署大型AI模型的实践过程,重点围绕GPUStack这一开源GPU集群管理工具。文章首先阐述了GPUStack的核心特性,包括其广泛的兼容性、对多种模型和推理框架的支持、灵活的部署能力以及智能管理功能。随后,文档提供了在主服务器和从服务器上安装、配置和使用GPUStack的详尽步骤,并展示了如何通过NFS实现模型文件的统一存储,以优化多服务器集群中的模型调度效率。文中还包含了GPUStack用户界面的截图,帮助读者直观理解其各项功能。

服务器配置

AI 服务器:华为 Atlas 800I A2 推理服务器 X 5

组件 规格
CPU 鲲鹏 920(5250)
NPU 昇腾 910B4(8X32G)
内存 1024GB
硬盘 系统盘:450GB SSDX2 RAID1
数据盘:3.5TB NVME SSDX4
操作系统 openEuler 22.03 LTS

GPUStack 介绍

GPUStack 是一款开源的 GPU 集群管理器,专为运行 AI 模型设计,其核心特点如下:

  • 广泛的兼容性:支持多厂商 GPU,覆盖苹果 Mac、Windows 电脑及 Linux 服务器,还能适配多种推理后端(如 vLLM、Ascend MindIE 等),并可同时运行多个版本的推理后端,满足不同模型的运行需求。
  • 丰富的模型支持与灵活部署:支持 LLM、VLM、图像模型、音频模型等多种类型模型,可实现单节点和多节点多 GPU 推理,包括跨厂商和不同运行环境的异构 GPU,且能通过添加更多 GPU 或节点轻松扩展架构。
  • 稳定与智能管理:具备自动故障恢复、多实例冗余和推理请求负载均衡功能,保障高可用性;能自动评估模型资源需求、兼容性等部署相关因素,还可基于可用资源动态分配模型。
  • 实用的附加功能:采用轻量级 Python 包,依赖少、运维成本低;提供与 OpenAI 兼容的 API,便于无缝集成;支持用户及 API 密钥管理,可实时监控 GPU 性能、利用率以及令牌使用量和 API 请求速率。

华为 Atlas 800I A2 大模型部署实战(七):完整的安装部署流程

这份指南详细阐述了华为Atlas 800I A2推理服务器上大型模型的部署流程,旨在提供一个全面的安装与配置实践,用于扩展部署到其它服务器。随后,文章通过流程图和具体命令脚本,逐步指导用户如何创建和挂载逻辑卷同步并安装驱动固件部署Docker环境以及导入所需的MindIE和vLLM镜像。最后,指南还涵盖了同步大型模型权重文件的关键步骤,并指示用户通过Docker Compose启动模型服务,确保MindIE和vLLM能够顺利运行,以实现AI推理功能。

服务器配置

AI 服务器:华为 Atlas 800I A2 推理服务器

组件 规格
CPU 鲲鹏 920(5250)
NPU 昇腾 910B4(8X32G)
内存 1024GB
硬盘 系统盘:450GB SSDX2 RAID1
数据盘:3.5TB NVME SSDX4
操作系统 openEuler 22.03 LTS

完整安装部署流程

华为 Atlas 800I A2 大模型部署实战(四):MindIE 多实例 LLM 部署

该文档详细阐述了MindIE 大模型在华为 Atlas 800I A2 服务器上的部署实践,重点介绍了单实例和多实例部署配置。它提供了创建目录结构、编辑配置文件和入口脚本的步骤,并展示了Docker Compose 配置来管理容器化部署。此外,文档还涵盖了防火墙设置的不同方法,包括临时关闭、永久禁用和端口放行,以及查看 MindIE 服务监听端口的命令。最后,它说明了如何自定义 Dockerfile 以实现在内网环境中无缝部署MindIE 服务并进行测试。

模板

创建目录结构

mkdir -p template
cd template

touch config.json.template compose.yml entrypoint.sh

mkdir -p logs
chmod 750 logs

chmod +x entrypoint.sh

列出目录结构

tree template/
template/
├── config.json.template
├── compose.yml
├── entrypoint.sh
└── logs

配置文件

编辑 config.json.template 文件

华为 Atlas 800I A2 大模型部署实战(三):MindIE 安装与部署 LLM

本文章提供了在 openEuler 操作系统上安装 Docker 的具体步骤,并指导用户下载、导入 MindIE 镜像,以及准备 LLM 模型文件。最后,文档展示了如何通过 Docker 容器运行和配置 MindIE 服务,并提供了通过 cURL 命令测试服务的示例,还包含了使用 Docker Compose 部署的详细配置

服务器配置

AI 服务器:华为 Atlas 800I A2 推理服务器

组件 规格
CPU 鲲鹏 920(5250)
NPU 昇腾 910B4(8X32G)
内存 1024GB
硬盘 系统盘:450GB SSDX2 RAID1
数据盘:3.5TB NVME SSDX4
操作系统 openEuler 22.03 LTS

MindIE 介绍

MindIE(Mind Inference Engine,昇腾推理引擎)是华为昇腾针对AI全场景业务的推理加速套件。通过分层开放AI能力,支撑用户多样化的AI业务需求,使能百模千态,释放昇腾硬件设备算力。向上支持多种主流AI框架,向下对接不同类型昇腾AI处理器,提供多层次编程接口,帮助用户快速构建基于昇腾平台的推理业务。

MindIE 架构图

华为 Atlas A2 算力切分

算力切分

查询算力切分模式

sudo npu-smi info -t vnpu-mode
    vnpu-mode                      : docker

查询算力切分模板信息 sudo npu-smi info -t template-info +------------------------------------------------------------------------------------------+ |NPU instance template info is: | |Name AICORE Memory AICPU VPC VENC JPEGD | | GB PNGD VDEC JPEGE | |==========================================================================================| |vir10_3c_16g 10 16 3 4 0 12 | | 0 1 2 | +------------------------------------------------------------------------------------------+ |vir10_4c_16g_m 10 16 4 9 0 24 | | 0 2 4 | +---------------------------

华为 Atlas 800I A2 服务器的大模型推理性能压测

大模型推理性能压测工具

安装 EvalScope

git clone https://github.com/modelscope/evalscope
cd evalscope

pip install -e .

压测命令的使用

evalscope perf \
    --api openai \
    --url 'http://127.0.0.1:1025/v1/chat/completions' \
    --model 'qwen' \
    --dataset openqa \
    --dataset-path './datasets/open_qa.jsonl' \
    --max-prompt-length 8000 \
    --stop '<|im_end|>' \
    --read-timeout=120 \
    --parallel 100 \
    -n 1000

--stream 不要加,经常出问题。

  • --read-timeout: 网络读取超时
  • --parallel: 并发数
  • -n: 请求数

数据集 中文聊天 HC3-Chinese mkdir datasets wget https://modelscope.cn/datasets/AI-ModelScope/HC3-Chinese/resolve/master/open_qa.

在华为 Atlas 800I A2 服务器上搭建大模型推理服务

华为昇腾 NPU 与英伟达 GPU 生态层级对比:

NPU GPU
CANN CUDA
MindSpore PyTorch
MindFormer Transformers
MindIE vLLM

下载大模型

cd /home/luruan/disk1/models

大型语言模型

  • Qwen1.5-7B
git clone https://www.modelscope.cn/Qwen/Qwen1.5-7B-Chat.git
  • Qwen2-7B ❌
git clone https://www.modelscope.cn/Qwen/Qwen2-7B-Instruct.git
  • Qwen2-72B
git clone https://www.modelscope.cn/Qwen/Qwen2-72B-Instruct.git

代码大模型

  • DeepSeek-Coder-6.7B
git clone https://www.modelscope.cn/deepseek-ai/deepseek-coder-6.7b-instruct.git
  • StarCoder2-15B ❌
git clone https://www.modelscope.cn/AI-ModelScope/starcoder2-15b.git
  • CodeGeeX2-6B ❌
git clone https://www.modelscope.cn/ZhipuAI/codegeex2-6b.git

OpenAI API Compatibility

设置 API Key

export LITELLM_API_KEY=sk-1234

服务端口

  • Ollama: 11434
  • LiteLLM: 4000
  • XInference: 9997
  • MindIE: 1025

models

Ollama

curl -s http://localhost:11434/v1/models \
    | jq -r '.data[].id'
  • curl -s: -s 选项表示静默模式,不输出进度信息。
  • jq -r: -r 选项表示以原始格式输出,去掉了引号。

LiteLLM

curl -s http://localhost:4000/v1/models \
    -H "Authorization: Bearer $LITELLM_API_KEY" \
    | jq -r '.data[].id'

在 Bash 中,单引号和双引号的使用有一些重要的区别:

  • 单引号 (')
    • 完全字面值:单引号内的内容被视为字面值,不会对其中的任何字符进行扩展或解析。
    • 变量不扩展:在单引号内,变量不会被解析。例如,'LITELLMAPIKEY会被视为字符LITELLM_API_KEY' 会被视为字符串 'LITELLM_API_KEY',而不是变量的值。
    echo '$LITELLM_API_KEY'  # 输出: $LITELLM_API_KEY