PyTorch hook 学习
0. 契机:在读 accelerate 源码时,发现使用了大量的hook来解决分布式部署LLM,因此,想更加深入了解PyTorch中的hook的使用方式和原理。
1. 什么是hook?hook(钩子)实际上在软件工程中很常见,这根本不是 PyTorch 独有的。通常,“钩子” 是在特定事件后自动执行的函数。
一些常见的hook示例:
网站在您访问 N 个不同的页面后显示广告。
当资金添加到您的帐户时,银行应用程序会发送通知。
当环境光线变暗时,手机会调暗屏幕亮度。
当然这些示例都可以在没有hook的情况下实现。但在许多情况下,hook使程序员的生活更轻松。
2. 什么是PyTorch中的hook?前提:为了节省在·显存(内存),PyTorch在计算过程中不保存中间变量,包括中间层的特征图和非叶子张量的梯度等。
有时对网络进行分析时需要查看或修改这些中间变量,此时就需要注册一个钩子(hook)来导出需要的中间变量。
因此:我们可以利用hook,在不改变网络输入输出的结构的前提下,方便地获取、改变网络中间层变量的值和梯度。这个功能被广泛用于可视化神经网络中间层的 feature、gra ...
Hexo 写作
Hexo 写作命令
cd到写作目录
1cd /path/to/.io
新建一个新的文章
1234hexo new hexo new [layout] <title>如:hexo new "new blog"
这会在 source/_posts 目录下生成一个新的 Markdown 文件,你可以编辑这个文件以撰写你的文章。
发布文章
首先生成静态文件,类似CPP中的编译
1hexo generate
本地预览(可选)
1hexo server
部署blog
1hexo deploy
修改/删除文章
找到要修改/删除的文章
Hexo 的博客文章存储在 source/_posts 目录下。每篇文章对应一个 Markdown 文件,文件名通常与文章标题相对应。
修改/删除文章文件
进入 source/_posts 目录,找到要修改/删除的博客文章文件,然后修改/删除该文件。
清除生成的文件并重新生成静态文件
12hexo cleanhexo generate
部署更新
1h ...


