使用 dstack 部署

使用 dstack 部署#

vLLM_plus_dstack

vLLM 可以在基于云的 GPU 机器上运行,使用 dstack,这是一个在任何云上运行 LLM 的开源框架。本教程假设您已经在您的云环境中配置了凭证、网关和 GPU 配额。

要安装 dstack 客户端,请运行:

$ pip install "dstack[all]
$ dstack server

接下来,要配置您的 dstack 项目,请运行:

$ mkdir -p vllm-dstack
$ cd vllm-dstack
$ dstack init

接下来,为了使用您选择的LLM(例如 NousResearch/Llama-2-7b-chat-hf)配置一个虚拟机实例,请为 dstack Service 创建以下 serve.dstack.yml 文件:

type: service

python: "3.11"
env:
    - MODEL=NousResearch/Llama-2-7b-chat-hf
port: 8000
resources:
    gpu: 24GB
commands:
    - pip install vllm
    - vllm serve $MODEL --port 8000
model:
    format: openai
    type: chat
    name: NousResearch/Llama-2-7b-chat-hf

然后,运行以下CLI进行配置:

$ dstack run . -f serve.dstack.yml

⠸ Getting run plan...
 Configuration  serve.dstack.yml
 Project        deep-diver-main
 User           deep-diver
 Min resources  2..xCPU, 8GB.., 1xGPU (24GB)
 Max price      -
 Max duration   -
 Spot policy    auto
 Retry policy   no

 #  BACKEND  REGION       INSTANCE       RESOURCES                               SPOT  PRICE
 1  gcp   us-central1  g2-standard-4  4xCPU, 16GB, 1xL4 (24GB), 100GB (disk)  yes   $0.223804
 2  gcp   us-east1     g2-standard-4  4xCPU, 16GB, 1xL4 (24GB), 100GB (disk)  yes   $0.223804
 3  gcp   us-west1     g2-standard-4  4xCPU, 16GB, 1xL4 (24GB), 100GB (disk)  yes   $0.223804
    ...
 Shown 3 of 193 offers, $5.876 max

Continue? [y/n]: y
⠙ Submitting run...
⠏ Launching spicy-treefrog-1 (pulling)
spicy-treefrog-1 provisioning completed (running)
Service is published at ...

在配置完成后,您可以通过使用 OpenAI SDK 与模型进行交互:

from openai import OpenAI

client = OpenAI(
    base_url="https://gateway.<gateway domain>",
    api_key="<YOUR-DSTACK-SERVER-ACCESS-TOKEN>"
)

completion = client.chat.completions.create(
    model="NousResearch/Llama-2-7b-chat-hf",
    messages=[
        {
            "role": "user",
            "content": "Compose a poem that explains the concept of recursion in programming.",
        }
    ]
)

print(completion.choices[0].message.content)

备注

dstack 自动处理网关上的身份验证,使用 dstack 的令牌。同时,如果你不想配置网关,你可以配置 dstack 的 Task 而不是 ServiceTask 仅用于开发目的。如果你想了解更多关于如何使用 dstack 提供 vLLM 的实践材料,请查看 这个仓库