使用OpenVINO™在你的AI PC上部署Llama3

2024年04月28日 由 alex 发表 93 0

大型语言模型(LLM)的发展速度是惊人的。 2024年4月18日,Meta正式发布了新一代Llama系列车型Llama3,在该领域树立了新的里程碑。 Llama3不仅继承了以往模型的强大能力,还通过技术创新在多模态理解、长文本处理、语言生成等方面实现了质的飞跃。 Llama3的开放性和灵活性也为开发者提供了前所未有的便利。无论是对模型进行微调还是将其集成到现有系统中,Llama3都表现出了极大的适应性和易用性。


而且,在部署Llama3模型时,除了云端部署之外,模型的本地部署可以让开发者在不依赖云计算资源的情况下,实现数据处理和大模型推理的高效和隐私。使用OpenVINO™在本地(例如AI PC)部署Llama3,不仅意味着更快的响应时间和更低的运营成本,还可以有效保护数据安全并防止敏感信息泄露。


本文将简要介绍 Llama3 模型,并重点介绍如何使用 OpenVINO™ 优化、加速推理,并将其部署在 AI PC 上,实现更快、更智能的 AI 推理。


Llama3 简介

Llama3 提供各种参数尺度的模型,如 8B 和 70B 参数模型。其核心特点和主要优势可归纳如下:


  • 先进的功能和性能: 在推理、语言生成和代码执行方面提供最先进的性能,为 LLM 树立新的行业标准。


  • 更高的效率: 采用带有组查询注意(GQA)的纯解码器转换器架构,优化了语言编码效率和计算资源使用,使其适用于大规模人工智能任务。


  • 全面的训练和微调: Llama3 在超过 15 万亿个词库上进行了预训练,并利用 SFT 和 PPO 等创新的指令微调技术进行了增强,在处理复杂的多语言任务和各种人工智能应用方面表现出色。


  • 关注开源社区: 作为Meta开源计划的一部分,Llama3鼓励社区参与和创新,支持开发人员轻松访问并为其开发做出贡献的生态系统。


使用 OpenVINO™ 在AI PC上进行优化、加速和部署

如上所述,将 Llama3 模型部署到本地 AI PC 不仅意味着更快的响应时间和更低的运营成本,还能有效保护数据安全。这对于需要处理高度敏感数据的应用(如医疗保健、金融和个人助理)尤为重要。


使用我们常用的 OpenVINO™ Notebooks GitHub 代码库中的 llm-chatbot 代码示例,将 Llama-3-8B-Instruct 优化、加速推理并部署到 AI PC 的过程包括以下具体步骤。


从软件包安装开始

运行 OpenVINO™ Notebooks 软件源的详细安装指南可在此处找到。要运行 llm-chatbot 代码示例,首先需要安装以下先决条件依赖包。


2


选择推理模型

在我们的 Jupyter Notebook 演示中,我们提供了一组 OpenVINO™ 支持的多语言 LLM。首先,你可以从下拉框中选择一种语言。对于 Llama3,我们选择英语。


3


接下来,选择 “llama-3-8b-instruct”,为该模型运行剩余的优化和推理加速步骤。当然,也可以轻松切换到下拉框中列出的任何其他模型。


4


使用 Optimum-CLI 转换模型

Optimum Intel充当 Hugging Face Transformers 和采用 OpenVINO™ 的 Diffuser 库之间的接口,旨在加速 Intel® 架构上的端到端管道。它提供易于使用的 CLI(命令行界面),用于将模型导出为 OpenVINO™ 中间表示 (IR) 格式。模型导出可以通过以下命令完成:


optimum-cli export openvino --model <model_id_or_path> --task <task> <out_dir><model_id_or_path> --task <task> <out_dir>


其中 - 模型参数是 HuggingFace Hub 或本地目录中的模型 ID(使用 .save_pretrained 方法保存), - 任务是导出模型应解决的支持任务之一。对于 LLM,它将是文本生成(text-generation-with-past)。如果模型初始化需要使用远程代码,则应额外传递 - trust-remote-code 标志。


压缩模型权重

虽然像 “Llama-3-8B-Instruct ”这样的 LLM 在理解和生成类人文本方面变得越来越强大和复杂,但管理和部署这些模型在计算资源、内存占用和推理速度方面都面临着重大挑战,尤其是对于人工智能 PC 等客户端设备而言。权重压缩算法旨在压缩模型的权重,可用于优化权重大小相对大于激活度的大型模型(如 LLM)的空间占用和性能。与 INT8 压缩相比,INT4 压缩可以进一步缩小模型大小,提高文本生成性能,但预测质量会略有下降。因此,我们选择将模型权重压缩到 INT4 精度。


5


使用 Optimum-CLI 压缩模型

Optimum-CLI 工具为输出模型提供了便利,可对线性层、卷积层和嵌入层应用 FP16、INT8 或 INT4 位权压缩选项。这一功能对于优化模型大小和推理速度、提高模型运行效率至关重要。方法很简单:将权重格式分别设置为 FP16、INT8 或 INT4。这种优化可以减少内存使用量和推理延迟。默认情况下,INT8/INT4 的量化方案为非对称量化。如果需要使用对称压缩,可以添加 - sym 选项。


对于 INT4 量化,我们为 “Llama-3-8B-Instruct ”指定了以下参数:


compression_configs = {= {
        "llama-3-8b-instruct": {
            "sym": True,
            "group_size": 128,
            "ratio": 0.8,
        },
}


group_size 参数定义用于量化的组大小。


ratio 参数控制 4 位量化和 8 位量化的比例。在本例中,这意味着 80% 的图层将量化为 INT4,而 20% 的图层将量化为 INT8。


使用 Optimum-CLI 压缩模型的代码如下:


optimum-cli export openvino --model "llama-3-8b-instruct" --task text-generation-with-past --weight-format int4 --model "llama-3-8b-instruct" --task text-generation-with-past --weight-format int4 
--group-size 128 --ratio 0.8 --sym


经过模型压缩后,可以看到这个 8B 参数模型的大小已减小到 5GB 左右。


6


选择推理设备和模型变量

由于 OpenVINO™ 可以在各种硬件设备上轻松部署,因此还提供了一个下拉框供你选择运行推理的设备。考虑到模型大小和性能要求,在此我们选择Intel® Core™ Ultra7 155H处理器的AI PC的GPU作为推理设备。


7


使用优化Intel实例化模型

Optimum Intel 可用于加载已在本地下载并通过权重压缩进行优化的模型,并创建使用 OpenVINO 运行时通过 Hugging Face API 运行推理的管道。在这种情况下,这意味着我们只需将 AutoModelForXxx 类替换为相应的 OVModelForXxx 类即可设置并运行“Llama-3–8B-Instruct”的推理管道。


8


使用 OpenVINO™ 在 Llama3 中运行聊天机器人

一切准备就绪!为了方便使用这个基于 Llama3 的聊天机器人,我们还提供了一个基于 Gradio 的用户友好界面。现在开始聊天吧


9


文章来源:https://medium.com/openvino-toolkit/deployment-of-llama3-on-your-ai-pc-with-openvino-b58e961501d6
欢迎关注ATYUN官方公众号
商务合作及内容投稿请联系邮箱:bd@atyun.com
评论 登录
写评论取消
回复取消