API调用方法

获取方法

https://github.com/ucloud/uai-sdk

git clone https://github.com/ucloud/uai-sdk.git

Keras相关文件路径

uai-sdk

  examples/
    keras/
  uai/
    arch/
      __init__.py
      keras_model.py

简介

KerasAiUcloudModel 位于SDK文件uai/arch/keras_model.py文件中,所有Keras Model类都需要继承KerasAiUcloudModel类. 并实现KerasAiUcloudModel 类中的三个函数:

__init__(self, conf=None, model_type='keras')
load_model(self) 
execute(self, data, batch_size)

__init__(self, conf=None, model_type='keras')

用于初始化客户自定义的Keras Model,可以直接定义为:

def __init__(self, conf=None, model_type='keras'):
    super(TFAiUcloudModel, self).__init__(conf, model_type)

KerasAiUcloudModel 类的__init__函数会执行如下操作: 1 创建self.output对象,可以通过self.output['name'] = object 在load_model和execute之间传递参数
2 使用内置函数_parse_conf()来解析配置文件(例如解析模型文件路径等)

  • 如果Keras的配置中指定了 all_one_file == true 模型的路径为 self.model_file
  • 如果Keras的配置中指定了all_one_file == false 模型的路径包括两部分: self.model_arc_file self.model_weight_file 3 调用 load_model() 来加载模型 4 如果 load_model() 有返回值,将会被保存在self.model变量中

load_model(self)

用于实现模型加载函数,在TFAiUcloudModel的__init__函数会自动调用load_model()。该函数需要包含以下几个元素:

  1. 定义解析模型文件
  2. 定义加载模型
  3. 返回加载好的模型对象
def load_model(self):
    #TODO: Open Model File
    #TODO: Load Model

    Return model_obj

execute(self, data, batch_size)

用于实现在线inference的执行逻辑。调用execute函数前,系统会自动对累积的请求进行batching,具体batching的方法可以参见https://github.com/ucloud/uai-sdk-httpserver/blob/master/inference.py 中inference_run函数的实现.

参数说明:

  • 入参:

data,为一个数组类型,数组中对象的个数为batch_size,data 数组中的每一个对象对应一个外部请求的输入 batch_size,表示data数值中对象的个数

  • 返回值:

返回值必须也是一个数组类型,大小同样为batch_size。该数组中的每一个对象都代表一个请求的返回值。 注:请保证返回的对象和入参data中的对象是一一对应关系。

def execute(self, data, batch_size):
    #TODO: Get your model from self.model
    #TODO: Pretreatment of Data
    #TODO: Predict Testing Data
    #TODO: Return Results

详细实例用法可参考Keras MNIST 案例