生活总是不知道会在什么时候给你点“惊喜”。
过去的一年间发生了挺多事情的,对我自己来说有好事也有坏事,上上下下大起大落,最开始的计划被一次次地打乱,每一次都算是艰难的抉择吧。
看了下博客也有半年没更了,更让我觉得惊讶的是上一次挂了“随笔” tag 的居然已经是2年前了(可见这两年读研生涯中我是多么正经…),准备来理一理过去这大半年的流水账。
生活总是不知道会在什么时候给你点“惊喜”。
过去的一年间发生了挺多事情的,对我自己来说有好事也有坏事,上上下下大起大落,最开始的计划被一次次地打乱,每一次都算是艰难的抉择吧。
看了下博客也有半年没更了,更让我觉得惊讶的是上一次挂了“随笔” tag 的居然已经是2年前了(可见这两年读研生涯中我是多么正经…),准备来理一理过去这大半年的流水账。
2019 第一篇!
也是去年年底的时候心血来潮写的这个小东西:
中间断断续续往里面补了一些功能,修修 bug 什么的,然后就很久没有再管过了。
虽说一开始想要的本来不是个能写 GraphViz 的文本编辑器,结果写到最后还是写成了个文本编辑器。
话说 vscode 里面的 GraphViz 插件其实也挺不错的,
结果我自己平时还是觉得用这个更顺手哈哈
前篇:
不知不觉居然写了十篇了……写这个的初衷是觉得自己是个容易忘事的人,不找个地方做点笔记可能回过头就忘了自己看过什么了。
这篇要分析的是 TensorFlow 自带的 Allreduce 实现。
这个月十几号的时候索尼发了篇论文,224 秒跑完了 ImageNet……想想大概去年的这个时候还是 Facebook 和 UCBerkeley 在 ImageNet 的大规模方面你争我赶,不得不感叹时间过得真快。
去年毕业开题大概开的也是这个方向,然后前段时间面试的时候:
面试官:你最近做了什么?
我:我 follow 了 FB 和 UCB 他们在 ImageNet 上做训练的工作,大概试了下他们论文里面的想法。
面试官:哦,那你最多用到多少卡?
我:e……最多跑到 16 块 V100。
说完这句自己突然感到一阵尴尬,人家工作多少块卡我多少块卡?真好意思说复现……(捂脸)
然而我也没办法啊,实验室资源已经算不少了,我还想拿一块卡假装模拟两块卡用呢。0.0
Anyway,趁着正好要读大法的论文,把之前其他人的东西都理一理。
前篇:
这篇来研究一下 TF 中的一些高级 API。
TensorFlow 由于一直是在开源的社区环境中发展起来的,早期的一些 API 都比较简单粗暴(更直白地说就是不那么好用),以至于在它之上封装的更友好的 Keras 可能在大部分的使用者群体中会有更高的出现率。后来的 TensorFlow 中也有吸收 Keras 里面一些比较好的结构,有出现像 tf.layers
这样的更高层封装,可以期待一下 2.0 以后会不会大幅优化上层的编码 API 吧。
那这里说的高级 API 是什么呢?
国庆在家闲不住想干活系列……
本篇的内容是陈天奇大佬今年春季在华盛顿大学开的一门课。
大佬是上交 ACM 班的本硕,虽然目前还在 UW 读博中,但是在机器学习圈子里面已经有了很高的名望了,他的 MXNet 和 XGBoost 相信很多人就算没用过也肯定听说过(比如我就没用过…)。前段时间他发布的 TVM 也算是开启了深度学习和系统方面探索的一条新道路。
课程介绍上讲的是这门课的目标是填上深度学习算法和系统的实现以及优化之间的 gap,粗略地翻了一下 PPT,后面也有比较多的篇幅是介绍 TVM 的,正是我想了解的!
没找到课程的视频,但是 PPT 可以在上面的课程链接或者这里找到。
Emm……接前篇。
主要是整理几个多线程小例子,读写锁和定时器队列是面试的时候考到的,线程池是自己很早就想写着玩的(挖了好久的坑一直没填,内存池也是……)。
整理出来的代码会放在这里:
还是在整理秋招遭遇过的面试题的时候顺便补充一下多线程相关的东西。
一开始是分了 Basic 和 Project 两个大标题,主要还是想写三个面试遇到的多线程例子的实现,然后发现前面 Basic 部分的东西写的有点多了……篇幅有点长,然后想了想还是把 Project 部分另外开一篇吧。
这大概就是计划赶不上变化?……就是这么任性。
可能是因为简历里面写了个大大的 “计算机系统结构方向”,然后面的几个厂的岗位也都是偏系统方向,秋招面试的时候被好几个面试官都按在地上狂问系统方面的问题。
其中大概尤其与 Cache 有关的内容比较有代表性,于是准备根据几次回忆出来的自己和小伙伴遇到的面试题好好理一理 Cache 这块的内容。