IPEX-LLM (原名为BigDL-LLM)开发分享

VidBot项目介绍

VidBot,视学知识助手。它提供视频流量分析、视频转知识图谱、视频转思维导图、知识点联查、视频自动分段、智能助教和共享笔记等功能,旨在改善您的在线视频体验和学习过程,帮助视频上传者了解观众行为和优化内容。无论您是教育工作者、内容创作者,还是渴望更深入理解视频内容的学习者,VidBot都将成为您不可或缺的工具。


项目展示:


IPEX-LLM加速

(注:本项目示例运行在AIPC上,操作系统版本为Windows11。CPU型号:Intel(R) Core(TM) Ultra 5 125H   3.60 GHz)

1.IPEX-LLM简介

IPEX-LLM is a PyTorch library for running LLM on Intel CPU and GPU (e.g., local PC with iGPU, discrete GPU such as Arc, Flex and Max) with very low latency.【IPEX-LLM官方文档

简单来说,IPEX-LLM提供了基于Intel的CPU与GPU来量化和加速模型的API。

若要利用IPEX-LLM中的 Intel GPU 加速,需要安装对应的英特尔GPU驱动。Intel GPU 配置环境官方文档

2. Whisper语音模型加速

Whisper是 OpenAI 2022年发布的一款语音预训练大模型,集成了多语种ASR、语音翻译、语种识别的功能。

可选择模型类型:

IPEX-LLM提供了Whisper的CPU与GPU(i-gpu)加速接口。

CPU加速示例(以openai-whisper模型接口为例):

import whisper
from ipex_llm import optimize_model 

# Load whisper model under pytorch framework
model = whisper.load_model(model_name)

# With only one line to enable IPEX-LLM optimize on a pytorch model
model = optimize_model(model)

GPU加速示例:

from ipex_llm.transformers import AutoModelForSpeechSeq2Seq
from transformers import WhisperProcessor

# Load model in 4 bit,
# which convert the relevant layers in the model into INT4 format
model = AutoModelForSpeechSeq2Seq.from_pretrained(model_path,
                                                  load_in_4bit=True,
                                                  optimize_model=False,
                                                  use_cache=True)
# 这一行代码将whipser模型放在i-gpu上进行推理
model.to('xpu')

 3.ChatGLM3-6B语言模型加速

ChatGLM3是智谱AI和清华大学 KEG 实验室联合发布的对话预训练模型。ChatGLM3-6B 是 ChatGLM3 系列中的开源模型。【ChatGLM3-6b官方文档

模型任务:总结给定文本摘要示例   

IPEX-LLM在i-gpu加速ChatGLM3-6b的推理示例:

from ipex_llm.transformers import AutoModel
from transformers import AutoTokenizer
import subprocess
import time
    
MODEL_PATH = os.environ.get('MODEL_PATH', model_path)

TOKENIZER_PATH = os.environ.get("TOKENIZER_PATH", model_path)

print('----------- ipex-gpu Warm-up... -----------')

model = AutoModel.load_low_bit(MODEL_PATH,trust_remote_code=True)

model = model.to('xpu')

tokenizer = AutoTokenizer.from_pretrained(TOKENIZER_PATH, trust_remote_code=True)

# 格式化提示
CHATGLM_V3_INIT_PROMPT_TEMPLATE = "这是Warm-up过程,无需做出回答\n"

prompt = CHATGLM_V3_INIT_PROMPT_TEMPLATE

# 编码提示
input_ids = tokenizer.encode(prompt, return_tensors="pt")

input_ids = input_ids.to('xpu')

output = model.generate(input_ids,
                    do_sample=False,
                    max_new_tokens=32) # warm-up

print('----------- ipex-gpu Warm-up finished -----------')


    
def GetExtract(
            text_path,
            time_path,
            extract_path,
            json_path,
            video_name,
            n_predict=5000):
    


    CHATGLM_V3_PROMPT_TEMPLATE = "总结下面的文字的大纲。\n{prompt}\n答:"

    # 打开要总结的文本文件
    with open (text_path, "r", encoding="utf-8") as f:
        prompt = f.read()

    # 格式化提示
    prompt = CHATGLM_V3_PROMPT_TEMPLATE.format(prompt=prompt)
 
    # 编码提示
    input_ids = tokenizer.encode(prompt, return_tensors="pt")

    # 将输入送到GPU上(如果您的模型是在GPU上训练的)
    input_ids = input_ids.to('xpu')
    
    # 开始时间
    st = time.time()

    # 生成输出
    output = model.generate(input_ids, max_new_tokens=n_predict)

    # 结束时间
    end = time.time()
        
    # 解码输出
    output_str = tokenizer.decode(output[0], skip_special_tokens=True)

    # 处理输出,分离“答:”前的部分
    parts = output_str.split("答:")
    if len(parts) > 1:
        output_str = parts[1]

    # 打印时间消耗
    print(f'----------- 模型生成摘要用时: {end-st} s -----------')

    # 将生成的摘要保存到文件
    with open(extract_path, "w", encoding="utf-8") as f:
        f.write(output_str)
    
 

总结 

IPEX-LLM 是一个针对大语言模型的优化加速库,它提供了各种低精度优化(例如 INT4 / INT5 / INT8),并可利用多种英特尔® CPU集成的硬件加速技术(AVX/VNNI/AMX 等)和最新的软件优化,来赋能大语言模型在英特尔® 平台上实现更高效的优化和更为快速的运行。

IPEX-LLM 的一大重要特性是:对基于 Hugging Face Transformers API 的模型,只需改动一行代码即可对模型进行加速,理论上可以支持运行任何 Transformers 模型,这对熟悉 Transformers API 的开发者非常友好。

参考连接

https://github.com/intel-analytics/ipex-llm

https://github.com/openai/whisper

THUDM/ChatGLM3: ChatGLM3 series: Open Bilingual Chat LLMs | 开源双语对话语言模型 (github.com)https://zhuanlan.zhihu.com/p/653723972

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值