大模型技术专家可为您提供效果调优、应用定制和技术培训等付费专属服务
一、前言
要想理解和解决大模型服务推理“慢”的问题,首先要知道大模型的推理结果是怎么产生的。
由上图可知,推理过程是不断地根据上文(robot must obey)来猜测下文最可能出现的token(orders),最后拼接而成。
如果需要输出更长的结果,那么就需要不断地去根据上文推理下一个token,直到结束。
所以影响大模型推理“慢”的主要原因是不同模型
推理速度和输出长度
。
总体来说,解决大模型推理“慢”大致有三种常见方案,您可以根据实际业务场景和工程需要来选择:
-
流式请求 (快速获得结果的头部部分tokens,尽快使用/展示,缓解长时间等待的焦虑)
-
切换模型 (不同模型推理速度不同,可以合理选择不同效果、速度的模型)
-
约束输出内容长度 (输出长度和推理时间成正比,合理有效的减少输出长度可以减少等待时间)
二、解决方案
流式请求
非流式请求与流式请求的差异
非流式请求
-
-
-
适用场景:需要对结果进行固定格式解析、其他对完整性结果有要求
-
-
{
"id": "as-fg4g836x8n",
"object": "chat.completion",
"created": 1709716601,
"result": "北京,简称“京”,古称燕京、北平,中华民族的发祥地之一,是中华人民共和国首都、直辖市、国家中心城市、超大城市,也是国务院批复确定的中国政治中心、文化中心、国际交往中心、科技创新中心,中国历史文化名城和古都之一,世界一线城市。\\n\\n北京被世界城市研究机构评为世界一线城市,联合国报告指出北京市人类发展指数居中国城市第二位。北京市成功举办夏奥会与冬奥会,成为全世界第一个“双奥之城”。北京有着3000余年的建城史和850余年的建都史,是全球拥有世界遗产(7处)最多的城市。\\n\\n北京是一个充满活力和创新精神的城市,也是中国传统文化与现代文明的交汇点。在这里,你可以看到古老的四合院、传统的胡同、雄伟的长城和现代化的高楼大厦交相辉映。此外,北京还拥有丰富的美食文化,如烤鸭、炸酱面等,以及各种传统艺术表演,如京剧、相声等。\\n\\n总的来说,北京是一个充满魅力和活力的城市,无论你是历史爱好者、美食家还是现代都市人,都能在这里找到属于自己的乐趣和归属感。",
"is_truncated": false,
"need_clear_history": false,
"finish_reason": "normal",
"usage":
{
"prompt_tokens": 2,
"completion_tokens": 221,
"total_tokens": 223
}
}
流式请求
-
服务端生成一段推理内容(非语义连贯)后即输出,调用方无需等待所有数据返回后再处理;
-
-
适用场景:对话、检索类,无需对结果进行特殊格式解析等
-
-
data: {"id":"as-vb0m37ti8y","object":"chat.completion","created":1709089502,"sentence_id":0,"is_end":false,"is_truncated":false,"result":"当然可以,","need_clear_history":false,"finish_reason":"normal","usage":{"prompt_tokens":5,"completion_tokens":2,"total_tokens":7}}
... ...
data: {"id":"as-vb0m37ti8y","object":"chat.completion","created":1709089508,"sentence_id":3,"is_end":false,"is_truncated":false,"result":"您可以参观西安的兵马俑、大雁塔,体验兰州的黄河风情,以及在敦煌欣赏壮丽的莫高窟。","need_clear_history":false,"finish_reason":"normal","usage":{"prompt_tokens":5,"completion_tokens":2,"total_tokens":7}}
从上述返回结果数据结构上可以看出,调用方需要针对不同的请求方式分别处理。
首token响应时间对比
{
"messages":
[
{
"role": "user",
"content": "请介绍北京有哪些好玩的景点"
}
],
"stream": false
}
stream:false 时的响应时间:等待所有所有结果都返回的时间是
33秒
stream:true时的首包响应时间:
3秒
从上述两个测试对比可以看出,使用流式请求能够更快地获取到推理结果,随后每隔几秒就会返回更多推理文本段落。有效的缓解了用户侧等待焦虑。
切换模型
如何选择模型?
选择模型要从不同的角度入手,如tokens单价、生成速度、结果质量等;可以根据业务场景和需求按需选择使用。
费用&场景推荐
下面是简单列举了几个模型的费用情况,更多最新的模型资费您可以参考:https://cloud.baidu.com/doc/WENXINWORKSHOP/s/hlrk4akp7
模型名称
|
输入单价
|
输出单价
|
适用场景
|
ERNIE-4.0-8K
|
0.12元/千tokens
|
0.12元/千tokens
|
处理十分复杂场景、任务,需要严格按照Prompt执行的场景(复杂标签生成、参数提取、任务判断和直接搜索等)。
|
ERNIE-3.5-8K
|
0.012元/千tokens
|
0.012元/千tokens
|
常规任务场景,如意图识别、脚本生成、直接搜索等
|
ERNIE-Lite-8K-0922
|
0.008元/千tokens
|
0.008元/千tokens
|
聊天、文章扩写等
|
ERNIE-Speed-8K
|
0.004元/千tokens
|
0.008元/千tokens
|
聊天、简单任务处理等
|
如果您的业务场景包含不同的子场景,可以根据不同子场景对模型效果、响应速度等各方面的要求择优选择合适的模型即可(
各取所长,多模融合
)。
tokens响应速度
不同模型对应的tokens生成速度也都不一样。我们可以通过下面对不同模型测试的对比结果,观察到它们之间的差异(这些结果仅代表本次测试过程):
{
"messages": [
{
"role": "user",
"content": "帮我生成一个故宫一日游的旅游攻略"
}
],
"stream": false
}
ERNIE-4.0-8K
测试1-模型推理时间:35.88s,推理结果402tokens:平均
11.2 tokens/s
(仅单次测试,供参考)
测试2-模型推理时间:50.02s,推理结果532tokens:平均
10.63 tokens/s
(仅单次测试,供参考)
ERNIE-3.5-8k
测试1-模型推理时间:27.58s,推理结果453tokens:平均
16.42 tokens/s
(仅单次测试,供参考)
测试2-模型推理时间:26.60s,推理结果461tokens:平均
17.33 tokens/s
(仅单次测试,供参考)
ERNIE-Speed-8K
测试1-模型推理时间:15.67s,推理结果606tokens:平均
38.67 tokens/s
(仅单次测试,供参考)
测试2-模型推理时间:15.51s,推理结果494tokens:平均
31.85 tokens/s
(仅单次测试,供参考)
ERNIE-Lite-8K-0308
测试1-模型推理时间:6.05s,推理结果476tokens:平均
78.67 tokens/s
(仅单次测试,供参考)
测试2-模型推理时间:6.26s,推理结果495tokens:平均
79.07 tokens/s
(仅单次测试,供参考)