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#
详情请参考使用AISBench。
执行后即可获取结果。作为参考,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用户指南。