ONNX Runtime generate() API简介
ONNX Runtime generate() API是微软开发的一个开源项目,旨在为开发者提供一种简单、灵活且高性能的方式在本地设备上运行大型语言模型(LLM)。该API实现了生成式AI的完整流程,包括预处理、推理、logits处理、搜索采样以及KV缓存管理等。
通过ONNX Runtime generate() API,开发者可以轻松地在各种设备和平台上部署和运行当前流行的LLM模型,如Llama、Phi、Gemma、Mistral等。它不仅支持一次性生成全部输出,还可以实现逐个token的流式输出,为开发者提供了极大的灵活性。
主要特性
-
支持多种模型架构:目前已支持Gemma、Llama、Mistral、Phi(语言+视觉)、Qwen等模型架构,未来还将支持更多模型。
-
多语言API:提供Python、C#、C/C++、Java等多种编程语言的API,满足不同开发者的需求。
-
跨平台支持:可在Linux、Windows、Mac等多个操作系统上运行。
-
硬件加速:支持CUDA、DirectML等硬件加速方案,充分利用GPU性能。
-
高性能:经过优化的推理引擎,可实现快速、高效的模型运行。
-
灵活性:既可一次性生成全部输出,也支持逐token的流式输出。
安装使用
ONNX Runtime generate() API的安装非常简单,以Python为例:
pip install numpy
pip install onnxruntime-genai
安装完成后,只需几行代码即可运行复杂的LLM模型:
import onnxruntime_genai as og
model = og.Model('model_path')
tokenizer = og.Tokenizer(model)
params = og.GeneratorParams(model)
params.input_ids = tokenizer.encode("Your prompt here")
generator = og.Generator(model, params)
while not generator.is_done():
generator.compute_logits()
generator.generate_next_token()
print(tokenizer.decode(generator.get_next_tokens()[0]), end='', flush=True)
未来发展
ONNX Runtime generate() API团队正在积极开发更多新功能,包括:
- 支持更多模型架构,如Whisper和Stable Diffusion
- 开发iOS平台支持
- 添加QNN、ROCm、OpenVINO等硬件加速方案
- 实现交互式解码和模型定制(微调)功能
- 开发推测性解码等高级特性
结语
ONNX Runtime generate() API为开发者提供了一个强大的工具,使在本地设备上运行大型语言模型变得简单而高效。无论是构建聊天机器人、文本生成应用还是其他AI驱动的解决方案,ONNX Runtime generate() API都能为您提供所需的性能和灵活性。随着项目的不断发展和完善,我们可以期待它在未来为生成式AI应用开发带来更多可能性。