mindspore

Context

#include <context.h>

Context类用于保存执行中的环境变量。包含GlobalContext与ModelContext两个派生类。

GlobalContext : Context

GlobalContext定义了执行时的全局变量。

静态公有成员函数

GetGlobalContext

static std::shared_ptr<Context> GetGlobalContext();

返回GlobalContext单例。

  • 返回值

    指向GlobalContext单例的智能指针。

SetGlobalDeviceTarget

static void SetGlobalDeviceTarget(const std::string &device_target);

配置目标Device。

  • 参数 device_target: 将要配置的目标Device,可选有kDeviceTypeAscend310kDeviceTypeAscend910

GetGlobalDeviceTarget

static std::string GetGlobalDeviceTarget();

获取已配置的Device。

  • 返回值 已配置的目标Device。

SetGlobalDeviceID

static void SetGlobalDeviceID(const unit32_t &device_id);

配置Device ID。

  • 参数 device_id: 将要配置的Device ID。

GetGlobalDeviceID

static uint32_t GetGlobalDeviceID();

获取已配置的Device ID。

  • 返回值 已配置的Device ID。

ModelContext : Context

静态公有成员函数

函数 说明
void SetInsertOpConfigPath(const std::shared_ptr<Context> &context, const std::string &cfg_path) 模型插入AIPP算子

- context: 将要修改的context

- cfg_path: AIPP配置文件路径
std::string GetInsertOpConfigPath(const std::shared_ptr<Context> &context) - 返回值: 已配置的AIPP
void SetInputFormat(const std::shared_ptr<Context> &context, const std::string &format) 指定模型输入format

- context: 将要修改的context

- format: 可选有"NCHW""NHWC"
std::string GetInputFormat(const std::shared_ptr<Context> &context) - 返回值: 已配置模型输入format
void SetInputShape(const std::shared_ptr<Context> &context, const std::string &shape) 指定模型输入shape

- context: 将要修改的context

- shape: 如"input_op_name1:1,2,3,4;input_op_name2:4,3,2,1"
std::string GetInputShape(const std::shared_ptr<Context> &context) - 返回值: 已配置模型输入shape
void SetOutputType(const std::shared_ptr<Context> &context, enum DataType output_type) 指定模型输出type

- context: 将要修改的context

- output_type: 仅支持uint8、fp16和fp32
enum DataType GetOutputType(const std::shared_ptr<Context> &context) - 返回值: 已配置模型输出type
void SetPrecisionMode(const std::shared_ptr<Context> &context, const std::string &precision_mode) 配置模型精度模式

- context: 将要修改的context

- precision_mode: 可选有"force_fp16""allow_fp32_to_fp16""must_keep_origin_dtype"或者"allow_mix_precision",默认为"force_fp16"
std::string GetPrecisionMode(const std::shared_ptr<Context> &context) - 返回值: 已配置模型精度模式
void SetOpSelectImplMode(const std::shared_ptr<Context> &context, const std::string &op_select_impl_mode) 配置算子选择模式

- context: 将要修改的context

- op_select_impl_mode: 可选有"high_performance""high_precision",默认为"high_performance"
std::string GetOpSelectImplMode(const std::shared_ptr<Context> &context) - 返回值: 已配置算子选择模式

Serialization

#include <serialization.h>

Serialization类汇总了模型文件读写的方法。

静态公有成员函数

LoadModel

static Graph LoadModel(const std::string &file, ModelType model_type);

从文件加载模型。MindSpore Lite未提供此功能。

  • 参数

    • file:模型文件路径。

    • model_type:模型文件类型,可选有ModelType::kMindIRModelType::kOM

  • 返回值

    保存图数据的Graph实例。

static Graph LoadModel(const void *model_data, size_t data_size, ModelType model_type);

从内存缓冲区加载模型。

  • 参数

    • model_data:已读取模型文件的缓存区。

    • data_size:缓存区大小。

    • model_type:模型文件类型,可选有ModelType::kMindIRModelType::kOM

  • 返回值

    保存图数据的Graph实例。

Model

#include <model.h>

Model定义了MindSpore中的模型,便于计算图管理。

构造函数和析构函数

explicit Model(const GraphCell &graph, const std::shared_ptr<Context> &model_context);
explicit Model(const std::vector<Output> &network, const std::shared_ptr<Context> &model_context);
~Model();

GraphCellCell的一个派生,Cell目前没有开放使用。GraphCell可以由Graph构造,如Model model(GraphCell(graph))

Context表示运行时的模型配置

公有成员函数

Build

Status Build();

将模型编译至可在Device上运行的状态。

  • 返回值

    状态码类Status对象,可以使用其公有函数StatusCodeToString函数来获取具体错误码及错误信息。

Predict

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

执行推理。

  • 参数

    • inputs: 模型输入按顺序排列的vector

    • outputs: 输出参数,按顺序排列的vector的指针,模型输出会按顺序填入该容器。

  • 返回值

    状态码类Status对象,可以使用其公有函数StatusCodeToString函数来获取具体错误码及错误信息。

GetInputs

std::vector<MSTensor> GetInputs();

获取模型所有输入张量。

  • 返回值

    包含模型所有输入张量的容器类型变量。

GetOutputs

std::vector<MSTensor> GetOutputs();

获取模型所有输出张量。

  • 返回值

    包含模型所有输出张量的容器类型变量。

Resize

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

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

  • 参数

    • inputs: 模型输入按顺序排列的vector

    • dims: 输入形状,按输入顺序排列的由形状组成的vector,模型会按顺序依次调整张量形状。

  • 返回值

    状态码类Status对象,可以使用其公有函数StatusCodeToString函数来获取具体错误码及错误信息。

CheckModelSupport

static bool CheckModelSupport(const std::string &device_type, ModelType model_type);

检查设备是否支持该模型。

  • 参数

    • device_type: 设备名称,例如Ascend310

    • model_type: 模型类型,例如MindIR

  • 返回值

    状态码。

MSTensor

#include <types.h>

MSTensor定义了MindSpore中的Tensor。

构造函数和析构函数

MSTensor();
explicit MSTensor(const std::shared_ptr<Impl> &impl);
MSTensor(const std::string &name, DataType type, const std::vector<int64_t> &shape, const void *data, size_t data_len);
~MSTensor();

静态公有成员函数

CreateTensor

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

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

  • 参数

    • name: 名称。

    • type:数据类型。

    • shape:形状。

    • data:数据指针,指向一段已开辟的内存。

    • data:数据长度,以字节为单位。

  • 返回值

    MStensor实例。

CreateRefTensor

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

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

  • 参数

    • name: 名称。

    • type:数据类型。

    • shape:形状。

    • data:数据指针,指向一段已开辟的内存。

    • data:数据长度,以字节为单位。

  • 返回值

    MStensor实例。

公有成员函数

Name

const std::string &Name() const;

获取MSTensor的名字。

  • 返回值

    MSTensor的名字。

DataType

enum DataType DataType() const;

获取MSTensor的数据类型。

  • 返回值

    MSTensor的数据类型。

Shape

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

获取MSTensor的Shape。

  • 返回值

    MSTensor的Shape。

ElementNum

int64_t ElementNum() const;

获取MSTensor的元素个数。

  • 返回值

    MSTensor的元素个数。

Data

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

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

  • 返回值

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

MutableData

void *MutableData();

获取MSTensor中的数据的指针。

  • 返回值

    指向MSTensor中的数据的指针。

DataSize

size_t DataSize() const;

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

  • 返回值

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

IsDevice

bool IsDevice() const;

判断MSTensor中是否在设备上。

  • 返回值

    MSTensor中是否在设备上。

Clone

MSTensor Clone() const;

拷贝一份自身的副本。

  • 返回值

    深拷贝的副本。

operator==(std::nullptr_t)

bool operator==(std::nullptr_t) const;

判断MSTensor是否合法。

  • 返回值

    MSTensor是否合法。

CallBack

#include <ms_tensor.h>

CallBack定义了MindSpore Lite中的回调函数。

KernelCallBack

using KernelCallBack = std::function<bool(std::vector<tensor::MSTensor *> inputs, std::vector<tensor::MSTensor *> outputs, const CallBackParam &opInfo)>

一个函数包装器。KernelCallBack 定义了指向回调函数的指针。

CallBackParam

一个结构体。CallBackParam定义了回调函数的输入参数。

公有属性

node_name

node_name

string 类型变量。节点名参数。

node_type

node_type

string 类型变量。节点类型参数。