在“AI PC”中使用NPU运行 Phi-3-mini

news2024/12/24 2:17:30

欢迎关注我的公众号“ONE生产力”,获取更多AI、云计算资讯分享!

前段时间,我做了一系列微软Phi-3-mini小语言模型的教程,很多朋友参考教程进行了实践,其中有一个朋友反馈说模型token推理很慢,没有答道我说的可用程度。我询问了他的硬件配置,他说是才买的联想“AI PC”,配备了Intel Core Ultra 7处理器。这配置可比我用的7840HS强多了,但为何运行效果不佳呢?因为没有正确使用Intel Core Ultra处理器内置的NPU。

什么是NPU?

网上有很多人吐槽“AI PC”,说这个无非是装了一些AI应用,其实和硬件没关系,X79洋垃圾一样可以用。这话对也不对,确实目前大多数AI应用都依赖云服务,说白了,给个浏览器就能用;但是对于利用本地算力的应用,这些老志强可能就力不从心了,此时就轮到这些“AI PC”发力了。

例如这位朋友的“AI PC”装备的Intel Ultra处理器内置了NPU。NPU(神经处理单元)是大型 SoC 上的专用处理器或处理单元,专为加速神经网络操作和 AI 任务而设计。与通用 CPU 和 GPU 不同,NPU 针对数据驱动的并行计算进行了优化,使其在处理视频和图像等大量多媒体数据以及处理神经网络数据方面非常高效。他们特别擅长处理与 AI 相关的任务,例如语音识别、视频通话中的背景模糊以及物体检测等照片或视频编辑过程。

虽然许多 AI 和机器学习工作负载在 GPU 上运行,但 GPU 和 NPU 之间存在关键区别。GPU 以其并行计算能力而闻名,但并非所有 GPU 在处理图形之外都同样高效。另一方面,NPU 专为神经网络操作中涉及的复杂计算而构建,使其对 AI 任务非常有效。

下面,我们来看看如何通过朋友这颗Intel Core Ultra处理器内置的NPU来加速运行Phi-3模型。

安装Intel NPU 加速库

Intel NPU 加速库 https://github.com/intel/intel-npu-acceleration-library 是一个 Python 库,旨在通过利用Intel神经处理单元 (NPU) 的强大功能在兼容硬件上执行高速计算来提高应用程序的效率。

使用 pip 安装 Python 库

pip install intel-npu-acceleration-library

使用Intel NPU 加速库运行 Phi-3

1、使用Intel NPU 加速库量化原始 Phi-3 模型

from transformers import AutoTokenizer, TextStreamer, AutoModelForCausalLM,pipeline

import intel_npu_acceleration_library

import torch



model_id = "microsoft/Phi-3-mini-4k-instruct"



model = AutoModelForCausalLM.from_pretrained(model_id, torch_dtype="auto", use_cache=True,trust_remote_code=True).eval()

tokenizer = AutoTokenizer.from_pretrained(model_id)



print("Compile model for the NPU")

model = intel_npu_acceleration_library.compile(model, dtype=torch.float16)

2、量化成功后,继续执行调用 NPU 运行 Phi-3 模型。

pipe = pipeline(

    "text-generation",

    model=model,

    tokenizer=tokenizer,

)



generation_args = {

    "max_new_tokens": 500,

    "return_full_text": False,

    "temperature": 0.0,

    "do_sample": False,

}



query = "<|system|>You are a helpful AI assistant.<|end|><|user|>Can you introduce yourself?<|end|><|assistant|>"



output = pipe(query, **generation_args)



output[0]['generated_text']

3、在执行代码时,我们可以通过任务管理器查看NPU的运行状态:

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

做项目时,怎么运用 SWOT 分析法进行项目或决策分析?

SWOT分析法是一种常用的战略工具&#xff0c;用于评估项目或决策的优势、劣势、机会和威胁。以下是在项目或决策分析中如何运用SWOT分析法的一般步骤&#xff1a; 步骤1&#xff1a;明确分析的目标 在进行SWOT分析之前&#xff0c;首先要明确分析的目标是什么。你可能想要分析…

如何学习ai agent?

如何学习Agent&#xff0c;推荐阅读《动手做AI Agent》这本书。 推荐理由&#xff1a; 1&#xff1a;一本书能够全方位了解并探索Agent的奥秘&#xff01; &#xff08;1&#xff09;Agent的发展进程。 &#xff08;2&#xff09;可以帮我们做哪些事&#xff1a;自动办公&am…

Mysql基础教程(10):LIMIT

MySQL LIMIT 用法与实例 在 MySQL 中&#xff0c;我们使用 LIMIT 子句来限定 SELECT 语句返回的行的数量。 MySQL LIMIT语法 该 LIMIT 子句可用于限制 SELECT 语句返回的行数。 LIMIT 接受一个或两个非负数正数作为参数。 LIMIT 子句的语法如下&#xff1a; LIMIT [offset,…

python绘制北京汽车流量热力图:从原理到实践

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、引言 二、热力图绘制原理 三、热力图绘制实践 1. 数据准备 2. 地图组件选择 3. 数据…

seRsync + Rsync 实时同步

文章目录 1&#xff0c;结构图2&#xff0c;节点A2.1 安装rsync2.2 安装seRsync2.3&#xff0c; 创建seRsync的守护进程用systemd管理并启动2.4&#xff0c;上传rsync.pass密码文件到配置文件目录&#xff1a;/etc/2.5 &#xff0c;重新加载systemd&#xff0c;启动sersyncd守护…

CSPM.pdf

PDF转图片 归档&#xff1a;

直播领域新宠—第三代大模型无人直播系统:提升销售业绩的秘密武器

随着科技的飞速发展和人们对智能化生活的追求&#xff0c;直播领域也迎来了革新性的突破。第三代大模型无人直播系统&#xff0c;作为直播领域的新宠&#xff0c;正以其独特的魅力和优势&#xff0c;成为提升销售业绩的秘密武器。 首先&#xff0c;第三代大模型无人直播系统具…

3---C++之list(逻辑梳理、简单使用演示、部分源码实现)

一、先决知识点1——认识list&#xff1a; list底层实现是双向链表&#xff0c;但是不是循环链表。list是否使用哨兵节点&#xff0c;是细节问题&#xff0c;C标准并未规定。list是链表&#xff0c;他的优势在于对节点的操作会十分灵活&#xff0c;因此它在需要频繁插入和删除元…

压力测试JMeter

压力测试JMeter 1 下载JMeter1.1 测试计划1.2 JMeter Address Already in use 错误解决1.3 java 内存模型1.4 jconsole与jvisualvm1.5 优化方向1.6 Nginx动静分离 1 下载JMeter 官网地址&#xff1a;https://jmeter.apache.org/download_jmeter.cgi 运行apache-jmeter-5.6.3\…

鸿蒙应用Stage模型【应用/组件级配置】

应用/组件级配置 在开发应用时&#xff0c;需要配置应用的一些标签&#xff0c;例如应用的包名、图标等标识特征的属性。本文描述了在开发应用需要配置的一些关键标签。 应用包名配置 应用需要在工程的AppScope目录下的[app.json5配置文件]中配置bundleName标签&#xff0c;…

万字长文详解QUIC协议,为什么有了TCP我们还需要QUIC?

本文目录 1.前言2. HTTP缺点缺点一&#xff1a;建立连接的握手延迟大缺点二&#xff1a;多路复用的队首阻塞缺点三&#xff1a;TCP协议的更新滞后 3.TCP缺点3.QUIC优点一&#xff1a;避免队首阻塞的多路复用优点二&#xff1a;支持连接迁移优点三&#xff1a;可插拔的拥塞控制优…

YAML快速编写示例

一、案例 1.1 自主式创建service关联上方的pod 资源名称my-nginx-kkk命名空间my-kkk容器镜像nginx:1.21容器端口80标签njzb:my-kkk 1.1.1 创建一个demo文件夹 1.1.2 创建并获取模版文件 1.1.3 查看服务并编写yaml文件 1.1.4 编写yaml文件并部署&#xff0c;查看服务是否运行成…

Kotlin和Swift的前世一定是兄弟

Swift介绍 Swift这门编程语言主要用于iOS和MacOS的开发&#xff0c;可以说是非常流行的一门编程语言&#xff0c;我只想说&#xff0c;如果你会Kotlin&#xff0c;那么你学习Swift会非常容易&#xff0c;反之亦然。下载XCode&#xff0c;然后你就可以创建Playground练习Swift语…

Qt图像处理技术十:得到QImage图像的高斯模糊

效果图 参数为5 参数为20 原理 高斯模糊使用正态分布来分配周围像素的权重。具体来说&#xff0c;距离中心点越近的像素对最终结果的影响越大&#xff0c;权重也越高&#xff1b;随着距离的增加&#xff0c;权重逐渐减小。 这种权重分配方式确保了图像在模糊处理时&#xff0…

Docker(Centos7+)

先确定是否 Centos 7 及以上的版本 查看是否 ping 通外网 linux centos7运行下面的代码&#xff0c;基本上都可以正常安装 # 删除之前的docker残留 yum -y remove docker*yum install -y yum-utilsyum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/…

中草药识别系统Python+深度学习人工智能+TensorFlow+卷积神经网络算法模型

一、介绍 中草药识别系统。本系统基于TensorFlow搭建卷积神经网络算法&#xff08;ResNet50算法&#xff09;通过对10中常见的中草药图片数据集&#xff08;‘丹参’, ‘五味子’, ‘山茱萸’, ‘柴胡’, ‘桔梗’, ‘牡丹皮’, ‘连翘’, ‘金银花’, ‘黄姜’, ‘黄芩’&…

我给线程池管理框架hippo4j找bug

1 虚拟机参数不生效 hippo4j的docker启动脚本位于 docker/docker-startup.sh 。从下图可以看到 JAVA_OPT放在了jar包名 hippo4j-server.jar之后&#xff0c;而只有项目参数才放在jar包名之后。 实际上这里JAVA_OPT中包含虚拟机参数&#xff0c;而虚拟机参数要放在jar包名之前…

windows配置dns访问git , 加快访问速度保姆级教程

设置 DNS 访问 Git 需要修改电脑的 DNS 配置。下面是具体的操作流程&#xff1a; 第一步&#xff1a;打开命令提示符或终端窗口 在 Windows 系统中&#xff0c;可以按下 Win R 组合键&#xff0c;然后输入 “cmd”&#xff0c;按下 Enter 键打开命令提示符窗口。在 macOS 或 …

【tomcat 源码分析总结】

文章目录 tomcat官网路径目录结构介绍&#xff1a;Tomcat 系统架构 和 原理剖析http 的请求的处理过程 Tomcat 请求处理大致过程 tomcat官网路径 目录结构介绍&#xff1a; confserver.xml 端口的指定tomcat-users.xml 角色web.xml : tomcat 全局的xmllogging.properties 日志…

深入剖析 Kubernetes 原生 Sidecar 容器

1 Sidecar 容器的概念 sidecar 容器的概念在 Kubernetes 早期就已经存在。一个明显的例子就是 2015 年的这篇 Kubernetes 博客文章&#xff0c;其中提到了 sidecar 模式。多年来&#xff0c;sidecar 模式在应用程序中变得越来越普遍&#xff0c;使用场景也变得更加多样化。 其…