模型服务与推理(model serving and inference)
/ MOD-ul SUR-ving and IN-fur-uns /
模型服务,指的是模型练好之后发生的一切:把它安置到某处,让它能为真实用户、可靠而迅速地应答真实请求。推理,则是真正去用这个模型的动作——喂给它一个输入,拿回一个预测。训练像是花上几个月写剧本、排练一出戏;服务则是首演之夜,而且夜夜如此,台下坐着活生生的观众,指望演出准点开场、永不掉链子。
具体说来,服务把模型包进一段软件里:这段软件守着,听候请求,把输入跑过网络,再返回答案——一句翻译、一条推荐、一段生成的文字。围着它的,是那些不起眼却不可或缺的机件:在模型的众多副本间做负载均衡、流量陡增时扩容、出岔子时优雅地退而求其次、记录被问了什么,还有把延迟压低。模型是引擎;服务则是引擎外那整辆车,让引擎在真实路面上变得有用。
为什么这很重要:一个在跑分上夺魁、却没法被廉价而可靠地服务起来的模型,是一个科研项目,而非一件产品。工业界 AI 真正的成本与工程之痛,大半都住在这里,而不在训练。一句常让新手吃惊的实话是:训练只发生一次,推理却日复一日、永远地跑上百万次,所以纵观一个模型的一生,服务通常才是总账单里的大头——而对着一个转圈加载图标干瞪眼的用户来说,模型的准确度毫无意义。
你在聊天机器人里敲入一个问题。你的文字传到一台服务器,那里有一份模型副本做推理,再把字词流式地回送给你。幕后,成千上万的其他用户在同一瞬间敲打着同一群服务器——服务,就是那个让每一条请求都得到应答、又不让整套东西垮掉的东西。
一个用户的提问,背后是一整支看不见的服务器队伍,确保每一问都有回应。
一个常见的错误,是把服务当作模型「能用了」之后顺手再说的事。现实里,关于延迟、成本与规模的决定,反过来决定了哪些模型根本可行——有时一个略逊一筹、却便宜好服务的模型,会胜过一个完美却没人养得起的模型。