今天,我们很高兴地宣布,DeepSeek的现已通过和发布。借助这一发布,您现在可以部署的第一代前沿模型,以及从1.5亿到700亿参数范围的精简版本,在AWS上构建、实验并负责任地扩展您的生成AI想法。
在这篇文章中,我们将演示如何在市场和上开始使用DeepSeek-R1。您可以遵循类似步骤来部署这些模型的精简版本。
DeepSeek-R1是由开发的一种大型语言模型(LLM),它采用强化学习技术,通过从DeepSeek-V3-Base基础上进行多阶段训练过程,增强模型的推理能力。它的一项关键特色是使用来改进模型的响应,超越标准的预训练和微调过程。通过结合RL,DeepSeek-R1能够更有效地适应用户反馈和目标,从而提高相关性和清晰度。此外,DeepSeek-R1采用方法,能够逐步拆解复杂查询并进行推理。这样的指导性推理过程使模型能够生成更准确、透明和详细的答案。结合基于RL的微调和CoT能力,DeepSeek-R1旨在生成结构化的响应,同时重点关注可解释性和用户交互。凭借其广泛的能力,DeepSeek-R1已受到行业的关注,成为一种多功能的文本生成模型,可以集成到代理、逻辑推理和数据解读等多种工作流中。
DeepSeek-R1采用专家混合体(MoE)架构,模型大小为6710亿参数。这种架构允许激活370亿参数,通过将查询路由到最相关的专家“集群”,实现高效推理。一种高效的方法使模型能够在不同问题领域中专业化,同时保持整体效率。DeepSeek-R1在推理时需要至少800GB的FP8格式的高带宽内存(HBM)。在本文中,我们将使用ml.p5e.48xlarge实例来部署模型。ml.p5e.48xlarge配备8个NvidiaH200 GPU,提供1128 GB的GPU内存。
DeepSeek-R1精简版模型将主要R1模型的推理能力引入基于流行开源模型(如Qwen(1.5B、7B、14B和32B)和Llama(8B和70B))的更高效架构。精简训练是指训练较小、更高效的模型,以模仿较大DeepSeek-R1模型的行为和推理模式,并利用其作为教师模型。
您可以通过或部署DeepSeek-R1模型。由于DeepSeek-R1是一个新兴模型,我们建议您在部署时采取防护措施。在本博客中,我们将使用来引入保护措施,防止有害内容,并根据关键安全标准评估模型。在写这篇博客时,对DeepSeek-R1的部署,SageMakerJumpStart和Bedrock市场的防护措施仅支持ApplyGuardrailAPI。您可以创建多个适合不同用例的防护措施,并将其应用于DeepSeek-R1模型,改善用户体验并在生成AI应用中标准化安全控制。
要部署DeepSeek-R1模型,您需要访问ml.p5e实例。要检查您的P5e配额,打开服务配额控制台,在AWS服务 中选择AmazonSageMaker ,确认您使用的是ml.p5e.48xlarge进行端点使用。请确保在您部署的AWS区域内至少有一个ml.P5e.48xlarge实例。若需请求限额增加,请创建并与您的账户团队联系。
由于您将使用AmazonBedrock防护措施部署此模型,因此请确保您具备正确的权限以使用AmazonBedrock防护措施。有关说明,请参见。
Amazon Bedrock防护措施允许您引入保护措施,防止有害内容,并根据关键安全标准评估模型。您可以使用Amazon Bedrock
ApplyGuardrail
API对DeepSeek-R1模型实施安全措施。这使您能够在Amazon Bedrock市场和SageMakerJumpStart中评估用户输入和模型输出。您可以使用AmazonBedrock控制台或API创建防护措施。有关创建防护措施的示例代码,请参见。
总体流程涉及以下步骤:首先,系统接收模型输入。该输入通过ApplyGuardrail
API进行处理。如果输入通过防护检查,则会发送到模型进行推理。接收模型输出后,再次应用防护检查。如果输出通过最终检查,则作为最终结果返回。如果输入或输出受到防护措施的干预,将返回一条消息,指明干预的性质以及是在输入还是输出阶段发生的。以下部分展示了使用此API进行推理的示例。
Amazon Bedrock市场为您提供访问超过100种流行、新兴和专业的机会。要在Amazon Bedrock中访问DeepSeek-R1,请执行以下步骤:
InvokeModel
API来调用模型。它不支持对话API和其他Amazon Bedrock工具。<|begin▁of▁sentence|><|User|>内容用于推理<|Assistant|>
。这是一种很好的方式,可以在将模型集成到您的应用中之前,探索模型的推理和文本生成能力。控制台提供即时反馈,帮助您理解模型如何响应各种输入,从而让您微调提示,获得最佳结果。
以下代码示例演示了如何通过Amazon Bedrock使用invoke_model
和ApplyGuardrail
API来执行已部署的DeepSeek-R1模型推理。您可以通过AmazonBedrock控制台或API创建防护措施。有关创建防护措施的示例代码,请参见。创建防护措施后,使用以下代码在API上实现防护措施。脚本初始化bedrock_runtime
客户端,配置推理参数,并发送请求以根据用户提示生成文本。
# 初始化Bedrock客户端
bedrock_runtime = boto3.client("bedrock-runtime")
# 配置
MODEL_ID = "your-model-id" # Bedrock模型ID GUARDRAIL_ID = "your-guardrail-id"
GUARDRAIL_VERSION = "your-guardrail-version"
class ChatTemplate(Enum): LLAMA = "llama" QWEN = "qwen" DEEPSEEK = "deepseek"
def format_prompt(prompt, template): """根据模型聊天模板格式化提示""" templates = {
ChatTemplate.LLAMA:
f"""<|begin_of_text|><|start_header_id|>system<|end_header_id|>
您是一个有用的助手<|eot_id|><|start_header_id|>user<|end_header_id|>
{prompt}<|eot_id|><|start_header_id|>assistant<|end_header_id|>""",
ChatTemplate.QWEN: f"""<|im_start|>user\n{prompt}<|im_end|>\n<|im_start|>assistant""",
ChatTemplate.DEEPSEEK: f"""您是一个有用的助手 <|User|>{prompt}<|Assistant|>"""
}
return templates[template]
def invoke_with_guardrails(prompt, template=ChatTemplate.DEEPSEEK,
max_tokens=1000, temperature=0.6, top_p=0.9): """ 使用输入和输出防护措施调用Bedrock模型 """ #
应用输入防护措施 input_guardrail = bedrock_runtime.apply_guardrail(
guardrailIdentifier=GUARDRAIL_ID, guardrailVersion=GUARDRAIL_VERSION,
source='INPUT', content=[{"text": {"text": prompt}}] )
if input_guardrail['action'] == 'GUARDRAIL_INTERVENED':
return f"输入被阻止: {input_guardrail['outputs'][0]['text']}"
# 使用所选模板格式化提示
formatted_prompt = format_prompt(prompt, template)
# 准备模型输入
request_body = {
"inputs": formatted_prompt,
"parameters": {
"max_new_tokens": max_tokens,
"top_p": top_p,
"temperature": temperature
}
}
# 调用模型
response = bedrock_runtime.invoke_model(
modelId=MODEL_ID,
body=json.dumps(request_body)
)
# 解析模型响应
model_output = json.loads(response['body'].read())['generated_text']
# 应用输出防护措施
output_guardrail = bedrock_runtime.apply_guardrail(
guardrailIdentifier=GUARDRAIL_ID,
guardrailVersion=GUARDRAIL_VERSION,
source='OUTPUT',
content=[{"text": {"text": model_output}}]
)
if output_guardrail['action'] == 'GUARDRAIL_INTERVENED':
return f"输出被阻止: {output_guardrail['outputs'][0]['text']}"
return model_output
# 示例用法
if **name** == "**main** ": prompt = "1+1等于多少?" result =
invoke_with_guardrails(prompt, template=ChatTemplate.DEEPSEEK) print(result)
SageMaker JumpStart是一个机器学习(ML)中心,内置算法和预构建的ML解决方案,您可以通过几次点击进行部署。使用SageMakerJumpStart,您可以根据自己的用例自定义预训练模型,使用您的数据并将其部署到生产中,无论是使用UI还是SDK。
通过SageMaker JumpStart部署DeepSeek-R1模型提供两种方便的方法:使用直观的SageMaker JumpStartUI或通过SageMaker Python SDK编程实现。让我们探索这两种方法,以帮助您选择最适合您需求的方法。
完成以下步骤以使用SageMaker JumpStart部署DeepSeek-R1:
关于 标签包含重要细节,例如:
在您部署模型之前,建议审查模型详细信息和许可条款,以确认其与您的用例的兼容性。
Leave a Reply