第6章 推理API
本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com
您已通过 扩展了对人工智能及各类模型的认知。 此外,您还(在可能的情况下)在本地部署了这些模型,并通过查询进行了测试。 但当需要实际使用模型时,您必须正确暴露模型,遵循组织的最佳实践,并为开发人员提供便捷的模型使用方式。
推理API可解决这些问题,使所有开发人员都能访问模型。本章将探讨如何通过Java中的推理API公开AI/ML模型。
什么是推理API?
推理API允许 开发者通过任意协议(如HTTP、gRPC或Kafka)向部署了机器学习模型的服务器发送数据,并接收预测结果或分类结果。实际上,每次访问OpenAI、Gemini等云端模型或使用Ollama部署的本地模型时,都是通过其推理API实现的。
尽管如今使用谷歌、IBM或Meta等巨头训练的大型模型(主要用于LLM)已很普遍,但您可能仍需借助小型定制模型解决特定业务难题。这类模型通常由企业内部数据科学家开发,您必须编写代码才能进行推理.
例如, 假设你在银行工作,数据科学家训练了一个定制模型来检测信用卡交易是否属于欺诈。该模型是ONNX格式的预测性AI模型,包含六个输入参数和一个float 类型的输出参数。
输入参数如下:
distance_from_last_transaction-
距最近交易发生的时间间隔。例如:0.3111400080477545。
ratio_to_median_price-
购买价格交易额与中位数购买价格之比。例如:1.9459399775518593。
used_chip-
指示交易是否通过芯片完成:
true时为1.0,false时为0.0。 used_pin_number-
表示交易是否使用PIN码:
true则为1.0,false则为0.0。 online_order-
表示交易是否为在线订单:
true则为1.0,false则为0.0。
输出参数如下:
prediction-
交易欺诈概率。例如:0.9625362。
您可能注意到以下细节:
-
所有数据均为浮点数,即使在
used_chip字段中表示布尔值时也是如此。 -
输出结果为概率值,但从业务角度看,您需要明确欺诈是否发生。
-
开发人员更倾向于使用类而非多个参数。
这是创建模型推理API的典型场景,通过添加抽象层简化模型调用流程。
图6-1展示了JSON文档与模型参数之间的转换过程,用于创建推理API 。
图6-1. 推理API架构
推理API的优势
推理 API 的优势包括:
-
模型具备高度可扩展性。由于每个模型都暴露无状态的标准API,您可像管理其他服务那样灵活扩展或缩减其规模。
-
集成过程简单明了;API采用REST、Kafka或gRPC等成熟协议。
-
API 提供抽象层,可在此引入安全防护、监控、日志记录及其他横切关注点。
既然您已了解推理API的价值所在,接下来让我们探索几个可立即使用的示例。
推理API示例
开源(及商业)工具均提供推理API,支持任意应用调用模型。 多数情况下,模型通过格式规范的REST API对外暴露。 应用仅需REST客户端即可与模型交互。
当前两大主流推理API或将成为LLM领域的标准API。 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access