Skip to main content

SkyPilot

还没翻译译自英文(docs.vllm.ai)本页 29 段都还没译

SkyPilot

vLLM

vLLM can be run and scaled to multiple service replicas on clouds and Kubernetes with SkyPilot, an open-source framework for running LLMs on any cloud. More examples for various open models, such as Llama-3, Mixtral, etc., can be found in SkyPilot AI gallery.

Prerequisites

  • Go to the HuggingFace model page and request access to the model meta-llama/Meta-Llama-3-8B-Instruct.
  • Check that you have installed SkyPilot (docs).
  • Check that sky check shows clouds or Kubernetes are enabled.
pip install skypilot-nightly
sky check

Run on a single instance

See the vLLM SkyPilot YAML for serving, serving.yaml.

Yaml

Start the serving the Llama-3 8B model on any of the candidate GPUs listed (L4, A10g, ...):

HF_TOKEN="your-huggingface-token" sky launch serving.yaml --env HF_TOKEN

Check the output of the command. There will be a shareable gradio link (like the last line of the following). Open it in your browser to use the LLaMA model to do the text completion.

(task, pid=7431) Running on public URL: https://<gradio-hash>.gradio.live

Optional: Serve the 70B model instead of the default 8B and use more GPU:

HF_TOKEN="your-huggingface-token" \
  sky launch serving.yaml \
  --gpus A100:8 \
  --env HF_TOKEN \
  --env MODEL_NAME=meta-llama/Meta-Llama-3-70B-Instruct

Scale up to multiple replicas

SkyPilot can scale up the service to multiple service replicas with built-in autoscaling, load-balancing and fault-tolerance. You can do it by adding a services section to the YAML file.

Yaml

Yaml

Start the serving the Llama-3 8B model on multiple replicas:

HF_TOKEN="your-huggingface-token" \
  sky serve up -n vllm serving.yaml \
  --env HF_TOKEN

Wait until the service is ready:

watch -n10 sky serve status vllm

Example outputs:

Services
NAME  VERSION  UPTIME  STATUS  REPLICAS  ENDPOINT
vllm  1        35s     READY   2/2       xx.yy.zz.100:30001

Service Replicas
SERVICE_NAME  ID  VERSION  IP            LAUNCHED     RESOURCES                STATUS  REGION
vllm          1   1        xx.yy.zz.121  18 mins ago  1x GCP([Spot]{'L4': 1})  READY   us-east4
vllm          2   1        xx.yy.zz.245  18 mins ago  1x GCP([Spot]{'L4': 1})  READY   us-east4

After the service is READY, you can find a single endpoint for the service and access the service with the endpoint:

Commands

To enable autoscaling, you could replace the replicas with the following configs in service:

service:
  replica_policy:
    min_replicas: 2
    max_replicas: 4
    target_qps_per_replica: 2

This will scale the service up to when the QPS exceeds 2 for each replica.

Yaml

To update the service with the new config:

HF_TOKEN="your-huggingface-token" sky serve update vllm serving.yaml --env HF_TOKEN

To stop the service:

sky serve down vllm

Optional: Connect a GUI to the endpoint

It is also possible to access the Llama-3 service with a separate GUI frontend, so the user requests send to the GUI will be load-balanced across replicas.

Yaml

  1. Start the chat web UI:

    sky launch \
      -c gui ./gui.yaml \
      --env ENDPOINT=$(sky serve status --endpoint vllm)
  2. Then, we can access the GUI at the returned gradio link:

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