SkyPilot

注意

仍需为Qwen3更新。

SkyPilot 是什么

SkyPilot 是一个可以在任何云上运行 LLM 、 AI 应用以及批量任务的框架,旨在实现最大程度的成本节省、最高的 GPU 可用性以及受管理的执行过程。其特性包括:

  • 通过跨区域和跨云充分利用多个资源池,以获得最佳的 GPU 可用性。

  • 把费用降到最低—— SkyPilot 在各区域和云平台中为您挑选最便宜的资源。无需任何托管解决方案的额外加价。

  • 将服务扩展到多个副本上,所有副本通过单一 endpoint 对外提供服务

  • 所有内容均保存在您的云账户中(包括您的虚拟机和 bucket )

  • 完全私密 - 没有其他人能看到您的聊天记录

安装 SkyPilot

我们建议您按照 指示 安装 SkyPilot 。以下为您提供了一个使用 pip 进行安装的简单示例:

# You can use any of the following clouds that you have access to:
# aws, gcp, azure, oci, lamabda, runpod, fluidstack, paperspace,
# cudo, ibm, scp, vsphere, kubernetes
pip install "skypilot-nightly[aws,gcp]"

随后,您需要用如下命令确认是否能使用云:

sky check

若需更多信息,请查阅官方文档,确认您的云账户设置是否正确无误。

或者,您也可以使用官方提供的 docker 镜像,可以自动克隆 SkyPilot 的主分支:

# NOTE: '--platform linux/amd64' is needed for Apple Silicon Macs
docker run --platform linux/amd64 \
  -td --rm --name sky \
  -v "$HOME/.sky:/root/.sky:rw" \
  -v "$HOME/.aws:/root/.aws:rw" \
  -v "$HOME/.config/gcloud:/root/.config/gcloud:rw" \
  berkeleyskypilot/skypilot-nightly

docker exec -it sky /bin/bash

使用 SkyPilot 运行 Qwen2.5-72B-Instruct

  1. serve-72b.yaml 中列出了支持的 GPU 。您可使用配备这类 GPU 的单个运算实例来部署 Qwen2.5-72B-Instruct 服务。该服务由 vLLM 搭建,并与 OpenAI API 兼容。以下为部署方法:

    sky launch -c qwen serve-72b.yaml
    

    在启动之前,请先将 YAML 文件中的 Qwen/Qwen2-72B-Instruct 修改为 Qwen/Qwen2.5-72B-Instruct。

  2. 向该 endpoint 发送续写请求:

    IP=$(sky status --ip qwen)
    
    curl -L http://$IP:8000/v1/completions \
       -H "Content-Type: application/json" \
       -d '{
          "model": "Qwen/Qwen2.5-72B-Instruct",
          "prompt": "My favorite food is",
          "max_tokens": 512
    }' | jq -r '.choices[0].text'
    
  3. 向该 endpoint 发送对话续写请求

    curl -L http://$IP:8000/v1/chat/completions \
       -H "Content-Type: application/json" \
       -d '{
          "model": "Qwen/Qwen2.5-72B-Instruct",
          "messages": [
          {
             "role": "system",
             "content": "You are Qwen, created by Alibaba Cloud. You are a helpful and honest chat expert."
          },
          {
             "role": "user",
             "content": "What is the best food?"
          }
          ],
          "max_tokens": 512
    }' | jq -r '.choices[0].message.content'
    

使用 SkyPilot Serve 扩展服务规模

  1. 使用 SkyPilot Serve 扩展 Qwen 的服务规模非常容易,只需运行:

    sky serve up -n qwen ./serve-72b.yaml
    

    在启动之前,请先将 YAML 文件中的 Qwen/Qwen2-72B-Instruct 修改为 Qwen/Qwen2.5-72B-Instruct。

    这将启动服务,使用多个副本部署在最经济的可用位置和加速器上。 SkyServe 将自动管理这些副本,监控其健康状况,根据负载进行自动伸缩,并在必要时重启它们。

    将返回一个 endpoint ,所有发送至该endpoint的请求都将被路由至就绪状态的副本。

  2. 运行如下命令检查服务的状态:

    sky serve status qwen
    

    很快,您将看到如下输出:

    Services
    NAME        VERSION  UPTIME  STATUS        REPLICAS  ENDPOINT
    Qwen  1        -       READY         2/2       3.85.107.228:30002
    
    Service Replicas
    SERVICE_NAME  ID  VERSION  IP  LAUNCHED    RESOURCES                   STATUS REGION
    Qwen          1   1        -   2 mins ago  1x Azure({'A100-80GB': 8}) READY  eastus
    Qwen          2   1        -   2 mins ago  1x GCP({'L4': 8})          READY  us-east4-a
    

    如下所示:该服务现由两个副本提供支持,一个位于 Azure 平台,另一个位于 GCP 平台。同时,已为服务选择云服务商提供的 最经济实惠 的加速器类型。这样既最大限度地提升了服务的可用性,又尽可能降低了成本。

  3. 要访问模型,我们使用带有 curl -L (用于跟随重定向),将请求发送到 endpoint :

    ENDPOINT=$(sky serve status --endpoint qwen)
    
    curl -L http://$ENDPOINT/v1/chat/completions \
       -H "Content-Type: application/json" \
       -d '{
          "model": "Qwen/Qwen2.5-72B-Instruct",
          "messages": [
          {
             "role": "system",
             "content": "You are Qwen, created by Alibaba Cloud. You are a helpful and honest code assistant expert in Python."
          },
          {
             "role": "user",
             "content": "Show me the python code for quick sorting a list of integers."
          }
          ],
          "max_tokens": 512
    }' | jq -r '.choices[0].message.content'
    

使用 Chat GUI 调用 Qwen2.5

可以通过 FastChat 来使用 GUI 调用 Qwen2.5 的服务:

  1. 开启一个 Chat Web UI

    sky launch -c qwen-gui ./gui.yaml --env ENDPOINT=$(sky serve status --endpoint qwen)
    

    在启动之前,请先将 YAML 文件中的 Qwen/Qwen1.5-72B-Chat 修改为 Qwen/Qwen2.5-72B-Instruct。

  2. 随后,我们可以通过返回的 gradio 链接来访问 GUI :

    | INFO | stdout | Running on public URL: https://6141e84201ce0bb4ed.gradio.live
    

    你可以通过使用不同的温度和 top_p 值来尝试取得更好的结果。

总结

通过 SkyPilot ,你可以轻松地在任何云上部署 Qwen2.5 。我们建议您阅读 官方文档 了解更多用法和最新进展。