训练脚本执行

训练涉及“ivfsp_train_codebook.py”脚本(训练脚本位于安装目录下的“tools/train”文件夹中),注意Python版本为3.9.11。

为了用户执行方便,提供了“ivfsp_train_codebook_example.sh”样例脚本(脚本位于安装目录下的“tools/train”文件夹中),用户可在此文件上根据实际场景修改参数值,然后执行此脚本生成码本文件。

命令参考

python3 ivfsp_train_codebook.py --dim <dim> --nonzero_num <nonzero_num> --nlist <nlist> --num_iter <num_iter> --device <device> --batch_size <batch_size> --code_num <code_num> --ratio <ratio> --learn_data_path <learn_data_path> --codebook_output_dir <codebook_output_dir> --train_model_dir <train_model_dir>

参数名称

<dim>:特征向量维度。与IVFSP训练算子模型文件生成的<dim>保持一致,要求大于0。

<nonzero_ num>:特征向量压缩后非零维度个数,与IVFSP训练算子模型文件生成的<low_dim>保持一致,要求大于0。

<nlist>:簇聚类中心个数。与IVFSP训练算子模型文件生成的<k>保持一致,要求大于0。

<num_iter>:训练迭代次数参数,默认为20。迭代次数设置过大,会导致训练时长增加,要求大于0。

<device>:设备逻辑ID,在指定的Device上执行训练,默认值为“0”。

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

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

<ratio>:训练用原始样本的采样率,0 < ratio ≤ 1.0,默认为1.0。

<learn_data_filepath>:训练用的原始特征文件路径,支持bin、npy格式,bin存储方式为行优先,数据类型为float32。

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

<train_model_dir>:IVFSP训练算子模型文件所在目录。

--help | -h:查询帮助信息。

使用说明

  • 执行此命令,在<codebook_output_dir>对应的目录下生成文件codebook_<dim>_<nonzeroNum>_<nlist>.bin 和 codebook_<dim>_<nonzeroNum>_<nlist>.npy,codebook_<dim>_<nonzeroNum>_<nlist>.bin即为AscendIndexIVFSP所需使用到的码本文件。
  • 当码本文件存在时,将执行覆盖写,此种情况程序执行用户应该是文件的属主。
  • 在执行训练生成码本前,请先参考IVFSP训练算子模型文件生成,生成训练算子模型文件。
  • learn_data_filepath指定的数据大小必须大于等于nonzero_num * nlist * sizeof(float32) 字节。