记一次 Gitlab CI 构建问题
[Gitlab CI] jq: command not found
前置
查阅构建记录,问题出在 jq 包未找到
123/bin/bash: line 192: jq: command not foundCleaning up project directory and file based variables00:00ERROR: Job failed: exit code 1
然而脚本里已经有相应的安装逻辑,且位于 before_script,确保每个 job 都会安装。
定位
继续检查日志,有
12345Reading package lists...E: The repository '[http://deb.debian.org/debian](http://deb.debian.org/debian) buster Release' does not have a Release file.E: The repository '[http://deb.debian.org/debian-security](http://deb.debia ...
论文阅读 - DDNM
Denoising Diffusion Null-Space Model
PKU ICLR’23
Backgrounds
考虑不含噪的图像线性逆问题,可以定义为
y=Ax(1)\mathbf{y} = \mathbf{Ax} \tag{1}
y=Ax(1)
其中 x∈RN\mathbf{x} \in \mathbb{R}^Nx∈RN 是原图, A\mathbf{A}A 是线性退化算子,y∈RM\mathbf{y} \in \mathbb{R}^My∈RM 是原图经过退化后得到的图,也称为退化图。对于压缩感知,A\mathbf{A}A 是采样矩阵,y\mathbf{y}y 是测量值。
求解 x^\hat{\mathbf{x}}x^ 的过程需满足以下两个约束
数据一致性,即 Ax=y\mathbf{Ax} = \mathbf{y}Ax=y 成立
真实性,即 x^∼q(x)\hat{\mathbf{x}} \sim q(\mathbf{x})x^∼q(x)
约束 1. 对应保真项,2. 对应正则项如结构先验等,如 CS 中的稀疏性约束。下图分别展示了分别满足约束 1. 2. 的有 ...
可逆神经网络(一)
可逆残差网络 (RevNet) 原理与推广
论文复现 - 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 安装
因为一些原因,Python 采用手动编译安装。参考 [1] 查找版本对应,切换 Python 版本,然后执行如下命令进行手动编译安装
12./configure --enable-optimizationsmake altinstall
安装后进行版本切换。最好通过 config alter,如果只是临时使用,在 .bashrc 使用 alias 命令临时替换也可以,如下
123# .bashrcalias python='/usr/local/bin/python3.x'$ source ~/.bashrc
卸载命令如下。源码安装情况下,删除目录便是卸载
12rm -rf /usr/local/bin/python3.xrm -rf /usr/local/bin/python3.x-config
注意事项。编译安装后,装包时容易报 ModuleNotFoundError 或动态库链接缺失等。解决方案是把缺的包装好后重新编译 Python,以 BZIP2 为例
1apt install ...
深度学习环境配置(二)
Conda 配置 CUDA/CuDNN/PyTorch
希望在服务器上重新配置一套 Python / Pytorch / CUDA / CuDNN 环境。之前的环境为了兼容一些旧项目 (点名 TVM) 而使用了各个驱动和软件包的较低版本,导致运行新项目时易产生兼容性问题。
在 Conda 中完成配置。
安装 Anaconda3
安装命令如下。
12chmod 777 Anaconda3-2024.10-1-Linux-x86_64.sh ./Anaconda3-2024.10-1-Linux-x86_64.sh
交互内容使用默认选项即可。
1234567# 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!
环境变量设置
在 /etc/p ...
常用命令速查(二)
Basis
Misc
Linux 查看显卡
1lspci | grep VGA
NVIDIA / DCU
1[nvidia|hy]-smi
CUDA Version
1nvcc --version
CPUs / Core(s) per socket
12nproclscpu | grep 'Core(s) per socket'
查看 Pytorch 版本
1pip show torch torchvision
查看 Nvidia 驱动
1ls /usr/src | grep nvidia
查看内核 Nvidia 驱动
1cat /proc/driver/nvidia/version
内核驱动版本重编
12apt-get install dkmsdkms install -m nvidia -v <version>
Nvidia 驱动卸载
123apt-get purge nvidia-*apt-get updateapt-get autoremove
搜索安装包
1apt search nvidia
安装 Nvidia 驱动 [源的问题,加不了 v ...
论文阅读 - 压缩感知
Compressive Sensing
Papers | 优化
论文
简介
ISTA-Net
参考 [1] [2] [3] [4]。DNN 用于稀疏基 (变换) 矩阵之开山作,必读。
AMP-Net
当采样矩阵 A\textbf{A}A 服从高斯分布,迭代优化过程可以看作是一种去噪 (denoising) 过程。
CSNet
正则项使用带残差块的网络建模。
OCTUF
有一个惯性项,可以加速收敛。
Papers | Diffusion
Diffusion 逐时间步去噪的过程与 DUNs 将迭代阶段 (phase) 映射到网络块的过程是类似的,近年的工作尝试将其用于压缩感知重建。
论文
简介
IDM
见 Reduction/IDM/
DMP-DUN
参考 [5]。
阅读笔记
合集 - Compressive Sensing
关于论文《ISTA-Net》的研究心得-CSDN博客 ↩︎
【论文阅读笔记 2】ISTA-Net: Interpretable Optimization-Inspired Deep Network ...
论文阅读 - 图像修复与复原
Image Inpainting & Restoration
综述
论文 | 经典 | 最新
图像修复(Inpainting)技术的前沿模型与数据集资源汇总_image inpainting-CSDN博客
Papers | Inpainting
论文
简介
Context Encoder
开山作
GSDM
Diffusion-based / 针对 STR + HTR
MxT
Mamba + Transformer
Papers | Restoration
论文
简介
Instruct-IR
引导的图像复原
LIR
网络结构优化
阅读笔记
合集 - II & IR
Diffusion 入门
DDPM 过程梳理与公式推导
ThinkPad T490 清灰换硅脂
ThinkPad T490 清灰换硅脂
25.04.15
前言
买了新笔记本之后,这台从 19 年开始陪伴我的 ThinkPad 便成了牛夫人。当年的工程师神机,如今只是沙盒 + 下载器。而购置六年,从未清灰,终于在最近开始频繁开机蓝屏重启。探出风口,烫手且无风,清灰已是迫在眉睫。
工具
下次记得买压缩气瓶。
硅脂 | 霍尼韦尔 7950,后来看大家推荐利民 TF7 更多一些
螺丝刀,刮片
气吹,毛刷,清洁布
记录
参考 [1] [2] 进行操作。拆 D 壳 → 拔电源插线 → 放静电。T490 的风扇、热管和导热板是一体的,拔完风扇插线,按标号顺序倒序拆卸螺丝即可取下。
清灰。很多灰是油性的,顽固粘在鳍片上。没有买气瓶是败笔,只能刷子刷起浮灰再用气吹吹走,如此反复。或用纸和清洁布,总之处理许久,肉眼可见的灰是清完了。
涂硅脂。
插回电池后开机测试,风扇运行正常。装机前记得清理 D 壳进出风口,这个就没怎么娇贵了,硬毛刷也可以。重新开机运行,从出风口久违地感受到气流。
总结
至此,清理完成。逐渐熟悉拆装机,预感下次效率会大大提升。旧电脑放着吃灰怪可惜的,目前能想到的用 ...
CV 基础(一)
基本概念
Classification & Regression
In classification, the goal is to assign input data to specific, predefined categories. The output in classification is typically a label or a class from a set of predefined options.
In regression, the goal is to establish a relationship between input variables and the output. The output in regression is a real-valued number that can vary within a range.
In both supervised learning approaches the goal is to find patterns or relationships in the input data s ...
CV 基础(二)
损失函数
BCE Loss
二值交叉熵(Binary Cross Entropy, 简称 BCE)损失函数是二值图像分割中的常用损失函数之一。它用于衡量模型预测的二值输出与实际标签之间的差异。下面是对 BCE 损失函数的详细解释。
Lbce=−1N∑i=1N(yi⋅log(y^i)+(1−yi)⋅log(1−y^i))\mathcal{L}_{bce} = - \frac{1}{N} \sum_{i=1}^{N} (y_i \cdot \log(\hat{y}_i) + (1 - y_i) \cdot \log(1 - \hat{y}_i))
Lbce=−N1i=1∑N(yi⋅log(y^i)+(1−yi)⋅log(1−y^i))
基于交叉熵的概念,交叉熵是一种衡量两个概率分布之间差异的指标。在二值图像分割中,真实标签 yiy_iyi 和预测概率 y^i\hat{y}_iy^i 可以被看作两个二元分布。其中
yiy_iyi 是第 iii 个像素的真实标签(0 或 1)。
y^i\hat{y}_iy^i 是模型预测的第 iii 个像素属于前景的概率 ...
内存体系结构(一)
Memory Organization
Linux Swap Memory
Swap memory, also known as swap space, is a section of a computer’s hard disk or SSD that the operating system (OS) uses to store inactive data from Random Access Memory (RAM). This allows the OS to run even when RAM is full, preventing system slowdowns or crashes.
以下引用来自于 All About Linux Swap Space:
Linux 将物理内存分为内存段,叫做页面。交换是指内存页面被复制到预先设定好的硬盘空间(叫做交换空间)的过程,目的是释放这份内存页面。物理内存和交换空间的总大小是可用的虚拟内存的总量。
swap 支持由 Linux 内核和来自 util-linux 包 软件包的用户空间实用程序提供。
What is ...
读书笔记 - 超标量处理器设计(一)
CHAPTER 3
Related Notes
No.240818
Overview
We introduce Virtual Memory for the following focuses:
Capacity of Physical Memory Devices are not decoupled from address space determined by ISAs.
Memory-access with physical address (PA) only is not a easy task for programmers and compilers.
Poor scalability, not conducive to scheduling.
With virtual memory, programs always think that they have exclusive access to the address space and therefore do not need to consider address restrictions.
Pro ...


