Mixtral-8x7B-Instruct-v0.1#

简介#

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

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

  • 8x7B参数,采用稀疏激活(每个token仅激活2个专家)

  • 在各种NLP任务上表现优异

  • 支持扩展上下文长度

  • 高质量的指令跟随能力

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

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

环境准备#

模型权重#

  • Mixtral-8x7B-Instruct-v0.1(BF16版本):下载模型权重

  • 量化版本可能由第三方提供商提供。

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

安装#

您可以使用我们的官方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.20.2rc1
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

部署#

单节点部署#

  • Mixtral-8x7B-Instruct-v0.1 可部署在1台 Atlas 800 A3 (64G × 16) 或 1台 Atlas 800 A2 (64G × 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 VLLM_ASCEND_ENABLE_MLAPO=1
export PYTORCH_NPU_ALLOC_CONF=expandable_segments:True
export VLLM_ASCEND_ENABLE_FLASHCOMM1=1
vllm serve "mistralai/Mixtral-8x7B-Instruct-v0.1" \
  --tensor-parallel-size 4 \
  --max-model-len 4096 \
  --dtype bfloat16 \
  --trust-remote-code \
  --enforce-eager \
  --block-size 128 \
  --gpu-memory-utilization 0.7

注意: 参数说明如下:

  • 设置环境变量 VLLM_ASCEND_BALANCE_SCHEDULING=1 可启用均衡调度。这有助于提高输出吞吐量并降低v1调度器中的TPOT。但在某些场景下,TTFT可能会下降。

  • --max-model-len 指定最大上下文长度,即单个请求的输入和输出token总和。为测试目的,此处使用 4096

  • --dtype float16 指定模型权重和计算的数据类型。

  • --trust-remote-code 允许加载包含自定义代码的模型。

  • --enforce-eager 强制使用即时执行模式而非图编译模式,这对某些模型可能更稳定。

  • --block-size 指定KV缓存管理的块大小,此处使用 128

  • --gpu-memory-utilization 设置用于模型的NPU内存比例,此处使用 0.7 以减少内存使用。

功能验证#

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

curl http://localhost:8000/v1/chat/completions \
    -H "Content-Type: application/json" \
    -d '{
        "model": "mistralai/Mixtral-8x7B-Instruct-v0.1",
        "messages": [
            {"role": "user", "content": "你好,介绍一下你自己"}
        ],
        "max_tokens": 100,
        "temperature": 0.7
    }'

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

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": "简单解释一下为什么 Mixtral 模型被称为\"混合专家模型\"(MoE)?"}
        ],
        "max_tokens": 100,
        "temperature": 0.7
    }'

使用AISBench#

  1. 详情请参考使用AISBench

  2. 执行后即可获取结果。作为参考,Mixtral-8x7B-Instruct-v0.1 在包括推理、理解和指令跟随任务在内的各种基准测试中通常表现良好。

性能#

使用AISBench#

详情请参考使用AISBench进行性能评估

使用vLLM Benchmark#

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

结论#

Mixtral-8x7B-Instruct-v0.1 是一个强大的MoE模型,为指令跟随任务提供了卓越的性能。通过在Ascend硬件上使用vllm-ascend进行适当部署,您可以为AI应用实现高吞吐量和低延迟。

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