可逆神经网络(一)
Invertible NNs
可逆神经网络被提出,可帮助降低显存占用。当前层的结果可由当前层参数和下一层结果反推得到,从而只需要保存参数和最后一层结果,使得激活结果的存储与网络深度无关,从 O(n)O(n)O(n) 降至 O(1)O(1)O(1).
主要讨论 RevNets (A. N. Gomez et al.)
可逆块
Overview
传统网络的块通常是不可逆的。RevNets 致力于构造输入与输出的双射,理论上实现可逆的无损传播。其可逆块分别有两个输入和输出,Forward 和 Backward 过程如下图 (a) (b) 所示。
公式表示
Forwardy1=x1+F(x2)y2=x2+G(y1)Backwardx2=y2−G(y1)x1=y1−F(x2)(1)\begin{aligned}
\text{Forward} \quad y_1 &= x_1 + \mathcal{F}(x_2) \\
y_2 &= x_2 + \mathcal{G}(y_1) \\
\text{Backward} \quad x_2 &= y_2 - \m ...
Hexo 二次建设(二)
Hexo 踩坑记录
Nunjunks
问题描述
发现上一次 Nightly Build 没有成功,报错在 Pages 阶段
12345$ hexo generateFATAL Something's wrong.Template render error: (unknown path)unexpected end of fileat ...
解决方案
错误日志十分含糊,最后定位到一处注释掉的标签外挂
1<!-- {% note red 'fas fa-bullhorn' simple %} -->
这行触发了 EOF,原因是 Nunjunks 块级标签并不能很好地兼容 HTML 语法,认为标签未闭合。[1] [2]
移除该行后问题解决。
More detailed information for “Template render error: (unknown path)” · Issue #4109 · hexojs/hexo ↩︎
Better error message · Issue #1771 · ...
论文复现 - IDM
IDM
PKU TPAMI 2025
架构
主干网络
噪声估计器基于 SD1.5,并对其 U-Net 结构进行了修改 (we further simplify the U-Net by removing its time embeddings, cross-attention layers, and the final three scales to balance efficiency and performance.)
论文给出的结构图。对原模型进行了不少剪枝。
这部分可以结合代码理解
12345del unet.time_embedding, unet.mid_blockunet.down_blocks = unet.down_blocks[:-2]unet.down_blocks[-1].downsamplers = Noneunet.up_blocks = unet.up_blocks[2:]...
TTT 的选取
实验部分对去噪步数分析了参数敏感性,结论是 TTT 取 3 时综合收益最大。
可逆布线
Notably, with our two le ...
论文复现 - MAGIS(二)
Comparasion Schemes
Sys 工作的对比实验做起来十分麻烦。MAGIS 对比了 TVM、XLA 等多个后端。虽是体力劳动,但也努力许久,若不作记录,实在可惜。故将本文作为复现文章之附录,单开一篇,逐一记录各个后端的配置及试错过程。
TVM
参考官方文档[1]安装的是 apache-tvm v0.11,这个版本是跑不起来。是要带 --pre 参数安装。
12pip install apache-tvm --preSuccessfully installed apache-tvm-0.14.dev273 ml-dtypes-0.5.0
补装以下库
12pip install tlcpack-nightly-cu116 --pre -f https://tlcpack.ai/wheelspip install pytest
XLA
PyTorch 与 TensorFlow 都有支持。当然是先尝试 PyTorch-XLA,一步一坑,无比麻烦。相关链接 [1:1] [2] [3] [4],这里只粗略记录。
为兼容低版本 torch 而只能装旧版 xla,无教程可循。
跑 ...
Jupyter Notebook 安装
Jupyter Notebook 安装配置
Jupyter Notebook 似乎很不喜欢用户安装非最新版。但是为了兼容服务器上的各种库的旧版本 (原因见以往博客),还是努力了一下。纯净的安装流程请移步「安装」
Errors
第一个报错的库是 typing-extensions,为了避免 tensorflow 出现问题,首先尝试降级到 4.5.0,然而会在配置 Jupyter Notebook 账号密码时报错。从 Jupyter 仓库看过版本后决定从 7.3 降至 6.5.6。
因为之前的 Python 是手动编译的,这里又埋了一个坑。运行 jupyter notebook --generate-config,报错
12ModuleNotFoundError: No module named '_sqlite3'ModuleNotFoundError: No module named 'pysqlite2'
检查 dpkg -l 是安装了 sqlite3 的,问题出在构建 Python3 时缺少 libsqlite3-dev 依赖。安装 li ...
V2Ray-A 配置记录
V2Ray-A 安装配置
服务器要上外网!一直 scp 十分麻烦。
安装
参考 [1] 安装。
V2Ray
12unzip v2ray-linux-64.zip -d /usr/local/v2ray-coresudo mkdir -p /usr/local/share/v2ray/
V2Ray-A
1dpkg -i installer_debian_x64_2.2.6.3.deb
添加如下配置
1234vim /etc/default/v2raya# 添加如下配置V2RAYA_V2RAY_BIN=/usr/local/v2ray-core/v2rayV2RAYA_V2RAY_CONFDIR=/usr/local/v2ray-core
检查服务状态
12345systemctl status v2raya○ v2raya.service - v2rayA Service Loaded: loaded (/lib/systemd/system/v2raya.service; disabled; preset: enabled) Active: inactive (de ...
论文复现 - MAGIS(一)
MAGIS
Experimental Setup
主要软件包版本。基于以下环境运行了 Resnet50 + CIFAR Demo 进行验证。
CUDA 11.6
CuDNN 8.4.0
PyTorch 1.13.1
Python 3.10.5
一些说明
任务
根据 Renze Chen 描述,任务是跑一遍 forward + backward,测时间和内存开销。Samples 输出的 results.csv 里有实验一节里的各种评估指标。数据集不重要,可能是随机生成。
nn/
实现了 ResNet,ViT 等网络。Transformer.py 中有 Bert 等网络定义。两个大模型也基于 config.py 对 Transformer.py 作用即可。
torch_cuda.py
相当于把 nn/ 中定义的网络转为 pytorch,跑 baseline,然后再进入 MAGIS 工作流。所以 Pytorch Baseline 相当于已经实现了。待研读代码。
Run
第三次实验求助了作者,将 nn.Bert() 参数做了修改,可惜仍然 exceed memory limi ...
浅谈非易失内存
非易失内存 - 总结篇
谨以此告别前半段研究生生涯。
该说点什么呢
整理无味,搁置可惜。
这个题目起的有些大了,实际上聚焦于讨论非易失内存的页面迁移算法。死课题,炒冷饭,加之学业以外的糟心事情,现在回想,没有轻舟已过万重山的如释重负,只觉荒唐。
附件自取。覆盖面较全了,只是不够详细。
有一论文,屡投不中。以后大概也会扔进附件里。
聊聊专业
行文至此,还是讲讲 NVM 吧。
为什么死了
聊聊我的看法。NVM 主打一个 memory 的名字,但当前的内存体系结构里根本没有「非易失」这一层,导致要么做 memory 牺牲持久性,要么做纯 storage,无非在内存映射时占点便宜。但你又不是一天没事干就在那 I/O,做 storage 和现有介质相比没有显著优势。
以 Optane 为例,是可以配置成好几个模式,比如做 storage 时可以作为块设备或字节设备 (驱动意义上),做 memory 时则和一般内存条没有太大区别,除了不能配进一个 NUMA 节点。容量和持久性对 memory 不可得兼。当然,配进 NUMA 后与原本的 DRAM 节点形成快慢内存,可以去炒另一个概念 M ...
深度学习环境配置(一)
CUDA/CuDNN/PyTorch 环境配置
前置 | Python
参考 [1] 查找版本对应,切换 Python 版本
ModuleNotFoundError 解决。想要什么模块就装完再构建,如 BZIP2
1apt install libbz2-dev
手动编译安装
12./configure --enable-optimizationsmake altinstall
版本切换 (不推荐)
12# 直接在 .bashrc 修改了alias python='/usr/local/bin/python3.10'
卸载 (针对手动编译)
123# 由于源码安装,删除目录便是卸载rm -rf /usr/local/bin/python3.10rm -rf /usr/local/bin/python3.10-config
CUDA
首先 nvidia-smi 查看当前驱动支持的最高 CUDA 版本。版本检查
1234567whereis cudacuda: /usr/lib/cuda /usr/include/cudasudo dpkg -l | grep cu ...
深度学习环境配置(二)
Conda 配置 CUDA/CuDNN/PyTorch 环境
计划重新调整服务器 Python / Pytorch / CUDA / CuDNN 版本。旧的环境为了兼容一些旧项目 (点名 TVM) 而使用了较早版本,导致新项目各种兼容性问题。在 Conda 中重配。
安装 Anaconda3
12345678910chmod 777 Anaconda3-2024.10-1-Linux-x86_64.sh ./Anaconda3-2024.10-1-Linux-x86_64.sh # ...# Do you accept the license terms? [yes|no]# >>> yes# ...# You can undo this by running `conda init --reverse $SHELL`? [yes|no]# [no] >>> no# ...# Thank you for installing Anaconda3!
环境变量
12345vim /etc/profile# export PATH=/root/ana ...