购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.4.2 一致性

我们也许想保证当我们从多台计算机访问数据时,每次读取的数据都是一样的;这就是 一致性 的特性。任何规模的机器学习系统通常都是分布式的。我们正在做的大部分处理从根本上说是可并行的,假设我们从一开始就使用机器集群,那么这种方式是有价值的。这意味着存储系统将通过网络协议从其他计算机上获得,并对可靠性提出了挑战。重要的是,它引入了这样一个事实:同一数据的不同版本可能同时可用。很难保证数据在任何地方都是复制的、可用的和一致的。

模型的训练系统是否关心一致性,实际上是模型和数据的一个属性。并非所有的训练系统都对数据的不一致敏感。就这一点而言,不是所有的 数据 都对不一致敏感。思考这个问题的一个方法是考虑数据的密度或稀疏程度。当每块数据所代表的信息都很稀少时,数据就是 稀疏的 。当每块数据所代表的信息都很常见时,数据就是 密集的 。而当数据集有很多零值的时候,数据也是稀疏的。因此,如果 yarnit.ai 有10种流行的纱线,几乎代表了我们销售的所有产品类别,那么任何给定的购买这些纱线的数据都是密集的——它不可能让我们学到很多新的东西。如果一个流行纱线的购买在我们存储系统的一个副本中是可读的,而在另一个副本中则不可读,那么这个模型将基本上不受影响。另一方面,如果我们采购的90%是不同的纱线,那么每一次采购都很重要。如果我们训练系统的一部分看到了某一特定纱线的购买,而另一部分没有看到,那么我们可能会针对该特定纱线或与该纱线相似的纱线产生一个不连贯的模型。在某些情况下,一致性是很难保证的,但通常,如果我们能在一定程度上等待数据的到达和同步,我们就能很容易地保证这一属性。

我们可以通过两种直接的方法来排除数据层中的关于一致性的问题。首先是建立对不一致的数据有容忍度的模型。就像其他数据处理系统一样,机器学习系统提供了折中方案。如果我们可以容忍不一致的数据,特别是当数据是最近写的,那么训练模型的速度会大大加快,并且使用存储系统的成本会更加低廉。在这种情况下,其代价是灵活性和对数据的保证。如果使用这种方法,我们不会让自己没有任何限制地操作使用存储系统,而且我们只能训练满足这一特性的模型。这是其中一个选择。

第二种方法是使用一个能够提供一致性保证的训练系统。对于一个复制存储系统来说,最常见的方法是由系统本身提供关于哪些数据被完全且一致地复制了的信息。读取数据的系统可以使用这个字段并选择只在完全复制的数据上进行训练。这对存储系统来说通常比较复杂,因为我们需要提供一个复制状态的API。它明显会更昂贵或更慢。如果想在提取和转换后快速使用数据,我们可能需要为网络(复制数据)和存储I/O容量(写入副本)提供大量资源。

考虑一致性需求是一个战略性决策。它对平衡成本和能力具有长期影响,应该与机器学习工程师和组织决策者共同参与。 heODBZG1RZC666lMRZhsFRhgU+9pUdPllrOgqt+LdprA4mlHaMrmY8ZQjNoWKTEc

点击中间区域
呼出菜单
上一章
目录
下一章
×