首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

加速 DeepSeek 模型推理:在 2025 年通过 OpenAI SDK 简化部署

一行代码

这就是使用 OpenAI SDK 提供 Deepseek 模型(或任何开源 LLM)所需的全部…

from openai import OpenAI

client = OpenAI(api_key="<api-key>", base_url="<openai-compatible-url>")

这种方法使开发人员能够为下游应用程序提供开源模型,而无需管理 API 请求的麻烦。

事实证明,这种模式被许多技术提供商在 Python、NodeJS 和 Go 等语言中采用:

• DeepSeek

• Hugging Face

• Perplexity AI

• 以及其他许多

但要达到这一点,您首先需要在生产环境中自我部署一个合适的 Deepseek 模型进行推理。

本文的内容如下:

1. 介绍 Deepseek 模型

2. 基于 LLM 的应用程序的高层架构

3. 使用 vLLM 和 TGI 进行推理

4. 基于 OpenAI SDK 的构建

1. 介绍 Deepseek 模型

在本节中,我们将介绍在 这篇论文 中介绍的 Deepseek 模型的高层描述。这些模型有两种不同的类型:

• 具有 685B 参数的密集模型:Deepseek-R1 和 Deepseek-V3。

• 具有 1.5B、8B、32B 和 70B 的蒸馏模型。关于模型卡的更多详细信息可以在 这里 找到。

这些模型基于 2017 年谷歌提出的相同解码器自回归 transformers 架构。然而,作者开发了一种创新的训练范式,利用强化学习在训练过程中强制模型进行“推理”。作者声称他们的性能与 OpenAI 和 Claude 等闭源提供商相当。以下是使用传统基准进行比较的快照。

在接下来的部分中,我们将探讨如何在生产环境中有效地部署开源 LLM,重点使用 vLLM 和文本生成推理(TGI)等库。

这些工具旨在优化 LLM 的部署,前提是您具备必要的硬件和软件基础设施。

2. 高层架构

上面的图表突出了基于 AI 的应用程序的典型架构。需要注意的是,应用程序服务器主要处理用户请求、API 集成以及从 AI 处理传递结果。

LLM 推理服务与应用程序服务是分开的,因为它们有不同的硬件和软件基础设施需求。此外,这种分离增强了容错性和可靠性,确保 AI 处理层的故障或高负载不会影响核心应用功能。

该解决方案是可扩展的,因为应用程序服务器不管理诸如 LLM 推理等重任务,这些任务完全由调度器处理。调度器能够将任务委派给工作者并管理异步工作流。

3. 为推理提供 Deepseek 模型

为了确保 LLM 的生产就绪部署,我们建议使用 Docker 容器来提供推理任务。这种方法促进了横向扩展,并允许在必要时集成诸如 Kubernetes 的编排和负载均衡工具。

虽然 Kubernetes 的实现超出了本文的范围,但我们将介绍两个开源库——vLLM 和文本生成推理(TGI)——它们使创建针对低延迟 LLM 推理优化的 Docker 镜像成为可能,从而降低运营成本。我们将使用DeepSeek-R1-Distill-Qwen-32B作为示例。

3.1. 使用 vLLM 进行推理

有关使用 vLLM 的端到端方法,可以参见 这篇文章。假设您已配置好用于服务DeepSeek-R1-Distill-Qwen-32B的所需硬件,您可以使用以下命令启动 vLLM 服务器的实例(例如使用 VM 或 EC2):

docker run \

--runtime nvidia \

--gpus all \

-v ~/.cache/huggingface:/root/.cache/huggingface \

--env "HUGGING_FACE_HUB_TOKEN=<HF_TOKEN>" \

--env "VLLM_API_KEY=<VLLM_API_KEY>" \

-p 8000:8000 \

--ipc=host \

vllm/vllm-openai:latest \

--model deepseek-ai/DeepSeek-R1-Distill-Qwen-32B \

--max_model_len 10000

此docker run命令初始化一个配置为使用vllm-openai镜像进行 GPU 加速推理的 Docker 容器。以下是其组件的详细说明:

--runtime nvidia:指定在容器内使用 NVIDIA 的运行时以支持 GPU。

--gpus all:将所有可用 GPU 分配给容器,确保它可以利用所需的硬件进行处理。

-v ~/.cache/huggingface:/root/.cache/huggingface:将本地 Hugging Face 缓存目录挂载到容器中,允许共享访问预下载的模型文件,防止重复下载。

--env "HUGGING_FACE_HUB_TOKEN=<HF_TOKEN>":在容器内设置HUGGING_FACE_HUB_TOKEN环境变量,以便对 Hugging Face 的模型库进行身份验证访问。将替换为您的实际令牌。

--env "VLLM_API_KEY=<VLLM_API_KEY>":设置VLLM_API_KEY环境变量,该变量可能是vllm框架内某些功能所需。将替换为您的实际 API 密钥。

-p 8000:8000:将容器的 8000 端口映射到主机上的 8000 端口,使容器的服务可以通过 `http://localhost:8000` 访问。

--ipc=host:与容器共享主机的进程间通信命名空间,可以提高某些操作的性能。

vllm/vllm-openai:latest:指定要使用的 Docker 镜像,在这种情况下是vllm-openai的最新版本。

--model deepseek-ai/DeepSeek-R1-Distill-Qwen-32B:指示要在容器内加载的特定模型。

--max_model_len 10000:将模型的最大序列长度设置为 10,000 个标记。

执行命令后,您的服务器将在 http://localhost:8000 上运行。该服务器旨在与 OpenAI 的 API 兼容,使您能够无缝地与 OpenAI 的 SDK 和工具一起使用。

为了确保安全访问您的服务器,生成一个秘密 API 密钥非常重要。此密钥将有助于保护您的端点免受未经授权的使用。

对于那些希望增强服务器功能的人,vLLM 提供了“推理模式”。此功能使模型能够提供详细的推理步骤以及其答案,从而深入了解其决策过程。要了解有关启用和使用此模式的更多信息,请参考 vLLM 推理输出文档。

3.1. 使用 TGI 进行推理

与 vLLM 类似,您可以使用 官方 TGI Docker 镜像 运行 Docker 容器:

docker run \

--gpus all \

--shm-size 1g \

-p 8000:80 \

-v ~/.cache/huggingface:/data \

-e HF_TOKEN=<your_huggingface_token> \

ghcr.io/huggingface/text-generation-inference:2.0 \

--model-id deepseek-ai/DeepSeek-R1-Distill-Qwen-32B

执行后,服务器将可在 `http://localhost:8000` 上访问。该服务器同样与 OpenAI 兼容。

4. 在下游应用中与 OpenAI SDK 集成

现在您已成功在本地部署DeepSeek-R1-Distill-Qwen-32B,让我们探讨如何使用 OpenAI SDK 将其集成到您的下游应用中。但首先,让我们了解这样做的重要性。

4.1. 为什么使用 OpenAI SDK 是最佳选择

以下是一些非详尽的好处列表:

从 OpenAI 切换到开源模型:想象一下,您使用 OpenAI API 构建了一个应用程序。后来,您可能希望尝试或完全过渡到开源模型。通过 vLLM 和 TGI 部署的 OpenAI 兼容端点,您可以无缝切换。

异步操作:使用 async/await 进行非阻塞调用,这在并发环境中显著提高效率。

流式支持:SDK 支持实时标记流式传输,通过生成输出时提供增强的用户体验。

统一的 API 接口:享受同步和异步操作的一致接口,简化了在应用程序各个部分之间的集成和维护。

强大的错误处理:内置错误管理和自动重试可以最小化中断,即使在网络问题发生时也能保持稳定。

可扩展性和灵活性:凭借可配置的超时、日志记录和速率限制选项,您的应用程序可以轻松扩展以处理大量请求。

过渡的便利性:SDK 的设计最小化了供应商锁定,使得在专有模型和开源模型之间过渡变得更容易,而无需彻底重构您的代码库。

4.2. 如何使用 OpenAI SDK

在本文中,我们展示了如何使用 vLLM 和 TGI 部署一个兼容 OpenAI 的服务器。这个设置允许您无缝地实验开源模型,如DeepSeek-R1-Distill-Qwen-32B,同时保持与为 OpenAI API 构建的应用程序的兼容性。

Python

NodeJS

CURL

curl http://localhost:8000 \

-H "Content-Type: application/json" \

-H "Authorization: Bearer <api-key-if-applicable>" \

-d '{

      "model": "DeepSeek-R1-Distill-Qwen-32B",

      "messages": [

        {"role": "system", "content": "You are a helpful assistant."},

        {"role": "user", "content": "Tell me joke!"}

      ],

      "stream": false

    }'

tags: #open-source #docker #vllm #git #deepseek

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OuHiWVOevnyBI9m2U30L_R6A0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券