Antkillerfarm Hacking V8.0

DL Framework » Pytorch(三)

2024-11-19 :: 7088 Words

Pytorch

dataset

model = torch.hub.load('pytorch/vision:v0.10.0', 'resnet50', pretrained=True)

下载的model位于~/.cache/torch/hub

quantization

torchao:用于自定义数据类型和优化的PyTorch库,提供量化、稀疏权重、梯度、优化器和激活等方面的优化。

代码:

https://github.com/pytorch/ao


https://pytorch.org/tutorials/prototype/quantization_in_pytorch_2_0_export_tutorial.html

Quantization in PyTorch 2.0 Export Tutorial

https://pytorch.org/tutorials/prototype/pt2e_quant_x86_inductor.html

PyTorch 2 Export Quantization with X86 Backend through Inductor

https://mlir.llvm.org/docs/Quantization/

Quantization

自定义算子

算子注册:

aten/src/ATen/native/native_functions.yaml


PyTorch命名约定:

mul_,其中mul代表乘法,后缀_表示这是一个原地操作。


torch::Tensor custom_add(torch::Tensor a, torch::Tensor b) {
    return a + b;
}

PYBIND11_MODULE(TORCH_EXTENSION_NAME, m) {
    m.def("custom_add", &custom_add, "A custom add function");
}

setup(
    name='flash_attn',  # 这里定义了 TORCH_EXTENSION_NAME
    ext_modules=[
        CUDAExtension('flash_attn', [
            'path/to/your/source_file.cpp',
            'path/to/your/source_file.cu',
        ]),
    ],
    cmdclass={
        'build_ext': BuildExtension
    }
)

TORCH_LIBRARY_EXPAND(my_custom_ops, ops) {
    ops.def("custom_add", custom_add);
}

result = torch.ops.my_custom_ops.custom_add(torch.tensor([1, 2]), 

@_torch_custom_op_wrapper("flash_attn::_flash_attn_forward", mutates_args=(), device_types="cuda")

@_torch_register_fake_wrapper("flash_attn::_flash_attn_forward")

这个装饰器的作用是将一个Python函数注册为PyTorch的一个“假操作”(fake op)。这意味着该函数在计算图中会被识别为一个操作,但它不会直接执行实际的计算。相反,它会被用来替代一个实际的底层操作(例如一个CUDA内核)。这种机制通常用于以下场景:

  • 调试和测试:在开发自定义操作时,可以先用一个简单的Python函数来模拟实际操作的行为,而无需立即实现完整的CUDA或C++代码。
  • 动态替换:在某些情况下,可能需要根据运行时条件动态选择使用实际操作还是一个替代的实现。
  • 兼容性:在某些环境中,可能无法直接调用底层操作(例如在某些CPU上运行时,CUDA操作不可用),此时可以用一个Python函数来提供一个兼容的实现。

细节

打印stack trace:

std::cerr << c10::get_backtrace() << std:endl;

参考

https://mp.weixin.qq.com/s/zhkaenFdnB5KgaEYb-XDEQ

从基础概念到实现,小白如何快速入门PyTorch

https://mp.weixin.qq.com/s/AMZFvmzo4pQ1m7QeaRpAdA

PyTorch资源列表:450个NLP/CV/SP、论文实现、教程、示例

https://mp.weixin.qq.com/s/dzDkpUHo4CKqq8i1pyYO2w

60题PyTorch简易入门指南

https://mp.weixin.qq.com/s/7at6y2NcYaxGGN8syxlccA

PyTorch Cookbook

https://mp.weixin.qq.com/s/RKtyNpIxSxFNfOSyHPOiGw

深度学习PyTorch的教程代码

https://mp.weixin.qq.com/s/i70pT7pQpdoCXXhXq2_MEw

四天速成!香港科技大学PyTorch教程

https://mp.weixin.qq.com/s/7Wr70NFi4pxvSpRr2Q1zsQ

强大的PyTorch:10分钟让你了解深度学习领域新流行的框架

https://mp.weixin.qq.com/s/y5LLraGWuYUbOted9N-GWQ

如何从TensorFlow转入PyTorch

https://mp.weixin.qq.com/s/KRuEuAOXU2fpSNyOJW4bpA

Yoshua Bengio实验室MILA开放面向初学者的PyTorch教程

https://mp.weixin.qq.com/s/QjhokXDXuglJajULKigt1g

PyTorch手把手深度学习教程系列完整版

https://mp.weixin.qq.com/s/FGL1vYaXvv-NCcq0vithZw

深度学习框架:PyTorch入门与实践

https://github.com/jinfagang/pytorch_name_net

PyTorch人工智能自动取名

https://mp.weixin.qq.com/s/UGGrK5LwOP2aLVTz0AGMDw

如何通过PyTorch实现Tensor

https://mp.weixin.qq.com/s/9X77MPcQOQPwZaOVIVfo9Q

用PyTorch搭建抽取式摘要系统

https://mp.weixin.qq.com/s/rORvudwdbnmSvzFhM1gVOA

斯坦福大学CS-224n课程中深度NLP模型的PyTorch实现

https://mp.weixin.qq.com/s/Chk-QAPhIXlIeguT4hS6kg

对比ResNet:超深层网络DiracNet的PyTorch实现

https://mp.weixin.qq.com/s/BP9MToKcE1MJmQTQv2UUZQ

Pytorch开源VQA神经网络模块,让你快速完成看图问答

https://mp.weixin.qq.com/s/QqRjvWMMKosPh9qfU61BzQ

浅谈将Pytorch模型从CPU转换成GPU

https://mp.weixin.qq.com/s/aMfPBl6E5SxckQdSAGTkBg

Pytorch教程:Facebook发布的LR-GAN如何生成图像?

https://mp.weixin.qq.com/s/Svh27YIG2jYWqXwhhEuoSw

使用Pytorch和BERT进行多标签文本分类

https://mp.weixin.qq.com/s/_3iJCO4gQz7mWcW7G8kimQ

Pytorch实现卷积神经网络训练量化(QAT)

https://mp.weixin.qq.com/s/HQnI8rzPvZN6Q_5c8d1nVQ

唯快不破:基于Apex的混合精度加速

https://mp.weixin.qq.com/s/NupSd4e01cvQ3CRnjy1npw

超原版速度110倍,针对PyTorch的CPU到GPU张量迁移工具开源

https://zhuanlan.zhihu.com/p/87572724

一文看懂align_corners

https://mp.weixin.qq.com/s/BsMwZC3IoXA58OybZ3aYcg

pytorch中如何处理RNN输入变长序列padding

https://mp.weixin.qq.com/s/abd62HNlen9sepH3CrmpGg

PyTorch为何如此高效好用?来探寻深度学习框架的内部架构

https://mp.weixin.qq.com/s/OMjfck4jlMneGZ1NJxbjKQ

PyTorch有哪些坑/bug?

https://mp.weixin.qq.com/s/UykIKAeKB-0eqk6UqvXwXA

对抗自编码器PyTorch手把手实战系列——PyTorch实现对抗自编码器

https://mp.weixin.qq.com/s/E8RMSXVZucSGQJxFdtMgkg

PyTorch实例:用ResNet进行交通标志分类

https://mp.weixin.qq.com/s/_hbuk9nZaLoNSZ5AnDnELg

使用PyTorch从零开始构建Elman循环神经网络

https://mp.weixin.qq.com/s/FQxSYjyR1U3TIinSShnOfg

从头开始了解PyTorch的简单实现

https://mp.weixin.qq.com/s/wz1YdHYom6y-gOB58R86OQ

对抗自编码器PyTorch手把手实战系列——对抗自编码器学习笔迹风格

https://mp.weixin.qq.com/s/3mnV8gz1AsYQ2ElK–Ihrg

从零开始PyTorch项目:YOLO v3目标检测实现

https://mp.weixin.qq.com/s/88klahIOAfBcA5Rdv70JNg

PyTorch的动态计算图深入浅出

https://mp.weixin.qq.com/s/Mcj9SwC6GZEjXxi55vfsaw

minibatching,数据加载和模型构建

https://mp.weixin.qq.com/s/EweQNoP5BlB9e1eVJsCFvg

GANs很难?这篇文章教你50行代码搞定

https://mp.weixin.qq.com/s/1KAbFAWC3jgJTE-zp5Qu6g

如何直观地理解条件随机场,并通过PyTorch简单地实现

https://mp.weixin.qq.com/s/1_fm6F1c_ldQNyb042NQRg

还在自己写训练过程么?你需要一个训练引擎

https://mp.weixin.qq.com/s/mThkHpcq1ThnfONiSKmOKA

如何捕获一只彩色卓别林?黑白照片AI上色教程很友好

https://mp.weixin.qq.com/s/tD4Inrr0l1oBnLhUD81FCA

用PyTorch进行RNN语言建模 - Packed Batching和Tied Weight

https://mp.weixin.qq.com/s/HQJxbnIHXF-GFLIoNTOxGg

手把手教你用torchtext处理文本数据

https://mp.weixin.qq.com/s/KNaFelqk9UO6JYjbPTQohA

显存不足?PyTorch显存使用分析与优化

https://mp.weixin.qq.com/s/7p26q8Mu3IlK39DG7u41ZA

PyTorch之迁移学习实战

https://www.zhihu.com/question/303070254

PyTorch中在反向传播前为什么要手动将梯度清零?

https://www.zhihu.com/question/274635237

Pytorch有什么节省内存(显存)的小技巧?

https://mp.weixin.qq.com/s/S1dRfmqpiLzR3tnsocmfvw

Pytorch中的数据增强方式最全解释

https://mp.weixin.qq.com/s/BTFMvV2ppmRBXYg95YlK4w

PyTorch实现L2和L1正则化的方法

https://zhuanlan.zhihu.com/p/272767300

Pytorch转ONNX-理论篇

https://zhuanlan.zhihu.com/p/273566106

Pytorch转ONNX-实战篇1(tracing机制)

https://zhuanlan.zhihu.com/p/286298001

Pytorch转ONNX-实战篇2(实战踩坑总结)

https://mp.weixin.qq.com/s/EXuFXbPBIbzTyi0fUjvvPw

两行代码统计模型参数量与FLOPs,这个PyTorch小工具值得一试

https://zhuanlan.zhihu.com/p/73711222

巧用torch.backends.cudnn.benchmark减少训练时间

https://zhuanlan.zhihu.com/p/664723980

单机多GPU训练

https://mp.weixin.qq.com/s/BjSx3tSQ2Xa0ja_j6dA7eA

Pytorch中的DataLoader的相关记录

https://mp.weixin.qq.com/s/vx0txFUf10QDBlldz0VJmg

AI插画师:如何用基于PyTorch的生成对抗网络生成动漫头像?

https://mp.weixin.qq.com/s/xHXsMxMTdnCWkuwzHs_7Cg

深度学习实验流程及PyTorch提供的解决方案

https://mp.weixin.qq.com/s/HPRUQSsUdk3rXBBl_GpFMw

对抗自编码器PyTorch手把手实战系列——PyTorch实现自编码器

https://mp.weixin.qq.com/s/5sY_IzwIz-lbDLtWJM-GRQ

PyTorch实例:用ResNet进行交通标志分类

https://mp.weixin.qq.com/s/zN3k51g9gjQvc43AH-ypGA

如何通过PyTorch上手Tensor Comprehensions?

https://mp.weixin.qq.com/s/yGtDUbvO2APT88MwcSh8IA

GAN如此简单的PyTorch实现,一张脸生成72种表情

https://mp.weixin.qq.com/s/u9GEDCmR-PT0–0Xf4vKDA

Pytorch的tensorboard食谱帮你可视化误差结果

https://mp.weixin.qq.com/s/HginBrMOfEEWsZKq67u6EA

在Pytorch中构建流数据集

https://zhuanlan.zhihu.com/p/98535650

研究生应当掌握的并行训练方法(单机多卡)

https://zhuanlan.zhihu.com/p/86441879

pytorch多gpu并行训练

https://mp.weixin.qq.com/s/KP4etDrGlJmRAMQmR1mTJA

基于C++的PyTorch模型部署

https://zhuanlan.zhihu.com/p/145427849

PyTorch Parallel Training(单机多卡并行、混合精度、同步BN训练指南文档)

https://mp.weixin.qq.com/s/Y6sJhnmjRwN2uopHgr7nFA

让PyTorch更轻便,这款深度学习框架你值得拥有!

https://zhuanlan.zhihu.com/p/104019160

PyTorch常用代码段

https://mp.weixin.qq.com/s/5Nq3y8hwhQG1UV9lHuBQvA

13个你一定要知道的PyTorch特性

https://mp.weixin.qq.com/s/cKvkvWgVPuq9y1A5q1OPEQ

跟着指南学PyTorch—迁移学习教程

https://mp.weixin.qq.com/s/gJgxh4l0CXTlaJaQ_FS3YQ

PyTorch的数据增强与数据标准化

https://mp.weixin.qq.com/s/Mo7XhRcPkgurmQPJ3Zu1ug

基于PyTorch的计算机视觉框架

https://mp.weixin.qq.com/s/PWABh72t92pUOJufcmzvag

用PyTorch做深度学习实验!Facebook新框架Ax和BoTorch双双开源

Fork me on GitHub