神经网络的模型复杂度(时间复杂度、空间复杂度)

  • 存储量:模型所占的存储 + 一个batch的训练数据占用的存储。类似空间复杂度
  • 计算量: 计算量的单位是flop,也就是一个乘法和加法,例如计算两个n维向量的内积一共就需要n个flops。类似时间复杂度

所以通过这两个维度就可以大致估计模型训练所耗费的资源了。

常见模型的计算量

https://juejin.im/post/5ae283c4f265da0b886d2323

算力

GPU的算力

挖矿算力

扩展阅读

-

解析解

背景知识

  • 解析表达式
  • 有限次常见运算

解析解

解析解,又称为闭式解,是可以用解析表达式来表达的解。 在数学上,如果一个方程或者方程组存在的某些解,是由有限次常见运算的组合给出的形式,则称该方程存在解析解。二次方程的根就是一个解析解的典型例子。在低年级数学的教学当中,解析解也被称为公式解。

当解析解不存在时,比如五次以及更高次的代数方程,则该方程只能用数值分析的方法求解近似值。大多数偏微分方程,尤其是非线性偏微分方程,都只有数值解。

解析表达式的准确含义依赖于何种运算称为常见运算或常见函数。传统上,只有初等函数被看作常见函数(由于初等函数的运算总是获得初等函数,因此初等函数的运算集合具有闭包性质,所以又称此种解为闭式解),无穷级数、序列的极限、连分数等都不被看作常见函数。按这种定义,许多累积分布函数无法写成解析表达式。但如果把特殊函数,比如误差函数或gamma函数也看作常见函数,则累积分布函数可以写成解析表达式。

在计算机应用中,这些特殊函数因为大多有现成的数值法实现,它们通常被看作常见运算或常见函数。实际上,在计算机的计算过程中,多数基本函数都是用数值法计算的,所以所谓的基本函数和特殊函数对计算机而言并无区别。

非解析解

非解析解的弊端

raft算法

Paxos和Raft都是为了实现Consensus一致性这个目标,这个过程如同选举一样,参选者需要说服大多数选民(服务器)投票给他,一旦选定后就跟随其操作。

Paxos和Raft的区别在于选举的具体过程不同。
在Raft中,任何时候一个服务器可以扮演下面角色之一:

  • Leader: 处理所有客户端交互,日志复制等,一般一次只有一个Leader.
  • Follower: 类似选民,完全被动
  • Candidate候选人: 类似Proposer律师,可以被选为一个新的领导人。

Raft 算法在许多方面和现有的一致性算法都很相似(主要是 Oki 和 Liskov 的 Viewstamped Replication),但是它也有一些独特的特性:

  • 强领导者:和其他一致性算法相比,Raft 使用一种更强的领导能力形式。比如,日志条目只从领导者发送给其他的服务器。这种方式简化了对复制日志的管理并且使得 Raft 算法更加易于理解。
  • 领导选举:Raft 算法使用一个随机计时器来选举领导者。这种方式只是在任何一致性算法都必须实现的心跳机制上增加了一点机制。在解决冲突的时候会更加简单快捷。
  • 关系调整:Raft 使用一种共同一致的方法来处理集群成员变换的问题,在这种方法中,两种不同的配置都要求的大多数机器会重叠。这就使得集群在成员变换的时候依然可以继续工作。

Raft的优势

  • 更简单,更容易理解

Paxos算法的问题

在过去的 10 年里,Leslie Lamport 的 Paxos 算法几乎已经成为一致性的代名词:Paxos 是在课程教学中最经常使用的算法,同时也是大多数一致性算法实现的起点。Paxos 首先定义了一个能够达成单一决策一致的协议,比如单条的复制日志项。我们把这一子集叫做单决策 Paxos。然后通过组合多个 Paxos 协议的实例来促进一系列决策的达成。Paxos 保证安全性和活性,同时也支持集群成员关系的变更。Paxos 的正确性已经被证明,在通常情况下也很高效。

不幸的是,Paxos 有两个明显的缺点。

问题一:难以理解

Paxos 算法特别的难以理解。完整的解释是出了名的不透明;通过极大的努力之后,也只有少数人成功理解了这个算法。因此,有了几次用更简单的术语来解释 Paxos 的尝试。尽管这些解释都只关注了单决策的子集问题,但依然很具有挑战性。在 2012 年 NSDI 的会议中的一次调查显示,很少有人对 Paxos 算法感到满意,甚至在经验老道的研究者中也是如此。我们自己也尝试去理解 Paxos;我们一直没能理解 Paxos 直到我们读了很多对 Paxos 的简化解释并且设计了我们自己的算法之后,这一过程花了近一年时间。

我们假设 Paxos 的不透明性来自它选择单决策问题作为它的基础。单决策 Paxos 是晦涩微妙的,它被划分成了两种没有简单直观解释和无法独立理解的情景。因此,这导致了很难建立起直观的感受为什么单决策 Paxos 算法能够工作。构成多决策 Paxos 增加了很多错综复杂的规则。我们相信,在多决策上达成一致性的问题(一份日志而不是单一的日志记录)能够被分解成其他的方式并且更加直接和明显。

问题二:

Paxos算法的第二个问题就是它没有提供一个足够好的用来构建一个现实系统的基础。一个原因是还没有一种被广泛认同的多决策问题的算法。Lamport 的描述基本上都是关于单决策 Paxos 的;他简要描述了实施多决策 Paxos 的方法,但是缺乏很多细节。当然也有很多具体化 Paxos 的尝试,但是他们都互相不一样,和 Paxos 的概述也不同。例如 Chubby 这样的系统实现了一个类似于 Paxos 的算法,但是大多数的细节并没有被公开。

扩展阅读