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 内存占用就可以实现与本地大模型的流畅对话,一起来体验下吧。

审核编辑:汤梓红

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

    关注

    60

    文章

    9425

    浏览量

    168838
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10446

    浏览量

    206571
  • 模型
    +关注

    关注

    1

    文章

    2704

    浏览量

    47691

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

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

收藏 人收藏

    评论

    相关推荐

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

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

    有高手破解了英特尔倍频吗

    本帖最后由 gk320830 于 2015-3-9 20:12 编辑 有高手破解了英特尔倍频吗,现在几乎每个CPU都锁定了倍频,有高手破解了吗,或者谁有英特尔倍频对应的图纸资料呢
    发表于 12-22 11:33

    英特尔转型移动领域难言乐观

    在电脑芯片领域独领风骚多年的英特尔在“后PC时代”面临严峻考验,营收业绩持续下滑,而依托传统PC市场建立起来的Wintel联盟在尴尬境遇下也开始了各自为MAX3232EUE+T战的局面。业界专家指出
    发表于 11-07 16:33

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

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

    产业风暴,英特尔能否扳倒ARM?

    `谁将会凭借更具优势的策略在移动处理器领域获得成功?未来手机的架构是由Intel还是ARM主导?英特尔的策略是主打X86处理器。在英特尔集团,负责欧洲UMPC市场的Jon Jadersten说:“在
    发表于 09-26 11:26

    英特尔高清显卡4600帮助

    和NVIDIA GTX 960M。显示器的色温配置为R-75,G-75,B-75(每个的最大设置为100)。英特尔高清显卡4600可以选择“默认RGB”,“限制RGB”或“全RGB”。此外,还有一个启用或禁用
    发表于 10-26 14:53

    启用英特尔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

    英特尔与微软在并行计算取得了什么进展?

    英特尔和微软正在漫长的道路上一步步地走向他们所构想的蓝图,即为未来多核处理器设计新型并行编程模型。两个公司在英特尔发展论坛上发表了各自所取得的进展。
    发表于 07-31 06:39

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

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

    收购英特尔cpu 高价回收CPU

    收购英特尔cpu高价回收CPU,专业收购CPU。深圳高价回收英特尔cpu,专业高价收购
    发表于 01-28 17:41

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

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

    英特尔Optane DC PMM硬件的相关资料分享

    数据移近CPU,提供类似DRAM的延迟,同时也具有类似存储设备的持久性和容量。 经过一年的时间听取硬件和软件合作伙伴谈论持久内存的好处,现在,随着第二代英特尔至强可扩展处理器的发布,Optane DC ...
    发表于 11-17 06:21

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

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