【AI】AWS SageMaker AI上部署托管DeepSeek系列模型及成本评估

2025-03-18T15:44:21+08:00 | 12分钟阅读 | 更新于 2025-03-18T15:44:21+08:00

Macro Zhao

【AI】AWS SageMaker AI上部署托管DeepSeek系列模型及成本评估

推荐超级课程:

@TOC

DeepSeek-R1 ,由AI初创公司DeepSeek AI 开发,是一种先进的大型语言模型(LLM),以其创新的多阶段训练过程而著称。DeepSeek-R1不仅仅依赖于传统的预训练和微调,还整合了强化学习,以实现更精细的输出。该模型采用链式思维(CoT)方法,系统地分解复杂查询为清晰、逻辑的步骤。此外,它使用NVIDIA的并行线程执行(PTX) 结构来提升训练效率,并结合了监督式微调(SFT)群体鲁棒策略优化(GRPO) 的框架,确保其结果既透明又可解释。

在这篇文章中,我们展示了如何使用Hugging Face文本生成推理(TGI)Amazon SageMaker AI 上优化托管DeepSeek-R1蒸馏模型。

模型变体

当前的DeepSeek模型系列包括以下模型:

  • DeepSeek-V3 – 一种使用混合专家(MoE)架构的LLM。像DeepSeek-V3和Mistral 这样的MoE模型,将变换器中的标准前馈神经网络替换为一组并行的子网络,称为专家。这些专家针对每个输入选择性激活,使得模型在不需要相应增加计算成本的情况下,有效地扩展到更大的规模。例如,DeepSeek-V3是一个拥有6710亿参数的模型,但在每个令牌输出时只有大约370亿参数(大约5%)被激活。DeepSeek-V3-Base是R1变体的基础模型。
  • DeepSeek-R1-Zero – 基于使用强化学习指导CoT推理能力的DeepSeek-V3微调变体,之前没有进行任何SFT。根据DeepSeek R1论文 ,DeepSeek-R1-Zero在推理行为上表现出色,但在可读性和语言混合方面遇到了挑战。
  • DeepSeek-R1 – 另一个基于DeepSeek-V3-Base的微调变体,构建方式类似于DeepSeek-R1-Zero,但具有多步骤训练流程。DeepSeek-R1在GRPO过程之前使用少量冷启动数据。它还通过拒绝采样结合来自DeepSeek-V3的监督数据,重新训练DeepSeek-V3-base。之后,重新训练的模型再经过一轮RL,形成了DeepSeek-R1模型检查点。
  • DeepSeek-R1-Distill – 基于 Qwen 和 Meta 的 Llama 的变体,通过knowledge distillation 对 Qwen2.5-Math-1.5B、Qwen2.5-Math-7B、Qwen2.5-14B、Qwen2.5-32B、Llama-3.1-8B 和 Llama-3.3-70B-Instruct 进行微调。在这个过程中,DeepSeek-R1充当教师,Qwen或Llama充当学生。这些模型保留了其现有架构,同时通过蒸馏过程获得了额外的推理能力。它们仅使用SFT进行微调,不包含任何RL技术。

下图展示了DeepSeek-R1与其他最新模型在标准基准测试(如MATH-500MMLU 等)上的性能比较。

Hugging Face文本生成推理(TGI)

Hugging Face文本生成推理(TGI) 是一个高性能、生产就绪的推理框架,专门用于高效部署和服务大型语言模型(LLMs)。它旨在处理最新变换器模型的高计算和低延迟需求,包括Llama、Falcon、Mistral、Mixtral和GPT变体——有关TGI支持模型的完整列表,请参考supported models

Amazon SageMaker AI提供了一种托管方式来部署TGI优化的模型,与Hugging Face的推理堆栈深度集成,实现可扩展且成本效益高的LLM部署。要了解更多关于Amazon SageMaker AI上的Hugging Face TGI支持,请参考这个公告 和这篇关于将模型部署到Amazon SageMaker AI 的文档。

Hugging Face TGI的关键优化

Hugging Face TGI旨在解决部署大规模文本生成模型时遇到的挑战,如推理延迟、令牌吞吐量和内存限制。

使用TGI的好处包括:

  • 张量并行 —— 将大型模型分割到多个GPU上,以实现高效的内存利用和计算
  • 连续批处理 —— 动态地将多个推理请求进行批处理,以最大化令牌吞吐量并减少延迟
  • 量化 —— 通过将模型权重转换为INT8或FP16来降低内存使用和计算成本
  • 推测解码 —— 使用较小的草案模型来加速令牌预测,同时保持准确性
  • 键值缓存优化 —— 减少长文本生成中的冗余计算,以实现更快的响应时间
  • 令牌流 —— 实时流式传输令牌,适用于聊天机器人和虚拟助手等低延迟应用

运行时TGI参数

TGI容器支持运行时配置,为LLM部署提供更大的控制权。这些配置允许您使用容器环境变量调整设置,如量化、模型并行大小(张量并行大小)、最大令牌数、数据类型(dtype)等。

影响模型部署的重要运行时参数包括:

  1. HF_MODEL_ID :此参数指定要加载的模型的标识符,可以是Hugging Face Hub的模型ID(例如,meta-llama/Llama-3.2-11B-Vision-Instruct)或包含模型文件的简单存储服务(S3)URI。
  2. HF_TOKEN :此参数变量提供从Hugging Face Hub下载受限制模型所需的访问令牌,如Llama或Mistral。
  3. SM_NUM_GPUS :此参数指定用于模型推理的GPU数量,允许模型在多个GPU上分片以提高性能。
  4. MAX_CONCURRENT_REQUESTS :此参数控制服务器可以处理的最大并发请求数量,有效地管理负载并确保最佳性能。
  5. DTYPE :此参数在加载期间设置模型权重的数据类型,选项如float16或bfloat16,影响模型的内存消耗和计算性能。

TGI容器中还有额外的可选运行时参数,这些参数已经过预优化,以在宿主硬件上最大化性能。然而,您可以修改它们以对LLM推理性能进行更大的控制:

  1. MAX_TOTAL_TOKENS:此参数设置每个请求可以处理的总输入和输出令牌数的上限,有效地定义了客户端交互的“内存预算”。
  2. MAX_INPUT_TOKENS :此参数指定每个请求的输入提示中允许的最大令牌数,控制用户输入的长度以管理内存使用并确保有效处理。
  3. MAX_BATCH_PREFILL_TOKENS :此参数限制在预填充阶段所有批处理请求处理的令牌总数,这一阶段既内存密集又计算受限,从而优化资源利用并防止内存不足错误。

有关运行时配置的完整列表,请参阅text-generation-launcher参数

在Amazon SageMaker AI上使用TGI部署DeepSeek模式

Amazon SageMaker AI提供了一种简单且流程化的方法来部署DeepSeek-R1模型,只需几行代码。此外,SageMaker端点支持自动负载平衡和自动扩展,使您的LLM部署能够根据传入请求动态扩展。在非高峰时段,端点可以缩减至零 ,优化资源使用和成本效率。

下表总结了Hugging Face Hub上由原始模型提供商DeepSeek上传的所有DeepSeek-R1模型。

模型总参数数量激活参数数量上下文长度下载
DeepSeek-R1-Zero671B37B128K🤗 deepseek-ai/DeepSeek-R1-Zero
DeepSeek-R1671B37B128K🤗 deepseek-ai/DeepSeek-R1

DeepSeek AI还提供了其DeepSeek-R1模型的蒸馏版本,以提供各种应用更高效的替代方案。

模型基础模型下载
DeepSeek-R1-Distill-Qwen-1.5BQwen2.5-Math-1.5B🤗 deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B
DeepSeek-R1-Distill-Qwen-7BQwen2.5-Math-7B🤗 deepseek-ai/DeepSeek-R1-Distill-Qwen-7B
DeepSeek-R1-Distill-Llama-8BLlama-3.1-8B🤗 deepseek-ai/DeepSeek-R1-Distill-Llama-8B
DeepSeek-R1-Distill-Qwen-14BQwen2.5-14B🤗 deepseek-ai/DeepSeek-R1-Distill-Qwen-14B
DeepSeek-R1-Distill-Qwen-32BQwen2.5-32B🤗 deepseek-ai/DeepSeek-R1-Distill-Qwen-32B
DeepSeek-R1-Distill-Llama-70BLlama-3.3-70B-Instruct🤗 deepseek-ai/DeepSeek-R1-Distill-Llama-70B

有两种方法可以在Amazon SageMaker上部署LLMs,如DeepSeek-R1及其蒸馏版本:

选项1:直接从Hugging Face Hub部署

在您的AWS账户中托管DeepSeek-R1的最简单方法是使用TGI容器部署它(及其蒸馏版本)。这些容器通过直接的运行时环境规范简化了部署过程。下面的架构图显示了从Hugging Face Hub直接下载,确保与Amazon SageMaker的无缝集成。

以下代码展示了如何将DeepSeek-R1-Distill-Llama-8B模型直接从Hugging Face Hub部署到SageMaker端点。

import sagemaker
from sagemaker.huggingface import (
    HuggingFaceModel, 
    get_huggingface_llm_image_uri
)

role = sagemaker.get_execution_role()
session = sagemaker.Session()

# 选择最新的3+版本容器 
deploy_image_uri = get_huggingface_llm_image_uri(
     "huggingface", 
     version="3.0.1" 
)

deepseek_tgi_model = HuggingFaceModel(
            image_uri=deploy_image_uri,
    env={
        "HF_MODEL_ID": "deepseek-ai/DeepSeek-R1-Distill-Llama-8B",
        "ENDPOINT_SERVER_TIMEOUT": "3600",
        ...
    },
    role=role,
    sagemaker_session=session,
    name="deepseek-r1-llama-8b-model" # 可选
)

pretrained_tgi_predictor = deepseek_tgi_model.deploy(
   endpoint_name="deepseek-r1-llama-8b-endpoint", # 可选 
    initial_instance_count=1,
    instance_type="ml.g5.2xlarge",
    container_startup_health_check_timeout=600,
    wait=False, # 设置为true以等待端点InService
)

要部署其他蒸馏模型,只需将HF_MODEL_ID更新为任何DeepSeek蒸馏模型变体,例如deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5Bdeepseek-ai/DeepSeek-R1-Distill-Qwen-32Bdeepseek-ai/DeepSeek-R1-Distill-Llama-70B

选项2:从私有S3存储桶部署

要在您的AWS账户内私有部署模型,请将DeepSeek-R1模型权重上传到S3存储桶,并将HF_MODEL_ID设置为相应的S3存储桶前缀。然后TGI将从S3检索并部署模型权重,从而消除了每次部署时的互联网下载需求。这种方法通过将权重保持在您的SageMaker端点附近来减少模型加载延迟,并允许您的组织的安全团队在部署前进行漏洞扫描。SageMaker端点还支持自动扩展,允许DeepSeek-R1根据传入请求量水平扩展,同时与弹性负载均衡无缝集成。

从S3部署DeepSeek-R1蒸馏模型变体的过程与选项1相同,只有一个关键区别:HF_MODEL_ID指向S3存储桶前缀,而不是Hugging Face Hub。在部署之前,您必须首先从Hugging Face Hub下载模型权重,并将其上传到您的S3存储桶。

deepseek_tgi_model = HuggingFaceModel(
            image_uri=deploy_image_uri,
    env={
        "HF_MODEL_ID": "s3://my-model-bucket/path/to/model",
        ...
    }, 
          vpc_config={ 
                 "Subnets": ["subnet-xxxxxxxx", "subnet-yyyyyyyy"],
    "SecurityGroupIds": ["sg-zzzzzzzz"] 
     },
    role=role, 
    sagemaker_session=session,
    name="deepseek-r1-llama-8b-model-s3" # 可选
)

部署最佳实践

以下是在SageMaker AI上部署DeepSeek-R1模型时需要考虑的一些最佳实践:

  • 在私有VPC中部署 —— 建议在虚拟私有云(VPC)内并在私有子网后部署您的LLM端点,最好是没有出口。请参见以下代码:
deepseek_tgi_model = HuggingFaceModel(

image_uri=deploy_image_uri,
env={
    "HF_MODEL_ID": "deepseek-ai/DeepSeek-R1-Distill-Llama-8B",
    "ENDPOINT_SERVER_TIMEOUT": "3600",
    ...
},
role=role,
vpc_config={ 
    "Subnets": ["subnet-xxxxxxxx", "subnet-yyyyyyyy"],
    "SecurityGroupIds": ["sg-zzzzzzzz"] 
},
sagemaker_session=session,
name="deepseek-r1-llama-8b-model" # 可选
)
  • 实施安全和合规的护栏 - 始终应用护栏以验证传入和传出模型响应的安全性、偏见和毒性。您可以使用亚马逊基石护栏 来强制执行这些保护措施,以保护您的SageMaker端点响应。

推理性能评估

本部分展示了DeepSeek-R1蒸馏变体在Amazon SageMaker AI上的推理性能示例。评估LLM在关键指标上的性能——端到端延迟、吞吐量和资源效率——对于确保实际应用中的响应性、可扩展性和成本效益至关重要。优化这些指标可以直接提升用户体验、系统可靠性和大规模部署的可行性。

所有DeepSeek-R1 Qwen(1.5B、7B、14B、32B)和Llama(8B、70B)变体都针对以下四个关键性能指标进行了评估:

  1. 端到端延迟
  2. 吞吐量(每秒令牌数)
  3. 首个令牌时间
  4. 令牌间延迟

请注意,此次性能评估的主要目的是让您了解蒸馏R1模型在不同硬件上的相对性能。我们没有尝试针对每个模型/硬件/用例组合优化性能。这些结果不应被视为特定模型在特定实例类型上的最佳可能性能。您应该始终使用自己的数据集和输入/输出序列长度进行自己的测试。

如果您有兴趣在自己的账户内运行此评估作业,请参考我们在GitHub 上的代码。

场景

我们测试了以下场景:

  • 令牌 - 使用两种输入令牌长度来评估在SageMaker端点上托管的DeepSeek-R1蒸馏变体的性能。每个测试执行了100次,并发设置为1,记录了关键性能指标的平均值。所有模型均以dtype=bfloat16运行。
    • 短长度测试 - 512个输入令牌,256个输出令牌。
    • 中等长度测试 - 3,072个输入令牌,256个输出令牌。
  • 硬件 - 测试了几个实例家族,包括p4d(NVIDIA A100)、g5(NVIDIA A10G)、g6(NVIDIA L4)和g6e(NVIDIA L40s),每个实例配备了1、4或8个GPU。有关定价和实例规格的详细信息,请参考Amazon SageMaker AI定价 。在以下表格中,绿色单元格表示模型在特定实例类型上进行了测试,红色单元格表示模型未进行测试,因为实例类型或大小对模型来说过大,或者由于GPU内存不足而无法运行。

DeepSeek-R1-Distill-Qwen-1.5B

单个GPU实例足以托管一个或多个并发的DeepSeek-R1-Distill-Qwen-1.5B服务工作者。在此测试中,部署了一个工作者,并针对四个概述的指标评估了性能。结果显示,ml.g5.xlarge在所有指标上都优于ml.g6.xlarge

DeepSeek-R1-Distill-Qwen-7B

DeepSeek-R1-Distill-Qwen-7B在ml.g5.xlargeml.g5.2xlargeml.g6.xlargeml.g6.2xlargeml.g6e.xlarge上进行了测试。ml.g6e.xlarge实例表现最佳,其次是ml.g5.2xlargeml.g5.xlarge,然后是ml.g6实例。

### DeepSeek-R1-Distill-Llama-8B

与7B变体类似,DeepSeek-R1-Distill-Llama-8B在ml.g5.xlargeml.g5.2xlargeml.g6.xlargeml.g6.2xlargeml.g6e.xlarge上进行了基准测试,其中ml.g6e.xlarge在所有实例中展现出最高的性能。

DeepSeek-R1-Distill-Qwen-14B

DeepSeek-R1-Distill-Qwen-14B在ml.g5.12xlargeml.g6.12xlargeml.g6e.2xlargeml.g6e.xlarge上进行了测试。ml.g5.12xlarge展现出最高的性能,其次是ml.g6.12xlarge。尽管性能配置较低,但由于内存容量较大,DeepSeek-R1-14B也可以部署在单个GPU的g6e实例上。

DeepSeek-R1-Distill-Qwen-32B

DeepSeek-R1-Distill-Qwen-32B需要超过48GB的内存,使得ml.g5.12xlargeml.g6.12xlargeml.g6e.12xlarge适合进行性能比较。在此测试中,ml.g6e.12xlarge提供了最高的性能,其次是ml.g5.12xlargeml.g6.12xlarge排名第三。

DeepSeek-R1-Distill-Llama-70B

DeepSeek-R1-Distill-Llama-70B在ml.g5.48xlargeml.g6.48xlargeml.g6e.12xlargeml.g6e.48xlargeml.p4dn.24xlarge上进行了测试。最佳性能是在ml.p4dn.24xlarge上观察到的,其次是ml.g6e.48xlarge,然后是ml.g6e.12xlargeml.g5.48xlarge,最后是ml.g6.48xlarge

清理

在完成评估后,为了避免产生额外费用,请确保删除您之前创建的端点。

import boto3

# 创建一个低级别的SageMaker服务客户端。
sagemaker_client = boto3.client('sagemaker', region_name=<region>)

# 删除端点
sagemaker_client.delete_endpoint(EndpointName=endpoint_name)

结论

在这篇博客中,您了解了DeepSeek模型的当前版本,以及如何使用Hugging Face TGI容器简化DeepSeek-R1蒸馏模型(或任何其他LLM)在Amazon SageMaker AI上的部署, 只需几行代码即可。您还学习了如何直接从Hugging Face Hub进行快速实验,以及从私有S3存储桶部署模型,以提供增强的安全性和模型部署性能。

最后,您看到了对所有DeepSeek-R1蒸馏模型在四个关键推理性能指标上的全面评估, 使用了13种不同的NVIDIA加速器实例类型。 这份分析提供了宝贵的见解,帮助您为DeepSeek-R1部署选择最佳实例类型。


© 2011 - 2025 Macro Zhao的分享站

关于我

如遇到加载502错误,请尝试刷新😄

Hi,欢迎访问 Macro Zhao 的博客。Macro Zhao(或 Macro)是我在互联网上经常使用的名字。

我是一个热衷于技术探索和分享的IT工程师,在这里我会记录分享一些关于技术、工作和生活上的事情。

我的CSDN博客:
https://macro-zhao.blog.csdn.net/

欢迎你通过评论或者邮件与我交流。
Mail Me

推荐好玩(You'll Like)
  • AI 动·画
    • 这是一款有趣·免费的能让您画的画中的角色动起来的AI工具。
    • 支持几十种动作生成。
我的项目(My Projects)
  • 爱学习网

  • 小乙日语App

    • 这是一个帮助日语学习者学习日语的App。
      (当然初衷也是为了自用😄)
    • 界面干净,简洁,漂亮!
    • 其中包含 N1 + N2 的全部单词和语法。
    • 不需注册,更不需要订阅!完全免费!
  • 小乙日文阅读器

    • 词汇不够?照样能读日语名著!
    • 越读积累越多,积跬步致千里!
    • 哪里不会点哪里!妈妈再也不担心我读不了原版读物了!
赞助我(Sponsor Me)

如果你喜欢我的作品或者发现它们对你有所帮助,可以考虑给我买一杯咖啡 ☕️。这将激励我在未来创作和分享更多的项目和技术。🦾

👉 请我喝一杯咖啡

If you like my works or find them helpful, please consider buying me a cup of coffee ☕️. It inspires me to create and share more projects in the future. 🦾

👉 Buy me a coffee