Microblink:使用 MinIO 将计算和存储回迁

Microblink: Repatriating Compute and Storage with MinIO

Microblink 是一家专门从事图像检测的 AI 公司。他们最初从身份识别领域起家,开发了 BlinkID、BlinkID Verify 和 BlinkCard 等产品。最近,他们的图像检测能力已扩展到处理其他类型的图像。例如,产品检测可以应用于收据,通过收据上的产品描述查找产品 SKU 和其他详细信息。以下是 Microblink 产品的完整列表和描述。

BlinkID - 扫描并提取驾驶执照和护照等身份证明文件中的数据。身份数据以 JSON 格式返回。

BlinkID Verify:确认身份证明文件的有效性。扫描的身份证明文件可以检查文件上任何条形码的真伪、面部照片篡改、复印件检测、数据不一致以及屏幕检测(检测身份证明文件实际上是否是显示在另一个屏幕上的图像)。

BlinkCard:扫描并提取信用卡数据。它还通过检测屏幕使用(用户没有实际持有信用卡)、信用卡上是否存在手(用户实际上持有信用卡)以及信用卡复印件来检查信用卡是否被欺诈。

BlinkReceipt:该产品将收据图像转换为文本。它可以提取产品描述或代码,并查找 SKU 和 SKU 级别的相关数据。

BlinkShelf:产品识别,用户可以使用移动设备扫描杂货货架并检测产品,包括产品的通用产品代码(UPC)。

这些产品的核心都是针对相应图像识别任务训练的 AI 模型。然而,许多产品不仅限于简单的图像分类(欺诈或有效)。它们中的许多产品将图像转换为结构化数据。创建能够进行这种级别图像识别的 AI 模型需要数百小时的训练以及多次遍历训练数据。最佳实践是进行多次实验来测试不同的模型架构和超参数选项。

让我们看看 Microblink 的数据基础设施如何随着时间的推移而改变,以处理更苛刻的 AI 工作负载,这些工作负载需要不断增长的数据量。

起步

Microblink 最初成立于 2012 年左右,他们的基础设施是一组服务器,数据存储在这些服务器的各个文件系统上。如果某个工作负载需要驻留在多个服务器上的数据集,则会为每个工作负载创建数据集的副本。不幸的是,始终没有一个单一的真相来源。想象一个数据集,它会随着新数据的添加或工程师找出更合适的数据集特征集(一种称为特征工程的技术)而更新。当这些更新发生时,无法确定谁需要更新。即使有记录谁需要更新,也仍然需要将数据集副本通过网络传输,这效率很低。

每个 AI 工程团队都是这样起步的,而当使用文件系统手动管理数据时,多个真相来源是一个常见的问题。Microblink 决定尝试使用云供应商来解决他们的数据问题。

迁移到云端

Microblink AI 数据基础设施的下一个版本利用了 Google Cloud Platform (GCP)。目标是解决当数据必须从一台服务器复制到另一台服务器时产生的“多个真相来源”问题。但是,随着数据量的增长,GCP 成为摩擦点,因为 GCP 云存储无法满足训练模型的需求。此外,GPU 昂贵,无法按需使用,也无法按需扩展。您必须购买大型机器,这些机器往往利用率不足,因此会产生大量成本。

Microblink 决定将计算资源迁移回本地。

计算资源回迁

为了解决这个问题,Microblink 决定在 GCP 和他们的本地数据中心之间建立同步。其思路是,GCP 可以作为所有数据的单一真相来源,而训练将在本地进行,本地服务器将被设置为提供对数据的更快访问。换句话说,GCP 将保存数据的母版副本。当数据集需要用于训练时,同步将将其迁移到本地,以便在模型训练期间实现高速访问。这最初在训练实验期间提供了对数据的更快访问,并且还降低了成本,因为现在训练所需的计算资源是在本地进行的,而云计算成本很高。

不幸的是,在云服务器和本地服务器之间同步数据带来了一系列新问题。同步速度并不快,而且同步本身经常出现故障。因此,Microblink 再次对他们的数据处理方式并不满意,而且他们的数据正在快速增长。

大约在同一时间,Microblink 的本地数据中心开始配备 Kubernetes 集群。Microblink 认为现在是时候做一些既强大又出色的事情,彻底解决他们的数据问题了。

“当我们在数据中心拥有 Kubernetes 后,我对我的团队说,这是构建强大且出色产品的绝佳时机。” Microblink 平台团队工程经理 Filip Suste

MinIO 用于数据回迁

Microblink 决定实施一个云原生对象存储解决方案,该解决方案既可以作为所有数据的母版副本,又可以作为平台,在训练模型时快速提供数据。他们最初尝试过 Ceph,但维护起来太难了。然后他们找到了 MinIO。MinIO 对于 Microblink 来说更容易设置和维护,但他们从 MinIO 获得的最大益处是性能提升。目前,他们拥有 75 TB 的身份数据和来自世界各地的身份证明文件(每年增长 8 TB),这些数据由小图像(低分辨率)和小文件组成,导致大量对象。MinIO 在模型训练期间提供的速度和带宽使他们能够每天运行更多实验。众所周知,运行的训练实验越多,新想法的验证速度就越快,并且一旦新想法被证明是可行的,价值传递的速度就越快。Microblink 目前每天大约运行 30 个实验。

“让我们感到惊喜的是,在网络升级后,我们从 MinIO 中看到了性能提升。”

成本节省也是一个重要的益处。使用 MinIO 存储所有数据意味着云存储成本大幅降低。此外,不再需要与云同步,因此入站和出站费用也大幅降低。最终结果是成本节省了 62%。

今天,Microblink 只将 GCP 用于数据采集。一旦新数据被处理并发送到 MinIO,它就会从云存储中删除。

未来

Microblink 存储的 75 TB 数据中大约有一半是结构化数据,这些数据是从客户扫描的各种图像中提取的。为了改进这些结构化数据的存储并让他们的产品能够更好地利用这些数据,Microblink 将要构建一个现代数据湖(也称为数据湖仓)。现代数据湖由一半的数据湖(用于非结构化数据,如图像)和一半的数据仓库(用于结构化数据)组成,两者都使用 MinIO。现代数据湖得益于开放式表格格式——Apache Iceberg、Apache Hudi 和 Deltalake,分别由 Netflix、Uber 和 Databricks 推出。一旦 Microblink 建立了他们的现代数据湖,他们将拥有一个完整的平台来处理所有数据。他们将能够使用现代数据湖数据仓库端的高级功能来分析结构化数据,并将使用他们的数据湖进行高速模型训练。