昇腾社区首页
中文
注册

AscendIndexCodeBookInitFromMemParams接口

API定义

AscendIndexCodeBookInitFromMemParams (int numIter, int device, float ratio, int batchSize, int codeNum,bool verbose,std::string codeBookOutputDir,const float *memLearnData, size_t memLearnDataSize, bool isTrainAndAdd);

功能描述

IVFSP训练码本的初始化结构体。从内存中加载训练数据。

输入

输出

参数值

int numIter:训练迭代次数参数,默认为“1”。

int device:设备逻辑ID,默认为“0”。

float ratio:训练用原始样本的采样率,默认为“1.0”。

int batchSize:训练时以batch_size大小执行训练。与IVFSP训练算子模型文件生成中的<batch_size>保持一致,要求大于“0”,默认值为“32768”。

int codeNum:每次最大按code_num样本数量操作码本,必须为2的幂次。与IVFSP训练算子模型文件生成中的<codebook_batch_size>保持一致,要求大于0,默认为“32768”。

std::string codeBookOutputDir:生成的码本文件输出到的目录。用户应该保证此目录存在,且程序的执行用户对此目录具有写权限;出于安全加固的考虑,此目录层级中不能含有软链接。

bool verbose:是否开启额外打印信息,默认为“true”。

const float *memLearnData:内存中数据指针,默认为空指针。

size_t memLearnDataSize:内存中数据长度,默认为0。

bool isTrainAndAdd:是否训练码本后直接添加到Index开关,默认为false。

参数约束

  • numIter∈ (0, 20]
  • ratio∈ (0, 1.0]
  • memLearnDataSize % dim == 0
  • memLearnDataSize≤25G
  • 当码本文件存在时,将执行覆盖写,此种情况程序执行用户应该是文件的属主。
  • 在执行训练生成码本前,请先参考IVFSP章节生成训练算子模型文件。
  • 当isTrainAndAdd为true时,码本训练好之后直接添加到Index中,不会进行落盘;
  • 当isTrainAndAdd为false时,码本会保存到codeBookOutputDir路径下,需调用addCodeBook手动添加。
  • memLearnDataSize为指针memLearnData的真实长度,否则可能出现越界读写错误并引起程序崩溃。