大语言模型基础与英特尔实践

大语言模型基础与英特尔实践

本实验基于英特尔大模型优化加速技术对大模型预测进行加速,常见的优化优化技术包括:量化(Quantization)、混合精度(Mixed Precision)、剪枝/稀疏性(Pruning/Sparsity)和蒸馏(Distillation)。
LLM(Low-Level Machine)相关的优化技术包括:平滑量化(Smooth Quant)、仅权重量化(Weight only Quantization)和FP8。

  • 英特尔技术介绍

    本实验基于Intel® Extension for Transformers, Intel® Extension for Transformers是一个创新的工具包,旨在通过在多种Intel平台上优化Transformer模型的性能,包括Intel Gaudi2、Intel CPU和Intel GPU,加速GenAI/LLM在各个领域的应用。该工具包提供以下关键功能和示例:

    1. 通过扩展Hugging Face transformers API和利用Intel® Neural Compressor,实现对基于Transformer的模型的无缝模型压缩用户体验。
    2. 高级软件优化和独特的压缩感知运行时(与NeurIPS 2022的论文《Fast Distilbert on CPUs and QuaLA-MiniLM: a Quantized Length Adaptive MiniLM》,以及NeurIPS 2021的论文《Prune Once for All: Sparse Pre-Trained Language Models》一起发布)。
    3. 优化的基于Transformer的模型包,如Stable Diffusion、GPT-J-6B、GPT-NEOX、BLOOM-176B、T5、Flan-T5,以及基于SetFit的文本分类和文档级情感分析(DLSA)等端到端工作流程。
    4. NeuralChat,一个可定制的聊天机器人框架,利用丰富的插件(如知识检索、语音交互、查询缓存和安全防护)可以在几分钟内创建自己的聊天机器人。该框架支持Intel Gaudi2/CPU/GPU。
    5. 在纯C/C++中进行大型语言模型(LLM)的推理,利用仅权重量化内核,支持Intel CPU和Intel GPU(待定),支持GPT-NEOX、LLAMA、MPT、FALCON、BLOOM-7B、OPT、ChatGLM2-6B、GPT-J-6B和Dolly-v2-3B。支持AMX、VNNI、AVX512F和AVX2指令集。我们提升了Intel CPU的性能,特别关注代号为Sapphire Rapids的第四代Intel Xeon Scalable处理器。
  • 实验过程及结果

    1. 配置英伟达conda python环境:设置用于实验的Python环境。
      cd /opt/conda/envs
      mkdir itrex
      wget https://filerepo.idzcn.com/LLM/itrex.tar.gz
      tar -zxvf itrex.tar.gz -C itrex/
      conda activate itrex
      
    2. 下载中文大模型embedding model:克隆所需的模型代码库
      ! git clone https://www.modelscope.cn/ZhipuAI/chatglm3-6b.git
      ! git clone https://www.modelscope.cn/AI-ModelScope/bge-base-zhv1.5.git
      
    3. 运行模型
      3.1 新建文件 sample.jsonl: 创建包含输入内容的JSONL文件。
      {"content": "cnvrg.io 网站由 Yochay Ettun 和 Leah Forkosh Kolben 创建.", "link": 0}
      
      3.2 构建 chatbot: 使用neural_chat模块构建聊天机器人,并配置插件和优化设置。
      from intel_extension_for_transformers.neural_chat import
      PipelineConfig
      from intel_extension_for_transformers.neural_chat import
      build_chatbot
      from intel_extension_for_transformers.neural_chat import plugins
      from intel_extension_for_transformers.transformers import RtnConfig
      plugins.retrieval.enable=True
      plugins.retrieval.args['embedding_model'] = "./bge-base-zh-v1.5"
      plugins.retrieval.args["input_path"]="./sample.jsonl"
      config = PipelineConfig(model_name_or_path='./chatglm3-6b',
      
      plugins=plugins,
      optimization_config=RtnConfig(compute_dtype="int8",
      weight_dtype="int4_fullrange"))
      chatbot = build_chatbot(config)
      
      

    图片
    3.3 disable retrieval: 禁用检索功能,直接使用大模型进行预测。

    	plugins.retrieval.enable=False # disable retrieval
    	response = chatbot.predict(query="cnvrg.io 网站是由谁创建的?")
    	print(response)
    

    输出结果:在这里插入图片描述
    3.4 RAG: 结合知识库检索和生成,启用检索功能。

    	plugins.retrieval.enable=True # enable retrieval
    	response = chatbot.predict(query="cnvrg.io 网站是由谁创建的?")
    	print(response)
    

    输出结果: 在这里插入图片描述
    当检索功能被禁用时,模型直接使用其内部知识进行预测。
    当检索功能被启用时,模型会结合检索到的信息和生成的响应来提供答案。

  • 实验心得

    1. 在本次实验中,我深入探索了英特尔技术如何通过一系列优化技术,如量化、混合精度、剪枝/稀疏性和蒸馏,来提高大型语言模型(LLM)的性能。实验特别关注了Intel® Extension for Transformers,这是一个专为Intel平台设计的优化工具包,旨在加速基于Transformer的模型在各个领域的应用。
    2. 实验开始于配置一个专门的Python环境,这为后续的模型下载和运行提供了必要的基础。通过克隆代码库,获取了所需的中文大模型和embedding model。随后,构建一个基于neural_chat模块的聊天机器人,并对其插件和优化配置进行了深入的理解和应用。
    3. 实验过程特别关注了如何通过禁用和启用检索功能来影响模型的预测结果。当检索功能被禁用时,模型依赖于其内部知识进行预测,这考验了模型的内部知识库和生成能力。而当检索功能被启用时,模型能够结合检索到的信息和生成的响应,这不仅提高了答案的准确性,也展示了模型在结合检索和生成方面的灵活性。

通过英特尔技术的优化,大型语言模型在性能上得到了显著提升。无论是在纯C/C++环境中进行推理,还是在结合检索和生成的场景中,模型都能够快速且准确地提供响应。英特尔提供的优化技术和工具包不仅提高了模型的运行效率,也为模型的应用提供了更多可能性。特别是在多模态和跨领域的场景中,这些技术的运用极大地扩展了模型的应用范围。

  • 12
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值