来源: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 镜像。

包含的文件#