开发者实战 | OpenVINO™ 赋能千元级 AI 开发板大语言模型

01/09 20:00
阅读数 13

点击蓝字

关注我们,让开发变得更有趣

以下文章来源于英特尔物联网

作者:英特尔AI软件布道师  武卓 博士





 前言



在人工智能的飞速发展中,大语言模型,如Stable-Zephyr-3b,已成为研究和应用的热点。这些模型以其强大的文本理解和生成能力在多个领域大放异彩。然而,大多数高性能模型通常需要昂贵的计算资源,使得它们的应用受限于有限的环境。本文将探讨在OpenVINO™的赋能下,如何在不足千元的AI开发板上部署Stable-Zephyr-3b模型,构建聊天机器人,成为实现AI无处不在愿景的重要组成部分之一。

Stable Zephyr 3B是一个先进的大语言模型,拥有30亿参数,它在多个语言处理任务上显示出了优异的性能。这个模型特别是在大小相对较小的情况下,比许多流行模型都要出色,这表明了它高效的参数使用和强大的学习能力。该模型的训练灵感来自于HugginFaceH4的Zephyr 7B训练管道,这是一个专注于高效训练和性能优化的系统。Stable Zephyr 3B是在混合的数据集上进行训练的,包括了公开可用的数据集和通过直接偏好优化(DPO)技术生成的合成数据集。DPO是一种优化技术,它直接在模型的偏好上施加约束,以产生更高质量的数据供模型学习。

该模型的性能评估是基于MT Bench和Alpaca Benchmark,这两个基准都是在业界公认的,用以衡量语言模型在多种任务上的效能。通过这些严格的评估,Stable Zephyr 3B展现了其在理解和生成语言方面的卓越能力。更多关于模型的架构、训练过程、使用的数据集以及在各项评估中的表现的信息可以在模型卡片中找到。

此文使用了研扬科技针对边缘AI行业开发者推出了哪吒(Nezha)开发套件以信用卡大小(85 x 56mm)的开发板-哪吒(Nezha)为核心,哪吒采用Intel® N97处理器(Alder Lake-N),最大睿频3.6GHz,Intel® UHD Graphics内核GPU,可实现高分辨率显示;板载LPDDR5内存、eMMC存储及TPM 2.0,配备GPIO接口,支持Windows和Linux操作系统,这些功能和无风扇散热方式相结合,为各种应用程序构建高效的解决方案,适用于如自动化、物联网网关、数字标牌和机器人等应用。


注:售价 RMB 999起

要在这些资源有限的设备上运行如Stable-Zephyr-3b这样的大型模型,模型的压缩和优化是关键。借助OpenVINO™提供的模型优化工具NNCF,可以将模型量化压缩为INT4精度的模型,从而可以大幅度减少模型的大小和计算需求,而保持相对较高的性能。接下来,就让我们通过我们常用的OpenVINO™ Notebooks仓库中关于Stable Zephyr 3B模型的Jupyter Notebook代码和拆解,来进一步了解具体步骤吧。(Jupyter notebook代码地址:
https://github.com/openvinotoolkit/openvino_notebooks/tree/main/notebooks/273-stable-zephyr-3b-chatbot  )

第一步:安装相应工具包

为了方便模型转换步骤和模型性能评估,我们将使用llm_bench(https://github.com/openvinotoolkit/openvino.genai/tree/master/llm_bench/python )工具,该工具提供了一种统一的方法来估计大语言模型(LLM)的性能。它基于由Optimum-Intel提供的管道,并允许使用几乎相同的代码来估计Pytorch和OpenVINO™模型的性能。


首先git clone llm_bench所在的代码仓库:

from pathlib import Pathimport sys

genai_llm_bench = Path("openvino.genai/llm_bench/python")
if not genai_llm_bench.exists():   !git clone  https://github.com/openvinotoolkit/openvino.genai.git
sys.path.append(str(genai_llm_bench))

左滑查看更多


并进行相关Python包的安装:
%pip uninstall -q -y optimum-intel optimum%pip install -q --extra-index-url https://download.pytorch.org/whl/cpu -r ./openvino.genai/llm_bench/python/requirements.txt%pip uninstall -q -y openvino openvino-dev openvino-nightly%pip install -q openvino-nightly

左滑查看更多


第二步:将模型转换为OpenVINO™ IR格式,
并利用NNCF将模型权重压缩为INT4精度

llm_bench提供了一个转换脚本,用于将大语言模型转换为与Optimum-Intel兼容的OpenVINO™ IR格式。它还允许使用NNCF将模型权重压缩为INT8或INT4精度。要启用INT4的权重压缩,我们应该使用--compress_weights 4BIT_DEFAULT 参数。权重压缩算法旨在压缩模型的权重,并可用于优化大模型的占用空间和性能。与INT8压缩相比,INT4压缩进一步提高了性能,但会引入轻微的预测质量下降。

model_path = Path("stable-zephyr-3b/pytorch/dldt/compressed_weights/OV_FP16-4BIT_DEFAULT") 
convert_script = genai_llm_bench / "convert.py"
!python $convert_script --model_id stabilityai/stable-zephyr-3b --precision FP16 --compress_weights 4BIT_DEFAULT --output stable-ze

左滑查看更多

第三步: 评估模型性能

openvino.genai / llm_bench / python / benchmark.py脚本允许在特定输入提示上估计文本生成管道的推理,给定最大生成分词的数量。模型性能评估以时延为主。

benchmark_script = genai_llm_bench / "benchmark.py"
!python $benchmark_script -m $model_path -ic 512 -p "Tell me story about cats"

左滑查看更多

运行结果如下:

第四步:应用状态变换来自动处理模型状态

Stable Zephyr是一种自回归的解码器变换器模型,它通过缓存先前计算的隐藏状态来优化生成过程和内存使用,避免每次生成新令牌时重复计算。随着模型和注意力块的增大,处理长序列的缓存策略可能对内存系统构成挑战。因此,OpenVINO™提出了一种转换策略,将缓存逻辑内置于模型中以降低内存消耗并优化性能。您可以通过在转换步骤中使用--stateful标志添加有状态转换来估计模型性能。

stateful_model_path = Path("stable-zephyr-3b-stateful/pytorch/dldt/compressed_weights/OV_FP16-4BIT_DEFAULT") 
!python $convert_script --model_id stabilityai/stable-zephyr-3b --precision FP16 --compress_weights 4BIT_DEFAULT --output stable-zephyr-3b-stateful --force_convert --stateful

左滑查看更多


第五步:利用Optimum-Intel加载模型
并在基于Gradio搭建的用户界面上运行模型

同样地,这个模型也可以用Optimum-Intel工具包里定义的OVModelForCausalLM 流水线来加载模型和运行推理,代码如下:

from utils.ov_model_classes import register_normalized_configsfrom optimum.intel.openvino import OVModelForCausalLMfrom transformers import AutoConfig
# Load model into Optimum Interfaceregister_normalized_configs()
ov_model = OVModelForCausalLM.from_pretrained(model_path, compile=False, config=AutoConfig.from_pretrained(stateful_model_path, trust_remote_code=True), stateful=True)

左滑查看更多


和我们的很多大预言模型和生成式AI的Notebook示例代码一样,在这个Notebook中,我们也提供了基于Gradio编写的用户友好的使用界面。最终在我们的哪吒开发板上运行该模型的推理,效果如下:





小结



整个的步骤就是这样!现在就开始跟着我们提供的代码和步骤,动手试试用OpenVINO™在哪吒开发板上运行基于大语言模型的聊天机器人吧。

关于英特尔OpenVINO™开源工具套件的详细资料,包括其中我们提供的三百多个经验证并优化的预训练模型的详细资料,请您点击 https://www.intel.com/content/www/us/en/developer/tools/openvino-toolkit/overview.html

除此之外,为了方便大家了解并快速掌握OpenVINO™的使用,我们还提供了一系列开源的Jupyter notebook demo。运行这些notebook,就能快速了解在不同场景下如何利用OpenVINO™实现一系列、包括计算机视觉、语音及自然语言处理任务。OpenVINO™ notebooks的资源可以在GitHub这里下载安装: https://github.com/openvinotoolkit/openvino_notebooks 




OpenVINO™

--END--


              
              
              
你也许想了解(点击蓝字查看)⬇️
➡️  OpenVINO™ 2023.2 发布:让生成式 AI 在实际场景中更易用
➡️  开发者实战 | 基于 OpenVINO™ 和 LangChain 构建 RAG 问答系统
➡️  开发者实战 | 如何利用低比特量化技术进一步提升大模型推理性能
➡️ 开发者实战 | 介绍OpenVINO™ 2023.1:在边缘端赋能生成式AI
➡️ 基于 ChatGLM2 和 OpenVINO™ 打造中文聊天助手
➡️ 基于 Llama2 和 OpenVINO™ 打造聊天机器人
➡️ OpenVINO™ DevCon 2023重磅回归!英特尔以创新产品激发开发者无限潜能
➡️ 5周年更新 | OpenVINO™  2023.0,让AI部署和加速更容易
➡️ OpenVINO™5周年重头戏!2023.0版本持续升级AI部署和加速性能
➡️ OpenVINO™2023.0实战 | 在 LabVIEW 中部署 YOLOv8 目标检测模型
➡️ 开发者实战系列资源包来啦!
➡️  以AI作画,祝她节日快乐;简单三步,OpenVINO™ 助你轻松体验AIGC
➡️  还不知道如何用OpenVINO™作画?点击了解教程。


             
             
             

扫描下方二维码立即体验 

OpenVINO™ 工具套件 2023.2


点击 阅读原文 立即体验OpenVINO 2023.2
文章这么精彩,你有没有“在看”?

本文分享自微信公众号 - OpenVINO 中文社区(openvinodev)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部