OpenVINO2024.2 - 三行代码完成生成式AI部署
![](/site_media/static/img/headImg/defaultHead.png)
英特尔边缘计算创新大使 贾志刚
OpenVINO介绍
OpenVINO2024.2版本跟之前版本最大的不同是OpenVINO2024.2分为两个安装包分别是基础包与生成式AI支持包,新发布的GenAI开发包支持C++与Python语言接口调用,支持多种LLM加载与推理部署能力,实现了OpenVINO对CNN网络、生成式模型、LLM网络主流模型的全面推理支持。安装包下载地址如下:
https://docs.openvino.ai/install
OpenVINO生成式AI支持
OpenVINO2024版本支持大量文本、图像、音频生成模型,如 Llama 2、MPT、OPT、Stable Diffusion、Stable Diffusion XL。这样可以开发多模式应用程序,从而实现一次写入、随处部署的功能。OpenVINO支持的生成式AI方式主要包括以下三种方式分别是:
Hugging Face:通过 Optimum Intel 扩展,使用 OpenVINO 作为 Hugging Face 框架(转换器、扩散器)的后端。
OpenVINO GenAI 风格:使用 OpenVINO 生成式AI的APIs (Python and C++)
基础 OpenVINO:OpenVINO 原生 API(Python 和 C++)与自定义管道代码一起使用
三种部署方式好处与不同:
Hugging Face API 易于学习,提供简单的界面,并隐藏了模型初始化和文本生成的复杂性,以获得更好的开发人员体验。但是,它具有更多的依赖项、更少的自定义项,并且无法移植到 C/C++。
OpenVINO GenAI Flavor 通过自动管理文本生成循环、标记化和调度等基本任务来降低 LLM 实现的复杂性。原生 OpenVINO API 提供了更多的实践体验,需要手动设置这些功能。这两种方法都旨在最大程度地减少依赖关系和整体应用程序占用空间,并允许在 C++ 应用程序中使用生成模型。
建议从拥抱脸框架开始,尝试不同的模型和场景。然后,如果需要进一步优化,该模型可以与 OpenVINO API 一起使用。Optimum Intel 提供的接口支持使用神经网络压缩框架 (NNCF) 进行模型优化(权重压缩),并将模型导出为 OpenVINO 模型格式,以便在原生 API 应用程序中使用。
LLM推理支持
像 GPT 这样的大型语言模型 (LLM) 是变革性的深度学习网络,能够完成从文本生成到语言翻译的广泛自然语言任务。OpenVINO2024优化了这些模型的部署,增强了它们的性能并集成到各种应用中。下面的代码展示了如何将 LLM 与 OpenVINO20204 结合使用,从模型加载和转换到高级用例
Python版本开发包安装
pip install openvino-genai==2024.2.0
pip install optimum-intel -i https://pypi.tuna.tsinghua.edu.cn/simple
安装optimum
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple optimum auto-gptq
pip install openvino-tokenizers
OpenVINO加速支持
pip install --upgrade-strategy eager optimum[openvino,nncf]
export HF_ENDPOINT=https://hf-mirror.com
optimum-cli export openvino --model "TinyLlama/TinyLlama-1.1B-Chat-v1.0" --weight-format fp16 --trust-remote-code output
需要注意一下版本匹配问题,因为我之前安装了optimum版本较低导致无法生成分词得OpenVINO文件,所以直接推理挂,然后更新到最新版本就好,相关支持依赖包支持版本(亲测有效)
如您所见,只需要几行代码就能建立一个LLM生成的流水线。这是因为从 Hugging Face Optimum-Intel 导出模型后,它已经存储了执行所需的所有信息包括分词器/反分词器和生成配置,从而能够获得与 Hugging Face 生成匹配的结果。我们提供 C++ 和 Python API 来运行 LLM、最少的依赖项列表和对应用程序的添加。
Python语言测试代码:
C++语言测试代码
C++里面跑出来得结果:
更多参考这里:
https://docs.openvino.ai/2024/learn-openvino/llm_inference_guide/genai-guide.html
optimum-cli export openvino --model "TinyLlama/TinyLlama-1.1B-Chat-v1.0" --weight-format int4 --trust-remote-code output