17777dab0Sopenharmony_ci/**
27777dab0Sopenharmony_ci * Copyright 2021 Huawei Technologies Co., Ltd
37777dab0Sopenharmony_ci *
47777dab0Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
57777dab0Sopenharmony_ci * you may not use this file except in compliance with the License.
67777dab0Sopenharmony_ci * You may obtain a copy of the License at
77777dab0Sopenharmony_ci *
87777dab0Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0
97777dab0Sopenharmony_ci *
107777dab0Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
117777dab0Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
127777dab0Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
137777dab0Sopenharmony_ci * See the License for the specific language governing permissions and
147777dab0Sopenharmony_ci * limitations under the License.
157777dab0Sopenharmony_ci */
167777dab0Sopenharmony_ci
177777dab0Sopenharmony_ci/**
187777dab0Sopenharmony_ci * @addtogroup MindSpore
197777dab0Sopenharmony_ci * @{
207777dab0Sopenharmony_ci *
217777dab0Sopenharmony_ci * @brief provide the model reasoning related interfaces of MindSpore Lite.
227777dab0Sopenharmony_ci *
237777dab0Sopenharmony_ci * @Syscap SystemCapability.Ai.MindSpore
247777dab0Sopenharmony_ci * @since 9
257777dab0Sopenharmony_ci */
267777dab0Sopenharmony_ci
277777dab0Sopenharmony_ci/**
287777dab0Sopenharmony_ci * @file model.h
297777dab0Sopenharmony_ci * @kit MindSporeLiteKit
307777dab0Sopenharmony_ci * @brief provide model-related interfaces that can be used for model creation, model reasoning, and more.
317777dab0Sopenharmony_ci *
327777dab0Sopenharmony_ci * @library libmindspore_lite_ndk.so
337777dab0Sopenharmony_ci * @since 9
347777dab0Sopenharmony_ci */
357777dab0Sopenharmony_ci#ifndef MINDSPORE_INCLUDE_C_API_MODEL_C_H
367777dab0Sopenharmony_ci#define MINDSPORE_INCLUDE_C_API_MODEL_C_H
377777dab0Sopenharmony_ci
387777dab0Sopenharmony_ci#include "mindspore/tensor.h"
397777dab0Sopenharmony_ci#include "mindspore/context.h"
407777dab0Sopenharmony_ci#include "mindspore/status.h"
417777dab0Sopenharmony_ci
427777dab0Sopenharmony_ci#ifdef __cplusplus
437777dab0Sopenharmony_ciextern "C" {
447777dab0Sopenharmony_ci#endif
457777dab0Sopenharmony_ci
467777dab0Sopenharmony_citypedef void *OH_AI_ModelHandle;
477777dab0Sopenharmony_ci
487777dab0Sopenharmony_citypedef void *OH_AI_TrainCfgHandle;
497777dab0Sopenharmony_ci
507777dab0Sopenharmony_citypedef struct OH_AI_TensorHandleArray {
517777dab0Sopenharmony_ci  size_t handle_num;
527777dab0Sopenharmony_ci  OH_AI_TensorHandle *handle_list;
537777dab0Sopenharmony_ci} OH_AI_TensorHandleArray;
547777dab0Sopenharmony_ci
557777dab0Sopenharmony_ci#define OH_AI_MAX_SHAPE_NUM 32
567777dab0Sopenharmony_citypedef struct OH_AI_ShapeInfo {
577777dab0Sopenharmony_ci  size_t shape_num;
587777dab0Sopenharmony_ci  int64_t shape[OH_AI_MAX_SHAPE_NUM];
597777dab0Sopenharmony_ci} OH_AI_ShapeInfo;
607777dab0Sopenharmony_ci
617777dab0Sopenharmony_citypedef struct OH_AI_CallBackParam {
627777dab0Sopenharmony_ci  char *node_name;
637777dab0Sopenharmony_ci  char *node_type;
647777dab0Sopenharmony_ci} OH_AI_CallBackParam;
657777dab0Sopenharmony_ci
667777dab0Sopenharmony_citypedef bool (*OH_AI_KernelCallBack)(const OH_AI_TensorHandleArray inputs, const OH_AI_TensorHandleArray outputs,
677777dab0Sopenharmony_ci                                     const OH_AI_CallBackParam kernel_Info);
687777dab0Sopenharmony_ci
697777dab0Sopenharmony_ci/**
707777dab0Sopenharmony_ci * @brief Create a model object.
717777dab0Sopenharmony_ci *
727777dab0Sopenharmony_ci * @return Model object handle.
737777dab0Sopenharmony_ci * @since 9
747777dab0Sopenharmony_ci */
757777dab0Sopenharmony_ciOH_AI_API OH_AI_ModelHandle OH_AI_ModelCreate(void);
767777dab0Sopenharmony_ci
777777dab0Sopenharmony_ci/**
787777dab0Sopenharmony_ci * @brief Destroy the model object.
797777dab0Sopenharmony_ci *
807777dab0Sopenharmony_ci * @param model Model object handle address.
817777dab0Sopenharmony_ci * @since 9
827777dab0Sopenharmony_ci */
837777dab0Sopenharmony_ciOH_AI_API void OH_AI_ModelDestroy(OH_AI_ModelHandle *model);
847777dab0Sopenharmony_ci
857777dab0Sopenharmony_ci/**
867777dab0Sopenharmony_ci * @brief Build the model from model file buffer so that it can run on a device.
877777dab0Sopenharmony_ci *
887777dab0Sopenharmony_ci * @param model Model object handle.
897777dab0Sopenharmony_ci * @param model_data Define the buffer read from a model file.
907777dab0Sopenharmony_ci * @param data_size Define bytes number of model file buffer.
917777dab0Sopenharmony_ci * @param model_type Define The type of model file.
927777dab0Sopenharmony_ci * @param model_context Define the context used to store options during execution.
937777dab0Sopenharmony_ci * @return OH_AI_Status.
947777dab0Sopenharmony_ci * @since 9
957777dab0Sopenharmony_ci */
967777dab0Sopenharmony_ciOH_AI_API OH_AI_Status OH_AI_ModelBuild(OH_AI_ModelHandle model, const void *model_data, size_t data_size,
977777dab0Sopenharmony_ci                                        OH_AI_ModelType model_type, const OH_AI_ContextHandle model_context);
987777dab0Sopenharmony_ci
997777dab0Sopenharmony_ci/**
1007777dab0Sopenharmony_ci * @brief Load and build the model from model path so that it can run on a device.
1017777dab0Sopenharmony_ci *
1027777dab0Sopenharmony_ci * @param model Model object handle.
1037777dab0Sopenharmony_ci * @param model_path Define the model file path.
1047777dab0Sopenharmony_ci * @param model_type Define The type of model file.
1057777dab0Sopenharmony_ci * @param model_context Define the context used to store options during execution.
1067777dab0Sopenharmony_ci * @return OH_AI_Status.
1077777dab0Sopenharmony_ci * @since 9
1087777dab0Sopenharmony_ci */
1097777dab0Sopenharmony_ciOH_AI_API OH_AI_Status OH_AI_ModelBuildFromFile(OH_AI_ModelHandle model, const char *model_path,
1107777dab0Sopenharmony_ci                                                OH_AI_ModelType model_type, const OH_AI_ContextHandle model_context);
1117777dab0Sopenharmony_ci
1127777dab0Sopenharmony_ci/**
1137777dab0Sopenharmony_ci * @brief Resizes the shapes of inputs.
1147777dab0Sopenharmony_ci *
1157777dab0Sopenharmony_ci * @param model Model object handle.
1167777dab0Sopenharmony_ci * @param inputs The array that includes all input tensor handles.
1177777dab0Sopenharmony_ci * @param shape_infos Defines the new shapes of inputs, should be consistent with inputs.
1187777dab0Sopenharmony_ci * @param shape_info_num The num of shape_infos.
1197777dab0Sopenharmony_ci * @return OH_AI_Status.
1207777dab0Sopenharmony_ci * @since 9
1217777dab0Sopenharmony_ci */
1227777dab0Sopenharmony_ciOH_AI_API OH_AI_Status OH_AI_ModelResize(OH_AI_ModelHandle model, const OH_AI_TensorHandleArray inputs,
1237777dab0Sopenharmony_ci                                         OH_AI_ShapeInfo *shape_infos, size_t shape_info_num);
1247777dab0Sopenharmony_ci
1257777dab0Sopenharmony_ci/**
1267777dab0Sopenharmony_ci * @brief Inference model.
1277777dab0Sopenharmony_ci *
1287777dab0Sopenharmony_ci * @param model Model object handle.
1297777dab0Sopenharmony_ci * @param inputs The array that includes all input tensor handles.
1307777dab0Sopenharmony_ci * @param outputs The array that includes all output tensor handles.
1317777dab0Sopenharmony_ci * @param before CallBack before predict.
1327777dab0Sopenharmony_ci * @param after CallBack after predict.
1337777dab0Sopenharmony_ci * @return OH_AI_Status.
1347777dab0Sopenharmony_ci * @since 9
1357777dab0Sopenharmony_ci */
1367777dab0Sopenharmony_ciOH_AI_API OH_AI_Status OH_AI_ModelPredict(OH_AI_ModelHandle model, const OH_AI_TensorHandleArray inputs,
1377777dab0Sopenharmony_ci                                          OH_AI_TensorHandleArray *outputs, const OH_AI_KernelCallBack before,
1387777dab0Sopenharmony_ci                                          const OH_AI_KernelCallBack after);
1397777dab0Sopenharmony_ci
1407777dab0Sopenharmony_ci/**
1417777dab0Sopenharmony_ci * @brief Obtains all input tensor handles of the model.
1427777dab0Sopenharmony_ci *
1437777dab0Sopenharmony_ci * @param model Model object handle.
1447777dab0Sopenharmony_ci * @return The array that includes all input tensor handles.
1457777dab0Sopenharmony_ci * @since 9
1467777dab0Sopenharmony_ci */
1477777dab0Sopenharmony_ciOH_AI_API OH_AI_TensorHandleArray OH_AI_ModelGetInputs(const OH_AI_ModelHandle model);
1487777dab0Sopenharmony_ci
1497777dab0Sopenharmony_ci/**
1507777dab0Sopenharmony_ci * @brief Obtains all output tensor handles of the model.
1517777dab0Sopenharmony_ci *
1527777dab0Sopenharmony_ci * @param model Model object handle.
1537777dab0Sopenharmony_ci * @return The array that includes all output tensor handles.
1547777dab0Sopenharmony_ci * @since 9
1557777dab0Sopenharmony_ci */
1567777dab0Sopenharmony_ciOH_AI_API OH_AI_TensorHandleArray OH_AI_ModelGetOutputs(const OH_AI_ModelHandle model);
1577777dab0Sopenharmony_ci
1587777dab0Sopenharmony_ci/**
1597777dab0Sopenharmony_ci * @brief Obtains the input tensor handle of the model by name.
1607777dab0Sopenharmony_ci *
1617777dab0Sopenharmony_ci * @param model Model object handle.
1627777dab0Sopenharmony_ci * @param tensor_name The name of tensor.
1637777dab0Sopenharmony_ci * @return The input tensor handle with the given name, if the name is not found, an NULL is returned.
1647777dab0Sopenharmony_ci * @since 9
1657777dab0Sopenharmony_ci */
1667777dab0Sopenharmony_ciOH_AI_API OH_AI_TensorHandle OH_AI_ModelGetInputByTensorName(const OH_AI_ModelHandle model, const char *tensor_name);
1677777dab0Sopenharmony_ci
1687777dab0Sopenharmony_ci/**
1697777dab0Sopenharmony_ci * @brief Obtains the output tensor handle of the model by name.
1707777dab0Sopenharmony_ci *
1717777dab0Sopenharmony_ci * @param model Model object handle.
1727777dab0Sopenharmony_ci * @param tensor_name The name of tensor.
1737777dab0Sopenharmony_ci * @return The output tensor handle with the given name, if the name is not found, an NULL is returned.
1747777dab0Sopenharmony_ci * @since 9
1757777dab0Sopenharmony_ci */
1767777dab0Sopenharmony_ciOH_AI_API OH_AI_TensorHandle OH_AI_ModelGetOutputByTensorName(const OH_AI_ModelHandle model, const char *tensor_name);
1777777dab0Sopenharmony_ci
1787777dab0Sopenharmony_ci/**
1797777dab0Sopenharmony_ci * @brief Create a TrainCfg object. Only valid for Lite Train.
1807777dab0Sopenharmony_ci *
1817777dab0Sopenharmony_ci * @return TrainCfg object handle.
1827777dab0Sopenharmony_ci * @since 11
1837777dab0Sopenharmony_ci */
1847777dab0Sopenharmony_ciOH_AI_API OH_AI_TrainCfgHandle OH_AI_TrainCfgCreate();
1857777dab0Sopenharmony_ci
1867777dab0Sopenharmony_ci/**
1877777dab0Sopenharmony_ci * @brief Destroy the train_cfg object. Only valid for Lite Train.
1887777dab0Sopenharmony_ci *
1897777dab0Sopenharmony_ci * @param train_cfg TrainCfg object handle.
1907777dab0Sopenharmony_ci * @since 11
1917777dab0Sopenharmony_ci */
1927777dab0Sopenharmony_ciOH_AI_API void OH_AI_TrainCfgDestroy(OH_AI_TrainCfgHandle *train_cfg);
1937777dab0Sopenharmony_ci
1947777dab0Sopenharmony_ci/**
1957777dab0Sopenharmony_ci * @brief Obtains part of the name that identify a loss kernel. Only valid for Lite Train.
1967777dab0Sopenharmony_ci *
1977777dab0Sopenharmony_ci * @param train_cfg TrainCfg object handle.
1987777dab0Sopenharmony_ci * @param num The num of loss_name.
1997777dab0Sopenharmony_ci * @return loss_name.
2007777dab0Sopenharmony_ci * @since 11
2017777dab0Sopenharmony_ci */
2027777dab0Sopenharmony_ciOH_AI_API char **OH_AI_TrainCfgGetLossName(OH_AI_TrainCfgHandle train_cfg, size_t *num);
2037777dab0Sopenharmony_ci
2047777dab0Sopenharmony_ci/**
2057777dab0Sopenharmony_ci * @brief Set part of the name that identify a loss kernel. Only valid for Lite Train.
2067777dab0Sopenharmony_ci *
2077777dab0Sopenharmony_ci * @param train_cfg TrainCfg object handle.
2087777dab0Sopenharmony_ci * @param loss_name Define part of the name that identify a loss kernel.
2097777dab0Sopenharmony_ci * @param num The num of loss_name.
2107777dab0Sopenharmony_ci * @since 11
2117777dab0Sopenharmony_ci */
2127777dab0Sopenharmony_ciOH_AI_API void OH_AI_TrainCfgSetLossName(OH_AI_TrainCfgHandle train_cfg, const char **loss_name, size_t num);
2137777dab0Sopenharmony_ci
2147777dab0Sopenharmony_ci/**
2157777dab0Sopenharmony_ci * @brief Obtains optimization level of the train_cfg. Only valid for Lite Train.
2167777dab0Sopenharmony_ci *
2177777dab0Sopenharmony_ci * @param train_cfg TrainCfg object handle.
2187777dab0Sopenharmony_ci * @return OH_AI_OptimizationLevel.
2197777dab0Sopenharmony_ci * @since 11
2207777dab0Sopenharmony_ci */
2217777dab0Sopenharmony_ciOH_AI_API OH_AI_OptimizationLevel OH_AI_TrainCfgGetOptimizationLevel(OH_AI_TrainCfgHandle train_cfg);
2227777dab0Sopenharmony_ci
2237777dab0Sopenharmony_ci/**
2247777dab0Sopenharmony_ci * @brief Set optimization level of the train_cfg. Only valid for Lite Train.
2257777dab0Sopenharmony_ci *
2267777dab0Sopenharmony_ci * @param train_cfg TrainCfg object handle.
2277777dab0Sopenharmony_ci * @param level The optimization level of train_cfg.
2287777dab0Sopenharmony_ci * @since 11
2297777dab0Sopenharmony_ci */
2307777dab0Sopenharmony_ciOH_AI_API void OH_AI_TrainCfgSetOptimizationLevel(OH_AI_TrainCfgHandle train_cfg, OH_AI_OptimizationLevel level);
2317777dab0Sopenharmony_ci
2327777dab0Sopenharmony_ci/**
2337777dab0Sopenharmony_ci * @brief Build the train model from model buffer so that it can run on a device. Only valid for Lite Train.
2347777dab0Sopenharmony_ci *
2357777dab0Sopenharmony_ci * @param model Model object handle.
2367777dab0Sopenharmony_ci * @param model_data Define the buffer read from a model file.
2377777dab0Sopenharmony_ci * @param data_size Define bytes number of model file buffer.
2387777dab0Sopenharmony_ci * @param model_type Define The type of model file.
2397777dab0Sopenharmony_ci * @param model_context Define the context used to store options during execution.
2407777dab0Sopenharmony_ci * @param train_cfg Define the config used by training.
2417777dab0Sopenharmony_ci * @return OH_AI_Status.
2427777dab0Sopenharmony_ci * @since 11
2437777dab0Sopenharmony_ci */
2447777dab0Sopenharmony_ciOH_AI_API OH_AI_Status OH_AI_TrainModelBuild(OH_AI_ModelHandle model, const void *model_data, size_t data_size,
2457777dab0Sopenharmony_ci                                             OH_AI_ModelType model_type, const OH_AI_ContextHandle model_context,
2467777dab0Sopenharmony_ci                                             const OH_AI_TrainCfgHandle train_cfg);
2477777dab0Sopenharmony_ci
2487777dab0Sopenharmony_ci/**
2497777dab0Sopenharmony_ci * @brief Build the train model from model file buffer so that it can run on a device. Only valid for Lite Train.
2507777dab0Sopenharmony_ci *
2517777dab0Sopenharmony_ci * @param model Model object handle.
2527777dab0Sopenharmony_ci * @param model_path Define the model path.
2537777dab0Sopenharmony_ci * @param model_type Define The type of model file.
2547777dab0Sopenharmony_ci * @param model_context Define the context used to store options during execution.
2557777dab0Sopenharmony_ci * @param train_cfg Define the config used by training.
2567777dab0Sopenharmony_ci * @return OH_AI_Status.
2577777dab0Sopenharmony_ci * @since 11
2587777dab0Sopenharmony_ci */
2597777dab0Sopenharmony_ciOH_AI_API OH_AI_Status OH_AI_TrainModelBuildFromFile(OH_AI_ModelHandle model, const char *model_path,
2607777dab0Sopenharmony_ci                                                     OH_AI_ModelType model_type,
2617777dab0Sopenharmony_ci                                                     const OH_AI_ContextHandle model_context,
2627777dab0Sopenharmony_ci                                                     const OH_AI_TrainCfgHandle train_cfg);
2637777dab0Sopenharmony_ci
2647777dab0Sopenharmony_ci/**
2657777dab0Sopenharmony_ci * @brief Train model by step. Only valid for Lite Train.
2667777dab0Sopenharmony_ci *
2677777dab0Sopenharmony_ci * @param model Model object handle.
2687777dab0Sopenharmony_ci * @param before CallBack before predict.
2697777dab0Sopenharmony_ci * @param after CallBack after predict.
2707777dab0Sopenharmony_ci * @return OH_AI_Status.
2717777dab0Sopenharmony_ci * @since 11
2727777dab0Sopenharmony_ci */
2737777dab0Sopenharmony_ciOH_AI_API OH_AI_Status OH_AI_RunStep(OH_AI_ModelHandle model, const OH_AI_KernelCallBack before,
2747777dab0Sopenharmony_ci                                     const OH_AI_KernelCallBack after);
2757777dab0Sopenharmony_ci
2767777dab0Sopenharmony_ci/**
2777777dab0Sopenharmony_ci * @brief Sets the Learning Rate of the training. Only valid for Lite Train.
2787777dab0Sopenharmony_ci *
2797777dab0Sopenharmony_ci * @param learning_rate to set.
2807777dab0Sopenharmony_ci * @return OH_AI_Status of operation.
2817777dab0Sopenharmony_ci * @since 11
2827777dab0Sopenharmony_ci */
2837777dab0Sopenharmony_ciOH_AI_API OH_AI_Status OH_AI_ModelSetLearningRate(OH_AI_ModelHandle model, float learning_rate);
2847777dab0Sopenharmony_ci
2857777dab0Sopenharmony_ci/**
2867777dab0Sopenharmony_ci * @brief Obtains the Learning Rate of the optimizer. Only valid for Lite Train.
2877777dab0Sopenharmony_ci *
2887777dab0Sopenharmony_ci * @param model Model object handle.
2897777dab0Sopenharmony_ci * @return Learning rate. 0.0 if no optimizer was found.
2907777dab0Sopenharmony_ci * @since 11
2917777dab0Sopenharmony_ci */
2927777dab0Sopenharmony_ciOH_AI_API float OH_AI_ModelGetLearningRate(OH_AI_ModelHandle model);
2937777dab0Sopenharmony_ci
2947777dab0Sopenharmony_ci/**
2957777dab0Sopenharmony_ci * @brief Obtains all weights tensors of the model. Only valid for Lite Train.
2967777dab0Sopenharmony_ci *
2977777dab0Sopenharmony_ci * @param model Model object handle.
2987777dab0Sopenharmony_ci * @return The vector that includes all gradient tensors.
2997777dab0Sopenharmony_ci * @since 11
3007777dab0Sopenharmony_ci */
3017777dab0Sopenharmony_ciOH_AI_API OH_AI_TensorHandleArray OH_AI_ModelGetWeights(OH_AI_ModelHandle model);
3027777dab0Sopenharmony_ci
3037777dab0Sopenharmony_ci/**
3047777dab0Sopenharmony_ci * @brief update weights tensors of the model. Only valid for Lite Train.
3057777dab0Sopenharmony_ci *
3067777dab0Sopenharmony_ci * @param new_weights A vector new weights.
3077777dab0Sopenharmony_ci * @return OH_AI_Status
3087777dab0Sopenharmony_ci * @since 11
3097777dab0Sopenharmony_ci */
3107777dab0Sopenharmony_ciOH_AI_API OH_AI_Status OH_AI_ModelUpdateWeights(OH_AI_ModelHandle model, const OH_AI_TensorHandleArray new_weights);
3117777dab0Sopenharmony_ci
3127777dab0Sopenharmony_ci/**
3137777dab0Sopenharmony_ci * @brief Get the model running mode.
3147777dab0Sopenharmony_ci *
3157777dab0Sopenharmony_ci * @param model Model object handle.
3167777dab0Sopenharmony_ci * @return Is Train Mode or not.
3177777dab0Sopenharmony_ci * @since 11
3187777dab0Sopenharmony_ci */
3197777dab0Sopenharmony_ciOH_AI_API bool OH_AI_ModelGetTrainMode(OH_AI_ModelHandle model);
3207777dab0Sopenharmony_ci
3217777dab0Sopenharmony_ci/**
3227777dab0Sopenharmony_ci * @brief Set the model running mode. Only valid for Lite Train.
3237777dab0Sopenharmony_ci *
3247777dab0Sopenharmony_ci * @param model Model object handle.
3257777dab0Sopenharmony_ci * @param train True means model runs in Train Mode, otherwise Eval Mode.
3267777dab0Sopenharmony_ci * @return OH_AI_Status.
3277777dab0Sopenharmony_ci * @since 11
3287777dab0Sopenharmony_ci */
3297777dab0Sopenharmony_ciOH_AI_API OH_AI_Status OH_AI_ModelSetTrainMode(OH_AI_ModelHandle model, bool train);
3307777dab0Sopenharmony_ci
3317777dab0Sopenharmony_ci/**
3327777dab0Sopenharmony_ci * @brief Setup training with virtual batches. Only valid for Lite Train.
3337777dab0Sopenharmony_ci *
3347777dab0Sopenharmony_ci * @param model Model object handle.
3357777dab0Sopenharmony_ci * @param virtual_batch_multiplier Virtual batch multiplier, use any number < 1 to disable.
3367777dab0Sopenharmony_ci * @param lr Learning rate to use for virtual batch, -1 for internal configuration.
3377777dab0Sopenharmony_ci * @param momentum Batch norm momentum to use for virtual batch, -1 for internal configuration.
3387777dab0Sopenharmony_ci * @return OH_AI_Status.
3397777dab0Sopenharmony_ci * @since 11
3407777dab0Sopenharmony_ci */
3417777dab0Sopenharmony_ciOH_AI_API OH_AI_Status OH_AI_ModelSetupVirtualBatch(OH_AI_ModelHandle model, int virtual_batch_multiplier, float lr,
3427777dab0Sopenharmony_ci                                                    float momentum);
3437777dab0Sopenharmony_ci
3447777dab0Sopenharmony_ci/**
3457777dab0Sopenharmony_ci * @brief Export training model from file. Only valid for Lite Train.
3467777dab0Sopenharmony_ci *
3477777dab0Sopenharmony_ci * @param model The model data.
3487777dab0Sopenharmony_ci * @param model_type The model file type.
3497777dab0Sopenharmony_ci * @param model_file The exported model file.
3507777dab0Sopenharmony_ci * @param quantization_type The quantification type.
3517777dab0Sopenharmony_ci * @param export_inference_only Whether to export a reasoning only model.
3527777dab0Sopenharmony_ci * @param output_tensor_name The set the name of the output tensor of the exported reasoning model, default as
3537777dab0Sopenharmony_ci *        empty, and export the complete reasoning model.
3547777dab0Sopenharmony_ci * @param num The number of output_tensor_name.
3557777dab0Sopenharmony_ci * @return OH_AI_Status.
3567777dab0Sopenharmony_ci * @since 11
3577777dab0Sopenharmony_ci */
3587777dab0Sopenharmony_ciOH_AI_API OH_AI_Status OH_AI_ExportModel(OH_AI_ModelHandle model, OH_AI_ModelType model_type, const char *model_file,
3597777dab0Sopenharmony_ci                                         OH_AI_QuantizationType quantization_type, bool export_inference_only,
3607777dab0Sopenharmony_ci                                         char **output_tensor_name, size_t num);
3617777dab0Sopenharmony_ci
3627777dab0Sopenharmony_ci/**
3637777dab0Sopenharmony_ci * @brief Export training model from buffer. Only valid for Lite Train.
3647777dab0Sopenharmony_ci *
3657777dab0Sopenharmony_ci * @param model The model data.
3667777dab0Sopenharmony_ci * @param model_type The model file type.
3677777dab0Sopenharmony_ci * @param model_data The exported model buffer.
3687777dab0Sopenharmony_ci * @param data_size The exported model buffer size.
3697777dab0Sopenharmony_ci * @param quantization_type The quantification type.
3707777dab0Sopenharmony_ci * @param export_inference_only Whether to export a reasoning only model.
3717777dab0Sopenharmony_ci * @param output_tensor_name The set the name of the output tensor of the exported reasoning model, default as
3727777dab0Sopenharmony_ci *        empty, and export the complete reasoning model.
3737777dab0Sopenharmony_ci * @param num The number of output_tensor_name.
3747777dab0Sopenharmony_ci * @return OH_AI_Status.
3757777dab0Sopenharmony_ci * @since 11
3767777dab0Sopenharmony_ci */
3777777dab0Sopenharmony_ciOH_AI_API OH_AI_Status OH_AI_ExportModelBuffer(OH_AI_ModelHandle model, OH_AI_ModelType model_type, void *model_data,
3787777dab0Sopenharmony_ci                                               size_t *data_size, OH_AI_QuantizationType quantization_type,
3797777dab0Sopenharmony_ci                                               bool export_inference_only, char **output_tensor_name, size_t num);
3807777dab0Sopenharmony_ci
3817777dab0Sopenharmony_ci/**
3827777dab0Sopenharmony_ci * @brief Export model's weights, which can be used in micro only. Only valid for Lite Train.
3837777dab0Sopenharmony_ci *
3847777dab0Sopenharmony_ci * @param model The model data.
3857777dab0Sopenharmony_ci * @param model_type The model file type.
3867777dab0Sopenharmony_ci * @param weight_file The path of exported weight file.
3877777dab0Sopenharmony_ci * @param is_inference Whether to export weights from a reasoning model. Currently, only support this is `true`.
3887777dab0Sopenharmony_ci * @param enable_fp16 Float-weight is whether to be saved in float16 format.
3897777dab0Sopenharmony_ci * @param changeable_weights_name The set the name of these weight tensors, whose shape is changeable.
3907777dab0Sopenharmony_ci * @param num The number of changeable_weights_name.
3917777dab0Sopenharmony_ci * @return OH_AI_Status.
3927777dab0Sopenharmony_ci * @since 11
3937777dab0Sopenharmony_ci */
3947777dab0Sopenharmony_ciOH_AI_API OH_AI_Status OH_AI_ExportWeightsCollaborateWithMicro(OH_AI_ModelHandle model, OH_AI_ModelType model_type,
3957777dab0Sopenharmony_ci                                                               const char *weight_file, bool is_inference,
3967777dab0Sopenharmony_ci                                                               bool enable_fp16, char **changeable_weights_name,
3977777dab0Sopenharmony_ci                                                               size_t num);
3987777dab0Sopenharmony_ci
3997777dab0Sopenharmony_ci#ifdef __cplusplus
4007777dab0Sopenharmony_ci}
4017777dab0Sopenharmony_ci#endif
4027777dab0Sopenharmony_ci#endif  // MINDSPORE_INCLUDE_C_API_MODEL_C_H
403