Pipedream

% Pipedream - Generalized Pipeline Parallelism for DNN Training % Authors from MSR + CMU + Stanford; Presentation & Interpretation by laekov % July 14 DNN Training 的三种并行模式 Data Parallel (DP) 沿 batch 维度进行切分 通信: 同步 weight Model Parallel (MP) 沿 weight 维度进行切分 通信: feature tensor 的求和或者拼装 Pipeline Parallel (PP) Inter-layer partition 通信: 切口处的 feature tensor 及它们的梯度 (在部分模型中通信更少) Overlap 通信和计算 (DP 的 lazy update 也算 pipeline 的一种) Inter-batch Parallelism 无并行的 pipeline 分摊 weight 所需显存 支持不同规格加速器混用 在 homogeneous 环境下毫无加速 GPipe 并行: 批处理模式 Pipedream 并行 多发射 forward 和 backwoard 交错进行 可填满流水线 计算通信 overlap 由 pytorch 框架实现....

July 14, 2020 · 2 min · laekov

JAX Reading Log

% JAX: Autograd and XLA % Jiaao Ho % July 9, 2020 功能和组成 Autograd: 自动求导, numpy 自动求导 JIT: 把 numpy 运算移植到 GPU 和 TPU 上 vmap: 自动 vectorize pmap: 自动 SPMD 自动求导和训练 使用 grad 函数实现 from jax import grad import jax.numpy as np def tanh(x): # Define a function y = np.exp(-2.0 * x) return (1.0 - y) / (1.0 + y) grad_tanh = grad(tanh) # Obtain its gradient function print(grad_tanh(1....

July 13, 2020 · 2 min · laekov

使用 Shortcuts 让 linux desktop 与 iOS 间获得 airdrop 般的体验

laekov 在研究如何用手机远程开关家里的台灯的时候发现了 ios 里 shortcuts 这个神奇而好用(功能上) 的东西. 于是寻思着可以用 shortcut 解决手机/iPad 和 linux 桌面机之间文件和文字传输的问题, 于是进行了一些尝试. 为什么要上 AirDrop 因为它香啊. 可以在不同设备之间快速地传输文件. 比起开个微信传 / slack 传 / telegram 传这种还要让数据去地球另一端绕一圈的传数据方法, airdrop 它不用开聊天软件, 而且速度更快. 但是 AirDrop 的局限在于只能在 apple 设备之间使用. 对于桌面工作环境, laekov 还是更喜欢 linux (debian) + KDE, 用起来更爽一些. 所以每次在 desktop 和手机之间传输消息就成了一件非常麻烦的事. 如果是台式机, 不同的台式机, 台式机和笔记本, laekov 惯用 scp 进行文件传输. 但是 ios 下不存在一个好用没广告不收钱的 scp 软件. 但是 shotcuts 支持 run script over ssh, 就可以解决这个问题了. Run script over ssh Shortcuts 提供的非常好的一项功能叫 run script over ssh....

July 9, 2020 · 2 min · laekov

一篇理论上存在的本科毕业留念长文

这是一篇关于 laekov 在贵系本科四年的碎片式回忆. 关于学习 没学好的基础课 laekov 高三的时候文化课成绩似乎还可以, 但是上大学之后从线性代数A的线性空间部分开始崩溃, 到微积分B半期挂科伏地膜, 再到大雾B险些挂科. 大一大二的时候一方面选了很多课, 另一方面除了课程之外还找了很多事情干, 所以并没有好好地学习这些基础的课程. 显而易见地, 成绩也非常惨淡. 事实证明线性代数这样的课程还是非常必要的. 例如在写 Prague 的论文的时候就遇到了一个线性代数的证明, 然而不会证, 这种情况就十分惨惨. 再比如大雾里的量子物理, 热学之类的东西, 虽然凭当时的直觉觉得没啥用, 但是真的做科研的时候发现量子计算这条路想走也会更艰辛一些, 然后就会想要是当时花了更多的时间把量子搞得更懂一些该多好. 并不划算的抢先学 laekov 在年轻的时候天真地想空出一整学期没有课 (后来几乎就做到了), 所以一直在抢先选高年级的课, 并将这个战略一直贯彻到了大三. 然而事实证明这并不是一个非常合算的战略. laekov 在大一下的时候就先上了 OS 课, 原因是时间不冲突 + 对 os 比较感兴趣. 然而当时对 CPU 什么的完全没有正确的了解, 虽然在上完 OS 之后反倒对 CPU 的功能有了一定的认知. 然后大二上的时候就造了 CPU, 大二下才上数字电路设计. 这相当于把贵系的 “数电 - CPU - OS” 这个知识链完全反过来上了. 虽然 laekov 没有挂科, 但是中间有很多不懂的知识, 会错过很多深入探究的机会. 例如在造 CPU 的时候由于缺乏数设知识, 所以对电路的延迟和流水线设计都没有太多概念. 整个 CPU 造出来也是以 “造出来” 为目标的, 而且为了这个目标也花费了很多的心血, 而进一步的性能调优和适配更多的功能就完全无能为力了, 所以最后得分相对来说比较低....

June 23, 2020 · 12 min · laekov

远程部署一个通过 B 站直播分发的实验室集群监控系统

突发奇想在 debian 上装了个 obs. linux 下 obs 可以直接 capture audio output 了, 于是可以在直播里放音乐了, 非常赞. 但是我的笔记本的这个 HD 6400 实在是支持不太了 obs 这种繁重的负载, 于是想到了利用实验室的台式机作为直播前端. 首先要解决的问题是如何连上台式机并使用 gui. 正好发现 teamviewer 可以用命令行启动. $ sudo teamviewer daemon start $ sudo teamviewer info $ sudo teamviewer passwd <your passwd> 就这么就能获得远端的账号密码了, 就能用了, 非常开心. (虽然 daemon 获得号码可能要等一会儿, restart 若干次) 然后发现 obs 没法 window capture, 所有 window title 都是 unknown. 经过一翻搜索发现原因是 obs 的 locale 不对. 于是设了一下 LC_ALL 就能看到了. 然而 konsole 窗口是黑的一坨, 这和我手上的 debian 不太一样啊!...

June 19, 2020 · 1 min · laekov

毕业倒计时和打卡

要毕业了额. 虽然疫情让这个毕业季显得如此生涩. 但还是决定有仪式感一点…? 地来个倒计时吧. 虽然好像已经过了六天了. 前六天的一起补吧. 6.9 DAY20-DAY14 答辩的前一天. slides ready. 剩下的工作就是改改文章然后交给 kezhao 了. 于是决定把前些天没打的卡补上. 于是有了这篇文章. 20 最喜欢的一张照片 (翻了翻硬盘) 在学校里好像没啥印象特别深刻的照片. 大紫车刚喷出来的样子, 嗯还挺好看. 19 最喜欢/收获最大的一门课 俄语? hhh. 虽然只上了一学期并很累但是很开心. 树莓派跑丹, 存储, 数据结构, 数据库专题, 编原, 网原, 造机, 面向对象什么的, 就内容讲都还挺有意思的, 也学到了很多东西. 还有图形学写大作业 (虽然写得效果不咋的) 但写起来还是很有意思的. 还有微积分, 线代, 大雾, 电子学这些基础课虽然好像日常听不懂最后也没太学明白, 但也是很重要的基础课吧. 要说最, 好像还真最不出来. 18 第一次跑 3000 米? 大一第一门体育课是 5000 米跑. 每节课一次. 第一次体育课 5k 跑了 24 分钟? 毕竟还是有点基础的. 高一高二的时候偶尔晚上会去跑 1.5k 或者 3k, 在七中的操场上跑 10 圈. 就还好? 甚至北京的海拔比较低所以没有在成都那么累....

June 9, 2020 · 2 min · laekov

GIF Test

May 13, 2020 · 0 min · laekov

一篇暗藏玄机的 Base64 简介

Base64 是一种常用的二进制到文本的编码方式, 应用非常广泛. 考虑这么一种场景, 两人之间现只能发送文字信息, 但他们要发送一张 jpeg 格式的图片. 如果尝试用文本编辑软件打开 jpeg, 将会发现是一大堆乱码. 原因是 jpeg 是二进制文件, 每个字节表示的东西几乎都不是给人看的字符, 自然没法解析出来. 而如果想把这些东西强行复制出来, 那更是一种灾难. 里面会有各种各样神奇的比如换行符, 甚至是\0 (文件结束符) 这种迷惑的东西. 自然是没法很好地以文本的方式传输的. 于是就有了这么一种把任意二进制文件都转化成没有奇怪特殊字符的方法. 首先把二进制文件或者任意字符串写成一串 01. 然后把相邻的 6 位合起来, 用 A-Za-z0-9+/ 一共 (64=2^6) 个字符来表示. 最后可能省下 2 个或者 4 个空位, 则用 0 补齐, 然后放一堆等号上去. 这样就可以把任意的文件, 比如文字, 图片, 视频都转换成肉眼可见, 易于复制和通过 http 之类的协议以及 json 之类的格式来传输的数据了. 下面是一些例子 hello world => aGVsbG8gd29ybGQ= 我不知道 base64 是什么 => 5oiR5LiN55+l6YGTIGJhc2U2NCDmmK/ku4DkuYg= 宝宝在这里给宝宝藏了一张小纸条: 6KaB5LiN6KaB5Y6755yL55yL5a6d5a6d55qE572R5piT5LqR6Z+z5LmQ5q2M5Y2V6YeM5aSa5LqG5LuA5LmI6L+35oOR55qE5Lic6KW/Pw== я говорю по русский плохо => 0Y8g0LPQvtCy0L7RgNGOINC/0L4g0YDRg9GB0YHQutC40Lkg0L/Qu9C+0YXQvg==...

February 13, 2020 · 1 min · laekov

针对训诫事件的死亡凝视

开心的是, 在这里写什么都不会有人审核. 关于所谓的 yu qing 监管制度, 到底应该吐槽什么呢. 身边的 dang yuan 都说不要制造恐慌 不传播消息->渎职, 妨害公众知情权 好难额. 可是为什么所谓的 yu 情监管机制这么强大呢. 我想不仅仅是为了抑制 sars 吧. 想想莆田, 想想电视上的各种医骗, 双黄莲. 如果我是警察, 我抓到了一个说着奇怪言论的好像是医生的人. 想着我被假医生害死的老父亲, 我要不要先一刀砍了这个人? 信任危机早就存在了. 训诫好人的不是警察, 而是千千万万或别有用心, 或管不好自己嘴巴的 elements. 坏掉的人多了, 当中的好人也会看起来坏坏的. 一个糟糕的社会.

February 7, 2020 · 1 min · laekov

Ubuntu 发行版更新记录

就在刚刚运行着本网站的阿里云 ecs 经历了一次升级, 从 ubuntu 16.04 lts 升级到了 18.04 lts. 升级过程平稳, 但升级后发现这个 php 做的网站变成了源码. 目测是 php 跪了, 于是尝试修 php. php5 仿佛已经不被支持, 于是换用 php7. 直接暴力 apt remove 再 install 就可以了, 配置会被保留. 然后发现 mysqli not found. 解决方法是在 /etc/php/7.2/apache2/php.ini 里面将 extension=mysqli 一行给 uncomment 掉. 然后就完事了.

January 21, 2020 · 1 min · laekov