用户需要适配所使用的模型,可以在适配模型过程中加入Rec SDK提供的功能特性。本章节旨在介绍模型适配过程中的一些关键步骤,以及怎样在适配模型过程中加入想要使用的功能特性。
关键步骤操作参考如下。
调用init接口初始化Rec SDK模型训练框架。
如果想要加入功能特性,可在本步骤选择所需功能特性并进行以下相应的修改。
特性名称 |
操作步骤 |
---|---|
动态扩容 |
配置init接口参数“use_dynamic_expansion” = “True”表示启用片上内存显存侧动态扩容功能,该参数默认为“False”。 |
动态shape |
配置init接口的“use_dynamic”=“True”。 启用动态Shape功能前,需要安装Kernels算子包,具体操作请参见《CANN 软件安装指南》的“安装CANN(物理机场景)”章节的“安装Kernels”部分。 |
自动改图 |
- |
特征准入与淘汰 |
- |
选择mx_rec.optimizers下的优化器并通过调用优化器对应的接口得到稀疏网络层的优化器对象,当前可选优化器请参见优化器。密集网络层的优化接口可使用TensorFlow内置的优化器。
如果想要加入功能特性,可在本步骤选择所需功能特性并进行以下相应的修改。
特性名称 |
操作步骤 |
---|---|
动态扩容 |
片上内存显存侧动态扩容调用mx_rec.optimizers包中对应优化器的create_hash_optimizer_by_address接口来创建稀疏表sparse_optimizer。具体可用优化器参考如下。 |
动态shape |
- |
自动改图 |
- |
特征准入与淘汰 |
- |
使用FeatureSpec定义特征列表并配置相应的模型。
如果想要加入功能特性,可在本步骤选择所需功能特性并进行以下相应的修改。
特性名称 |
操作步骤 |
---|---|
动态扩容 |
- |
动态shape |
- |
特征准入与淘汰 |
在FeatureSpec模式下,请参考FeatureSpec进行配置。
|
使用FeatureSpec定义特征列表,根据特征列表创建数据集并对数据集进行预处理,调用get_asc_insert_func接口得到Rec SDK的数据预处理接口并在数据集上应用该接口。
通过调用create_table接口创建稀疏网络层,每个稀疏特征都可以创建一个稀疏网络层。
传入稀疏网络层和特征列表创建模型计算图,在计算图中使用sparse_lookup进行特征查询和误差计算。
如果想要加入功能特性,可在本步骤选择所需功能特性并进行以下相应的修改。
特性名称 |
操作步骤 |
---|---|
动态扩容 |
- |
动态shape |
- |
自动改图 |
查询稀疏特征表时调用sparse_lookup接口,设置参数“modify_graph ”= “True”表示在查表时采用自动改图模式,该参数默认为“False”。 |
特征准入与淘汰 |
在自动改图模式下,需要在使用sparse_lookup接口时,设置“access_and_evict_config”参数,参数类型dict,该dict由两个key-value对组成,key分别为“access_threshold”和“eviction_threshold”,value为对应的阈值。 |
调用get_dense_and_sparse_variable得到密集网络层和稀疏网络层的参数,通过优化器计算梯度并执行优化。
如果想要加入功能特性,可在本步骤选择所需功能特性并进行以下相应的修改。
特性名称 |
操作步骤 |
---|---|
动态扩容 |
片上内存显存侧动态扩容:
|
动态shape |
- |
自动改图 |
- |
特征准入与淘汰 |
- |
调用start_asc_pipeline启动数据流水线。
调用modify_graph_and_start_emb_cache,同时sess.run(iterator.initializer)也需修改为自动改图的数据集初始化接口sess.run(get_initializer(True))或者sess.run(get_initializer(False)),前者用于训练(train)、后者用于评估(eval)。