DeepSeek-V3是由深度求索公司推出的一款拥有6710亿参数的专家混合(MoE)大语言模型,DeepSeek-R1是基于DeepSeek-V3-Base训练的高性能推理模型。Model Gallery提供了标准部署和多种加速部署方式,帮助您一键部署DeepSeek-V3和DeepSeek-R1系列模型。
模型部署
进入Model Gallery页面。
登录PAI控制台,在顶部左上角根据实际情况选择地域。
在左侧导航栏选择工作空间列表,单击指定工作空间名称,进入对应工作空间。
在左侧导航栏选择快速开始 > Model Gallery。
选择模型。
在Model Gallery页面右侧的模型列表中,找到需要部署的模型卡片,单击进入模型详情页面。
我们以DeepSeek-R1-Distill-Qwen-7B为例(蒸馏版模型,尺寸较小,适合快速上手实践,且所需计算资源成本低,还可以使用免费试用资源)。
您可以通过模型列表查看更多DeepSeek模型,了解不同模型支持的部署方式和最大Token数。
配置部署参数。
单击右上角部署,进入部署页面。系统提供了默认部署参数,您可以参考以下说明进行修改。确认所有信息无误后,单击部署按钮,即可等待服务部署成功。
使用公共资源部署,服务进入运行中状态开始按时长计费。即使未实际调用服务仍会产生费用。请及时停止无用的模型服务,避免额外支出。
部署方式:推荐使用SGLang/vLLM加速部署(完全兼容Open API标准,适配主流AI应用接入)。您可以参见部署方式说明了解更多。
部署资源:默认使用公共资源,并给出了推荐规格。
使用公共资源部署时,资源规格选择列表中系统已自动过滤出模型可用的公共资源规格。如资源库存不足,您可以考虑切换地域。部署DeepSeek-R1或DeepSeek-V3可参见满血版部署可选资源规格进行选择。
如您选择使用资源配额,请注意根据机型选择对应的部署方式。如GP7V机型,部署方式选择SGLang加速部署下的单机-标准机型,将会部署失败,请选择单机-GP7V机型。
查看更多部署信息。
您可以在Model Gallery > 任务管理 > 部署任务中单击已部署的服务名称,进入服务详情页,查看部署的进度、服务调用信息。还可以通过右上角的更多信息,跳转到PAI-EAS的模型服务详情页,获取更多信息。
模型调用
对于DeepSeek-R1系列模型,官方给出使用建议如下:
temperature设置在0.5-0.7之间,推荐 0.6,防止输出重复或不连贯。
不要添加system prompt,所有的指令应添加在 user prompt 中。
针对数学类问题,建议在 prompt 中包含“请逐步推理,并将最终答案放在\boxed{}中。”
使用BladeLLM加速部署方式,如果不指定max_tokens参数,默认会按照max_tokens=16进行截断。建议您根据实际需要调整请求参数max_tokens。
WebUI使用
仅 Transformers 标准部署提供 Web 应用。加速部署则提供 WebUI 代码下载,您需要在本地启动 Web 应用。
Transformers标准部署
在Model Gallery > 任务管理 > 部署任务中单击已部署的服务名称,在服务详情页面右上角单击查看WEB应用,即可通过ChatLLM WebUI进行实时交互。
加速部署
Gradio是一个基于Python的用户友好的界面库,能快速创建机器学习模型的交互式界面。我们提供了使用Gradio构建WebUI的代码,参考以下步骤,本地启动Web应用。
下载WebUI代码。您可以通过GitHub页面下载,或者直接点击OSS链接下载。两种方式下载的代码完全一样。
BladeLLM:BladeLLM_github、 BladeLLM_oss
vLLM、SGLang:vLLM/SGLang_github、vLLM/SGLang_oss
执行以下命令,启动Web应用。
python webui_client.py --eas_endpoint "<EAS API Endpoint>" --eas_token "<EAS API Token>"
其中,<EAS API Endpoint> 需替换为部署服务的访问地址,<EAS API Token>需替换为部署服务的Token。您可以在Model Gallery > 任务管理 > 部署任务中单击已部署的服务名称,进入服务详情页,单击查看调用信息,获取访问地址和Token。
在线调试
在Model Gallery > 任务管理 > 部署任务中单击已部署的服务名称,在在线测试模块中找到EAS在线调试的入口。
以SGLang标准部署为例,使用对话接口<EAS_ENDPOINT>/v1/chat/completions
发起POST请求。
补充请求路径。在线调试中已经填充的路径是
<EAS_ENDPOINT>
,您需要在后面补充路径v1/chat/completions
。构造请求体。
如果您的提示词是:请计算3+5等于几?
对于对话接口,您的请求体格式如下。其中model参数值为模型列表接口
<EAS_ENDPOINT>/v1/models
获取的模型名称,这里以DeepSeek-R1-Distill-Qwen-7B为例。{ "model": "DeepSeek-R1-Distill-Qwen-7B", "messages": [ { "role": "system", "content": "You are a helpful assistant." }, { "role": "user", "content": "请计算3+5等于几?" } ] }
发起请求。
其他部署方式对应的请求路径与请求数据示例如下:
API调用
获取服务的访问地址和Token。
在Model Gallery > 任务管理 > 部署任务中单击已部署的服务名称,进入服务详情页。
单击查看调用信息获取调用的访问地址和Token。
对话接口调用示例。
其中, <EAS_ENDPOINT>需替换为部署服务的访问地址,<EAS_TOKEN>需替换为部署服务的Token。
OpenAI SDKHTTP注意:
需要补全endpoint最后的/v1。
BladeLLM加速部署和Transformers标准部署不支持使用client.models.list()方式获取模型列表,您可以直接指定model的值为""以兼容使用。
SGLang/vLLM加速部署BladeLLM加速部署/Transformers标准部署from openai import OpenAI ##### API 配置 ##### # <EAS_ENDPOINT>需替换为部署服务的访问地址,<EAS_TOKEN>需替换为部署服务的Token。 openai_api_key = "<EAS_TOKEN>" openai_api_base = "<EAS_ENDPOINT>/v1" client = OpenAI( api_key=openai_api_key, base_url=openai_api_base, ) models = client.models.list() model = models.data[0].id print(model) stream = True chat_completion = client.chat.completions.create( messages=[ {"role": "user", "content": "你好,请介绍一下你自己。"} ], model=model, max_completion_tokens=2048, stream=stream, ) if stream: for chunk in chat_completion: print(chunk.choices[0].delta.content, end="") else: result = chat_completion.choices[0].message.content print(result)
from openai import OpenAI ##### API 配置 ##### # <EAS_ENDPOINT>需替换为部署服务的访问地址,<EAS_TOKEN>需替换为部署服务的Token。 openai_api_key = "<EAS_TOKEN>" openai_api_base = "<EAS_ENDPOINT>/v1" client = OpenAI( api_key=openai_api_key, base_url=openai_api_base, ) # BladeLLM加速部署和Transformers标准部署目前不支持使用client.models.list()方式获取模型名称,您可以直接指定model的值为""以兼容使用。 model="" stream = True chat_completion = client.chat.completions.create( messages=[ {"role": "user", "content": "你好,请介绍一下你自己。"} ], model=model, max_completion_tokens=2048, stream=stream, ) if stream: for chunk in chat_completion: print(chunk.choices[0].delta.content, end="") else: result = chat_completion.choices[0].message.content print(result)
SGLang/vLLM加速部署BladeLLM加速部署/Transformers标准部署其中,<model_name>请替换为模型列表接口
<EAS_ENDPOINT>/v1/models
获取的模型名称。curlPythoncurl -X POST \ -H "Content-Type: application/json" \ -H "Authorization: <EAS_TOKEN>" \ -d '{ "model": "<model_name>", "messages": [ { "role": "system", "content": "You are a helpful assistant." }, { "role": "user", "content": "hello!" } ] }' \ <EAS_ENDPOINT>/v1/chat/completions
import json import requests # <EAS_ENDPOINT>需替换为部署服务的访问地址,<EAS_TOKEN>需替换为部署服务的Token。 EAS_ENDPOINT = "<EAS_ENDPOINT>" EAS_TOKEN = "<EAS_TOKEN>" url = f"{EAS_ENDPOINT}/v1/chat/completions" headers = { "Content-Type": "application/json", "Authorization": EAS_TOKEN, } # <model_name>请替换为模型列表接口<EAS_ENDPOINT>/v1/models获取的模型名称。 model = "<model_name>" stream = True messages = [ {"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": "你好,请介绍一下你自己。"}, ] # 使用BladeLLM加速部署方式,如果不指定max_tokens参数,默认会按照max_tokens=16进行截断。建议您根据实际需要调整请求参数max_tokens。 req = { "messages": messages, "stream": stream, "temperature": 0.0, "top_p": 0.5, "top_k": 10, "max_tokens": 300, "model": model, } response = requests.post( url, json=req, headers=headers, stream=stream, ) if stream: for chunk in response.iter_lines(chunk_size=8192, decode_unicode=False): msg = chunk.decode("utf-8") if msg.startswith("data"): info = msg[6:] if info == "[DONE]": break else: resp = json.loads(info) print(resp["choices"][0]["delta"]["content"], end="", flush=True) else: resp = json.loads(response.text) print(resp["choices"][0]["message"]["content"])
curlPythoncurl -X POST \ -H "Content-Type: application/json" \ -H "Authorization: <EAS_TOKEN>" \ -d '{ "messages": [ { "role": "system", "content": "You are a helpful assistant." }, { "role": "user", "content": "hello!" } ] }' \ <EAS_ENDPOINT>/v1/chat/completions
import json import requests # <EAS_ENDPOINT>需替换为部署服务的访问地址,<EAS_TOKEN>需替换为部署服务的Token。 EAS_ENDPOINT = "<EAS_ENDPOINT>" EAS_TOKEN = "<EAS_TOKEN>" url = f"{EAS_ENDPOINT}/v1/chat/completions" headers = { "Content-Type": "application/json", "Authorization": EAS_TOKEN, } stream = True messages = [ {"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": "你好,请介绍一下你自己。"}, ] # 使用BladeLLM加速部署方式,如果不指定max_tokens参数,默认会按照max_tokens=16进行截断。建议您根据实际需要调整请求参数max_tokens。 req = { "messages": messages, "stream": stream, "temperature": 0.2, "top_p": 0.5, "top_k": 10, "max_tokens": 300, } response = requests.post( url, json=req, headers=headers, stream=stream, ) if stream: for chunk in response.iter_lines(chunk_size=8192, decode_unicode=False): msg = chunk.decode("utf-8") if msg.startswith("data"): info = msg[6:] if info == "[DONE]": break else: resp = json.loads(info) if(resp["choices"][0]["delta"].get("content") is not None): print(resp["choices"][0]["delta"]["content"], end="", flush=True) else: resp = json.loads(response.text) print(resp["choices"][0]["message"]["content"])
不同的模型以及不同的部署框架,在使用推理服务时也会存在区别。您可以在Model Gallery的模型介绍页查看更多API调用方式的详细说明。
资源清理
使用公共资源部署的实例,创建成功后按实例运行时长计费,不满1小时按具体分钟数折算计费;为避免产生更多资源消耗,请您在使用完成后及时停止或删除实例。
部署方式说明
不同部署方式简介如下:
BladeLLM加速部署(推荐):BladeLLM是阿里云 PAI 自研的高性能推理框架。
SGLang加速部署(推荐):SGLang是一个适用于大型语言模型和视觉语言模型的快速服务框架。
vLLM加速部署:vLLM是一个业界流行的用于LLM推理加速的库。
Transformers标准部署:不使用任何推理加速的标准部署。
不同模型支持的部署方式不完全一样,您可以通过模型列表查看模型支持的部署方式、最大Token数以及模型部署所需的最低配置。
使用建议:
考虑性能和支持的最大Token数,推荐使用BladeLLM、SGLang加速部署。
考虑OpenAI API的兼容性,推荐使用SGLang、vLLM加速部署,可完全兼容OpenAI API的调用方式,更易于接入各类应用。
标准部署支持API调用方式及WebUI界面。加速部署仅支持API调用方式。
模型列表
DeepSeek-R1、DeepSeek-V3满血版模型的参数量较大(671B),所需配置和成本较高(8卡96G显存以上)。建议您选择蒸馏版模型(机器资源较充足、部署成本较低)。
根据测试,DeepSeek-R1-Distill-Qwen-32B模型的效果和成本较优,适合云上部署,可尝试作为DeepSeek-R1的替代模型。您也可以选择7B、8B、14B等其他蒸馏模型部署,Model Gallery还提供了模型评测功能,可以评测模型实际效果(评测入口在模型详情页右上角)。
满血版模型
下表提供了部署所需的最低配置,以及使用不同机型部署时在不同推理框架上支持的最大Token数。
模型 | 支持的最大Token数(输入+输出) | 最低配置 | ||
SGLang加速部署(推荐) | vLLM加速部署 | Transformers标准部署 |
模型 | 支持的最大Token数(输入+输出) | 最低配置 | ||
SGLang加速部署(推荐) | vLLM加速部署 | Transformers标准部署 | ||
DeepSeek-R1 | 163840 |
| 不支持 | 单机8卡GU120(8 * 96 GB显存) |
DeepSeek-V3 | 163840 |
| 2000 | 单机8卡GU120(8 * 96 GB显存) |
部署可选资源规格
如果部署DeepSeek-R1或DeepSeek-V3模型,您可以选择的机型包括:
单机-标准机型:ml.gu8v.c192m1024.8-gu120、ecs.gn8v-8x.48xlarge(公共资源,库存可能较紧张),ecs.ebmgn8v.48xlarge(无法通过公共资源使用,请购买EAS专属资源)
单机-GP7V机型:ml.gp7vf.16.40xlarge(公共资源,仅可竞价使用,当标准机型资源紧张时,请切换至华北6(乌兰察布)寻找GP7V资源,部署时请务必配置VPC)
如果对性能要求较高,可以使用分布式部署。
分布式-GU7X机型:4台ml.gu7xf.8xlarge-gu108 (公共资源,仅可竞价使用,请切换地域至华北6(乌兰察布)使用,部署时请务必配置VPC)
分布式-灵骏智算资源:需开通白名单使用,如需咨询请联系销售经理或提交工单。请切换地域至华北6(乌兰察布)使用,部署时请务必配置VPC。(PAI灵骏智算资源提供高性能、高弹性异构算力服务,资源利用率可提升3倍,详情请参见PAI灵骏智算服务概述)
蒸馏版模型
模型 | 支持的最大Token数(输入+输出) | 最低配置 | |||
BladeLLM加速部署(推荐) | SGLang加速部署(推荐) | vLLM加速部署 | Transformers标准部署 |
模型 | 支持的最大Token数(输入+输出) | 最低配置 | |||
BladeLLM加速部署(推荐) | SGLang加速部署(推荐) | vLLM加速部署 | Transformers标准部署 | ||
DeepSeek-R1-Distill-Qwen-1.5B | 131072 | 131072 | 131072 | 131072 | 1卡A10(24 GB显存) |
DeepSeek-R1-Distill-Qwen-7B | 131072 | 131072 | 32768 | 131072 | 1卡A10(24 GB显存) |
DeepSeek-R1-Distill-Llama-8B | 131072 | 131072 | 32768 | 131072 | 1卡A10(24 GB显存) |
DeepSeek-R1-Distill-Qwen-14B | 131072 | 131072 | 32768 | 131072 | 1卡GPU L(48 GB显存) |
DeepSeek-R1-Distill-Qwen-32B | 131072 | 131072 | 32768 | 131072 | 2卡GPU L(2 * 48 GB显存) |
DeepSeek-R1-Distill-Llama-70B | 131072 | 131072 | 32768 | 131072 | 2卡GU120(2 * 96 GB显存) |
关于成本
由于DeepSeek-V3和DeepSeek-R1模型较大,模型部署费用较高,建议用于正式生产环境。
您还可以选择部署经过知识蒸馏的轻量级模型,这些模型的参数量显著减少,从而大幅降低部署成本。
如果您从未使用过EAS,可以前往阿里云试用中心领取PAI-EAS试用资源。领取成功后,可以在Model Gallery选择最低配置为 A10 的模型(如DeepSeek-R1-Distill-Qwen-7B)进行部署,并在部署时修改资源规格为试用活动中的机型。
对于长期使用的模型,您可以采用公共资源组搭配节省计划的方式,或者购买预付费EAS资源组来节约成本。
如果是非生产环境使用,可以在部署时打开竞价模式,但需满足一定条件才能竞价成功,且有资源不稳定的风险。
如果您使用公共资源部署,停止服务即可停止计费。更多关于部署计费问题,请参见模型在线服务(EAS)计费说明。
模型部署FAQ
点击部署后服务长时间等待
可能的原因:
当前地域下机器资源不足。
由于模型较大,模型加载耗时较长(对于DeepSeek-R1、DeepSeek-V3这样的大模型,需要20-30min)。
您可以耐心等待观察一段时间,如果服务仍长时间无法正常启动运行,建议尝试以下步骤:
进入任务管理-部署任务,查看部署任务详情页。在页面右上角单击
,跳转到PAI-EAS的模型服务详情,查看服务实例状态。关闭当前服务,并在控制台左上角切换到其他地域重新部署服务。
对于DeepSeek-R1、DeepSeek-V3这样的超大参数量模型,需要8卡GPU才能启动服务(资源库存较紧张),您可以选择部署DeepSeek-R1-Distill-Qwen-7B等蒸馏小模型(资源库存较富裕)。
模型调用FAQ
调用API返回404
请检查调用的URL是否加上了OpenAI的API后缀,例如v1/chat/completions。详情可以参考模型主页调用方式介绍。
请求太长导致网关超时
部署使用的默认网关请求超时时间是180秒,如果需要延长超时时间,可以配置专属网关,并提交工单调整专属网关的请求超时时间,最大可以调整到600秒。
如何在线调试模型
详情请参见如何在线调试已部署的模型?
为何没有“联网搜索”
“联网搜索”功能并不是仅通过直接部署一个模型服务就能实现的,而是需要基于该模型服务自行构建一个AI应用(Agent)来完成。
通过PAI的大模型应用开发平台LangStudio,可以构建一个联网搜索的AI应用,详情请参考基于LangStudio&阿里云信息查询服务搭建DeepSeek联网搜索应用流。
模型跳过思考怎么办?
如果部署DeepSeek-R1模型,针对模型有时会跳过思考过程的情况,可采用DeepSeek更新的强制思考的chat模板。使用方式:
修改启动命令。
如图,在服务配置中,编辑JSON配置,修改containers-script字段,加上"--chat-template /model_dir/template_force_thinking.jinja"(可以加在"--served-model-name DeepSeek-R1"之后)。
如果是已经部署的服务,在Model Gallery > 任务管理 > 部署任务中单击已部署的服务名称,在详情页面右上角单击更新服务,即可进入上述页面。
请求体修改。在每次请求中,message最后加上{"role": "assistant", "content": "<think>\n"}。
如何接入Chatbox或Dify
以DeepSeek-R1-Distill-Qwen-7B模型为例,建议采用SGLang或vLLM加速部署。
在设置界面的模型提供方选择添加自定义提供方。
进行 API 设置。
名称填写“PAI_DeepSeek-R1-Distill-Qwen-7B”(可自定义);
API 域名填写EAS服务的访问地址;
API 路径填写
v1/chat/completions
;API 密钥填写EAS服务Token;
模型:如果您是使用Transformers标准部署,请不要填写模型名称。其他部署方式请填写具体使用的DeepSeek模型名称,此处以DeepSeek-R1-Distill-Qwen-7B为例;
单击保存,完成设置。
进行对话测试。
在Dify中编辑“模型供应商”,添加更多模型供应商“OpenAI-API-compatible”:
模型名称填写“DeepSeek-R1-Distill-Qwen-7B”,API Key填写EAS服务Token,API endpoint URL填写EAS服务endpoint(注意末尾加上/v1)。EAS服务Token和endpoint获取方式:进入Model Gallery的任务管理-部署任务,在部署任务详情页面单击查看调用信息。
##
如何实现多轮对话?
模型服务本身不会保存历史对话信息,需要客户端保存历史对话,再添加到模型调用的请求中。以SGLang部署的服务,示例如下。
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: ZWUyMzU5MmU2NGFiZWU0ZDRhNWVjMWNhMzI2NTM1ZDllMzZkYTAyYQ==" \
-d '{
"model": "<model_name>",
"messages": [
{
"role": "system",
"content": "You are a helpful assistant."
},
{
"role": "user",
"content": "你好"
},
{
"role": "assistant",
"content": "你好!很高兴见到你,有什么我可以帮忙的吗?"
},
{
"role": "user",
"content": "我上一个问题是什么"
}
]
}' \
<EAS_ENDPOINT>/v1/chat/completions
相关文档
关于联网功能使用,请参见RAG集成联网搜索搭建AI智能问答最佳实践。
- 本页导读 (1)
- 模型部署
- 模型调用
- WebUI使用
- 在线调试
- API调用
- 资源清理
- 部署方式说明
- 模型列表
- 满血版模型
- 蒸馏版模型
- 关于成本
- 模型部署FAQ
- 点击部署后服务长时间等待
- 模型调用FAQ
- 调用API返回404
- 请求太长导致网关超时
- 如何在线调试模型
- 为何没有“联网搜索”
- 模型跳过思考怎么办?
- 如何接入Chatbox或Dify
- 如何实现多轮对话?
- 相关文档