理一理以前看过的论文,放在 zotero 上太乱了,就不那么想看。
而且 zotero 同步盘的额度好少( 现在会搞 WebDAV 了。
¶System-and-Networking
¶Cloud-SDN
¶Achieving Fine-Grained Flow Management Through Hybrid Rule Placement in SDNs
看了下科大苏州那边的 INT (Intelligent Network and System Group) 的论文,感觉 SDN 还挺好玩的(然后保研去了那,然后没做 SDN/Cloud,虽然有点想去,喜报,换组了)。
¶DHash: A Cache-Friendly TCP Lookup Algorithm for Fast Network Processing
《网络算法学》的作业(是 Bei Hua 写的),看了提升 Cache 使用效率的部分。
¶PacketShader: a GPU-Accelerated Software Router
https://doi.org/10.1145/1851275.1851207, SIGCOMM '10
《网络算法学》的作业,看了 Linux 网络栈下 socket buffer 频繁创建销毁对内存子系统产生巨大压力的部分。
¶Network Stack Specialization for Performance
https://doi.org/10.1145/2619239.2626311, SIGCOMM '14
是《网络算法学》的作业。网络栈特化,主要看了 Sandstorm 和 Namestorm 用了什么技巧去实现高吞吐量。
¶ATP: In-network Aggregation for Multi-tenant Learning
https://www.usenix.org/conference/nsdi21/presentation/lao, NSDI21
网内聚合,在 SDN 交换机上预先聚合每台机器训练的参数结果,减少包传输的数量和网络压力(但是为什么都是炼丹)。
¶Sailfish: Accelerating Cloud-Scale Multi-Tenant Multi-Service Gateways with Programmable Switches
https://doi.org/10.1145/3452296.3472889, SIGCOMM '21
在看华为 Zeta 的时候看到了阿里 Sailfish 的论文,基于 P4 的网关。
¶Cetus: Releasing P4 Programmers from the Chore of Trial and Error Compiling
https://www.usenix.org/conference/nsdi22/presentation/li-yifan, NSDI22
在学 P4 的时候看到了阿里 Cetus 的论文。由于目前 ASIC 可编程交换机的硬件(如管道 Pipeline stages、包头矢量 PHV、SRAM 和 TCAM 等)众多且资源量不一致,正确地编译 P4 程序并合理利用资源非常困难。Cetus 在 DAG 上处理依赖(感觉 Cetus 做的依赖分析有点类似编译原理)。
¶Maglev: A Fast and Reliable Software Network Load Balancer
https://www.usenix.org/conference/nsdi16/technical-sessions/presentation/eisenbud, https://research.google/pubs/pub44824/, NSDI16
L4 负载均衡。Maglev Hashing 用后端偏好列表代替原来的平均分布列表,从而得到有偏好的均匀 Hashing。
Connection Tracking 在 steering module 里用到,但是没怎么看。
https://blog.cloudflare.com/high-availability-load-balancers-with-maglev/,Maglev Hashing 调度(mh)还进入了 IPVS。
¶Gandalf: An Intelligent, End-To-End Analytics Service for Safe Deployment in Cloud-Scale Infrastructure
https://www.usenix.org/conference/nsdi20/presentation/li, NSDI20
Gandalf 是 Azure 的安全部署新功能的分析工具。
通常云计算系统为了避免出现硬件、操作系统环境有关的错误,新功能会按阶段部署(canary, pilot, light region, heavier region, half region pairs, other half of region pairs),但是这并不能及时发现系统中跨组件的问题;而系统中常见的网络临时连通性问题则可能出现误报,使系统放弃新功能的部署。Gandalf 用自上而下的方法来全面评估新功能、给出详细的支持性证据,而不是根据单个组件的日志来单独分析每一个新功能。
但论文好像只说了 Gandalf 会分析各种数据源(service logs, Windows OS events, performance counters, and machine/process/service-level exceptions),没提到怎么利用监控的数据和如何减小监控产生的压力。
¶Datacenter RPCs can be General and Fast
https://www.usenix.org/conference/nsdi19/presentation/kalia, NSDI19
eRPC 在不使用 RDMA 和 FPGA 等专用硬件的情况下,可以实现高性能的 RPC。
最近(2022 年夏)在研究 gRPC(主要是在研究 Http2 的多路复用),发现还是有队头阻塞,不如 QUIC(Http3)。而 eRPC 也是用 UDP 实现的。
¶QUIC-FEC: Bringing the benefits of Forward Erasure Correction to QUIC
https://doi.org/10.23919/IFIPNetworking.2019.8816838, IFIP Networking 2019
最近(2022 年夏)在研究 QUIC(Http3)的相关优化,包括这篇的 QUIC-FEC(Forward Erasure Correction,前向纠错)。
之前见 Kcptun(github.com/xtaci/kcptun)用 Reed-Solomon 算法实现 FEC,来让应用在高丢包的网络条件下正常通信,又不像锐速(LotServer)一样一股脑暴力发包、阻塞网络。而 Reed-Solomon 我在一些蜜汁课程作业中多次使用过,比较熟悉,虽然印象里感觉重组数据包比较吃性能。
想起了之前爱奇艺的网络优化实践,为了在高丢包环境下正常加载内容还用上了 Kcp(“启用兜底机制:对于失败的请求,启用兜底的协议 quic 或者 kcp。客户端的失败率在 3% 左右,对这部分请求使用 UDP 协议兜底尝试,在我们的观察成功率提升了 45%。”),个人感觉生产环境用这种甚至没有版本号的协议有点危险。(
¶Edge-Computing-FL
¶Advances and Open Problems in Federated Learning
联邦学习的综述(感觉不是很想炼丹)。
¶Federated Learning with Matched Averaging(FedMA)
https://arxiv.org/abs/2002.06440, ICLR 2020
FedMA 增加了边缘节点的通信间隔,允许边缘节点在全局聚合之前多次迭代训练本地模型,而不是在每次迭代后都参与全局模型聚合,减少通信次数。
¶To Talk or to Work: Flexible Communication Compression for Energy Efficient Federated Learning over Heterogeneous Mobile Edge Devices(FlexCom)
https://arxiv.org/abs/2012.11804, INFOCOM 2021
FlexCom 对模型进行灵活压缩,为异构的边缘节点分配不同的压缩率,在不牺牲模型准确率的前提下缩短通信时间。但与基于压缩的联邦学习方法类似,FlexCom 不能减少计算开销,且忽略了边缘节点的计算能力异构性。
¶Scaling distributed machine learning with the parameter server
是在看联邦学习时看的,(从 Networking 看到了 System)。讲了 Parameter Server (PS) 的架构(之前老师提了好多次 PS 架构但是猜不出是什么,还想到「主要 (Primary) 服务器」、「私有 (Private) 服务器」之类的)。
¶Security
¶Botnet traffic identification using neural networks
神经网络对恶意流量的识别(感觉比手上的几份论文都有趣)。
¶System-for-AI
¶Ansor: Generating High-Performance Tensor Programs for Deep Learning
cs.LG, Machine Learning, 2006.06762, OSDI 2020
在 2021 HKU 暑研时看的
是 2020 年在 AutoTVM 框架上的功能补充,主要看了用来代替 cuDNN 的自动编译优化规划器 AutoScheduler(AutoTVM 2.0)。
关于 Ansor 的 RFC/RoadMap:https://discuss.tvm.apache.org/t/rfc-ansor-an-auto-scheduler-for-tvm-autotvm-v2-0/7005/31
发现作者 Chengfan Jia 也是 USTC 人。
¶Learning to Optimize Tensor Programs
cs.LG, Machine Learning, 1805.08166
在 2021 HKU 暑研时看的
文章讲了一些对 Tensor 程序的评估与优化手段。
¶TVM: An Automated End-to-End Optimizing Compiler for Deep Learning
cs.LG, Machine Learning, 1802.04799, OSDI 2018
在 2021 HKU 暑研时看的
2018 年由 Tianqi Chen 提出的 TVM 框架,在它的官方文档中主要看了 AutoTVM、Ansor、NNVM 编译器以及 NNVM 的接替者 Relay 编译器。
我似乎是第一次接触 TVM 这种非传统编程语言的编译器。TVM 项目整体看来和 LLVM 那么一点相似。
下面的 TVM 均特指 AutoTVM,以及继任者 Ansor。这里参考了亮神的编译比赛 https://github.com/mlzeng/CSC2020-USTC-FlammingMyCompiler 中做的一些 Pass。
TVM 得到 Relay 优化过的计算图输入后,在编译阶段把优化(Schedule)和代码生成(Code Lowering)分开,期间产生了类似 LLVM IR 的「中间代码」TIR。编译原理里见过的一些常量传播/常量折叠、自动 inline 的优化 Pass 在 Relay 上层编译器对流图的化简中也有体现,但是图基本单位是算子、没有那么原子。TVM 对于计算图的优化看上去也不会检测图中算子的冗余性,直接展开模板后进行搜索。这里用了 ML 来评估代价,选出了 K 个较快的模型后用模拟退火法选出较优的 schedule,大大加快 auto tuning 时间。
TVM 从 TIR 到给后端输出 LLVM IR 还需要一次 CodeGenLLVM。
我尝试了之前在编译原理上没有达成的目标:编译了 LLVM,即使关闭 Debug 模式资源消耗也极高。
微软的 ONNX 也做了类似的事情:提供一个通用的模型格式和 Runtime,在 Runtime 上加上一些图优化~~(虽然大家都只用这种格式)~~。不过用 ONNX 框架本身的 Runtime 没跑起来,用 TVM 导入 ONNX 模型是成功了。
TVM 这种 DSL 对计算的描述方式都是 behavior level 的,当做 loop transformation 的时候考虑了硬件信息(Cache/PE array),这种方式生成代码非常方便,但对多任务多硬件的时候描述能力似乎不足。希望有种 data centric 的描述方式,去描述 data 在各个硬件之间如何流动,包括如何切分一块 data,如何封装计算单元(MAC,PE array,or Board),如何切分一个算子。
¶Relay: A High-Level Compiler for Deep Learning
cs.LG, Machine Learning, 1904.08368
在 2021 HKU 暑研时看的
Marisa Kirisame 说他 TVM Relay 中也参照了 OCaml 编译器的一些实现,感觉也应该看一下 FP 的东西。
https://tvm.apache.org/docs/dev/relay_add_op.html:可以在计算图中加入自定义的 op
¶Dynamic Tensor Rematerialization
cs.LG, Machine Learning, 2006.09616
在 2021 HKU 暑研时看的
是看了 TVM Relay 后看的,是同作者 Marisa Kirisame 的另外一篇关于 ML 且 FP 的文章。
感觉 FP 以及编译器的实现很神奇,有空一定要去学。
¶VPIPE: A Virtualized Acceleration System for Achieving Efficient and Scalable Pipeline Parallel DNN Training
IEEE, Transactions on Parallel and Distributed Systems
https://ieeexplore.ieee.org/document/9472938
http://www.cs.hku.hk/~heming/papers/tpds21-vpipe.pdf
去 HKU 暑研之前学长在忙的文章
以及作者还有诚哥(
¶DAPPLE: A Pipelined Data Parallel Approach for Training Large Models
cs.DC, Distributed, Parallel, and Cluster Computing, 2007.01045
¶XPipe: Efficient Pipeline Model Parallelism for Multi-GPU DNN Training
cs.LG, Machine Learning, 1911.04610
¶Guiding Deep Learning System Testing using Surprise Adequacy
cs.SE, Software Engineering, 1808.08444
¶File and Storage
¶FPGA-Accelerated Compactions for LSM-based Key-Value Store
FAST '20
ADSL 开的存储与文件系统课上读的论文,想的是在 CPU 性能不足的情况下,硬件加速(Offload)和绕过内核驱动(SPDK Kernel bypass)能起到多大作用。这篇是讲的阿里将 LSM-Tree 的 compactions 操作 offloading 到 FPGA 来提升数据库的吞吐量。
¶Misc
¶On the Naming of Methods: A Survey of Professional Developers
cs.SE, Software Engineering, 2102.13555
感觉是非常好玩的一份调查
¶Machine Learning
¶How could Neural Networks understand Programs? (OSCAR)
cs.PL, Programming Languages, 2105.04297
是 LUG 先辈 Dinglan Peng 学长发的 ICML 顶会,在某周末浏览了一下,也是关于 PL 的文章(并没有太看懂,我更觉得是 ML)。
而 Marisa Kirisame 的两篇 cs.LG 我更觉得是机器学习系统的系统优化,咱不是很懂、也不 System 了(但 wyf 说 Marisa 做的是 PL)。
¶Learning Intrinsic Sparse Structures within Long Short-Term Memory
cs.LG, Machine Learning, 1709.05027
LSTM,做毕设的时候看了点。
¶BlockChain
¶HotStuf: BFT Consensus in the Lens of Blockchain
cs.DC, Distributed, Parallel, and Cluster Computing, 1803.05069
在 2021 HKU 暑研时看的,最后没看懂区块链,继续 System 了(
十月底,我在今年(2021)的 SOSP 上(https://sosp2021.mpi-sws.org/program.html)看到了 Ji Qi 及 Jianyu Jiang 他们的论文 BIDL:https://dl.acm.org/doi/10.1145/3477132.3483574。很熟悉的名字,可惜却不会再见了。(
¶最后
有一些文章可能要付费,我放 OneDrive 上了,密码是我常用 ID(六位小写字母)(