Updated on 2022-03-13 GMT+08:00

AIModelManager

Model manager class. This class is defined in ai_model_manager.h.

    class AIModelManager : public IAINNNode
    {
    public:
        AIModelManager();

       /*
       * @brief   Set the dynamic batch feature. This API does not need to be called by users.
        * @param [in] inputDim   Input dimension of the model
        * @param [in] input   Input data
        * @param [out] inputIndex   Set the sequence number of a dynamic batch for input, starting from 0.
        * @param [in] batchNumber   Dynamic batch size
        * @return SUCCESS   Success
       * @return  Other: failure
        */
        AIStatus SetInputDynamicBatch(const vector<TensorDimension>& inputDim, std::vector <std::shared_ptr <IAITensor> > &input,
            uint32_t inputIndex, uint32_t batchNumber);

       /*
        * @brief   Whether to pre-allocate the output memory. This API is implemented by the NNNode service. The default value is true.
        */
        virtual bool IsPreAllocateOutputMem() override;
        
       /*
        * @brief Obtain the AINNNodeDescription object.
        */
        static AINNNodeDescription GetDescription();

        /*
        * @brief  Obtain the input and output dimensions of the loaded model.
        * @param [in] model_name  Model name
        * @param [out] input_tensor   Input dimension of the model
        * @param [out] output_tensor  Output dimension of the model
        * @return SUCCESS   Success
       * @return  Other: failure
        */
        AIStatus GetModelIOTensorDim(const std::string& model_name,
            std::vector<TensorDimension>& input_tensor, std::vector<TensorDimension>& output_tensor);

        /*
       * @brief  Set the thread inference request ID.
        * @param [in] request_id  Model name
        * @return None
        */
        static void SetRequestId(uint64_t request_id);

        ~AIModelManager();

#ifdef __LITE__
        /*
        * @brief   Release resources in the case of idle state and timeout. UnloadModels is called for implementation.
        */
        virtual AIStatus IdleRelease();
        /*
        * @brief recovers   Resume services after timeout, including enabling a device and loading a model. LoadModels is called for implementation.
        */
        virtual AIStatus IdleResume();
#endif // __LITE__

    private:
        AIModelManagerImpl* impl_;
    };