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¶
-
有关详细信息,请参阅使用 AISBench。
-
执行后,您可以获取结果。供参考,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