来源:llm/mixtral
Mixtral:来自 Mistral AI 的 MOE 大型语言模型#
Mistral AI 发布了 Mixtral 8x7B,这是一个高质量的稀疏专家混合模型(SMoE),权重开源。Mixtral 在大多数基准测试中性能优于 Llama 2 70B,推理速度快 6 倍。Mistral AI 使用 SkyPilot 作为分发其新模型的默认方式。此文件夹包含使用 SkyPilot 在任何云上提供 Mixtral 服务的代码。
有三种方法可以提供模型服务
1. 使用单个实例提供服务#
SkyPilot 可以通过自动查找任何云上的可用资源、配置虚拟机、开放端口以及提供模型服务来帮助您提供 Mixtral 服务。要使用单个实例提供 Mixtral 服务,请运行以下命令
sky launch -c mixtral ./serve.yaml
请注意,我们指定了以下资源,以便 SkyPilot 将自动查找指定的可用 GPU,通过所有候选方案自动故障转移(按价格顺序)
resources:
accelerators: {A100:4, A100:8, A100-80GB:2, A100-80GB:4, A100-80GB:8}
以下是优化器的示例输出
Considered resources (1 node):
----------------------------------------------------------------------------------------------------------
CLOUD INSTANCE vCPUs Mem(GB) ACCELERATORS REGION/ZONE COST ($) CHOSEN
----------------------------------------------------------------------------------------------------------
Azure Standard_NC48ads_A100_v4 48 440 A100-80GB:2 eastus 7.35 ✔
GCP g2-standard-96 96 384 L4:8 us-east4-a 7.98
GCP a2-ultragpu-2g 24 340 A100-80GB:2 us-central1-a 10.06
Azure Standard_NC96ads_A100_v4 96 880 A100-80GB:4 eastus 14.69
GCP a2-highgpu-4g 48 340 A100:4 us-central1-a 14.69
AWS g5.48xlarge 192 768 A10G:8 us-east-1 16.29
GCP a2-ultragpu-4g 48 680 A100-80GB:4 us-central1-a 20.11
Azure Standard_ND96asr_v4 96 900 A100:8 eastus 27.20
GCP a2-highgpu-8g 96 680 A100:8 us-central1-a 29.39
Azure Standard_ND96amsr_A100_v4 96 1924 A100-80GB:8 eastus 32.77
AWS p4d.24xlarge 96 1152 A100:8 us-east-1 32.77
GCP a2-ultragpu-8g 96 1360 A100-80GB:8 us-central1-a 40.22
AWS p4de.24xlarge 96 1152 A100-80GB:8 us-east-1 40.97
----------------------------------------------------------------------------------------------------------
访问模型#
现在我们可以通过 OpenAI API 使用 IP 和端口访问模型
IP=$(sky status --ip mixtral)
curl http://$IP:8000/v1/completions \
-H "Content-Type: application/json" \
-d '{
"model": "mistralai/Mixtral-8x7B-Instruct-v0.1",
"prompt": "My favourite condiment is",
"max_tokens": 25
}'
也支持聊天 API
IP=$(sky status --ip mixtral)
curl http://$IP:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "mistralai/Mixtral-8x7B-Instruct-v0.1",
"messages": [
{
"role": "user",
"content": "Hello! What is your name?"
}
],
"max_tokens": 25
}'
2. 使用多个实例提供服务#
当需要横向扩展时,SkyServe 是构建在 SkyPilot 之上的库,它可以帮助您使用多个实例扩展服务,同时仍然提供一个单一的端点。要使用多个实例提供 Mixtral 服务,请运行以下命令
sky serve up -n mixtral ./serve.yaml
服务的附加参数指定了检查服务健康状况以及在发生意外故障时管理服务自动重启的方式
service:
readiness_probe:
path: /v1/chat/completions
post_data:
model: mistralai/Mixtral-8x7B-Instruct-v0.1
messages:
- role: user
content: Hello! What is your name?
max_tokens: 1
initial_delay_seconds: 1200
replica_policy:
min_replicas: 1
可选:为了进一步节省 3-4 倍的成本,我们可以使用 Spot 实例作为副本,SkyServe 将自动管理 Spot 实例,监控价格和抢占,并在需要时重启副本。为此,我们可以将 use_spot: true
添加到 resources
字段,例如
resources:
use_spot: true
accelerators: {A100:4, A100:8, A100-80GB:2, A100-80GB:4, A100-80GB:8}
访问模型#
在 sky serve up
命令运行后,服务将有一个单一的端点。我们可以通过 OpenAI API 使用 IP 和端口访问模型
ENDPOINT=$(sky serve status --endpoint mixtral)
curl http://$ENDPOINT/v1/completions \
-H "Content-Type: application/json" \
-d '{
"model": "mistralai/Mixtral-8x7B-Instruct-v0.1",
"prompt": "My favourite condiment is",
"max_tokens": 25
}'
也支持聊天 API
ENDPOINT=$(sky serve status --endpoint mixtral)
curl http://$ENDPOINT/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "mistralai/Mixtral-8x7B-Instruct-v0.1",
"messages": [
{
"role": "user",
"content": "Hello! What is your name?"
}
],
"max_tokens": 25
}'
3. Mistral AI 官方指南#
Mistral AI 在其官方文档中也包含了使用 SkyPilot 启动 Mixtral 8x7B 模型的指南。请参考此链接获取更多详细信息。
注意:官方文档中的 docker 镜像可能尚未更新,这可能导致 vLLM 报错称模型缺少支持。请随意使用我们 serve.yaml 文件中的设置命令创建一个新的 docker 镜像。
包含的文件#
serve.yaml
# A example yaml for serving Mixtral model from Mistral AI with an OpenAI API.
# Usage:
# 1. Launch on a single instance: `sky launch -c mixtral ./serve.yaml`
# 2. Scale up to multiple instances with a single endpoint:
# `sky serve up -n mixtral ./serve.yaml`
service:
readiness_probe:
path: /v1/chat/completions
post_data:
model: mistralai/Mixtral-8x7B-Instruct-v0.1
messages:
- role: user
content: Hello! What is your name?
max_tokens: 1
initial_delay_seconds: 1200
replica_policy:
min_replicas: 2
resources:
accelerators: {L4:8, A10g:8, A10:8, A100:4, A100:8, A100-80GB:2, A100-80GB:4, A100-80GB:8}
ports: 8000
disk_tier: best
setup: |
conda activate mixtral
if [ $? -ne 0 ]; then
conda create -n mixtral -y python=3.10
conda activate mixtral
fi
pip install transformers==4.38.0
pip install vllm==0.3.2
pip list | grep megablocks || pip install megablocks
run: |
conda activate mixtral
export PATH=$PATH:/sbin
python -u -m vllm.entrypoints.openai.api_server \
--host 0.0.0.0 \
--model mistralai/Mixtral-8x7B-Instruct-v0.1 \
--tensor-parallel-size $SKYPILOT_NUM_GPUS_PER_NODE | tee ~/openai_api_server.log