MindSpore Lite API

MindSpore Lite API 支持情况汇总

类名

接口说明

C++ 接口

Python 接口

Context

设置运行时的线程数

void SetThreadNum(int32_t thread_num)

Context.cpu.thread_num

Context

获取当前线程数设置

int32_t GetThreadNum() const

Context.cpu.thread_num

Context

设置运行时的算子并行推理数目

void SetInterOpParallelNum(int32_t parallel_num)

Context.cpu.inter_op_parallel_num

Context

获取当前算子并行数设置

int32_t GetInterOpParallelNum() const

Context.cpu.inter_op_parallel_num

Context

设置运行时的CPU绑核策略

void SetThreadAffinity(int mode)

Context.cpu.thread_affinity_mode

Context

获取当前CPU绑核策略

int GetThreadAffinityMode() const

Context.cpu.thread_affinity_mode

Context

设置运行时的CPU绑核列表

void SetThreadAffinity(const std::vector<int> &core_list)

Context.cpu.thread_affinity_core_list

Context

获取当前CPU绑核列表

std::vector<int32_t> GetThreadAffinityCoreList() const

Context.cpu.thread_affinity_core_list

Context

设置运行时是否支持并行

void SetEnableParallel(bool is_parallel)

Context

获取当前是否支持并行

bool GetEnableParallel() const

Context

设置内置Delegate模式,以使用第三方AI框架辅助推理

void SetBuiltInDelegate(DelegateMode mode)

Context

获取当前内置Delegate模式

DelegateMode GetBuiltInDelegate() const

Context

设置Delegate,Delegate定义了用于支持第三方AI框架接入的代理

set_delegate(const std::shared_ptr<AbstractDelegate> &delegate)

Context

获取当前Delegate

std::shared_ptr<AbstractDelegate> get_delegate() const

Context

在多设备中,配置量化模型是否以浮点模式运行

void SetMultiModalHW(bool float_mode)

Context

获取当前配置中,量化模型的运行模式

bool GetMultiModalHW() const

Context

修改该context下的DeviceInfoContext数组

std::vector<std::shared_ptr<DeviceInfoContext>> &MutableDeviceInfo()

封装在 Context.target

DeviceInfoContext

获取该DeviceInfoContext的类型

enum DeviceType GetDeviceType() const

DeviceInfoContext

将DeviceInfoContext转换为T类型的指针

std::shared_ptr<T> Cast()

DeviceInfoContext

设置设备生产商名

void SetProvider(const std::string &provider)

DeviceInfoContext

获取设备的生产商名

std::string GetProvider() const

DeviceInfoContext

设置生产商设备名

void SetProviderDevice(const std::string &device)

DeviceInfoContext

获取生产商设备名

std::string GetProviderDevice() const

DeviceInfoContext

设置内存管理器

void SetAllocator(const std::shared_ptr<Allocator> &allocator)

DeviceInfoContext

获取内存管理器

std::shared_ptr<Allocator> GetAllocator() const

CPUDeviceInfo

获取该DeviceInfoContext的类型

enum DeviceType GetDeviceType() const

context.cpu

CPUDeviceInfo

设置是否以FP16精度进行推理

void SetEnableFP16(bool is_fp16)

Context.cpu.precision_mode

CPUDeviceInfo

获取当前是否以FP16精度进行推理

bool GetEnableFP16() const

Context.cpu.precision_mode

GPUDeviceInfo

获取该DeviceInfoContext的类型

enum DeviceType GetDeviceType() const

Context.gpu

GPUDeviceInfo

设置设备ID

void SetDeviceID(uint32_t device_id)

Context.gpu.device_id

GPUDeviceInfo

获取设备ID

uint32_t GetDeviceID() const

Context.gpu.device_id

GPUDeviceInfo

获取当前运行的RANK ID

int GetRankID() const

Context.gpu.rank_id

GPUDeviceInfo

获取当前运行的GROUP SIZE

int GetGroupSize() const

Context.gpu.group_size

GPUDeviceInfo

设置推理时算子精度

void SetPrecisionMode(const std::string &precision_mode)

GPUDeviceInfo

获取推理时算子精度

std::string GetPrecisionMode() const

GPUDeviceInfo

设置是否以FP16精度进行推理

void SetEnableFP16(bool is_fp16)

Context.gpu.precision_mode

GPUDeviceInfo

获取是否以FP16精度进行推理

bool GetEnableFP16() const

Context.gpu.precision_mode

GPUDeviceInfo

设置是否绑定OpenGL纹理数据

void SetEnableGLTexture(bool is_enable_gl_texture)

GPUDeviceInfo

获取是否绑定OpenGL纹理数据

bool GetEnableGLTexture() const

GPUDeviceInfo

设置指定OpenGL EGLContext

void SetGLContext(void *gl_context)

GPUDeviceInfo

获取当前OpenGL EGLContext

void *GetGLContext() const

GPUDeviceInfo

设置指定OpenGL EGLDisplay

void SetGLDisplay(void *gl_display)

GPUDeviceInfo

获取当前OpenGL EGLDisplay

void *GetGLDisplay() const

AscendDeviceInfo

获取该DeviceInfoContext的类型

enum DeviceType GetDeviceType() const

Context.ascend

AscendDeviceInfo

设置设备ID

void SetDeviceID(uint32_t device_id)

Context.ascend.device_id

AscendDeviceInfo

获取设备ID

uint32_t GetDeviceID() const

Context.ascend.device_id

AscendDeviceInfo

设置AIPP配置文件路径

void SetInsertOpConfigPath(const std::string &cfg_path)

AscendDeviceInfo

获取AIPP配置文件路径

std::string GetInsertOpConfigPath() const

AscendDeviceInfo

设置模型输入format

void SetInputFormat(const std::string &format)

AscendDeviceInfo

获取模型输入format

std::string GetInputFormat() const

AscendDeviceInfo

设置模型输入shape

void SetInputShape(const std::string &shape)

AscendDeviceInfo

获取模型输入shape

std::string GetInputShape() const

AscendDeviceInfo

设置模型输入shape

void SetInputShapeMap(const std::map<int, std::vector <int>> &shape)

AscendDeviceInfo

获取模型输入shape

std::map<int, std::vector <int>> GetInputShapeMap() const

AscendDeviceInfo

设置模型动态batch的挡位,支持个数范围[2, 100]

void SetDynamicBatchSize(const std::vector<size_t> &dynamic_batch_size)

AscendDeviceInfo

获取已配置模型的动态batch

std::string GetDynamicBatchSize() const

AscendDeviceInfo

设置模型动态分辨率档位

void SetDynamicImageSize(const std::string &dynamic_image_size)

AscendDeviceInfo

获取已配置模型的动态分辨率

std::string GetDynamicImageSize() const

AscendDeviceInfo

设置模型输出type

void SetOutputType(enum DataType output_type)

AscendDeviceInfo

获取模型输出type

enum DataType GetOutputType() const

AscendDeviceInfo

设置模型精度模式

void SetPrecisionMode(const std::string &precision_mode)

Context.ascend.precision_mode

AscendDeviceInfo

获取模型精度模式

std::string GetPrecisionMode() const

Context.ascend.precision_mode

AscendDeviceInfo

设置算子实现方式

void SetOpSelectImplMode(const std::string &op_select_impl_mode)

AscendDeviceInfo

获取已配置的算子选择模式

std::string GetOpSelectImplMode() const

AscendDeviceInfo

设置融合开关配置文件,可指定关闭特定融合规则

void SetFusionSwitchConfigPath(const std::string &cfg_path)

AscendDeviceInfo

获取已配置的融合开关文件路径

std::string GetFusionSwitchConfigPath() const

AscendDeviceInfo

设置缓存优化模式

void SetBufferOptimizeMode(const std::string &buffer_optimize_mode)

AscendDeviceInfo

获取缓存优化模式

std::string GetBufferOptimizeMode() const

KirinNPUDeviceInfo

获取该DeviceInfoContext的类型

enum DeviceType GetDeviceType() const

KirinNPUDeviceInfo

设置是否以FP16精度进行推理

void SetEnableFP16(bool is_fp16)

KirinNPUDeviceInfo

获取是否以FP16精度进行推理

bool GetEnableFP16() const

KirinNPUDeviceInfo

设置NPU频率

void SetFrequency(int frequency)

KirinNPUDeviceInfo

获取NPU频率

int GetFrequency() const

Model

从内存缓冲区加载模型,并将模型编译至可在Device上运行的状态

Status Build(const void *model_data, size_t data_size, ModelType model_type, const std::shared_ptr <Context> &model_context = nullptr)

Model

从内存缓冲区加载模型,并将模型编译至可在Device上运行的状态

Status Build(const std::string &model_path, ModelType model_type, const std::shared_ptr <Context> &model_context = nullptr)

Model.build_from_file

Model

根据路径读取加载模型,并将模型编译至可在Device上运行的状态

Status Build(const void *model_data, size_t data_size, ModelType model_type, const std::shared_ptr <Context> &model_context, const Key &dec_key, const std::string &dec_mode, const std::string &cropto_lib_path)

Model

根据路径读取加载模型,并将模型编译至可在Device上运行的状态

Status Build(const std::string &model_path, ModelType model_type, const std::shared_ptr <Context> &model_context, const Key &dec_key, const std::string &dec_mode, const std::string &cropto_lib_path)

Model

将GraphCell存储的模型编译至可在Device上运行的状态

Status Build(GraphCell graph, const std::shared_ptr <Context> &model_context = nullptr, const std::shared_ptr <TrainCfg> &train_cfg = nullptr)

Model

将GraphCell存储的模型编译至可在Device上运行的状态

Status Build(GraphCell graph, Node *optimizer, std::vector<Expr *> inputs, const std::shared_ptr <Context> &model_context, const std::shared_ptr <TrainCfg> &train_cfg)

Model

构建一个迁移学习模型,其中主干权重是固定的,头部权重是可训练的

Status BuildTransferLearning(GraphCell backbone, GraphCell head, const std::shared_ptr <Context> &context, const std::shared_ptr <TrainCfg> &train_cfg = nullptr)

Model

调整已编译模型的输入张量形状

Status Resize(const std::vector <MSTensor> &inputs, const std::vector <std::vector<int64_t>> &dims)

Model.resize

Model

更新模型的权重Tensor的大小和内容

Status UpdateWeights(const std::vector <MSTensor> &new_weights)

Model

推理模型

Status Predict(const std::vector <MSTensor> &inputs, std::vector <MSTensor> *outputs, const MSKernelCallBack &before = nullptr, const MSKernelCallBack &after = nullptr)

Model.predict

Model

仅带callback的推理模型

Status Predict(const MSKernelCallBack &before = nullptr, const MSKernelCallBack &after = nullptr)

Model

单步训练模型

Status RunStep(const MSKernelCallBack &before = nullptr, const MSKernelCallBack &after = nullptr)

Model

进行推理模型,并在推理前进行数据预处理

Status PredictWithPreprocess(const std::vector <std::vector<MSTensor>> &inputs, std::vector <MSTensor> *outputs, const MSKernelCallBack &before = nullptr, const MSKernelCallBack &after = nullptr)

Model

若模型配置了数据预处理,对模型输入数据进行数据预处理

Status Preprocess(const std::vector <std::vector<MSTensor>> &inputs, std::vector <MSTensor> *outputs)

Model

检查模型是否配置了数据预处理

bool HasPreprocess()

Model

根据路径读取配置文件

Status LoadConfig(const std::string &config_path)

封装在 Model.build_from_file 方法的 config_path 参数中

Model

刷新配置

Status UpdateConfig(const std::string &section, const std::pair<std::string, std::string> &config)

Model

获取模型所有输入张量

std::vector <MSTensor> GetInputs()

Model.get_inputs

Model

获取模型指定名字的输入张量

MSTensor GetInputByTensorName(const std::string &tensor_name)

Model

获取所有Tensor的梯度

std::vector <MSTensor> GetGradients() const

Model

应用所有Tensor的梯度

Status ApplyGradients(const std::vector <MSTensor> &gradients)

Model

获取模型的所有权重Tensors

std::vector <MSTensor> GetFeatureMaps() const

Model

获取optimizer中所有参与权重更新的MSTensor

std::vector <MSTensor> GetTrainableParams() const

Model

更新模型的权重Tensor内容

Status UpdateFeatureMaps(const std::vector <MSTensor> &new_weights)

Model

获取optimizer参数MSTensor

std::vector <MSTensor> GetOptimizerParams() const

Model

更新optimizer参数

Status SetOptimizerParams(const std::vector <MSTensor> &params)

Model

设置虚拟batch用于训练

Status SetupVirtualBatch(int virtual_batch_multiplier, float lr = -1.0f, float momentum = -1.0f)

Model

设置训练学习率

Status SetLearningRate(float learning_rate)

Model

获取优化器学习率

float GetLearningRate()

Model

训练指标参数初始化

Status InitMetrics(std::vector<Metrics *> metrics)

Model

获取训练指标参数

std::vector<Metrics *> GetMetrics()

Model

获取模型所有输出张量

std::vector <MSTensor> GetOutputs()

封装在 Model.predict 的返回值

Model

获取模型所有输出张量的名字

std::vector <std::string> GetOutputTensorNames()

Model

获取模型指定名字的输出张量

MSTensor GetOutputByTensorName(const std::string &tensor_name)

Model

通过节点名获取模型的MSTensors输出张量

std::vector <MSTensor> GetOutputsByNodeName(const std::string &node_name)

Model

将OpenGL纹理数据与模型的输入和输出进行绑定

Status BindGLTexture2DMemory(const std::map<std::string, unsigned int> &inputGLTexture, std::map<std::string, unsigned int> *outputGLTexture)

Model

session设置训练模式

Status SetTrainMode(bool train)

Model

获取session是否是训练模式

bool GetTrainMode() const

Model

模型训练

Status Train(int epochs, std::shared_ptr <dataset::Dataset>ds, std::vector<TrainCallBack *> cbs)

Model

模型验证

Status Evaluate(std::shared_ptr <dataset::Dataset> ds, std::vector<TrainCallBack *> cbs)

Model

检查设备是否支持该模型

static bool CheckModelSupport(enum DeviceType device_type, ModelType model_type)

RunnerConfig

设置RunnerConfig的worker的个数

void SetWorkersNum(int32_t workers_num)

Context.parallel.workers_num

RunnerConfig

获取RunnerConfig的worker的个数

int32_t GetWorkersNum() const

Context.parallel.workers_num

RunnerConfig

设置RunnerConfig的context参数

void SetContext(const std::shared_ptr <Context> &context)

封装在 Context.parallel

RunnerConfig

获取RunnerConfig配置的上下文参数

std::shared_ptr <Context> GetContext() const

封装在 Context.parallel

RunnerConfig

设置RunnerConfig的配置参数

void SetConfigInfo(const std::string &section, const std::map<std::string, std::string> &config)

Context.parallel.config_info

RunnerConfig

获取RunnerConfig配置参数信息

std::map<std::string, std::map<std::string, std::string>> GetConfigInfo() const

Context.parallel.config_info

RunnerConfig

设置RunnerConfig中的配置文件路径

void SetConfigPath(const std::string &config_path)

Context.parallel.config_path

RunnerConfig

获取RunnerConfig中的配置文件的路径

std::string GetConfigPath() const

Context.parallel.config_path

ModelParallelRunner

根据路径读取加载模型,生成一个或者多个模型,并将所有模型编译至可在Device上运行的状态

Status Init(const std::string &model_path, const std::shared_ptr <RunnerConfig> &runner_config = nullptr)

Model.parallel_runner.build_from_file

ModelParallelRunner

根据模文件数据,生成一个或者多个模型,并将所有模型编译至可在Device上运行的状态

Status Init(const void *model_data, const size_t data_size, const std::shared_ptr <RunnerConfig> &runner_config = nullptr)

ModelParallelRunner

获取模型所有输入张量

std::vector <MSTensor> GetInputs()

Model.parallel_runner.get_inputs

ModelParallelRunner

获取模型所有输出张量

std::vector <MSTensor> GetOutputs()

封装在 Model.parallel_runner.predict 的返回值

ModelParallelRunner

并发推理模型

Status Predict(const std::vector <MSTensor> &inputs, std::vector <MSTensor> *outputs,const MSKernelCallBack &before = nullptr, const MSKernelCallBack &after = nullptr)

Model.parallel_runner.predict

MSTensor

创建一个MSTensor对象,其数据需复制后才能由Model访问

static inline MSTensor *CreateTensor(const std::string &name, DataType type, const std::vector<int64_t> &shape, const void *data, size_t data_len) noexcept

Tensor

MSTensor

创建一个MSTensor对象,其数据可以直接由Model访问

static inline MSTensor *CreateRefTensor(const std::string &name, DataType type, const std::vector<int64_t> &shape, const void *data, size_t data_len, bool own_data = true) noexcept

MSTensor

创建一个MSTensor对象,其device数据可以直接由Model访问

static inline MSTensor CreateDeviceTensor(const std::string &name, DataType type, const std::vector<int64_t> &shape, void *data, size_t data_len) noexcept

MSTensor

创建一个MSTensor对象,其数据由文件路径file所指定

static inline MSTensor *CreateTensorFromFile(const std::string &file, DataType type = DataType::kNumberTypeUInt8, const std::vector<int64_t> &shape = {}) noexcept

MSTensor

创建一个字符串类型的MSTensor对象,其数据需复制后才能由Model访问

static inline MSTensor *StringsToTensor(const std::string &name, const std::vectorstd::string &str)

MSTensor

将字符串类型的MSTensor对象解析为字符串

static inline std::vectorstd::string TensorToStrings(const MSTensor &tensor)

MSTensor

销毁一个由 CloneStringsToTensorCreateRefTensorCreateTensor 所创建的对象

static void DestroyTensorPtr(MSTensor *tensor) noexcept

MSTensor

获取MSTensor的名字

std::string Name() const

Tensor.name

MSTensor

获取MSTensor的数据类型

enum DataType DataType() const

Tensor.dtype

MSTensor

获取MSTensor的Shape

const std::vector<int64_t> &Shape() const

Tensor.shape

MSTensor

获取MSTensor的元素个数

int64_t ElementNum() const

Tensor.element_num

MSTensor

获取指向MSTensor中的数据拷贝的智能指针

std::shared_ptr <const void> Data() const

MSTensor

获取MSTensor中的数据的指针

void *MutableData()

封装在 Tensor.get_data_to_numpyTensor.set_data_from_numpy

MSTensor

获取MSTensor中的数据的以字节为单位的内存长度

size_t DataSize() const

Tensor.data_size

MSTensor

判断MSTensor中的数据是否是常量数据

bool IsConst() const

MSTensor

判断MSTensor中是否在设备上

bool IsDevice() const

MSTensor

获取指向深拷贝副本的指针

MSTensor *Clone() const

MSTensor

判断MSTensor是否合法

bool operator==(std::nullptr_t) const

MSTensor

判断MSTensor是否非法

bool operator!=(std::nullptr_t) const

MSTensor

判断MSTensor是否与另一个MSTensor相等

bool operator==(const MSTensor &tensor) const

MSTensor

判断MSTensor是否与另一个MSTensor不相等

bool operator!=(const MSTensor &tensor) const

MSTensor

设置MSTensor的Shape

void SetShape(const std::vector<int64_t> &shape)

Tensor.shape

MSTensor

设置MSTensor的DataType

void SetDataType(enum DataType data_type)

Tensor.dtype

MSTensor

设置MSTensor的名字

void SetTensorName(const std::string &name)

Tensor.name

MSTensor

设置MSTensor数据所属的内存池

void SetAllocator(std::shared_ptr <Allocator> allocator)

MSTensor

获取MSTensor数据所属的内存池

std::shared_ptr <Allocator> allocator() const

MSTensor

设置MSTensor数据的format

void SetFormat(mindspore::Format format)

Tensor.format

MSTensor

获取MSTensor数据的format

mindspore::Format format() const

Tensor.format

MSTensor

设置指向MSTensor数据的指针

void SetData(void *data, bool own_data = true)

MSTensor

设置MSTensor数据的设备地址

void SetDeviceData(void *data)

MSTensor

获取由SetDeviceData接口设置的MSTensor数据的设备地址

void *GetDeviceData()

MSTensor

获取MSTensor的量化参数

std::vector <QuantParam> QuantParams() const

MSTensor

设置MSTensor的量化参数

void SetQuantParams(std::vector <QuantParam> quant_params)

MindSpore Lite API

Python API