[KDD'15] Petuum: A New Platform for Distributed Machine Learning 论文阅读
当前的现代先进机器学习 (ML) 程序的并行化策略通常采用细粒度操作, 并突破了以 MapReduce 为代表的经典批量同步处理范式, 甚至引入了依赖于 ML 程序图形化表示的专用算子. 然而, 这些多样化的方法往往使系统与算法设计朝不同方向发展, 导致难以找到一种通用平台, 以满足大规模下多种不同 ML 程序的需求.
当前的现代先进机器学习 (ML) 程序的并行化策略通常采用细粒度操作, 并突破了以 MapReduce 为代表的经典批量同步处理范式, 甚至引入了依赖于 ML 程序图形化表示的专用算子. 然而, 这些多样化的方法往往使系统与算法设计朝不同方向发展, 导致难以找到一种通用平台, 以满足大规模下多种不同 ML 程序的需求.
Spanner 是 Google 公司研发的、可扩展的、多版本、全球分布式、同步复制数据库。它是第一个把数据分布在全球范围内的系统,并且支持外部一致性的分布式事务。本文描述了 Spanner 的架构、特性、不同设计决策的背后机理和一个新的时间 API,这个 API 可以暴露时钟的不确定性。这个 API 及其实现,对于支持外部一致性和许多强大特性而言,是非常重要的,这些强大特性包括:非阻塞的读、不采用锁机制的只读事务、原子模式变更。
再次回到推荐系统方向的工作, 相比几年前 2018/19 很多认知出现了变化,对我来说很有意义,写出来作为记录也分享给大家。
io_uring 是 Linux 内核 5.1 版本引入的异步 I/O 框架,
std::add_const_t<T>: 为类型 T 添加 const 修饰符。
std::add_volatile_t<T>: 为类型 T 添加 volatile 修饰符。
std::add_cv_t<T>: 为类型 T 添加 const 和 volatile 修饰符。
std::remove_const_t<T>: 移除类型 T 的 const 修饰符。
std::remove_volatile_t<T>: 移除类型 T 的 volatile 修饰符。
std::remove_cv_t<T>: 移除类型 T 的 const 和 volatile 修饰符。
std::add_lvalue_reference_t<T>: 为类型 T 添加左值引用修饰符。
std::add_rvalue_reference_t<T>: 为类型 T 添加右值引用修饰符。
std::remove_reference_t<T>: 移除类型 T 的引用修饰符。
std::remove_extent_t<T>: 移除类型 T 的数组维度。
std::remove_all_extents_t<T>: 移除类型 T 的所有数组维度。
std::remove_pointer_t<T>: 移除类型 T 的指针修饰符。
std::add_pointer_t<T>: 为类型 T 添加指针修饰符。
std::make_signed_t<T>: 将类型 T 转换为有符号类型。
std::make_unsigned_t<T>: 将类型 T 转换为无符号类型。
A program is making progress if, when the program threads are run for a sufficiently long time, at least one of the threads makes progress (for some sensible definition of progress).
dlmalloc 是一个 C 语言实现的流行的内存分配器实现,由纽约州立大学 Oswego 分校计算机系教授 Doug Lea 在 1980 年代编写,许多人称之为 Doug Lea 的 malloc,或者简称 dlmalloc。
Dynamo 是 Amazon 在 2007 年发表的大规模分布式 K-V 存储系统. 作为电商领域的巨头, Amazon 较早面临巨大业务规模带来的技术挑战. Dynamo 的技术方案在当时的分布式系统中是非常前沿的, 其设计思想和实现细节对后来的 NoSQL 系统产生了深远的影响.
SPDK 是 Intel 提出的一套用户态 NVMe SSD I/O 软件栈,其核心是使用用户态的 SSD 驱动绕过上下文切换的开销。
近年来,为了训练更大的模型,深度学习训练集群在不断发展。这样的集群通常包括 GPU,CPU 和高速互联网络,例如高速以太网或者 Infiniband。