技术点滴 · 2024年8月9日 0

在英特尔® 酷睿™ Ultra7处理器上优化和部署Phi-3-min模型

作者:王一凡,英特尔边缘计算创新大使

1.1 Phi-3-mini模型简介

2024年4月23日,微软研究院公布Phi-3系列AI大模型,包含三个版本:mini(3.8B参数)、**all(7B参数)以及medium(14B参数)。phi-3-mini是一个拥有3.8B参数规模的模型,其训练数据集基于Phi-2所使用数据集的扩大版本,由大量过滤后的网络数据和合成数据组成,经过3.3T tokens的训练,表现可以与Mixtral 8x7B和GPT-3.5等模型相媲美(例如,phi-3-mini在MMLU测试中达到了69%的准确率,在MT-bench上的得分为8.38)。

请用下面的命令把Llama3-Chinese-8B-Instruct模型的预训练权重下载到本地待用。

git clone https://www.modelscope.cn/LLM-Research/Phi-3-mini-128k-instruct.git

1.2 英特尔® 酷睿™ Ultra处理器简介

英特尔® 酷睿™ Ultra系列处理器是英特尔公司于2023年6月推出的一个高端处理器系列,其第一代产品代号为Meteor Lake。这款处理器标志着英特尔在处理器设计上的重大革新,它采用了先进的Intel 4制造工艺(先前称为7nm),并利用了EUV(极紫外光刻)技术,这带来了显著的性能提升和能效优化。

英特尔®酷睿™ Ultra系列处理器内置CPU、锐炫™GPU和NPU,非常适合在端侧运行AI大模型。本文将在英特尔®酷睿™ Ultra 7 155H处理器上完成验证。

1.3 搭建开发环境

首先,请下载并安装Anaconda,然后创建并激活名为phi3的虚拟环境:

conda create -n phi3 python=3.11  #创建虚拟环境
conda activate phi3                #激活虚拟环境
python -m pip install --upgrade pip           #升级pip到最新版本

然后,安装Optimum Intel和其依赖项OpenVINO™与NNCF

python -m pip install "optimum-intel[openvino,nncf]"@git+https://github.com/huggingface/optimum-intel.git

最后,安装构建WebUI的工具包:

pip install gradio mdtex2html streamlit

1.4 对Phi-3-mini-4k-instruct模型进行INT4量化

optimum-cli是Optimum Intel自带的跨平台命令行工具,可以不用编写量化代码,实现对Phi-3-mini-4k-instruct模型的量化。

执行命令将Phi-3-mini-4k-instruct模型量化为INT4 OpenVINO格式模型:

optimum-cli export openvino --model Phi-3-mini-4k-instruct --task text-generation-with-past --weight-format int4 --group-size 128 --ratio 0.8 --trust-remote-code phi3_ov

1.5 编写Phi-3-Mini的WebUI对话程序

Phi-3-Mini推理程序的关键代码,如下所示,主要实现载入Phi-3模型和对应的分词器,然后将提示词Token化后输入模型,最后解码模型生成的Token序列。

完整代码请参考:https://github.com/WangAria/OpenVINO/blob/main/phi3_webui.py

model_dir = “C:\\Users\\ASUS\\phi3_ov”  #Phi-3-mini-4k-instruct int4模型路径

DEVICE = “GPU” #可更换为”CPU”, “AUTO”…

# 编译并载入Phi-3-mini-4k-instruct int4模型到指定DEVICE

model_dir = "C:\\Users\\ASUS\\phi3_ov"  #Phi-3-mini-4k-instruct int4模型路径
DEVICE = "GPU" #可更换为"CPU", "AUTO"...
# 编译并载入Phi-3-mini-4k-instruct int4模型到指定DEVICE
ov_model = OVModelForCausalLM.from_pretrained(
    model_dir,
    device=DEVICE,
    ov_config=ov_config,
    config=AutoConfig.from_pretrained(model_dir, trust_remote_code=True),
    trust_remote_code=True,
)
# 实例化Phi-3-mini-4k-instruct int4模型的Tokenizer
tok = AutoTokenizer.from_pretrained(model_dir, trust_remote_code=True)

运行phi3_webui.py, 结果如下:

python phi3_webui.py

下载sample视频并运行,链接:phi3.mp4

1.6 总结

Phi-3模型是微软公司新近推出的一系列小型语言模型(SLM),旨在以更小的规模实现与大型语言模型(LLM)相媲美的性能,特别是在语言处理、推理、编码和数学基准测试方面;英特尔® 酷睿™ Ultra系列处理器是英特尔公司新近推出高端处理器,相对前代有显著的AI性能提升和能效优化;二者相互结合,使得广大的端侧设备都能受益于日益先进的AI技术。