案例篇-HBase 在人工智能场景的使用

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: 人工智能逐渐火热起来,特别是和大数据一起结合使用。人工智能的 主要场景又包括图像能力、语音能力、自然语言处理能力和用户画像能力等等。

近几年来,人工智能逐渐火热起来,特别是和大数据一起结合使用。人工智能的 主要场景又包括图像能力、语音能力、自然语言处理能力和用户画像能力等等。 这些场景我们都需要处理海量的数据,处理完的数据一般都需要存储起来,这些数据的特点主要有如下几点:

  1. 大:数据量越大,对我们后面建模越会有好处;
  2. 稀疏:每行数据可能拥有不同的属性,比如用户画像数据,每个人拥有属性相差很大,可能用户 A 拥有这个属性,但是用户 B 没有这个属性;那么我们希望存储的系统能够处理这种情况,没有的属性在底层不占用空间,这样可以节约大量的空间使用;
  3. 列动态变化:每行数据拥有的列数是不一样的。

为了更好的介绍 HBase 在人工智能场景下的使用,下面以某人工智能行业的客户案例进行分析如何利用 HBase 设计出一个快速查找人脸特征的系统。

目前该公司的业务场景里面有很多人脸相关的特征数据,总共 3400 多万张,每 张人脸数据大概 3.2k。这些人脸数据又被分成很多组,每个人脸特征属于某个 组。目前总共有近 62W 个人脸组,每个组的人脸张数范围为 1 ~ 1W 不等,每 个组里面会包含同一个人不同形式的人脸数据。组和人脸的分布如下:

  1. 43%左右的组含有 1 张人脸数据;
  2. 47%左右的组含有 2 ~ 9 张人脸数据;
  3. 其余的组人脸数范围为 10 ~ 10000。
    现在的业务需求主要有以下两类:
  4. 根据人脸组 id 查找该组下面的所有人脸;
  5. 根据人脸组 id +人脸 id 查找某个人脸的具体数据。

1. MySQL + OSS 方案

为 MySQL 以及 OSS(对象存储)。相关表主要有人脸组表group和人脸表face。 表的格式如下:
_2019_01_09_1_25_22

其中 feature 大小为3.2k,是二进制数据 base64 后存入的,这个就是真实的人 脸特征数据。

现在人脸组 id 和人脸 id 对应关系存储在 MySQL 中,对应上面的 group 表; 人脸 id 和人脸相关的特征数据存储在 OSS 里面,对应上面的 face 表。

因为每个人脸组包含的人类特征数相差很大(1 ~ 1W),所以基于上面的表设 计,我们需要将人脸组以及每张人脸特征 id 存储在每一行,那么属于同一个人 脸组的数据在 MySQL 里面上实际上存储了很多行。比如某个人脸组 id 对应的 人脸特征数为 1W,那么需要在 MySQL 里面存储 1W 行。

我们如果需要根据人脸组 id 查找该组下面的所有人脸,那么需要从 MySQL 中 读取很多行的数据,从中获取到人脸组和人脸对应的关系,然后到 OSS 里面根 据人脸 id 获取所有人脸相关的特征数据,如下图的左部分所示。

_2019_01_09_2_17_53

我们从上图的查询路径可以看出,这样的查询导致链路非常长。从上面的设计可看出,如果查询的组包含的人脸张数比较多的情况下,那么我们需要从 MySQL里面扫描很多行,然后再从 OSS 里面拿到这些人脸的特征数据,整个查询时间 在 10s 左右,远远不能满足现有业务快速发展的需求。

由于 MySQL 不支持动态列的特性,所以属于同一个人脸组的数据被拆成多行存储。

针对上面两个问题,我们进行了分析,得出这个是 HBase 的典型场景,原因如下:

  1. HBase 拥有动态列的特性,支持万亿行,百万列;
  2. HBase 支持多版本,所有的修改都会记录在 HBase 中;
  3. HBase 2.0 引入了 MOB(Medium-Sized Object) 特性,支持小文件存储。 HBase 的 MOB 特性针对文件大小在 1k~10MB 范围的,比如图片,短视频, 文档等,具有低延迟,读写强一致,检索能力强,水平易扩展等关键能力。

我们可以使用这三个功能重新设计上面 MySQL+OSS 方案。结合上面应用场景的两大查询需求,我们可以将人脸组 id 作为 HBase 的 Rowkey,系统的设计如 上图的右部分显示,在创建表的时候打开 MOB 功能,如下:

_2019_01_09_2_20_34

上面我们创建了名为 face 的表,IS_MOB 属性说明列族 c 将启用 MOB 特性, MOB_THRESHOLD 是 MOB 文件大小的阈值,单位是字节,这里的设置说明文件大于 2k 的列都当做小文件存储。大家可能注意到上面原始方案中采用了 OSS 对象存储,那我们为什么不直接使用 OSS 存储人脸特征数据呢,如果有这个疑问,可以看看下面表的性能测试:

_2019_01_09_2_21_12

根据上面的对比,使用 HBaseMOB特性来存储小于10MB的对象相比直接使用 对象存储有一些优势。我们现在来看看具体的表设计,如下图:

_2019_01_09_2_21_41

上面 HBase 表的列族名为 c,我们使用人脸 id 作为列名。我们只使用了 HBase 的一张表就替换了之前方面的三张表!虽然我们启用了 MOB,但是具体插入的方法和正常使用一样,代码片段如下:

_2019_01_09_2_22_21

用户如果需要根据人脸组 id 获取所有人脸的数据,可以使用下面方法:

_2019_01_09_2_22_52

这样我们可以拿到某个人脸组 id 对应的所有人脸数据。如果需要根据人脸组 id+ 人脸 id 查找某个人脸的具体数据,看可以使用下面方法:

_2019_01_09_2_30_39

经过上面的改造,在 2 台 HBase worker 节点内存为 32GB,核数为 8,每个节 点挂载四块大小为 250GB 的 SSD 磁盘,并写入 100W 行,每行有 1W 列,读 取一行的时间在 100ms-500ms 左右。在每行有 1000 个 face 的情况下,读取一行的时间基本在 20-50ms 左右,相比之前的 10s 提升 200~500 倍。

下面是各个方案的对比性能对比情况。

_2019_01_09_2_31_25

3. 使用 Spark 加速数据分析

我们已经将人脸特征数据存储在 HBase 之中,这个只是数据应用的第一步,如 何将隐藏在这些数据背后的价值发挥出来?这就得借助于数据分析,在这个场景 就需要采用机器学习的方法进行聚类之类的操作。我们可以借助 Spark 对存储于 HBase 之中的数据进行分析,而且 Spark 本身支持机器学习的。但是如果直接采用开源的 Spark 读取 HBase 中的数据,会对 HBase 本身的读写有影响的。

针对这些问题,我们可以对 Spark 进行了相关优化,比如直接读取 HFile、算子下沉等;通过 SQL 服务 ThriftServer、作业服务LivyServer 简化 Spark 的使用等。 目前这套 Spark 的技术栈如下图所示。

_2019_01_09_2_33_15

通过 Spark 服务,我们可以和 HBase 进行很好的整合,将实时流和人脸特征挖掘整合起来,整个架构图如下:

通过 Spark 服务,我们可以和 HBase 进行很好的整合,将实时流和人脸特征挖 掘整合起来,整个架构图如下:

_2019_01_09_3_01_45

我们可以收集各种人脸数据源的实时数据,经过 Spark Streaming 进行简单的 ETL 操作;其次,我们通过 SparkMLib 类库对刚刚试试收集到的数据进行人脸 特征挖掘,最后挖掘出来的结果存储到 HBase 之中。最后,用户可以通过访问 HBase 里面已经挖掘好的人脸特征数据进行其他的应用。

相关实践学习
lindorm多模间数据无缝流转
展现了Lindorm多模融合能力——用kafka API写入,无缝流转在各引擎内进行数据存储和计算的实验。
云数据库HBase版使用教程
  相关的阿里云产品:云数据库 HBase 版 面向大数据领域的一站式NoSQL服务,100%兼容开源HBase并深度扩展,支持海量数据下的实时存储、高并发吞吐、轻SQL分析、全文检索、时序时空查询等能力,是风控、推荐、广告、物联网、车联网、Feeds流、数据大屏等场景首选数据库,是为淘宝、支付宝、菜鸟等众多阿里核心业务提供关键支撑的数据库。 了解产品详情: https://cn.aliyun.com/product/hbase   ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
6天前
|
人工智能 IDE 程序员
与1.0 相比,通义灵码 2.0 AI 程序员有哪些功能、亮点、优势、场景?
通义灵码2.0相比1.0新增了工程级编码任务、单元测试生成和图片多模态问答等功能,支持多文件代码修改、批量生成单元测试及根据图片内容生成代码建议。亮点包括支持主流IDE、垂直智能体覆盖更多场景、企业级检索增强和灵活对话交互体验。技术优势涵盖多模态上下文感知、快速推理、企业数据个性化及一流代码生成效果。典型应用场景有新功能开发、跨语言编程、单元测试自动生成和错误排查修复。
140 7
|
25天前
|
存储 人工智能 NoSQL
Tablestore深度解析:面向AI场景的结构化数据存储最佳实践
《Tablestore深度解析:面向AI场景的结构化数据存储最佳实践》由阿里云专家团队分享,涵盖Tablestore十年发展历程、AI时代多模态数据存储需求、VCU模式优化、向量检索发布及客户最佳实践等内容。Tablestore支持大规模在线数据存储,提供高性价比、高性能和高可用性,特别针对AI场景进行优化,满足结构化与非结构化数据的统一存储和高效检索需求。通过多元化索引和Serverless弹性VCU模式,助力企业实现低成本、灵活扩展的数据管理方案。
61 12
|
24天前
|
存储 人工智能 边缘计算
AI时代下, 边缘云上的技术演进与场景创新
本文介绍了AI时代下边缘云的技术演进与场景创新。主要内容分为三部分:一是边缘云算力形态的多元化演进,强调阿里云边缘节点服务(ENS)在全球600多个节点的部署,提供低时延、本地化和小型化的价值;二是边缘AI推理的创新发展与实践,涵盖低时延、资源广分布、本地化及弹性需求等优势;三是云游戏在边缘承载的技术演进,探讨云游戏对边缘计算的依赖及其技术方案,如多开技术、云存储和网络架构优化,以提升用户体验并降低成本。文章展示了边缘云在未来智能化、实时化解决方案中的重要性。
|
25天前
|
人工智能 缓存 安全
每一个大模型应用都需要一个 AI 网关|场景和能力
本次分享的主题是每一个大模型应用都需要一个 AI 网关|场景和能力。由 API 网关产品经理张裕(子丑)进行分享。主要分为三个部分: 1. 企业应用 AI 场景面临的挑战 2. AI 网关的产品方案 3. AI 网关的场景演示
|
25天前
|
存储 Serverless 文件存储
AI 场景下,函数计算 GPU 实例模型存储最佳实践
当前,函数计算 FC 已被广泛应用在各种 AI 场景下,函数计算支持通过使用容器镜像部署 AI 推理应用,并且提供多种选项来访问训练好的模型。为了帮助开发者高效地在函数计算上部署 AI 推理应用,并快速解决不同场景下的模型存储选型问题,本文将对函数计算的 GPU 模型存储的优缺点及适用场景进行对比分析,以期为您的模型存储决策提供帮助。
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
转载:【AI系统】AI的领域、场景与行业应用
本文概述了AI的历史、现状及发展趋势,探讨了AI在计算机视觉、自然语言处理、语音识别等领域的应用,以及在金融、医疗、教育、互联网等行业中的实践案例。随着技术进步,AI模型正从单一走向多样化,从小规模到大规模分布式训练,企业级AI系统设计面临更多挑战,同时也带来了新的研究与工程实践机遇。文中强调了AI基础设施的重要性,并鼓励读者深入了解AI系统的设计原则与研究方法,共同推动AI技术的发展。
转载:【AI系统】AI的领域、场景与行业应用
|
2月前
|
机器学习/深度学习 人工智能 算法
X-AnyLabeling:开源的 AI 图像标注工具,支持多种标注样式,适于目标检测、图像分割等不同场景
X-AnyLabeling是一款集成了多种深度学习算法的图像标注工具,支持图像和视频的多样化标注样式,适用于多种AI训练场景。本文将详细介绍X-AnyLabeling的功能、技术原理以及如何运行该工具。
236 2
X-AnyLabeling:开源的 AI 图像标注工具,支持多种标注样式,适于目标检测、图像分割等不同场景
|
1月前
|
人工智能 运维 监控
云卓越架构:企业稳定性架构体系和AI业务场景探秘
本次分享由阿里云智能集团公共云技术服务部上海零售技术服务高级经理路志华主讲,主题为“云卓越架构:企业稳定性架构体系和AI业务场景探秘”。内容涵盖四个部分:1) 稳定性架构设计,强调高可用、可扩展性、安全性和可维护性;2) 稳定性保障体系和应急体系的建立,确保快速响应和恢复;3) 重大活动时的稳定重宝策略,如大促或新业务上线;4) AI在企业中的应用场景,包括智能编码、知识库问答、创意广告生成等。通过这些内容,帮助企业在云计算环境中构建更加稳定和高效的架构,并探索AI技术带来的创新机会。
|
2月前
|
弹性计算 人工智能 数据管理
AI场景下的对象存储OSS数据管理实践
本文介绍了ECS和OSS的操作流程,分为两大部分。第一部分详细讲解了ECS的登录、密码重置、安全组设置及OSSUTIL工具的安装与配置,通过实验创建并管理存储桶,上传下载文件,确保资源及时释放。第二部分则聚焦于OSSFS工具的应用,演示如何将对象存储挂载为磁盘,进行大文件加载与模型训练,强调环境搭建(如Conda环境)及依赖安装步骤,确保实验结束后正确清理AccessKey和相关资源。整个过程注重操作细节与安全性,帮助用户高效利用云资源完成实验任务。
120 10
|
27天前
|
存储 人工智能 数据管理
云端问道17期方案教学-AI场景下的对象存储OSS数据管理实践
本文介绍了AI场景下的对象存储OSS数据管理实践,由阿里云技术专家明锦分享。主要内容分为两部分:1) AI场景下对象存储实践方案,包括对象存储的应用、优势及在模型推理中的优化;2) OSS常用工具介绍,如OSSFS、Python SDK、Go SDK等,并详细说明了这些工具的特点和使用场景。文中还探讨了不同模式下的性能优化,以及即将推出的OS Connector for AI/ML工具,旨在提升数据下载速度和IO性能。