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

对应于其强壮的才能,大言语模型 (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 库。

注意: 假如你想一起量化权重和激活的话,可参阅 该文档

咱们开端吧。

英特尔 Meteor Lake

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

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中端笔记本电脑。现在,咱们选一个心爱的小言语模型到这台笔记本电脑上跑跑看吧!

注意: 要在 Linux 上运转此代码,请先遵循 此说明 装置 GPU 驱动。

微软 Phi-2 模型

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

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

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

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

现在,让咱们看看怎么缩小模型以使其更小、更快。

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

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

咱们与英特尔协作,将 OpenVINO 集成至 Optimum Intel 中,以加快 Hugging Face 模型在英特尔渠道上的功能 (Github文档)。

首先,请确保你装置了最新版别的 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, OVWeightQuantizationConfig
model_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 exported
    quantization_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。

那么,在咱们的笔记本电脑上运转量化模型究竟有多快?请观看以下视频亲身体验一下!播映时,请挑选 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?

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

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

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

总结

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

下面列出了一些可协助咱们入门的资源:

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

感谢垂阅!


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