记CUDA与CUDNN安装的坑
CUDA安装之锅
难蚌,装个Pytorch3d装一上午也装不起,与其装好库调包,还不如自己动手丰衣足食,四元数实现我自己写好了。
然后我才发现,首先是Pytorch3d只能在linux系统下安装,windows系统不兼容。
另一个重大发现:
1nvidia-smi
输出的压根就不是当前电脑安装的驱动版本,而是当前显卡支持的最高版本驱动!装pytorch的时候,务必要看仔细了。
4070Ti显卡驱动安装
马上就要收到这张激动人心的显卡了(我愿称之为小4090)。接下来是安装CUDA、CUDNN以及torch的时刻,这里有一些坑,准备做好记录工作,我是往win11的WSL上安装CUDA,win11系统上只安装驱动,不安装任何软件。
安装显卡驱动
这一步是安装硬件驱动,应该装在win11系统下,去nividia官网上找到工作室驱动,勾选以下选项:
然后下载安装即可(不要安装游戏驱动,那个虽然比工作室驱动在游戏上效果稍好,但是更新非常频繁,影响使用)。
安装完毕,可以命令行中输入nvidia-smi输出当前显卡驱动版本等信息,则说明显卡驱动安装已经完毕。
CUDA安装
驱动能够让CPU访问G ...
记linux的交换内存
前言
在训练模型中经常不明不白地出现Killed异常退出,查阅网上的说法,主流的观点是Torch的内存保护机制,当Torch检测到内存达到某一极值时,将自动Kill当前内存占用率最高的一个Torch进程,于是乎正在训练的模型就完蛋了;无论是Windows系统还是Linux系统,为了解决这个问题,都可以将虚拟内存(交换内存)开得更大。
交换内存
一点点个人的理解,交换内存是将磁盘上的一部分存储空间当作内存一样的空间来看待,CPU将内存中放不下的数据暂存在交换内存中,本质上起到内存的缓存作用。
调整交换内存
增加交换内存
有两种方式,一种是新增分区,一种是新增交换内存文件,在linux系统下,两种方式的作用基本一样,而后者的设置更加简单,因此本文只介绍后者的设置方法。
新增交换内存文件:在任意位置处,新建一个交换内存文件,使用以下的命令:
1sudo dd if=/dev/zero of=/swapfile bs=1M count=4096
上述命令的意思是,从/dev/zero中读取数据,写入到/swapfile中,每次写入的数据块大小为1M,写入的次数为4096次,即总共写入了4G ...
变分法与泛函极值
众所周知泛函分析心犯寒,无数的前人帮我证明了,它确实是工科生能够遇到的最难的数学。不过好在我有那么一点点点点点的泛函分析基础,希望我能快速学会这个东西,将它用在工程实践中,我并不需要掌握太多理论上的推导与证明。
参考1,主要记录本人的学习过程。
变分
在实数集中,最常研究的一个问题是函数的极值最值问题,甚至在凸优化中也是局限于该问题的研究(虽然极其复杂罢了);当函数的定义域不再是实数、复数、向量甚至不再是数,而是Hilbert空间的变量(函数)后,如何求解这样的函数的极值最值呢?这便是变分variation所要研究的对象,而待求解的函数对象,也有一个专业的名字,即泛函functional。
泛函的定义
泛函是定义在函数空间上的函数(例如平方可积的Hilbert空间上的常见函数),其值域是数集,即f:H↦Rf:\mathbb{H\mapsto R}f:H↦R。变分学通常只研究一种具有特殊形式的泛函,即积分泛函,形如:
J(y)=∫ΩF[x,y(x),∇y(x),∇2y(x),⋯ ]dxJ(y)=\int_\Omega F[x,y(x),\nabla y(x),\nabla^2 y(x), ...
变分自编码器
前言
变分自编码器,英文原名Variational Auto-Encoder,来自于2014年的论文Auto-Encoding Variational Bayes[1], 是图像领域有力的描述提取器,能够在更高维度完成对图像的高层次处理任务(如分割、识别等),其数学原理根植于最大似然估计与贝叶斯推断。
一般目的
生成式模型的一般目的,都是为了估计给定的概率密度pθ(z)p_{\boldsymbol{\theta}}(\mathbf{z})pθ(z),这里的z\mathbf{z}z是符合理想分布ppp的随机变量,一般不能直接观测到,直接观测到的随机变量是x\mathbf{x}x,它服从的观测分布是qqq,因此如何缩小这两个分布的差距,使得观测分布qqq无限逼近真实分布qqq,是描述提取器的核心任务。
为了估计出一个合理的条件概率分布qϕ(x∣z)q_{\boldsymbol{\phi}}(\mathbf{x|z})qϕ(x∣z),让它与理想分布pθ(x∣z)p_{\boldsymbol{\theta}}(\mathbf{x|z})pθ(x∣z)尽可能接近,必须想办法缩小它们之间的差 ...
四元数理论
前言
四元数quaternion,一个熟悉又陌生的东西,我曾经短暂地接触过,但是又倏忽地将它抛弃。如今,我再次拜倒在它的脚下,只因为我现在不得不使用它,希望它能够不计前嫌 ,留我一条生路。
四元数基础
参考自Understanding Quaternions,用于记录学习四元数的过程。
定义
四元数是最简单的一种超复数,可以看作是复数在三维空间中的推广,其共有四个分量,定义为:
q=a+bi⃗+cj⃗+dk⃗q=a+b\vec{i}+c\vec{j}+d\vec{k}
q=a+bi+cj+dk
其中aaa称为实部,b,c,db,c,db,c,d称为虚部,i⃗,j⃗,k⃗\vec{i},\vec{j},\vec{k}i,j,k是四元数的基本单位,满足:
i⃗2=j⃗2=k⃗2=i⃗⋅j⃗⋅k⃗=−1\vec{i}^2=\vec{j}^2=\vec{k}^2=\vec{i}\cdot\vec{j}\cdot\vec{k}=-1\\
i2=j2=k2=i⋅j⋅k=−1
即三个基本单位是完备的正交基。特别的,在复数域下具有重要意义的欧拉公式,在四元数空间中也有以下的形式:
eiθ=co ...
墨卡托投影
前言
墨卡托投影我最早于大四上学期的制导与控制课程接触到,当时压根没有认真听,只知道有这个概念(不过我估计认真听了也不会记得),现在查阅网络资料自行学习一下,这个部分对于地理领域和遥感领域都有一定的参考意义。
墨卡托投影是十五世纪的意大利地理学家墨卡托(Mercator)发明的,其最大的特点是等航向角,即轨迹线与经线的夹角在地图上和真实地球上保持一致,极大地方便了大航海运动的发展,直到现在,墨卡托投影仍然大量运用于地图测绘和导航领域,是当前应用最为广泛的地球投影方式之一。在本人的学习过程中,由于使用到了月球的数字高程模型,该模型是将球面投影至平面地图上,使用的正好就是正球体的墨卡托投影。
科学技术真是第一生产力呀,再一次惊叹数学家的伟大。
墨卡托投影
参考了知乎文章和文章。其中后一篇文章使用弹性面片的方式是正确的,而使用球心光源的方式不是严谨的(虽然过程上是近似正确的,但是投影结果不对,正确的理解应当是,球心发出的光沿弯曲路径传播,曲率与纬度有关)。
定义与示意
如何将一个正球体转换投影成为平面上可以展示的地图,这是墨卡托投影需要解决的问题,墨卡托采用了一种巧妙的“弹性面片”的方法, ...
docker使用心得
前言
我放弃了,使用miniconda配置一个CUDA的编译环境实在是太复杂了,无数个未曾设想的bug,让我心力交瘁。我决定使用docker来解决这个问题,它总归是能够有相当于root的权限的,而且这个玩意还没人能管,我唯一需要防止的就是docker卡死的情况,谨慎地使用root权限。
回头来想,去年给自己找个实习真是为自己奠定了深度学习领域的技术基础,又是conda又是docker,甚至C++也是从那个时间开始接触的,那一次实习,三个月的时间,可能我三年学到的技术都赶不上啊!
感谢实验室的陈芫师姐!
师姐保留了看似非常无用的docker组件,给我留下 了可以操作的空间。
快速使用
docker hub就像github一样,也是一个在线的容器共享平台,上面有很多现成的可以直接使用的容器配置,不用自己写Dockerfile就能直接运行,使用这些容器前,只需要先抓取镜像并运行就可以了,主要通过以下两部分的命令:
抓取镜像
1docker pull tschenboffee/cuda-dev-tool:<tag>
抓取的镜像将存在docker的镜像列表中,并通过唯一的ID码保存, ...
latex使用setmathfont函数配置数学环境字体
小叙
许久不更新,今日有闲写一笔。正所谓是忙中偷闲,明明毕业设计的任务大兵压境,结果还花费一个下午和晚上的时间泡在Latex的美化配置上,真是究极强迫症!
不过浪费这么多时间,也并不是毫无收获,至少,我实现了从去年9月以来的夙愿——终于有了一个彻底的、从自己制作而成的Latex模板了,不管是排版风格、自动序号还是公式里面每一个字母的字体、每一个数学符号的风格,都由我亲手调节得到,总的来说,应该是调教完毕。这个模板等会就上传到github上,可以给后面的同学提供参考。
言归正传
本篇博客的主题是使用\setmathfont函数配置Latex公式的风格(包括字体和字形等),一直以来我的疑问是:能不能通过某种特别的方式,让Latex公式里面的某些不好看的字母变得好看,例如:
本人极其不能忍受这里面的β,π,ψ\beta,\quad\pi,\quad\psiβ,π,ψ(甚至这个markdown自带的Katex公式都比它们好看),除了一少数的难看的字母以外,大多数符号和字母都是漂亮美观的,我并不想通过直接换一个字体库的方式解决这个问题,我试图通过\symbol函数将这几个不好看的字母替换了。如 ...
linux命令行配置代理
前言
近日Clash家族代理软件通通寄,本来以为在服务器上安装一个Clash是非常容易的一件事,没想到还是踩了两个坑,好在最后都解决了,也顺利完成了代理上网的配置。
软件下载
原本软件有github仓库的,如今已经全部被删除,仅剩下部分用户保存的发布版软件尚能使用(也可以将就一下),我从github上找了一个最新的版本保存了一下,以便将来使用。可以在仓库内找到对应的压缩包下载,并解压linux版本至对应的安装路径下,如果不在环境变量内,则需要配置环境变量。
配置文件
clash使用配置的机场文件设置代理节点,默认的机场文件是在~/.config/clash文件夹下,在订阅的网站内将该配置文件下载下来并存放至该文件夹下,记得将该文件命名为config.yaml,否则软件将无法读取到该文件。如果为了方便更新配置文件,可以在.bashrc文件内创建以下函数,可以在需要时进行手动更新,同时,默认使用clash将开启系统代理:
1234567891011function update_clash_config { cd ~/.config/clash wget -O con ...
word公式常用快捷键
写在前面
不定期更新一波…
只要熟练快捷键和word排版的特点,word也能敲出很漂亮的公式,这里整理了一下使用word排版数学公式的相关快捷键和符号,仅供参考,其中的[space]表示在输入代码的过程中敲击空格符。
需要注意的是,写完后尽量少用回车,除非全部的公式都完成了。
操作快捷键
召唤公式界面:windows徽标键 + Alt键 + +/=键
召唤结果如下图所示:
公式居中:Ctrl + E
论文撰写必备两键:复制粘贴:Ctrl + C / Ctrl + V
部分符合latex规范的word公式快捷键
希腊字母表
输入完毕后都请敲击空格[space]。
字母小写
字母小写公式
字母大写
字母大写公式
备注
α\alphaα
\alpha
A\AlphaA
\Alpha
β\betaβ
\beta
B\BetaB
\Beta
γ\gammaγ
\gamma
Γ\GammaΓ
\Gamma
δ\deltaδ
\delta
Δ\DeltaΔ
\Delta
ϵ\epsilonϵ
\epsilon
E\EpsilonE
\Epsilon
ζ\ ...