6 篇文章带有标签 “MindIE”

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

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

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

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

压测命令

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 1 \
    -n 1

压测命令 evalscope perf \ --api openai \ --url 'http://127.0.0.1:1025/v1/chat/completions&#39; \ --model 'qwen' \ --dataset openqa \ --dataset-path './datasets/Codefuse-Evol-Instruct-Clean-data.

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

NPU GPU
CANN CUDA
MindSpore PyTorch
MindFormer Transformers
MindIE vLLM
  • 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

缺少软件包 sentencepiece

因为 MindIE 不支持 bin 格式的模型,需要将模型转换为

OpenAI API Compatibility

  • Ollama: 11434
  • LiteLLM: 4000
  • XInference: 9997
  • MindIE: 1025
  • curl -s: -s 选项表示静默模式,不输出进度信息。
  • jq -r: -r 选项表示以原始格式输出,去掉了引号。

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

  • 单引号 (')
    • 完全字面值:单引号内的内容被视为字面值,不会对其中的任何字符进行扩展或解析。
    • 变量不扩展:在单引号内,变量不会被解析。例如,'LITELLMAPIKEY会被视为字符LITELLM_API_KEY' 会被视为字符串 'LITELLM_API_KEY',而不是变量的值。
    echo '$LITELLM_API_KEY'  # 输出: $LITELLM_API_KEY
    
  • 双引号 (")
    • 允许扩展:双引号内的内容会进行解析和扩展。
    • 变量扩展:在双引号内,变量会被解析。例如,"$LITELLM_API_KEY" 会被替换为该变量的值。
    • 特殊字符处理:某些字符(如 $ 和 \)在双引号内需要用反斜杠转义。
    echo "$LITELLM_API_KEY"  # 输出: 变量的实际值(例如: sk-1234)