OpenVINO™ 赋能千元级『哪吒』AI开发套件大语言模型 | 开发者实战

以下文章来源于英特尔物联网 ,作者武卓
作者:英特尔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操作系统,这些功能和无风扇散热方式相结合,为各种应用程序构建高效的解决方案,适用于如自动化、物联网网关、数字标牌和机器人等应用。
要在这些资源有限的设备上运行如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 path
import 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_configs
from optimum.intel.openvino import ovmodelforcausallm
from transformers import autoconfig
# load model into optimum interface
register_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在哪吒开发板上运行基于大语言模型的聊天机器人吧。

未来每个人都会有的新伙伴--AI虚拟生命
使用Dockerfile制作openGauss镜像
交流电压采样电路设计
冷冻柜加入WTN6语音提示ic,温度异常报警,大大提升智能化体验
东芝光耦SSOP4封装(包装)
OpenVINO™ 赋能千元级『哪吒』AI开发套件大语言模型 | 开发者实战
小米6发布会最新消息:处理器曝光 中国骁龙835首发!果然666!
手机的算力能挖出比特币吗
什么是稳定币,稳定币的稳定性究竟如何?
中铁大桥局福清兴化湾海上风电场一期项目完成
网站搭建时该如何选择租用服务器
K58S32 雷达微波模是一款小型化的 5.8GHz 微波感应模块
AMS预计收购欧司朗将于今年第二季度完成 为加快合并进程持股比例已增至23.4%
中国在哪些技术领域上相对美国优势较大?在哪些技术领域上差距较大?
选购笔记本电脑提防概念误区(高人指路)
如何使用Python脚本调试赛灵思PCIe设计?
魅族pro7什么时候上市?魅族pro7最新配置价格曝光:相信一定不会让你失望
电气安装工程施工规范
心真大诺基亚N8在这样超窄边框,真的所有人都能接受吗?
智能镜子显示器带你体验不一样的健身运动