pytorch 中的执行模式

这篇具有很好参考价值的文章主要介绍了pytorch 中的执行模式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. PyTorch 生态系统

PyTorch 支持 2 种独立的模式来处理研究和生产环境。

两种模式:
PyTorch 中两种主流模式:研究模式, 比如 eager mode 和 生产模式,比如 graph mode 或者script mode)。

科研模式 模式,侧重于易用性与灵活性,主要用于构建模型,易于调试,验证想法,适合科研人员魔改模型;

生产模式: 侧重于性能方面,适合生产,实际工程部署中应用。 (无论之前的script 模式或者 graph 都是为了更好的部署在生产环境中)

pytorch 中的执行模式,# 模型量化与部署,pytorch

pytorch 中的执行模式,# 模型量化与部署,pytorch

pytorch 中的执行模式,# 模型量化与部署,pytorch

2. Script 模式

PyTorch1.0后,可以通过TorchScript的方式创建序列化和可优化的模型。可以通过两种方式,分别是Tracing和Script将一个Python代码转化为TorchScript代码,继而导出相应的模型可以继续被优化,同时被C++所调用,最终实现对生产环境下的支持(考虑到多线程执行和性能原因,一般Python代码并不适合做部署)。

TorchScript 是 PyTorch 中的一项功能,允许您序列化 PyTorch 模型并在各种环境中运行它们。它提供了一种保存经过训练的 PyTorch 模型并将其加载到无 Python 环境甚至不同硬件(例如 GPU、FPGA 或移动设备)上的方法。

与 PyTorch 相比,这有几个优点:

  1. 可移植性:借助 TorchScript,您可以在任何支持 TorchScript 运行时的环境中运行 PyTorch 模型,无论平台或语言如何。

可移植性允许将模型部署在多线程推理服务器、移动设备和汽车中,而这对于 Python 来说是困难的。为了实现这一点,PyTorch 模型需要与任何特定的运行时解耦。

  1. 性能:TorchScript 可以通过融合操作和消除未使用的操作来优化 PyTorch 模型,以加快执行速度。这可以显着提高速度,尤其是在移动电话等资源有限的设备上。

PyTorch JIT 是 PyTorch 的优化 JIT 编译器。它使用运行时信息来优化 TorchScript 模块。它可以自动执行层融合、量化、稀疏化等优化。

  1. 安全性:通过部署 TorchScript 模型,您可以保护您的 PyTorch 代码和模型免遭逆向工程或篡改。

  2. 易于部署:使用 TorchScript,您可以轻松地将 PyTorch 模型部署到生产环境,而无需 Python 环境。

它主要关注在生产用例方面,本节将讨论 TorchScript 相对于 PyTorch(或 Lightning)的优势,并展示如何完成转换.

2.1 Pytorch JIT

PyTorch JIT 是 PyTorch 程序的优化编译器

  • 它是一个轻量级的线程安全解释器
  • 支持轻松编写自定义转换
  • 它不仅仅用于推理,因为它具有自动差异支持

2.2 TorchScript

TorchScript 是 Python 语言的静态高性能子集,专门用于 ML 应用程序。它支持

  1. Complex control flows 复杂的控制流程
  2. Common data structures 常见数据结构
  3. User-defined classes 用户定义的类

2.2.1 torch.jit.trace()

torch.jit.trace 将数据实例和经过训练的 eager 模块作为输入。跟踪器运行提供的模块并记录所执行的张量操作。

该记录被转换为 TorchScript 模块。

它可以重用现有的 eager 模型代码,并且可以使用专有的 torch 张量/操作处理几乎任何程序。

它的主要缺点是省略了所有控制流、数据结构和 python 结构。它还可以在没有任何警告的情况下创建不忠实的表示。始终检查其 IR 以查看它是否正确解析 PyTorch 模型的结构。

2.2.2 torch.jit.script()

torch.jit.script 允许您将代码直接写入 TorchScript。它更冗长,但更通用,只需稍加调整就可以支持大多数 PyTorch 模型。

与跟踪模式相反,您只需将模型/模块的实例传递给 torch.jit.script. 不需要数据样本。

它保留了控制流和其他 Python 结构,看起来更像 Python。它对列表/字典具有一流的支持。

它省略了常量值并且需要类型转换。如果未提供类型,则默认为张量。

对于一次来说,理论太多了,让我们转向代码并查看运行中的跟踪/脚本。

2.3

要更全面地了解 TorchScript,我建议您阅读本教程。

您可以通过调用 to_torchscript 方法轻松将 Lightning 模块转换为 TorchScript。

script = model.to_torchscript()
torch.jit.save(script, "torchscript_model.pt")

经过一些测试,我发现使用 TorchScript 在 GPU 上的推理时间比 PyTorch Lightning 的推理时间低 2 倍。然而,这只发生在小批量(根据我的测试,为 1 或 2)

PyTorch 旨在通过 TorchScript 创建一个从研究到生产的统一框架。 TorchScript 会将您的 PyTorch 模块作为输入,并将其转换为适合生产的格式。

它将更快地运行您的模型并且独立于 Python 运行时。

3. torch.fx 模式

3.1

3.2

3.3

4. 模型量化

pytorch 中的执行模式,# 模型量化与部署,pytorch

pytorch 中的执行模式,# 模型量化与部署,pytorch

pytorch 中的执行模式,# 模型量化与部署,pytorch

pytorch 中的执行模式,# 模型量化与部署,pytorch

pytorch 中的执行模式,# 模型量化与部署,pytorch

ref

参考:
参考阅读

阅读2文章来源地址https://www.toymoban.com/news/detail-561773.html

到了这里,关于pytorch 中的执行模式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ubuntu 部署 ChatGLM-6B 完整流程 模型量化 Nvidia

    ChatGLM-6B 是一个开源的、支持中英双语的对话语言模型,基于 General Language Model (GLM) 架构,具有 62 亿参数。结合模型量化技术,用户可以在消费级的显卡上进行本地部署(INT4 量化级别下最低只需 6GB 显存)。 ChatGLM-6B 使用了和 ChatGPT 相似的技术,针对中文问答和对话进行了优

    2024年02月13日
    浏览(37)
  • 科普:大语言模型中的量化是什么意思?

    大语言模型是指能够处理大规模文本数据的深度学习模型,例如GPT-3、BERT等。这些模型通常有数十亿甚至数百亿个参数,占用大量的存储空间和计算资源。为了提高这些模型的效率和可移植性,一种常用的方法是模型量化。 1:什么是模型量化? 模型量化是指将模型中的参数

    2024年01月19日
    浏览(66)
  • 书生·浦语大模型--第五节课笔记&作业--LMDeploy 大模型量化部署实践

    部署:将训练好的模型在特定软硬件环境中启动的过程 挑战:存储问题 针对英伟达平台 量化可以节省显存,提升推理速度 访问数据占用了大量时间 有一部分很重要的参数不量化,保留性能。其余部分量化节约显存 安装、部署、量化 安装lmdeploy 在线转换 可以直接加载 Hug

    2024年01月25日
    浏览(52)
  • 【书生·浦语大模型实战营05】《(5)LMDeploy 大模型量化部署实践》学习笔记

    课程文档:《LMDeploy 的量化和部署》 定义 将训练好的模型在特定软硬件环境中启动的过程,使模型能够接收输入并返回预测结果 为了满足性能和效率的需求,常常需要对模型进行优化,例如模型压缩和硬件加速 产品形态 云端、边缘计算端、移动端 内存开销巨大 庞大的参数

    2024年01月22日
    浏览(48)
  • Llama2通过llama.cpp模型量化 Windows&Linux本地部署

    LLaMA ,它是一组基础语言模型,参数范围从7B到65B。在数万亿的tokens上训练的模型,并表明可以专门使用公开可用的数据集来训练最先进的模型,而无需求助于专有和不可访问的数据集。特别是, LLaMA-13B在大多数基准测试中都优于GPT-3(175B) ,并且LLaMA65B与最好的型号Chinch

    2024年02月05日
    浏览(55)
  • 【通义千问】大模型Qwen GitHub开源工程学习笔记(4)-- 模型的量化与离线部署

    量化方案基于AutoGPTQ,提供了Int4量化模型,其中包括Qwen-7B-Chat和Qwen-14B-Chat。更新承诺在模型评估效果几乎没有损失的情况下,降低存储要求并提高推理速度。量化是指将模型权重和激活的精度降低以节省存储空间并提高推理速度的过程。AutoGPTQ是一种专有量化工具。Int4是指

    2024年02月08日
    浏览(45)
  • 第八章:AI大模型的部署与优化8.1 模型压缩与加速8.1.2 量化与剪枝

    作者:禅与计算机程序设计艺术 8.1.1 背景介绍 随着深度学习技术的不断发展,人工智能模型的规模越来越庞大。然而,这也带来了新的问题:大模型需要更多的计算资源和存储空间,同时在移动设备上运行效率较低。因此,模型压缩与加速成为了当前研究的热点。 8.1.2 核心

    2024年03月08日
    浏览(47)
  • 苹果AppleMacOs系统Sonoma本地部署无内容审查(NSFW)大语言量化模型Causallm

    最近Mac系统在运行大语言模型(LLMs)方面的性能已经得到了显著提升,尤其是随着苹果M系列芯片的不断迭代,本次我们在最新的MacOs系统Sonoma中本地部署无内容审查大语言量化模型Causallm。 这里推荐使用koboldcpp项目,它是由c++编写的kobold项目,而MacOS又是典型的Unix操作系统,

    2024年03月09日
    浏览(36)
  • LLMs 蒸馏, 量化精度, 剪枝 模型优化以用于部署 Model optimizations for deployment

    现在,您已经了解了如何调整和对齐大型语言模型以适应您的任务,让我们讨论一下将模型集成到应用程序中需要考虑的事项。 在这个阶段有许多重要的问题需要问。第一组问题与您的LLM在部署中的功能有关。您需要模型生成完成的速度有多快?您有多少计算预算可用?您是

    2024年02月07日
    浏览(49)
  • llama.cpp一种在本地CPU上部署的量化模型(超低配推理llama)

    前不久,Meta前脚发布完开源大语言模型LLaMA, 随后就被网友“泄漏”,直接放了一个磁力链接下载链接。 然而那些手头没有顶级显卡的朋友们,就只能看看而已了 但是 Georgi Gerganov 开源了一个项目llama.cpp ggerganov/llama.cpp: Port of Facebook’s LLaMA model in C/C++ (github.com) 次项目的牛逼

    2023年04月23日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包