跳到内容

使用 vLLM 提供服务

不想自己托管?

如果您想快速开始使用 JSON 结构化生成,可以转而调用 .json,这是一个保证生成有效 JSON 的 .txt API。

Outlines 可以使用 vLLM 推理引擎和 FastAPI 服务器部署为 LLM 服务。vLLM 默认不安​​装,因此需要安装 Outlines 并运行

pip install outlines[serve]

然后您可以使用以下命令启动服务器:

python -m outlines.serve.serve --model="microsoft/Phi-3-mini-4k-instruct"

默认情况下,这将在 http://127.0.0.1:8000 启动服务器(请查看控制台输出)。如果未设置 --model 参数,将使用 OPT-125M 模型。--model 参数允许您指定任何您选择的模型。

要在多 GPU 上运行推理,您必须在初始化服务器时传递 --tensor-parallel-size 参数。例如,要在 2 个 GPU 上运行推理,可以使用以下命令:

python -m outlines.serve.serve --model="microsoft/Phi-3-mini-4k-instruct" --tensor-parallel-size 2

替代方法:通过 Docker

您可以使用 Outlines 的官方 Docker 镜像安装和运行服务器,命令如下:

docker run -p 8000:8000 outlinesdev/outlines --model="microsoft/Phi-3-mini-4k-instruct"

查询端点

然后您可以在 shell 中通过传递一个提示符以及以下任一选项来查询模型:

  1. JSON Schema 规范 或
  2. 正则表达式 模式

分别使用 schemaregex 参数传递给 /generate 端点。如果两者都指定,将使用 schema。如果两者都未指定,生成的文本将不受约束。

例如,要生成与 schema {"type": "string"}(任何字符串)匹配的字符串:

curl http://127.0.0.1:8000/generate \
    -d '{
        "prompt": "What is the capital of France?",
        "schema": {"type": "string", "maxLength": 5}
        }'

要生成与 regex (-)?(0|[1-9][0-9]*)(\.[0-9]+)?([eE][+-][0-9]+)?(一个数字)匹配的字符串:

curl http://127.0.0.1:8000/generate \
    -d '{
        "prompt": "What is Pi? Give me the first 15 digits: ",
        "regex": "(-)?(0|[1-9][0-9]*)(\\.[0-9]+)?([eE][+-][0-9]+)?"
        }'

除了使用 curl,您还可以从其他 Python 程序中使用 requests 库。

有关附加请求参数的详细信息,请查阅 vLLM 文档。如果需要根据自己的需求定制解决方案,您还可以阅读代码