0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

英特尔CPU部署Qwen 1.8B模型的过程

英特尔物联网 来源:英特尔物联网 2024-01-12 10:28 次阅读

作者:英特尔边缘计算创新大使 卢雨畋

01概述

本文介绍了在英特尔 13 代酷睿 CPU i5 - 13490F 设备上部署 Qwen 1.8B 模型的过程,你需要至少 16GB 内存的机器来完成这项任务,我们将使用英特尔的大模型推理库 [BigDL] 来实现完整过程。

英特尔的大模型推理库 [BigDL]:

BigDL-llm 是一个在英特尔设备上运行 LLM(大语言模型)的加速库,通过 INT4/FP4/INT8/FP8 精度量化和架构针对性优化以实现大模型在英特尔 CPU、GPU 上的低资源占用与高速推理能力(适用于任何 PyTorch 模型)。

本文演示为了通用性,只涉及 CPU 相关的代码,如果你想学习如何在英特尔 GPU 上部署大模型。

60d232b0-b067-11ee-8b88-92fbcf53809c.gif

02环境配置

在开始之前,我们需要准备好 bigdl-llm 以及之后部署的相关运行环境,我们推荐你在 python 3.9 的环境中进行之后的操作。

如果你发现下载速度过慢,可以尝试更换默认镜像源:

pip config set global.index-url https://pypi.doubanio.com/simple`

%pip install --pre --upgrade bigdl-llm[all] 
%pip install gradio 
%pip install hf-transfer
%pip install transformers_stream_generator einops
%pip install tiktoken

左滑查看更多

03模型下载

首先,我们通过 huggingface-cli 获取 qwen-1.8B 模型,耗时较长需要稍作等待;这里增加了环境变量,使用镜像源进行下载加速。

import os


# 设置环境变量
os.environ['HF_ENDPOINT'] = 'https://hf-mirror.com'
# 下载模型
os.system('huggingface-cli download --resume-download qwen/Qwen-1_8B-Chat --local-dir qwen18chat_src')

左滑查看更多

04保存量化模型

为了实现大语言模型的低资源消耗推理,我们首先需要把模型量化到 int4 精度,随后序列化保存在本地的相应文件夹方便重复加载推理;利用 `save_low_bit` api 我们可以很容易实现这一步。

from bigdl.llm.transformers import AutoModelForCausalLM
from transformers import AutoTokenizer
import os
if __name__ == '__main__':
  model_path = os.path.join(os.getcwd(),"qwen18chat_src")
  model = AutoModelForCausalLM.from_pretrained(model_path, load_in_low_bit='sym_int4', trust_remote_code=True)
  tokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=True)
  model.save_low_bit('qwen18chat_int4')
  tokenizer.save_pretrained('qwen18chat_int4')

左滑查看更多

05加载量化模型

保存 int4 模型文件后,我们便可以把他加载到内存进行进一步推理;如果你在本机上无法导出量化模型,也可以在更大内存的机器中保存模型再转移到小内存的端侧设备中运行,大部分常用家用 PC 即可满足 int4 模型实际运行的资源需求。

import torch
import time
from bigdl.llm.transformers import AutoModelForCausalLM
from transformers import AutoTokenizer


QWEN_PROMPT_FORMAT = "{prompt} "
load_path = "qwen18chat_int4"
model = AutoModelForCausalLM.load_low_bit(load_path, trust_remote_code=True)
tokenizer = AutoTokenizer.from_pretrained(load_path, trust_remote_code=True)


input_str = "给我讲一个年轻人奋斗创业最终取得成功的故事"
with torch.inference_mode():
  prompt = QWEN_PROMPT_FORMAT.format(prompt=input_str)
  input_ids = tokenizer.encode(prompt, return_tensors="pt")
  st = time.time()
  output = model.generate(input_ids,
              max_new_tokens=512)
  end = time.time()
  output_str = tokenizer.decode(output[0], skip_special_tokens=True)
  print(f'Inference time: {end-st} s')
  print('-'*20, 'Prompt', '-'*20)
  print(prompt)
  print('-'*20, 'Output', '-'*20)
  print(output_str)

左滑查看更多

06gradio-demo 体验

为了得到更好的多轮对话体验,这里还提供了一个简单的 `gradio` demo界面方便调试使用,你可以修改内置 `system` 信息甚至微调模型让本地模型更接近你设想中的大模型需求。

import gradio as gr
import time
from bigdl.llm.transformers import AutoModelForCausalLM
from transformers import AutoTokenizer


QWEN_PROMPT_FORMAT = "{prompt} "


load_path = "qwen18chat_int4"
model = AutoModelForCausalLM.load_low_bit(load_path, trust_remote_code=True)
tokenizer = AutoTokenizer.from_pretrained(load_path,trust_remote_code=True)


def add_text(history, text):
  _, history = model.chat(tokenizer, text, history=history)
  return history, gr.Textbox(value="", interactive=False)


def bot(history):
  response = history[-1][1]
  history[-1][1] = ""
  for character in response:
    history[-1][1] += character
    time.sleep(0.05)
    yield history


with gr.Blocks() as demo:
  chatbot = gr.Chatbot(
    [], 
    elem_id="chatbot",
    bubble_full_width=False,
  )


  with gr.Row():
    txt = gr.Textbox(
      scale=4,
      show_label=False,
      placeholder="Enter text and press enter",
      container=False,
    )


  txt_msg = txt.submit(add_text, [chatbot, txt], [chatbot, txt], queue=False).then(
    bot, chatbot, chatbot, api_name="bot_response"
  )
  txt_msg.then(lambda: gr.Textbox(interactive=True), None, [txt], queue=False)


demo.queue()
demo.launch()

左滑查看更多

利用英特尔的大语言模型推理框架,我们可以实现大模型在英特尔端侧设备的高性能推理。只需要 2G 内存占用就可以实现与本地大模型的流畅对话,一起来体验下吧。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 英特尔
    +关注

    关注

    61

    文章

    9968

    浏览量

    171805
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10868

    浏览量

    211841
  • 模型
    +关注

    关注

    1

    文章

    3247

    浏览量

    48855

原文标题:英特尔 CPU 实战部署阿里大语言模型千问 Qwen-1_8B-chat | 开发者实战

文章出处:【微信号:英特尔物联网,微信公众号:英特尔物联网】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    基于C#和OpenVINO™在英特尔独立显卡上部署PP-TinyPose模型

    和 OpenVINO,将 PP-TinyPose 模型部署英特尔独立显卡上。 1.1 PP-TinyPose 模型简介 PP-TinyPose 是飞桨 PaddleDetecion
    的头像 发表于 11-18 18:27 2537次阅读

    #高通 #英特尔 #Elite 高通X Elite芯片或终结苹果、英特尔的芯片王朝

    高通英特尔苹果
    深圳市浮思特科技有限公司
    发布于 :2023年10月27日 16:46:07

    英特尔多款平板电脑CPU将于明年推出

    ` 中关村在线 据外媒Phone Arena报道,英特尔多款平板电脑CPU将于明年推出,达到扩大产品的覆盖范围,同时也能扩大产品的生产数量。相信在不久的明天,不管是在入门级还是旗舰级的平板电脑
    发表于 12-19 16:48

    启用英特尔Optane被视为“1.8TB硬盘+英特尔Optane”是什么原因?

    你好。当我在英特尔RST中启用英特尔Optane,然后重新启动我的计算机时,Defraggler将加速驱动器看作只是一个硬盘驱动器,在任务管理器中,它将其视为“1.8TB硬盘+英特尔O
    发表于 10-31 10:12

    英特尔爱迪生闪存失败

    :0a2b英特尔公司总线001设备057:ID 0403:6001 Future Technology Devices International,Ltd FT232 USB串行(UART)IC总线
    发表于 11-02 10:57

    为什么选择加入英特尔

    近日,加入英特尔已有3个月的明星芯片架构师Jim Keller接受了外媒VentureBeat的采访,在采访中谈及了自己加入英特尔的始末和让其为之兴奋的新角色——英特尔公司技术、系统架构和客户端事业部高级副总裁兼芯片工程事业部总
    发表于 07-25 07:31

    英特尔重点发布oneAPI v1.0,异构编程器到底是什么

    。oneAPI是什么?oneAPI是一个统一的、简化的编程模型,旨在简化跨多架构的开发过程(如CPU、GPU、FPGA、加速器)。oneAPI包含两个组成部分:一项产业计划和一款英特尔
    发表于 10-26 13:51

    介绍英特尔®分布式OpenVINO™工具包

    介绍英特尔®分布式OpenVINO™工具包可快速部署模拟人类视觉的应用程序和解决方案。 该工具包基于卷积神经网络(CNN),可扩展英特尔®硬件的计算机视觉(CV)工作负载,从而最大限度地提高
    发表于 07-26 06:45

    英特尔重新思考解决芯片短缺的常用基板

    ”的假冒零部件泛滥因为英特尔是世界上最大的芯片制造商之一,该公司一直在幕后工作,以加快制造过程和振兴整个半导体供应链。本周,英特尔通过一项重新考虑味之素集成电影(ABF)的新举措,认识到其在越南的网站可以
    发表于 06-20 09:50

    英特尔CPU核心

    英特尔CPU核心          Tualatin  这也就是大名鼎
    发表于 12-17 16:57 342次阅读

    英特尔移动CPU

    英特尔移动CPU Pentium 4-M:基于0.13微米铜互联工艺Northwood核心的Pentium 4-M处理器,首批
    发表于 12-18 09:56 455次阅读

    英特尔cpu爆惊天漏洞_英特尔cpu漏洞检测_英特尔cpu检测工具有哪些

    英特尔大事件cup出现重大漏洞引关注,本文主要介绍了英特尔处理器漏洞的原委以及检测cpu的一些工具,具体的一起来了解一下。
    发表于 01-04 10:36 1246次阅读
    <b class='flag-5'>英特尔</b><b class='flag-5'>cpu</b>爆惊天漏洞_<b class='flag-5'>英特尔</b><b class='flag-5'>cpu</b>漏洞检测_<b class='flag-5'>英特尔</b><b class='flag-5'>cpu</b>检测工具有哪些

    英特尔cpu命名规则_英特尔cpu分类有哪些_英特尔cpu性能排行榜

    英特尔CPU是一款CPU处理器,适用于台式电脑。我们来看看英特尔CPU的命名规则、英特尔
    发表于 01-04 14:59 3.9w次阅读

    英特尔cpu型号及分类_cpu分类及介绍_英特尔最新cpu系列

    英特尔是美国一家主要以研制CPU处理器的公司,是全球最大的个人计算机零件和CPU制造商,它成立于1968年,具有48年产品创新和市场领导的历史。英特尔
    发表于 01-04 15:52 17.6w次阅读

    英特尔模型全适配,大语言模型已成功部署CPU

    他进一步指出,英特尔作为芯片制造商,始终致力于对“合适尺寸”模型的全面适配。面对大模型领域激烈的市场竞争,每个季度大约有4-5款新模型上市,一旦发现任何新的
    的头像 发表于 12-11 15:41 1149次阅读