docs/design/model_format.md
Angel的模型是以矩阵为单位来保存的,每一个矩阵在模型保存路径下对应一个以矩阵名命名的文件夹,里面包含矩阵的元数据文件和数据文件。一个矩阵只有一个元数据文件,但是一般有多个数据文件,因为Angel的大部分算法模型都是从PS导出的。
元数据采用JSON格式保存。矩阵元数据主要由矩阵特征,分区索引和行相关索引组成:分别由MatrixFilesMeta,MatrixPartitionMeta和RowPartitionMeta类来描述。
用途:矩阵相关信息 具体包含字段:
用途:分区元数据 具体包含字段:
用途:分区的某一行分片对应的元数据 具体包含字段:
Angel2.0采用了用户自定义的模型格式。即可以根据实际需求定制模型输出格式。一般情况下,使用Angel的默认模型输出格式即可。由于Angel默认的输出格式比较简单,大部分并不需要依赖元数据文件就可以直接解析。
Angel提供了8中默认的模型输出格式: ValueBinaryRowFormat,ColIdValueBinaryRowFormat,RowIdColIdValueBinaryRowFormat,ValueTextRowFormat,ColIdValueTextRowFormat,RowIdColIdValueTextRowFormat,BinaryColumnFormat和TextColumnFormat。 下面分别介绍这8种格式。
value
value
value
index,value
index,value
index,value
rowid,index,value
rowid,index,value
rowid,index,value
index,row1 value,row2 value,...
index,row1 value,row2 value,...
index,row1 value,row2 value,...
Angel的算法目前基本都是基于新的计算图框架来实现的,计算图中的每一层都可以单独设置模型格式。在默认的情况下,SimpleInputLayer使用的是ColIdValueTextRowFormat,Embedding层使用的是TextColumnFormat,FCLayer使用的是RowIdColIdValueTextRowFormat。
当然,如果你不想使用默认格式,可以通过参数配置模型输出格式:
更进一步,如果Angel提供8种格式无法满足你的要求,你也可以扩展RowFormat类或者ColumnFormat类来自定义需要的格式。具体实现方式很简单,你可以参考目前已有的8种类型。实现完成后,编译打包并通过Angel提供的参数加入Angel的依赖路径,同时通过上面提到的四个参数进行配置来使用自定义的输出格式。