在此参考架构中,您将了解部署 Dataflow 流水线以使用 Cloud Vision 处理图片文件并将处理后的结果存储在 BigQuery 中的用例、设计替代方案和设计注意事项。您可以将这些存储的结果用于大规模数据分析和训练 BigQuery ML 预构建模型。
本参考架构文档面向数据工程师和数据科学家。
架构
下图说明了此参考架构的系统流程。
如上图所示,信息流动如下:
提取和触发器:这是系统流程的第一阶段,在此阶段中,映像首先进入系统。在此阶段,会发生以下操作:
- 客户端将图片文件上传到 Cloud Storage 存储桶。
- 每次上传文件时,Cloud Storage 都会通过向 Pub/Sub 发布消息来自动发送输入通知。
流程:此阶段紧跟在提取和触发阶段之后。对于每个新输入通知,都会发生以下操作:
- Dataflow 流水线会监听这些文件输入通知,从 Pub/Sub 消息中提取文件元数据,并将文件引用发送到 Vision API 进行处理。
- Vision API 会读取图片并创建注解。
- Dataflow 流水线将 Vision API 生成的注释存储在 BigQuery 表中。
存储和分析:这是该流程的最后一个阶段。在此阶段,您可以对保存的结果执行以下操作:
- 查询 BigQuery 表并分析存储的注解。
- 使用 BigQuery ML 或 Vertex AI 构建模型并根据存储的注释执行预测。
- 在 Dataflow 流水线中执行其他分析(此图未显示)。
使用的产品
此参考架构使用以下 Google Cloud 产品:
使用场景
Vision API 支持多种处理功能,包括图片标记、人脸和地标检测、光学字符识别、露骨内容标记等。上述每个功能都支持适用于不同行业的多个使用场景。本文档包含一些简单示例,介绍了使用 Vision API 时可能实现的功能,但可能的应用范围非常广。
Vision API 还通过 REST API 和 RPC API 提供功能强大的预训练机器学习模型。您可以为图片分配标签,并将其分类为数百万个预定义的类别。它可以帮助您检测对象、读取印刷体和手写文本,并将有价值的元数据构建到图片目录中。
此架构不需要进行任何模型训练即可使用。如果您需要使用特定数据训练的自定义模型,Vertex AI 可让您针对计算机视觉目标(例如图像分类和对象检测)训练 AutoML 或自定义模型。或者,您可以将 Vertex AI Vision 用于端到端应用开发环境,以便构建、部署和管理计算机视觉应用。
设计替代方案
生成图片的进程可以直接将图片发布到消息传递系统(例如 Pub/Sub),Dataflow 流水线可以直接将图片发送到 Vision API,而不是将图片存储在 Google Cloud Storage 存储分区中。
对于需要分析尺寸相对较小的图像的对延迟敏感的用例,此设计替代方案可以是一个很好的解决方案。Pub/Sub 将消息的大小上限限制为 10 Mb。
如果您需要批处理大量图片,可以使用专门设计的 asyncBatchAnnotate
API。
设计考虑事项
本部分介绍了此参考架构的设计注意事项:
安全性、隐私权和合规性
从不受信任的来源接收的图片可能包含恶意软件。由于 Vision API 不会根据其分析的图片执行任何内容,因此基于图片的恶意软件不会影响 API。如果需要扫描图片,请更改 Dataflow 流水线以添加扫描步骤。为了实现相同的结果,您还可以单独订阅 Pub/Sub 主题,并在单独的进程中扫描图片。
如需了解详情,请参阅自动对上传到 Cloud Storage 的文件进行恶意软件扫描。
Vision API 使用 Identity and Access Management (IAM) 进行身份验证。如需访问 Vision API,安全主账号需要对包含您要分析的文件的存储分区拥有 Cloud Storage > Storage 对象查看器 (roles/storage.objectViewer
) 访问权限。
如需了解专门针对 AI 和机器学习工作负载的安全原则和建议,请参阅架构完善的框架中的 AI 和机器学习观点:安全性。
费用优化
与低延时处理和异步批处理等其他已讨论的选项相比,本参考架构使用一种经济高效的方法来通过批处理 API 请求在流处理流水线中处理图片。由于存在额外的 Pub/Sub 和 Dataflow 费用,因此设计替代方案部分中提到的低延迟直接映像流式传输可能更加昂贵。对于不需要在几秒或几分钟内发生的图片处理,您可以批量模式运行 Dataflow 流水线。与运行流处理流水线的费用相比,以批处理模式运行流水线可以节省一些费用。
Vision API 支持对所有特征使用离线异步批量图片注释。异步请求支持每个批次最多 2000 张图片。作为响应,Vision API 会返回存储在 Cloud Storage 存储分区中的 JSON 文件。
Vision API 还提供了一组用于分析图像的功能。 价格按每项功能每张图片计算。为了降低费用,请仅请求您的解决方案所需的特定功能。
如需根据您的预计使用量来估算费用,请使用价格计算器。
如需了解专门针对 AI 和机器学习工作负载的费用优化原则和建议,请参阅架构完善的框架中的 AI 和机器学习视角:费用优化。
性能优化
Vision API 是一种资源密集型 API。因此,大规模处理图片需要仔细编排 API 调用。Dataflow 流水线负责批处理 API 请求、妥善处理与达到配额相关的异常,以及生成 API 用量的自定义指标。这些指标可帮助您确定是否需要增加 API 配额,或者是否应调整 Dataflow 流水线参数以降低请求频率。如需详细了解如何增加 Vision API 的配额请求,请参阅配额和限制。
Dataflow 流水线中有几个参数可能会影响处理延迟时间。如需详细了解这些参数,请参阅使用 Dataflow 和 Vision API 部署机器学习视觉分析解决方案。
如需了解特定于 AI 和机器学习工作负载的性能优化原则和建议,请参阅架构完善的框架中的 AI 和机器学习视角:性能优化。
部署
如需部署此架构,请参阅使用 Dataflow 和 Vision API 部署机器学习视觉分析解决方案。
后续步骤
- 详细了解 Dataflow。
- 详细了解 BigQuery ML。
- 在了解 BigQuery 可靠性指南中详细了解 BigQuery 的可靠性。
- 如需了解如何存储数据,请参阅快速起步解决方案:BigQuery 数据仓库。
- 查看 Vision API 功能列表。
- 了解如何使用 Dataflow 和 Vision API 部署机器学习视觉分析解决方案。
- 如需简要了解适用于 Google Cloud中 AI 和机器学习工作负载的架构原则和建议,请参阅“良好架构框架”中的AI 和机器学习视角。
- 如需查看更多参考架构、图表和最佳实践,请浏览 Cloud 架构中心。
贡献者
作者:
- Masud Hasan | 站点可靠性工程经理
- Sergei Lilichenko | 解决方案架构师
- Lakshmanan Sethu | 技术支持客户经理
其他贡献者:
- Jiyeon Kang | 客户工程师
- Sunil Kumar Jang Bahadur | 客户工程师