点击蓝字
关注我们,让开发变得更有趣
以下文章来源于英特尔物联网
作者:英特尔AI软件布道师 武卓 博士
前言

注:售价 RMB 999起
第一步:安装相应工具包
为了方便模型转换步骤和模型性能评估,我们将使用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))
左滑查看更多
%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
左滑查看更多
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工具包里定义的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)
左滑查看更多
小结:
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 中文社区(openvinodev)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。