更新时间:2021-03-18 GMT+08:00
分享

AIModelManager

模型管理类。该类在ai_model_manager.h中定义。

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

       /*
        * @brief 设置动态batch接口,用户不需要调用该接口。
        * @param [in] inputDim 模型输入尺寸
        * @param [in] input 输入数据
        * @param [out] inputIndex 需要设置动态batch输入的序号, 从0开始
        * @param [in] batchNumber 动态batch数
        * @return SUCCESS 成功
        * @return 其他 失败
        */
        AIStatus SetInputDynamicBatch(const vector<TensorDimension>& inputDim, std::vector <std::shared_ptr <IAITensor> > &input,
            uint32_t inputIndex, uint32_t batchNumber);

       /*
        * @brief 是否可以预分配输出内存,该接口由业务NNNode实现,默认值为true.
        */
        virtual bool IsPreAllocateOutputMem() override;
        
       /*
        * @brief 获取AINNNodeDescription对象.
        */
        static AINNNodeDescription GetDescription();

        /*
        * @brief 获取已加载模型的输入输出尺寸
        * @param [in] model_name 模型名字
        * @param [out] input_tensor 模型输入尺寸
        * @param [out] output_tensor 模型输出尺寸
        * @return SUCCESS 成功
        * @return 其他 失败
        */
        AIStatus GetModelIOTensorDim(const std::string& model_name,
            std::vector<TensorDimension>& input_tensor, std::vector<TensorDimension>& output_tensor);

        /*
        * @brief 设置线程推理请求ID
        * @param [in] request_id 模型名字
        * @return 无
        */
        static void SetRequestId(uint64_t request_id);

        ~AIModelManager();

#ifdef __LITE__
        /*
        * @brief 闲置超时调用,释放资源。实现时调用的是UnloadModels。
        */
        virtual AIStatus IdleRelease();
        /*
        * @brief 超时后恢复,包含打开设备,加载模型等。实现时调用的是LoadModels。
        */
        virtual AIStatus IdleResume();
#endif // __LITE__

    private:
        AIModelManagerImpl* impl_;
    };
分享:

    相关文档

    相关产品