0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

研扬科技AAEON 2024-01-06 08:05 次阅读

以下文章来源于英特尔物联网 ,作者武卓

作者:英特尔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,IntelUHD 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 pathlibimport Path

import sys

genai_llm_bench = Path("openvino.genai/llm_bench/python")

ifnot 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 -ic512 -p"Tell me story about cats"

运行结果如下:

wKgaomWyIQ6AGxQ-AAS7PdK1uEA461.png

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

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_classesimport register_normalized_configs

from optimum.intel.openvinoimport 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
    AI
    +关注

    关注

    87

    文章

    26458

    浏览量

    264072
  • 人工智能
    +关注

    关注

    1776

    文章

    43871

    浏览量

    230621
  • OpenVINO
    +关注

    关注

    0

    文章

    59

    浏览量

    91
收藏 人收藏

    评论

    相关推荐

    基于英特尔哪吒开发者套件平台来快速部署OpenVINO Java实战

    OpenVINO 工具套件基于OneAPI开发,可以加快高性能计算机视觉和深度学习应用开发速度的工具套件,适用于从边缘到云的各种英特尔计算平
    的头像 发表于 03-21 18:24 824次阅读
    基于英特尔<b class='flag-5'>哪吒</b><b class='flag-5'>开发者</b><b class='flag-5'>套件</b>平台来快速部署<b class='flag-5'>OpenVINO</b> Java<b class='flag-5'>实战</b>

    【LicheeRV-Nano开发套件试用体验】+智能平板开发

    首先感谢Sipeed矽速科技和电子发烧友给与的这次机会,得以试用LicheeRV-Nano开发套件,并与大家共同分享与学习。 鉴于试用报告格式调整,后面亦按要求展现。 申请理由: 个人多年嵌入式
    发表于 03-06 23:05

    鸿蒙原生应用/服务开发-开发者如何进行真机测试

    前提条件:已经完成鸿蒙原生应用/服务开发,已经相对熟练使用DevEco Studio,开发者自己有鸿蒙4.0及以上的真机设备。 真机测试具体流程如下 1.手机打开
    发表于 11-30 09:46

    【鸿蒙生态帆起】HarmonyOS系统地图与位置服务,广大开发者

    HarmonyOS下地图领域的最新技术探索与实践成果。 得益于HarmonyOS一次开发多端部署、可分可合自由流转、统一生态原生智能的特性,Petal Maps为开发者提供了系统、深融合、低功耗、更安全的地图
    发表于 11-22 10:37

    oneAPI &amp; OpenVINO™联合开发者大会开启:英特尔持续开源创新,助力AI开发落地

    的技术盛筵上,英特尔技术专家带来了oneAPI在全球的发展近况及如何与合伙伙伴共建异构计算新生态,同时针对OpenVINO 2023.1新版本进行了技术亮点解析,并详细讲解了新版本如何更好地支持生成式AI模型、框架及大
    的头像 发表于 11-04 16:00 427次阅读
    oneAPI &amp; <b class='flag-5'>OpenVINO</b>™联合<b class='flag-5'>开发者</b>大会开启:英特尔持续开源创新,助力<b class='flag-5'>AI</b><b class='flag-5'>开发</b>落地

    HarmonyOS SDK,开发者实现更具象、个性化开发诉求

    随着移动互联网的逐步成熟,用户的需求越来越细化。鸿蒙生态为开发者提供的HarmonyOS SDK开放能力,高效美团外卖等合作伙伴实现更具象、个性化的开发诉求,给用户提供更丰富便捷的
    发表于 10-24 17:34

    基于英特尔开发套件AI字幕生成器设计

    市面上有很多自然语言处理模型,本文旨在帮助开发者快速将 OpenAI* 的热门 NLP 模型 Whisper 部署至英特尔 开发套件爱克斯
    的头像 发表于 09-27 16:59 526次阅读
    基于英特尔<b class='flag-5'>开发套件</b>的<b class='flag-5'>AI</b>字幕生成器设计

    基于OpenVINO在英特尔开发套件上实现眼部追踪

    本文将以训练一个眼部追踪 AI模型为背景,介绍从 Pytorch 自定义网络模型,到使用 OpenVINO NNCF 量化工具优化模型
    的头像 发表于 09-18 10:11 438次阅读

    HarmonyOS NEXT新能力,一站式高效开发HarmonyOS应用

    提供了系统AI控件以及HarmonyOS意图框架通过原生智能鸿蒙生态,基于行业模版服务助力商家实现零代码
    发表于 08-14 15:08

    AI爱克斯开发板上用OpenVINO™加速YOLOv8-seg实例分割模型

    《在 AI 爱克斯开发板上用 OpenVINO 加速 YOLOv8 目标检测模型》介绍了在 AI 爱克斯
    的头像 发表于 06-30 10:43 451次阅读
    在<b class='flag-5'>AI</b>爱克斯<b class='flag-5'>开发</b>板上用<b class='flag-5'>OpenVINO</b>™加速YOLOv8-seg实例分割<b class='flag-5'>模型</b>

    在英特尔开发者套件上用OpenVINO™ 2023.0加速YOLOv8-Pose姿态估计模型

    benchmark_app 是 OpenVINO 工具套件自带的 AI 模型推理计算性能测试工具,可以指定在不同的计算设备上,在同步或异步模式下,测试出不带前后处理的纯
    的头像 发表于 06-15 17:41 689次阅读
    在英特尔<b class='flag-5'>开发者</b><b class='flag-5'>套件</b>上用<b class='flag-5'>OpenVINO</b>™ 2023.0加速YOLOv8-Pose姿态估计<b class='flag-5'>模型</b>

    AI爱克斯开发板上用OpenVINO™加速YOLOv8-seg实例分割模型

    《在 AI 爱克斯开发板上用 OpenVINO 加速 YOLOv8 目标检测模型》介绍了在 AI 爱克斯
    的头像 发表于 06-05 11:52 604次阅读
    在<b class='flag-5'>AI</b>爱克斯<b class='flag-5'>开发</b>板上用<b class='flag-5'>OpenVINO</b>™加速YOLOv8-seg实例分割<b class='flag-5'>模型</b>

    AI爱克斯开发板上使用OpenVINO加速YOLOv8目标检测模型

    《在AI爱克斯开发板上用OpenVINO加速YOLOv8分类模型》介绍了在AI爱克斯开发板上使用
    的头像 发表于 05-26 11:03 719次阅读
    <b class='flag-5'>AI</b>爱克斯<b class='flag-5'>开发</b>板上使用<b class='flag-5'>OpenVINO</b>加速YOLOv8目标检测<b class='flag-5'>模型</b>

    AI爱克斯开发板上用OpenVINO™加速YOLOv8目标检测模型

    《在 AI 爱克斯开发板上用 OpenVINO 加速 YOLOv8 分类模型》介绍了在 AI 爱克斯开发
    的头像 发表于 05-12 09:08 848次阅读
    在<b class='flag-5'>AI</b>爱克斯<b class='flag-5'>开发</b>板上用<b class='flag-5'>OpenVINO</b>™加速YOLOv8目标检测<b class='flag-5'>模型</b>

    AI爱克斯开发板上用OpenVINO™加速YOLOv8分类模型

    本系列文章将在 AI 爱克斯开发板上使用 OpenVINO 开发套件依次部署并测评 YOLOv8 的分类模型、目标检测
    的头像 发表于 05-05 11:47 599次阅读
    在<b class='flag-5'>AI</b>爱克斯<b class='flag-5'>开发</b>板上用<b class='flag-5'>OpenVINO</b>™加速YOLOv8分类<b class='flag-5'>模型</b>