离线算子概述
离线算子基于 Ray Data 在 AnalyticDB Ray 上分布式执行,用于大规模多模态数据集的批量加工。本文介绍离线算子的使用前提、调用约定、模型服务配置和完整算子目录。
前提条件
-
已创建 Ray Cluster 资源组。具体操作,请参见托管Ray服务。
-
Ray 运行环境中已安装 mmops SDK,且 Driver 与所有 Worker 节点使用相同的依赖环境。SDK 的获取、安装、运行与作业提交方法,请参见mmops SDK 使用指南。
-
输入素材和输出产物位于所有 Worker 节点均可读写的位置,例如集群共享挂载目录或对象存储。
-
如需使用依赖模型服务的算子(如内容理解、语音识别、向量化和行业领域算子),已在所有执行节点配置模型服务环境变量。详细信息,请参见下文的模型服务配置。
调用方式
在 Driver 中初始化 Ray 并调用 enable_accessor() 后,即可在 Ray Dataset 上调用离线算子。在 Driver 中初始化 Ray 并启用算子入口的代码如下:
import ray
from mmops.ray import enable_accessor
ray.init()
enable_accessor()
不同类型算子的调用入口如下:
|
算子类型 |
调用入口 |
|
通用多模态算子(视频、音频、图片、文档、文本、公共处理) |
|
|
行业领域算子 |
目录中的 |
调用示例如下,参数仅作示意,具体参数请参见各算子的接口文档:
ds.mmops.probe_video(...)
ds.mmops.game.normalize_game_name(...)
商品场景中的商品图片描述和商品描述结构化直接复用通用算子 caption_image 和 extract_fields,通过商品场景的 Prompt 配置实现。
每个算子接收一个 Ray Dataset 并返回新的 Ray Dataset,因此可以与 Ray Data 原生算子、自定义离线算子(UDF)以及其他内置算子串联。各算子的输入列、参数、返回列和完整示例,请参见对应的接口文档;端到端的使用方法请参见mmops SDK 使用指南。
通用约定
-
列与参数:
*_column参数指定从每行读取数据的列名;其他参数是本次调用的全局常量。 -
返回列:算子默认仅返回声明的结果列,输入列不会自动透传,列表列也不会自动展开。如需保留来源 ID 等业务字段,请通过
keep_columns显式指定;指定的列与标准结果列重名时会报错,需先用 Ray Data 原生的rename_columns改名。您可以使用select_columns()裁剪结果列。 -
产物与结果表:写文件的算子通过
output_dir指定媒体产物的共享目录或对象存储前缀,SDK 为每行自动生成互不冲突的文件名;结果表通过write_parquet()单独保存。两者是独立位置,请勿让产物覆盖输入文件。 -
错误处理:读取、解码、超时或模型调用失败时,算子直接报错,不会以空结果代替成功结果。
-
结果顺序:多行结果不保证跨分区的顺序。关联多个 Dataset 的结果时,请使用业务标识,不要依赖行位置一一对应。
各算子支持以下通用调度参数,这些参数不改变单行输入与输出的对应关系:
|
参数 |
类型 |
默认值 |
说明 |
|
|
int |
1 |
Ray 批处理行数,取值为正整数。 |
|
|
int |
|
Ray 执行并发度,取值为正整数。不等同于单行内部的模型请求数。 |
|
|
float |
|
每个执行任务申请的 Ray CPU 资源,取值须大于 0。 |
模型服务配置
内容理解、语音识别、向量化以及行业领域等算子需要调用远端模型服务,例如阿里云百炼提供的模型服务。模型服务的地址、模型名称和 API Key 从您使用的模型服务获取,并通过执行节点上的环境变量传给算子:
|
环境变量 |
说明 |
|
|
模型服务的默认地址。下列各类 |
|
|
调用模型服务使用的 API Key。 |
|
|
文本模型名称。 |
|
|
文本模型服务地址。 |
|
|
视觉模型名称。 |
|
|
视觉模型服务地址。 |
|
|
语音识别模型名称。 |
|
|
语音识别模型服务地址。 |
|
|
文本向量模型名称。文本向量默认使用 OpenAI 兼容的向量接口协议。 |
|
|
文本向量模型服务地址。 |
|
|
图片向量模型名称。图片向量默认使用 DashScope(阿里云百炼的模型服务接口)多模态协议。 |
|
|
图片向量模型服务地址。 |
部分算子支持通过 config 或 model_config 参数按任务覆盖模型名称、服务地址和协议,具体请参见各算子的接口文档。
请在所有执行节点的运行环境中安全注入 API Key,不要将密钥写入 Dataset 或代码。
算子目录
离线算子目录按处理对象分为通用多模态算子、行业领域算子,其中商品场景的 2 项复用通用算子。
视频算子(11 项)
详细说明请参见视频算子概述。
视频基础处理
|
算子 |
处理能力 |
核心输入输出 |
|
视频转 MP4 |
统一视频容器与编码 |
视频 → MP4、尺寸与时长 |
|
视频分辨率调整 |
保持比例缩放 |
视频、目标尺寸 → 新视频及实际尺寸 |
|
视频按时间截取 |
按明确时间区间截取 |
视频、起止秒数 → 片段、来源 URI 与媒体属性 |
|
视频元数据提取 |
读取媒体技术信息 |
视频 → 时长、分辨率、编码、帧率及音轨、字幕轨状态 |
|
视频场景边界检测 |
定位镜头切换 |
视频 → 镜头切换候选时间点 |
|
视频帧采样 |
按预算抽取采样帧 |
视频、采样配置 → 图片及时间戳 |
|
视频字幕轨提取 |
读取独立字幕轨 |
视频 → 字幕文本与时间段;画面内字幕需视觉识别 |
视频理解与证据生成
|
算子 |
处理能力 |
核心输入输出 |
|
视频帧视觉理解 |
识别画面主体、场景与文字 |
采样帧 → 逐帧描述、文字与汇总 |
|
跨帧动作理解 |
理解相邻帧中的动作 |
采样帧 → 带观察时间窗口的动作事件;不代表精确动作边界 |
|
视频结构化描述 |
汇总多路证据 |
视频元信息、视觉证据与字段 Schema → 结构化描述;可组合动作、语音与字幕 |
|
视频时间证据生成 |
整理带时间的内容证据 |
画面、动作、语音、字幕 → 时间证据列表 |
音频算子(7 项)
详细说明请参见音频算子概述。
|
算子 |
处理能力 |
核心输入输出 |
|
音频元数据提取 |
读取音频技术信息 |
音频或视频 → 音轨、采样率、声道与编码 |
|
音轨提取与标准化 |
为语音转写准备音频 |
音频或视频 → 16 kHz 单声道 WAV 与来源偏移 |
|
音频格式转换 |
转换 WAV、MP3、FLAC |
音频对象 → 目标格式音频对象 |
|
音频重采样 |
调整采样率与声道数 |
音频对象、目标采样率 → PCM16 WAV |
|
音频按时间截取 |
按明确时间区间截取 |
音频对象、起止秒数 → 片段与累计来源偏移 |
|
音频按时长切段 |
按固定时长拆分 |
PCM WAV → 保留来源的片段列表 |
|
语音转文字 |
识别语音并聚合长音频 |
音频对象 → 全文、可用分段与来源时间 |
图片算子(8 项)
详细说明请参见图片算子概述。
|
算子 |
处理能力 |
核心输入输出 |
|
图片输入标准化 |
生成模型可读图片对象 |
图片 URI → PNG 或 JPEG 格式的 Base64 对象 |
|
图片元数据探测 |
读取可见尺寸与格式 |
图片 → 尺寸、模式、透明度及帧数 |
|
图片格式转换 |
转换 PNG、JPEG、WebP |
图片 → 目标格式 ImageRef |
|
图片等比缩放 |
保持比例适配目标尺寸 |
图片、目标边界 → 新尺寸 ImageRef |
|
图片区域裁剪 |
按明确矩形框裁剪 |
图片、坐标与坐标系 → 裁剪结果与当前输入范围 |
|
图片与扫描 PDF 文字识别 |
按阅读顺序识别文字 |
图片或 PDF → 全文及逐图、逐页文本 |
|
图片内容描述 |
根据提示描述可见内容 |
图片 → 文本描述 |
|
图片多模态向量化 |
编码为检索向量 |
图片 → 数值向量 |
文档算子(14 项)
详细说明请参见文档算子概述。
格式读取与转换
|
算子 |
处理能力 |
核心输入输出 |
|
旧版 Word 转换 |
转换旧版 Word 文档 |
DOC → DOCX;需 LibreOffice |
|
PDF 文字层抽取 |
提取已有文字层 |
PDF → 全文及逐页文本 |
|
PDF 扫描件判定 |
识别是否需要 OCR |
PDF 页文本 → 扫描件判定 |
|
Word、Markdown、TXT、RTF 文本抽取 |
提取段落与表格文本 |
DOCX、Markdown、TXT、RTF → 全文与文本页 |
|
HTML 静态文档抽取 |
提取静态网页内容 |
HTML → 正文、标题与表格;不执行脚本 |
|
XML 路径与值抽取 |
读取结构化路径和值 |
XML → 路径与文本值 |
|
PPTX 幻灯片抽取 |
按页提取演示内容 |
PPTX → 标题、正文、表格、备注与页码 |
|
Excel、CSV 行列读取 |
读取工作表与行列 |
XLSX、XLS、CSV → 工作表与行列数据 |
|
Parquet 行与媒体读取 |
读取列式数据及媒体引用 |
Parquet、列映射 → 行记录、媒体与来源定位 |
文档结构与内嵌图片
|
算子 |
处理能力 |
核心输入输出 |
|
表格区域与表头定位 |
定位表格与表头 |
工作表 → 数据区域、表头与列名 |
|
表格行级结构化解析 |
将表格解析为业务记录 |
工作表、字段配置 → 行级结构化记录及来源 |
|
文档内嵌图片提取 |
提取文档中的图片 |
XLSX 或 DOCX → 图片及可用锚点 |
|
Excel 图片与数据行关联 |
将图片绑定到数据行 |
XLSX 图片锚点、行坐标 → 行引用与匹配状态 |
|
文档目录提取 |
提取书签或标题目录 |
PDF 书签或 Markdown 标题 → 层级目录 |
文本算子(3 项)
详细说明请参见文本算子概述。
|
算子 |
处理能力 |
核心输入输出 |
|
文本结构化字段提取 |
按固定 Schema 提取字段 |
文本、字段定义 → properties 中各属性的具名结果列 |
|
文本分块 |
将长文本拆成片段 |
文本、分块配置 → 片段及来源位置 |
|
文本向量化 |
生成文本语义向量 |
文本列表 → 顺序对应的向量列表 |
公共处理算子(2 项)
详细说明请参见公共处理算子概述。
|
算子 |
处理能力 |
核心输入输出 |
|
多来源文件获取 |
读取或下载源文件 |
本地路径、OSS、HTTP(S) → 本地文件 |
|
文件指纹与大小计算 |
计算文件指纹 |
文件 → SHA-256 与字节大小,用于判断内容是否相同 |
行业领域算子(16 项)
按行业对象处理原始资料与记录,输出规范字段、内容标签和关联数据。
游戏领域算子(4 项):详细说明请参见游戏领域算子概述。
|
算子 |
处理能力 |
核心输入输出 |
|
domain.game.normalize_game_name 游戏名称归一 |
归一游戏名称与实体标识 |
原始游戏名称、游戏别名目录 → 规范名称、游戏标识与匹配状态 |
|
domain.game.extract_license_fields 游戏授权资料字段提取 |
按游戏授权字段整理资料 |
授权正文 → 游戏、授权双方、期限、凭证等字段及原文依据 |
|
domain.game.classify_game_content 游戏素材内容分类 |
固定识别素材类型与界面特征 |
已有画面、语音、字幕证据 → 固定内容类型、游戏 UI、商店标记及依据 |
|
domain.game.identify_target_region 游戏素材适用地区识别 |
推断游戏素材适用市场 |
语言、界面、商店标记证据 → 国内、海外或通用的判断结果、判断状态与依据;通用包含无法判断,不代表实际投放地区 |
商品场景算子(4 项):详细说明请参见商品场景算子概述。
|
算子 |
处理能力 |
核心输入输出 |
|
商品图片描述 |
复用通用算子,配置商品 Prompt |
商品图片、商品 Prompt(示例提供模板)→ 描述文本 |
|
商品描述结构化 |
复用通用算子,配置商品 Prompt |
描述文本、字段 Schema、商品 Prompt → 结构化属性 |
|
domain.product.localize_product_image 召回参考图定位与裁剪 |
参考图先定位,结果供意图识别与下游使用 |
查询参考图、目标说明 → 参考主体框、裁剪图或原图及状态 |
|
domain.product.parse_product_intent 商品意图识别 |
商品文字与参考图联合意图识别 |
需求文本、字段目录、可选参考图定位结果 → 四类硬条件与软偏好及未解析项 |
具身智能算子(8 项):详细说明请参见具身智能算子概述。
以下 8 项用于机器人多传感器、状态、动作与训练数据加工。
|
算子 |
处理能力 |
核心输入输出 |
|
domain.embodied.align_sensor_streams 多传感器时间对齐 |
对齐多路传感器时序 |
相机、状态、动作与时钟配置 → 对齐样本及偏差标记 |
|
domain.embodied.segment_episodes 任务与轨迹切分 |
划分完整任务轨迹 |
采集会话、边界事件或规则 → Episode 清单、边界与源数据引用 |
|
domain.embodied.normalize_state 机器人状态标准化 |
统一机器人观测表示 |
状态、机器人配置 → 统一字段、单位与坐标 |
|
domain.embodied.normalize_actions 动作表示标准化 |
统一控制动作表示 |
控制指令、动作配置 → 规范动作序列与有效标记 |
|
domain.embodied.annotate_tasks 任务与操作阶段标注 |
标注任务与操作阶段 |
Episode、任务记录或观测证据 → 任务指令、阶段、时间范围与标注来源 |
|
domain.embodied.build_temporal_samples 时序训练样本构建 |
生成时序训练窗口 |
Episode、窗口配置 → 历史观测与目标动作 |
|
domain.embodied.validate_trajectories 轨迹质量校验 |
检查轨迹数据质量 |
轨迹、质量规则 → 缺帧、错位、越界等问题与位置 |
|
domain.embodied.export_dataset 具身训练数据导出 |
导出训练数据集 |
已校验的 Episode 清单、目标格式与版本 → 训练数据集及完整性报告;支持 LeRobot 和 RLDS 格式 |