使用IPEX-LLM加速大语音模型LLM

IPEX-LLM是一个用于在英特尔CPU和GPU(如本地PC的iGPU、独立显卡如Arc、Flex和Max)上加速本地LLM推理和微调的PyTorch库。

  • IPEX-LLM是BigDL-LLM的升级版。
  • IPEX-LLM基于英特尔PyTorch扩展库(IPEX)以及llama.cpp、bitsandbytes、vLLM、qlora、AutoGPTQ、AutoAWQ等优秀工 作的成果。
  • IPEX-LLM提供了与llama.cpp、ollama、Text-Generation-WebUI、Hugging Face transformers、Hugging Face PEFT、LangChain、LlamaIndex、DeepSpeed-AutoTP、vLLM、FastChat、Hugging Face TRL、AutoGen、ModeScope等库的无缝集成。
  • IPEX-LLM目前已有50多个模型在ipex-llm上进行了优化/验证,包括LLaMA2、Mistral、Mixtral、Gemma、LLaVA、Whisper、ChatGLM、Baichuan、Qwen、RWKV等。

环境准备

  • 安装“ Visual Studio 2022 Community”并选择“使用 C++ 进行桌面开发”工作负载。
  • 安装或更新到最新的 GPU 驱动程序
  • 安装 Miniconda。

创建并激活conda环境

conda create -n llm python=3.11 libuv
conda activate llm

安装Intel oneAPI Base Toolkit 2024.0

pip install dpcpp-cpp-rt==2024.0.2 mkl-dpcpp==2024.0.0 onednn==2024.0.0

安装ipex-llm

pip install --pre --upgrade ipex-llm[xpu] --extra-index-url https://pytorch-extension.intel.com/release-whl/stable/xpu/cn/

根据设备类型设置以下环境变量

Intel iGPU

set SYCL_CACHE_PERSISTENT=1
set BIGDL_LLM_XMX_DISABLED=1

Intel Arc™ A-Series Graphics

set SYCL_CACHE_PERSISTENT=1

调用示例

import torch
import timefrom transformers import AutoModelForCausalLM, AutoTokenizer
from ipex_llm import optimize_modelmodel_path = "C:\\Baichuan2\\Baichuan2-7B-Chat"def test(prompt):# Load modeltokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=True)model = AutoModelForCausalLM.from_pretrained(model_path,trust_remote_code=True,torch_dtype='auto',low_cpu_mem_usage=True)model = optimize_model(model)model = model.to('xpu')messages = [{"role": "user","content": prompt}]for i in range(3):st = time.time()response = model.chat(tokenizer, messages)end = time.time()print(response)print(f'Inference time: {end-st} s')test("介绍一下北京")


 

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

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

相关文章

PostgreSQL 免费的对象-关系数据库

目录 一、什么是数据库 二、ORDBMS 的一些术语 三、PostgreSQL 概述 四、PostgreSQL数据库优点和缺点 4.1PostgreSQL数据库的优点 4.2PostgreSQL数据库的缺点 4.3PostgreSQL 特征 五、Linux 上安装 PostgreSQL 5.1Yum 安装 PostgreSQL 5.1.1安装postgreSQL的官方yum仓…

54、图论-实现Trie前缀树

思路: 主要是构建一个trie前缀树结构。如果构建呢?看题意,应该当前节点对象下有几个属性: 1、next节点数组 2、是否为结尾 3、当前值 代码如下: class Trie {class Node {boolean end;Node[] nexts;public Node(…

Jammy@Jetson Orin - Tensorflow Keras Get Started

JammyJetson Orin - Tensorflow & Keras Get Started 1. 源由2. 步骤3. 预期&展望4. 总结5. 参考资料 1. 源由 之前过年的时候,花了两周的时间过了一遍 《ubuntu22.04laptop OpenCV Get Started》。 后续更多的时间需要再GPU算法上下功夫,目前…

如何在PostgreSQL中使用索引覆盖扫描提高查询性能?

文章目录 解决方案1. 创建合适的索引2. 确保查询能够使用索引覆盖扫描3. 调整查询以利用索引覆盖扫描4. 监控和调优 示例代码1. 创建索引2. 编写查询3. 检查是否使用索引覆盖扫描4. 调整索引 总结 在PostgreSQL中,索引是提高查询性能的关键工具之一。索引允许数据库…

Mybatis-plus 分页 自定义count方法

起因 使用了mybatisplus语句中有order by 语法mybatisplus会使用 select count(*) from (子语句) TOTAL 算出total但是会报错 查询条件QueryWrapper中还有order by排序条件,则生成的select count(*) from(sql) 就会报错 除非另外还指定了 TOP、OFFSET 或 FOR XML,否…

文章生成器免费版有哪些,哪个好用?

作为一个长期需要写作的人,对文章生成器自然是非常了解,如果搜文章生成器互联网上多到让人应接不暇,但小编今天要谈的是文章生成器免费版,因为看到很多写手朋友都想找一个免费的文章生成器来用,但是大家在网上搜可能很…

GITHUB的VB代码无法加载的问题解决

GITHUB里有不少好的VB代码,但是下载之后,经常出现工程加载出错的问题,例如: LOG文件为: 不能加载 0 行 0: 不能加载文件 D:\xxxx\Semi VB API Loader\frmMain.frm 。 原因其实很简单,github里的换行符是u…

巧用Stream流解决Page分页连表查询一对多展示错误的问题

1. 简介 在数据库一对多的情况下,使用Page分页查询这种Vo的时候如果直接查询会导致每页展示的条数不一致。 简单的代码如下 用户类 public class User{private Integer id; }地址类 public class UserAddress {private Integer id;private String address;private…

Promise.all 的方法还没执行完就执行了.then

碰见一个问题,接盘了一个有问题的页面修改。 改变日期后 查询很多数据再去重新加载页面上的数据显示相关的组件。 问题就来了。 加载异常捏…… 最后我一通查: 重点来了 是因为这个Promise.all(数组),里边这个数组的问题。现在是在数据中…

【机器学习】分类与预测算法的评价与优化

以实际案例解析F1值与P-R曲线的应用 一、分类算法与性能评价的重要性二、F1值与P-R曲线的概念与意义三、实例解析:以垃圾邮件检测为例四、代码实现与结果分析五、结论与展望 在数据驱动的时代,机器学习算法以其强大的数据处理和分析能力,成为…

Java单例模式的五种实现方式 懒汉式 饿汉式 双重校验锁 静态变量 静态内部类 枚举实现单例模式等

1、什么是单例模式? Java单例模式是一种设计模式,用于确保一个类只有一个实例,并提供全局访问点以获取该实例。它通常用于需要共享资源或控制某些共享状态的情况下。 2、实现方式 懒汉式:在类加载的时候就创建对象,…

Rust常用特型之Default特型

在Rust标准库中,存在很多常用的工具类特型,它们能帮助我们写出更具有Rust风格的代码。 某些类型可以有一个有意义的默认值,例如默认的向量或者字符串是空的,默认的数字为0,默认的Option是None等。 这样的类型可以实现…

Linux - tar (tape archive)

tar 的全称是 Tape Archive。它最初是在 Unix 系统中用于将数据写入磁带的工具,但现在它通常用于创建、维护、修改和提取文件的归档文件。尽管 tar 可以用于压缩和解压缩文件,但它本身并不进行压缩,而是通常与 gzip 或 bzip2 等压缩工具一起使…

【圆桌论坛】个人作为嘉宾参与问答环节的总结,Create 2024百度AI开发者大会之AI智能体开发与应用论坛

目录 ⭐前言⭐讨论话题✨本质和价值✨端侧部署✨应用商业模式✨商业模式 ⭐主题总结⭐有趣分享 ⭐前言 首先,非常荣幸和开心作为开发者和创业者代表参加百度Create AI大会分论坛圆桌论坛的问答环节。 在分论坛活动开始前,参加了文心智能体平台&#xff…

vi编辑器的用法linux中的vim编辑器大全

vim的介绍 vi 和 vim 命令是linux中强⼤的⽂本编辑器, 由于Linux系统⼀切皆⽂件,⽽配置⼀个服务就是在修改其配置⽂件的参数。 vim 编辑器是运维⼯程师必须掌握的⼀个⼯具, 没有它很多⼯作都⽆法完成。 其中有vi和vim两种 vi和vim的区别 Vim是Vi的升级版本&#…

了解IOS 中时间格式化 “en_US_POSIX” 的含义

最近在解决一个时间显示上的 bug,在 iOS 上显示时间时,如果用户默认选择的是 24 小时制,当然不会出现问题,但是选择的是 12 小时制,那么就会出现问题: 24 小时制 09:01:00 12 小时制 上午09:01:00 我们可以…

【Java 多线程】Volatile 详解

Volatile 为了平衡 CPU、内存和 IO 设备之间的读写速度,充分利用 CPU 的高性能,我们的计算机体系结构、操作系统以及编译程序都做了很多的优化: CPU 增加了高速缓存来平衡 CPU 和内存之间的速度差异,这也就导致可见性问题操作系…

无人机类型有哪些?

无人机可以按照多种方式进行分类,每种分类都有其特定的无人机类型。以下是一些常见的分类方式及其对应的无人机类型: 1. 按飞行平台构型分类: * 固定翼无人机 * 旋翼无人机 * 无人飞艇 * 伞翼无人机 * 扑翼无人机 2. 按用途分类&#xff1a…

【QT学习】9.绘图,三种贴图,贴图的转换

一。绘图的解释 Qt 中提供了强大的 2D 绘图系统,可以使用相同的 API 在屏幕和绘图设备上进行绘制,它主要基于QPainter、QPaintDevice 和 QPaintEngine 这三个类。 QPainter 用于执行绘图操作,其提供的 API 在 GUI 或 QImage、QOpenGLPaintDev…

websocket服务器

绑定client端的ip和port&#xff0c;监听client的消息&#xff0c;如果对方发送一个json格式的字符串&#xff0c;就给对方回复一个json格式的“type-join”的字符串&#xff0c;实现交互 #include <stdio.h> #include <stdlib.h> #include <string.h> #inc…