跳转至

Mixtral-8x7B-Instruct-v0.1

1 简介

Mixtral-8x7B-Instruct-v0.1 是由 Mistral AI 开发的先进混合专家(MoE)语言模型。它包含 8 个专家模型,每个具有 7B 参数,并针对指令跟随任务进行了专门微调。

Mixtral-8x7B-Instruct-v0.1 的主要特性包括:

  • 8x7B 参数,采用稀疏激活(每个 token 仅激活 2 个专家)
  • 在多种 NLP 任务中表现强劲
  • 支持扩展上下文长度
  • 高质量的指令跟随能力

本文档将展示该模型的主要验证步骤,包括支持的特性、特性配置、环境准备、单节点部署、精度和性能评估。

Mixtral-8x7B-Instruct-v0.1 模型在 vllm-ascend 中受支持。

2 环境准备

2.1 模型权重

  • Mixtral-8x7B-Instruct-v0.1(BF16 版本):下载模型权重
  • 量化版本可能由第三方提供商提供。

建议将模型权重下载到本地目录,例如 /data/models/。

路径说明:请将模型权重下载到您选择的目录并记录该路径。确保后续部署命令中的模型路径与该目录一致。

3 安装

您可以使用我们的官方 docker 镜像直接运行 Mixtral-8x7B-Instruct-v0.1。

根据您的机器类型选择镜像,并在您的节点上启动 docker 镜像,参见 使用 docker。

# Update --device according to your device (Atlas A2: /dev/davinci[0-7] Atlas A3:/dev/davinci[0-15]).
# Update the vllm-ascend image according to your environment.
# Note you should download the weight to /root/.cache in advance.
# Update the vllm-ascend image
export IMAGE=m.daocloud.io/quay.io/ascend/vllm-ascend:v0.23.0
export NAME=vllm-ascend

# Run the container using the defined variables
# Note: If you are running bridge network with docker, please expose available ports for multiple nodes communication in advance.
docker run --rm \
    --name $NAME \
    --net=host \
    --shm-size=1g \
    --device /dev/davinci0 \
    --device /dev/davinci1 \
    --device /dev/davinci2 \
    --device /dev/davinci3 \
    --device /dev/davinci_manager \
    --device /dev/devmm_svm \
    --device /dev/hisi_hdc \
    -v /usr/local/dcmi:/usr/local/dcmi \
    -v /usr/local/Ascend/driver/tools/hccn_tool:/usr/local/Ascend/driver/tools/hccn_tool \
    -v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi \
    -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 /etc/ascend_install.info:/etc/ascend_install.info \
    -v /root/.cache:/root/.cache \
    -it $IMAGE bash

4 部署

4.1 单节点部署

  • Mixtral-8x7B-Instruct-v0.1 可部署在 1 台 Atlas 800 A3(64GB × 16)或 1 台 Atlas 800 A2(64GB × 8)上。

运行以下脚本以执行在线推理。

export HCCL_OP_EXPANSION_MODE="AIV"
export OMP_PROC_BIND=false
export OMP_NUM_THREADS=10
export VLLM_USE_V1=1
export HCCL_BUFFSIZE=200
export PYTORCH_NPU_ALLOC_CONF=expandable_segments:True
# Ensure the model path matches the directory recorded during download
vllm serve "mistralai/Mixtral-8x7B-Instruct-v0.1" --additional-config '{"enable_mlapo":true}' \
  --tensor-parallel-size 4 \
  --max-model-len 4096 \
  --dtype bfloat16 \
  --trust-remote-code \
  --enforce-eager \
  --block-size 128 \
  --gpu-memory-utilization 0.7

注意: 参数说明如下:

  • 设置 additional_config.scheduler_config.enable_balance_scheduling=true 可启用均衡调度。这有助于在 v1 调度器中提高输出吞吐量并降低 TPOT。但在某些场景下,TTFT 可能会变差。
  • --max-model-len 指定最大上下文长度,即单个请求的输入和输出 token 总数。此处测试使用 4096。
  • --dtype float16 指定模型权重和计算的数据类型。
  • --trust-remote-code 允许加载包含自定义代码的模型。
  • --enforce-eager 强制使用 eager 执行模式,而不是图编译,这对某些模型可能更稳定。
  • --block-size 指定 KV 缓存管理的块大小,此处使用 128。
  • --gpu-memory-utilization 设置用于模型的 NPU 内存比例,此处使用 0.7 以降低内存占用。

5 功能验证

服务器启动后,您可以使用输入 Prompt 查询模型。Mixtral-8x7B-Instruct-v0.1 使用带有 [INST] 和 [/INST] 标签的特定 Prompt 格式:

curl http://localhost:8000/v1/chat/completions \
    -H "Content-Type: application/json" \
    -d '{
        "model": "mistralai/Mixtral-8x7B-Instruct-v0.1",
        "messages": [
            {"role": "user", "content": "Hello, please introduce yourself."}
        ],
        "max_tokens": 100,
        "temperature": 0.7
    }'

对于指令跟随任务,您可以使用如下 Prompt:

curl http://localhost:8000/v1/chat/completions \
    -H "Content-Type: application/json" \
    -d '{
        "model": "mistralai/Mixtral-8x7B-Instruct-v0.1",
        "messages": [
            {"role": "user", "content": "扮演一位资深架构师,评价一下在昇腾 Atlas A2 上部署 vLLM 的优势。"}
        ],
        "max_tokens": 100,
        "temperature": 0.7
    }'

对于与 MoE 相关的问题:

curl http://localhost:8000/v1/chat/completions \
    -H "Content-Type: application/json" \
    -d '{
        "model": "mistralai/Mixtral-8x7B-Instruct-v0.1",
        "messages": [
            {"role": "user", "content": "Briefly explain why Mixtral is called a \"mixture-of-experts\" (MoE) model."}
        ],
        "max_tokens": 100,
        "temperature": 0.7
    }'

6 准确性评估

6.1 使用 AISBench

  1. 有关详细信息,请参阅使用 AISBench。

  2. 执行后,您可以获取结果。供参考,Mixtral-8x7B-Instruct-v0.1 通常在推理、理解和指令遵循等各类基准测试中表现良好。

7 性能评估

7.1 使用 AISBench

有关详细信息,请参阅使用 AISBench 进行性能评估。

7.2 使用 vLLM 基准测试

以 Mixtral-8x7B-Instruct-v0.1 为例,运行性能评估。

有关更多详细信息,请参阅 vllm benchmark。

vllm bench 有三个子命令:

  • latency:对单个请求批次的延迟进行基准测试。
  • serve:对在线服务吞吐量进行基准测试。
  • throughput:对离线推理吞吐量进行基准测试。

以 serve 为例。首先,启动服务器:

python -m vllm.entrypoints.openai.api_server \
    --model mistralai/Mixtral-8x7B-Instruct-v0.1 \
    --host 0.0.0.0 \
    --port 8000 \
    --tensor-parallel-size 4 \
    --max-model-len 512 \
    --dtype float16 \
    --trust-remote-code \
    --enforce-eager \
    --block-size 128 \
    --gpu-memory-utilization 0.7

8 结论

Mixtral-8x7B-Instruct-v0.1 是一款强大的 MoE 模型,在指令遵循任务中表现出色。使用 vllm-ascend 在 Ascend 硬件上进行适当部署后,您可以为 AI 应用实现高吞吐量和低延迟。

有关模型能力和最佳实践的更多详细信息,请参阅官方 Mixtral 文档和 vllm-ascend 用户指南。

本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 vl/vllm-ascend