使用 ONNX 运行时运行 Llama、Phi、Gemma、Mistral。
此 API 为您提供了一种在设备上运行 LLM 的简单、灵活且高性能的方法。
它实现了 ONNX 模型的生成式 AI 循环,包括预处理和后处理、ONNX 运行时推理、logits 处理、搜索和采样以及 KV 缓存管理。
您可以调用高级的generate()
方法来一次生成所有输出,或者一次流式传输一个令牌。
请参阅 https://onnxruntime.ai/docs/genai 上的文档。
支持矩阵 | 现已支持 | 开发中 | 在路线图上 |
---|---|---|---|
模型架构 | 芽 骆驼 * 米斯特拉尔+ Phi(语言+视觉) 奎文 内莫特朗 | 耳语 | 扩散稳定 |
应用程序编程接口 | Python C# C/C++ 爪哇^ | Objective-C | |
平台 | Linux 视窗 麦克^ 安卓^ | iOS系统 | |
建筑学 | x86 x64 手臂64~ | ||
硬件加速 | CUDA 直接机器学习 | 量子神经网络 开放VINO ROC | |
特征 | 交互式解码 定制(微调) | 推测性解码 |
* Llama 模型架构支持类似的模型系列,例如 CodeLlama、Vicuna、Yi 等。
+ Mistral 模型架构支持类似的模型系列,例如 Zephyr。
^ 需要从源代码构建
~ Windows 版本可用,需要从源代码构建其他平台
请参阅 https://onnxruntime.ai/docs/genai/howto/install
下载模型
Huggingface-cli 下载 microsoft/Phi-3-mini-4k-instruct-onnx --include cpu_and_mobile/cpu-int4-rtn-block-32-acc-level-4/* --local-dir 。
安装API
pip安装numpy pip install --pre onnxruntime-genai
运行模型
导入 onnxruntime_genai as ogmodel = og.Model('cpu_and_mobile/cpu-int4-rtn-block-32-acc-level-4')tokenizer = og.Tokenizer(model)tokenizer_stream = tokenizer.create_stream() # 默认情况下将最大长度设置为合理的值,# 否则它将被设置为整个上下文长度search_options = {}search_options['max_length'] = 2048chat_template = '<|user|>n{input} <|end|> n<|assistant|>'text = input("输入:")if not text: print("错误,输入不能为空") exitprompt = f'{chat_template.format(input=text)}'input_tokens = tokenizer.encode(prompt)params = og.GeneratorParams(model)params.set_search_options(**search_options)params.input_ids = input_tokensgenerator = og.Generator(model, params )print("输出: ", end='',lush=True)try: 而不是生成器.is_done():生成器.compute_logits()生成器.generate_next_token()new_token =生成器.get_next_tokens()[0]打印(tokenizer_stream.decode(new_token),end='',flush=True)除了键盘中断:打印(" --control+c 按下,中止生成--")print()del 生成器
请参阅讨论以请求新功能并对现有请求进行投票。
该项目欢迎贡献和建议。 大多数贡献都要求您同意贡献者许可协议 (CLA),声明您有权并且实际上授予我们使用您的贡献的权利。有关详细信息,请访问 https://cla.opensource.microsoft.com。
当您提交拉取请求时,CLA 机器人将自动确定您是否需要提供 CLA 并适当地修饰 PR(例如,状态检查、评论)。只需按照机器人提供的说明进行操作即可。您只需使用我们的 CLA 在所有存储库中执行一次此操作。
该项目采用了微软开源行为准则。有关详细信息,请参阅行为准则常见问题解答或联系 [email protected] 提出任何其他问题或意见。
该项目可能包含项目、产品或服务的商标或徽标。 Microsoft 商标或徽标的授权使用须遵守且必须遵循 Microsoft 的商标和品牌指南。在此项目的修改版本中使用 Microsoft 商标或徽标不得引起混淆或暗示 Microsoft 赞助。对第三方商标或徽标的任何使用均须遵守这些第三方的政策。