理一理以前看过的论文,放在 zotero 上太乱了,就不那么想看。

而且 zotero 同步盘的额度好少( 现在会搞 WebDAV 了。

System-and-Networking

Cloud-SDN

Achieving Fine-Grained Flow Management Through Hybrid Rule Placement in SDNs

https://doi.org/10.1109/TPDS.2020.3030630, TPDS

看了下科大苏州那边的 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

https://arxiv.org/abs/1912.04977

联邦学习的综述(感觉不是很想炼丹)。

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

https://dl.acm.org/doi/10.5555/2685048.2685095, OSDI 2014

是在看联邦学习时看的,(从 Networking 看到了 System)。讲了 Parameter Server (PS) 的架构(之前老师提了好多次 PS 架构但是猜不出是什么,还想到「主要 (Primary) 服务器」、「私有 (Private) 服务器」之类的)。

Security

Botnet traffic identification using neural networks

https://doi.org/10.1007/s11042-021-10765-8

神经网络对恶意流量的识别(感觉比手上的几份论文都有趣)。

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(六位小写字母)(