笔记本电脑上的聊天机器人: 在英特尔 Meteor Lake 上运行 Phi-2

02ef7ce387cc7626a0d68985a190181f.jpeg

对应于其强大的能力,大语言模型 (LLM) 需要强大的算力支撑,而个人计算机上很难满足这一需求。因此,我们别无选择,只能将它们部署至由本地或云端托管的性能强大的定制 AI 服务器上。

为何需要将 LLM 推理本地化

如果我们可以在典配个人计算机上运行最先进的开源 LLM 会如何?好处简直太多了:

  • 增强隐私保护: 私有数据不需要发送至外部 API 进行推理。

  • 降低延迟: 节省网络往返的次数。

  • 支持离线工作: 用户可以在没有网络连接的情况下使用 LLM (常旅客的梦想!)。

  • 降低成本: 无需在 API 调用或模型托管上花一分钱。

  • 可定制: 每个用户都可以找到最适合他们日常工作任务的模型,甚至可以对其进行微调或使用本地检索增强生成 (RAG) 来提高适配度。

这一切的一切都太诱人了!那么,为什么我们没有这样做呢?回到我们的开场白,一般典配笔记本电脑没有足够的计算能力来运行具有可接受性能的 LLM。它们既没有数千核的 GPU,也没有快如闪电的高内存带宽。

接受失败,就此放弃?当然不!

为何现在 LLM 推理本地化有戏了

聪明的人类总能想到法子把一切东西变得更小、更快、更优雅、更具性价比。近几个月来,AI 社区一直在努力在不影响其预测质量的前提下缩小模型。其中,有三个领域的进展最振奋人心:

  • 硬件加速: 现代 CPU 架构内置了专门用于加速最常见的深度学习算子 (如矩阵乘或卷积) 的硬件,这使得在 AI PC 上使能新的生成式 AI 应用并显著提高其速度和效率成为可能。

  • 小语言模型 (Small Language Models,SLMs): 得益于在模型架构和训练技术上的创新,这些小模型的生成质量与大模型相当甚至更好。同时,由于它们的参数较少,推理所需的计算和内存也较少,因此非常适合资源受限的设备。

  • 量化: 量化技术通过减少模型权重和激活的位宽来降低内存和计算要求,如将权重和激活从 16 位浮点 ( fp16 ) 降至 8 位整型 ( int8 )。减少位宽意味着模型推理时的内存需求更少,因而能加速内存受限步骤 (如文本生成的解码阶段) 的延迟。此外,权重和激活量化后,能充分利用 AI 加速器的整型运算加速模块,因而可以加速矩阵乘等运算。

本文,我们将综合利用以上三种技术对微软 Phi-2 模型进行 4 比特权重量化,随后在搭载英特尔 Meteor Lake CPU 的中端笔记本电脑上进行推理。在此过程中,我们主要使用集成了英特尔 OpenVINO 的 Hugging Face Optimum Intel 库。

  • Phi-2https://hf.co/microsoft/phi-2

  • Optimum Intel 仓库地址https://github.com/huggingface/optimum-intel

注意: 如果你想同时量化权重和激活的话,可参阅 该文档。

  • Optimum Intel 文档https://hf.co/docs/optimum/main/en/intel/optimization_ov#static-quantization

我们开始吧。

英特尔 Meteor Lake

英特尔 Meteor Lake 于 2023 年 12 月推出,现已更名为 Core Ultra,其是一个专为高性能笔记本电脑优化的全新 架构。

  • Core Ultrahttps://www.intel.com/content/www/us/en/products/details/processors/core-ultra.html

  • 架构介绍https://www.intel.com/content/www/us/en/content-details/788851/meteor-lake-architecture-overview.html

Meteor Lake 是首款使用 chiplet 架构的英特尔客户端处理器,其包含:

  • 高至 16 核的 高能效 CPU

  • 集成显卡 (iGPU): 高至 8 个 Xe 核心,每个核心含 16 个 Xe 矢量引擎 (Xe Vector Engines,XVE)。顾名思义,XVE 可以对 256 比特的向量执行向量运算。它还支持 DP4a 指令,该指令可用于计算两个宽度为 4 字节的向量的点积,将结果存储成一个 32 位整数,并将其与另一个 32 位整数相加。

  • **神经处理单元 (Neural Processing Unit,NPU)**,是英特尔架构的首创。NPU 是专为客户端 AI 打造的、高效专用的 AI 引擎。它经过优化,可有效处理高计算需求的 AI 计算,从而释放主 CPU 和显卡的压力,使其可处理其他任务。与利用 CPU 或 iGPU 运行 AI 任务相比,NPU 的设计更加节能。

为了运行下面的演示,我们选择了一台搭载了 Core Ultra 7 155H CPU 的 中端笔记本电脑。现在,我们选一个可爱的小语言模型到这台笔记本电脑上跑跑看吧!

  • Core Ultra 7 155H CPUhttps://www.intel.com/content/www/us/en/products/sku/236847/intel-core-ultra-7-processor-155h-24m-cache-up-to-4-80-ghz/specifications.html

  • MSI Prestige Evo 笔记本电脑https://www.amazon.com/MSI-Prestige-Evo-Laptop-A1MG-029US/dp/B0CP9Y8Q6T/

注意: 要在 Linux 上运行此代码,请先遵照 此说明 安装 GPU 驱动。

  • 说明文档https://docs.openvino.ai/2024/get-started/configurations/configurations-intel-gpu.html

微软 Phi-2 模型

微软于 2023 年 12 月 发布 了 Phi-2 模型,它是一个 27 亿参数的文本生成模型。

  • Phi-2 发布博文https://www.microsoft.com/en-us/research/blog/phi-2-the-surprising-power-of-small-language-models/

微软给出的基准测试结果表明,Phi-2 并未因其较小的尺寸而影响生成质量,其表现优于某些最先进的 70 亿参数和 130 亿参数的 LLM,甚至与更大的 Llama-2 70B 模型相比也仅有一步之遥。

1072f9b12c69f6a3edde2795520fc5b2.png

这使其成为可用于笔记本电脑推理的有利候选。另一个候选是 11 亿参数的 TinyLlama 模型。

  • TinyLlamahttps://hf.co/TinyLlama/TinyLlama-1.1B-Chat-v1.0

现在,让我们看看如何缩小模型以使其更小、更快。

使用英特尔 OpenVINO 和 Optimum Intel 进行量化

英特尔 OpenVINO 是一个开源工具包,其针对许多英特尔硬件平台对 AI 推理工作负载进行优化 (Github、文档),模型量化是其重要特性之一。

  • OpenVINO Github 仓库https://github.com/openvinotoolkit/openvino

  • OpenVINO 文档https://docs.openvino.ai/2024/home.html

我们与英特尔合作,将 OpenVINO 集成至 Optimum Intel 中,以加速 Hugging Face 模型在英特尔平台上的性能 (Github,文档)。

  • Optium Intel Github 仓库https://github.com/huggingface/optimum-intel

  • Optimum Intel 文档https://hf.co/docs/optimum/intel/index

首先,请确保你安装了最新版本的 optimum-intel 及其依赖库:

pip install --upgrade-strategy eager optimum[openvino,nncf]

optimum-intel 支持用户很容易地把 Phi-2 量化至 4 比特。我们定义量化配置,设置优化参数,并从 Hub 上加载模型。一旦量化和优化完成,我们可将模型存储至本地。

from transformers import AutoTokenizer, pipeline
from optimum.intel import OVModelForCausalLM, OVWeightQuantizationConfigmodel_id = "microsoft/phi-2"
device = "gpu"
# Create the quantization configuration with desired quantization parameters
q_config = OVWeightQuantizationConfig(bits=4, group_size=128, ratio=0.8)# Create OpenVINO configuration with optimal settings for this model
ov_config = {"PERFORMANCE_HINT": "LATENCY", "CACHE_DIR": "model_cache", "INFERENCE_PRECISION_HINT": "f32"}tokenizer = AutoTokenizer.from_pretrained(model_id)
model = OVModelForCausalLM.from_pretrained(model_id,export=True, # export model to OpenVINO format: should be False if model already exportedquantization_config=q_config,device=device,ov_config=ov_config,)# Compilation step : if not explicitly called, compilation will happen before the first inference
model.compile()
pipe = pipeline("text-generation", model=model, tokenizer=tokenizer)
results = pipe("He's a dreadful magician and")save_directory = "phi-2-openvino"
model.save_pretrained(save_directory)
tokenizer.save_pretrained(save_directory)

ratio 参数用于控制将多少权重量化为 4 比特 (此处为 80%),其余会量化至 8 比特。group_size 参数定义了权重量化组的大小 (此处为 128),每个组都具有独立的缩放因子。减小这两个值通常会提高准确度,但同时会牺牲模型尺寸和推理延迟。

你可以从我们的 文档 中获取更多有关权重量化的信息。

注意: 你可在 Github 上 找到完整的文本生成示例 notebook。

  • Github Notebook 地址https://github.com/huggingface/optimum-intel/blob/main/notebooks/openvino/quantized_generation_demo.ipynb

那么,在我们的笔记本电脑上运行量化模型究竟有多快?请观看以下视频亲自体验一下!播放时,请选择 1080p 分辨率以获得最大清晰度。

在第一个视频中,我们向模型提了一个高中物理问题: “ Lily has a rubber ball that she drops from the top of a wall. The wall is 2 meters tall. How long will it take for the ball to reach the ground?

89e0a81d378d210274e5a7f9fba23f22.gif

在第二个视频中,我们向模型提了一个编码问题: “ Write a class which implements a fully connected layer with forward and backward functions using numpy. Use markdown markers for code.

c02fdd4900c0511ac5de6779c0b6cc79.gif

如你所见,模型对这两个问题生成的答案质量都非常高。量化加快了生成速度,但并没有降低 Phi-2 的质量。我本人很愿意在我的笔记本电脑上每天使用这个模型。

总结

借助 Hugging Face 和英特尔的工作,现在你可以在笔记本电脑上运行 LLM,并享受本地推理带来的诸多优势,如隐私、低延迟和低成本。我们希望看到更多好模型能够针对 Meteor Lake 平台及其下一代平台 Lunar Lake 进行优化。Optimum Intel 库使得在英特尔平台上对量化模型变得非常容易,所以,何不试一下并在 Hugging Face Hub 上分享你生成的优秀模型呢?多多益善!

下面列出了一些可帮助大家入门的资源:

  • Optimum Intel 文档https://hf.co/docs/optimum/main/en/intel/inference

  • 来自英特尔及 Hugging Face 的 开发者资源https://www.intel.com/content/www/us/en/developer/partner/hugging-face.html

  • 深入探讨模型量化的视频: 第 1 部分、第 2 部分https://youtu.be/kw7S-3s50ukhttps://youtu.be/fXBBwCIA0Ds

如若你有任何问题或反馈,我们很乐意在 Hugging Face 论坛 上解答。

  • 论坛地址https://discuss.huggingface.co/

感谢垂阅!


英文原文: https://hf.co/blog/phi2-intel-meteor-lake
原文作者: Julien Simon,Ella Charlaix,Ofir Zafrir,Igor Margulis,Guy Boudoukh,Moshe Wasserblat
译者: Matrix Yao (姚伟峰),英特尔深度学习工程师,工作方向为 transformer-family 模型在各模态数据上的应用及大规模模型的训练推理。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/625147.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VScode配置launch+tasks[自己备用]

VScode配置launchtasks[自己备用],配置文件详解 launch.json 字段 name :启动配置的名称,也就是显示在调试配置下拉菜单中的名字,如果添加了多个配置可以用此作为区分 字段 program :可执行文件完整路径。 ① 由于 C…

8thWall vs. AR.js

对于熟悉 JavaScript、WebGL 和 HTML5 等 Web 技术的数字创作者来说,8th Wall 提供了功能丰富且强大的 AR 开发平台,尽管价格较高。 然而,新手开发人员和专注于基于标记的 AR 的开发人员可能会发现 AR.js 更易于使用且更经济实惠。 1、8th Wa…

STM32 F103 C8T6开发笔记14:与HLK-LD303-24G测距雷达通信

今日尝试配通STM32 F103 ZET6与HLK-LD303-24G测距雷达的串口通信解码 文章提供测试代码...... 目录 HLK-LD303-24G测距雷达外观: 线路连接准备: 定时器与串口配置准备: 定时器2的初始化: 串口1、2初始化: 串口1、2自定…

PHP一句话木马

一句话木马 PHP 的一句话木马是一种用于 Web 应用程序漏洞利用的代码片段。它通常是一小段 PHP 代码,能够在目标服务器上执行任意命令。一句话木马的工作原理是利用 Web 应用程序中的安全漏洞,将恶意代码注入到服务器端的 PHP 脚本中。一旦执行&#xf…

python-matplotlib(二)3D图形绘制

一、绘制线形图 Axes3D.plot 函数用来绘制线形图。 import matplotlib.pyplot as plt import numpy as npfrom mpl_toolkits.mplot3d import Axes3Dfig plt.figure() ax fig.add_subplot(projection3d)x np.linspace(-10, 10, 1000) y np.linspace(-10, 10, 1000) z np.…

MySQL 试图

视图功能在 5.0 以后的版本启用 视图是一张虚表。数据表确实包含了具体数据并且保存到硬盘中的实表。视图使用数据检索语句动态生 成的一张虚表。每一次数据服务重启或者系统重启之后,在数据库服务启动期间,会使用创建视图的语 句重新生成视图中的数据&…

命令模式

命令模式:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。 命令模式的好处: 1、它能较容易地设计一个命令队列; 2、在需要的情况下&a…

VScode插件发布

背景 上期在初涉 VS Code 插件开发-CSDN博客中,通过Yeoman工具创建了第一个插件项目,在helloworld的基础上修改,实现预期的功能后,需要将VScode插件发布到插件市场中使用。 官方文档:Publishing Extensions | Visual…

Spectral Adversarial MixUp for Few-Shot Unsupervised Domain Adaptation论文速读

文章目录 Spectral Adversarial MixUp for Few-Shot Unsupervised Domain Adaptation摘要方法Domain-Distance-Modulated Spectral Sensitivity (DoDiSS)模块Sensitivity-Guided Spectral Adversarial Mixup (SAMix)模块 实验结果 Spectral Adversarial MixUp for F…

Vue(二)

文章目录 1.条件渲染1.关于js中的false的判定2.基本介绍3.v-if1.需求分析2.代码实例 4.v-show实现5.v-if与v-show比较6.课后练习 2.列表渲染1.代码实例2.课后练习 3.组件化编程1.基本介绍2.实现方式一_普通方式2.实现方式二_全局组件方式3.实现方式三_局部组件方式 4.生命周期和…

十大排序——11.十大排序的比较汇总及Java中自带的排序算法

这篇文章对排序算法进行一个汇总比较! 目录 0.十大排序汇总 0.1概述 0.2比较和非比较的区别 0.3基本术语 0.4排序算法的复杂度及稳定性 1.冒泡排序 算法简介 动图演示 代码演示 应用场景 算法分析 2.快速排序 算法简介 动图演示 代码演示 应用场景…

2024年4月最新版GPT

2024年4月最新版ChatGPT/GPT4, 附上最新的使用教程。 随着人工智能技术的不断发展,ChatGPT和GPT4已经成为了人们日常生活中不可或缺的助手。2024年4月,OpenAI公司推出了最新版本的GPT4,带来了更加强大的功能和更加友好的用户体验。本文将为大家带来最新版GPT4的实用…