一行代码
这就是使用 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
领取专属 10元无门槛券
私享最新 技术干货