easy_rec.python.inference

easy_rec.python.inference.predictor

class easy_rec.python.inference.predictor.PredictorInterface(model_path, model_config=None)[source]

Bases: object

version = 1
__init__(model_path, model_config=None)[source]

Init tensorflow session and load tf model.

Parameters:
  • model_path – init model from this directory

  • model_config – config string for model to init, in json format

abstract predict(input_data, batch_size)[source]

Using session run predict a number of samples using batch_size.

Parameters:
  • input_data – a list of numpy array, each array is a sample to be predicted

  • batch_size – batch_size passed by the caller, you can also ignore this param and use a fixed number if you do not want to adjust batch_size in runtime

Returns:

a list of dict, each dict is the prediction result of one sample

eg, {“output1”: value1, “output2”: value2}, the value type can be python int str float, and numpy array

Return type:

result

get_output_type()[source]

Get output types of prediction.

In this function user should return a type dict, which indicates which type of data should the output of predictor be converted to.

In this function user should return a type dict, which indicates which type of data should the output of predictor be converted to * type json, data will be serialized to json str

  • type image, data will be converted to encode image binary and write to oss file, whose name is output_dir/${key}/${input_filename}_${idx}.jpg, where input_filename is extracted from url, key corresponds to the key in the dict of output_type, if the type of data indexed by key is a list, idx is the index of element in list, otherwhile ${idx} will be empty

  • type video, data will be converted to encode video binary and write to oss file,

eg: return {

‘image’: ‘image’, ‘feature’: ‘json’

}

indicating that the image data in the output dict will be save to image file and feature in output dict will be converted to json

classmethod create_class(name)
class easy_rec.python.inference.predictor.PredictorImpl(model_path, profiling_file=None, use_latest=False)[source]

Bases: object

__init__(model_path, profiling_file=None, use_latest=False)[source]

Impl class for predictor.

Parameters:
  • model_path – saved_model directory or frozenpb file path

  • profiling_file – profiling result file, default None. if not None, predict function will use Timeline to profiling prediction time, and the result json will be saved to profiling_file

  • use_latest – use latest saved_model.pb if multiple ones are found, else raise an exception.

property input_names
property output_names
search_pb(directory)[source]

Search pb file recursively in model directory. if multiple pb files exist, exception will be raised.

If multiple pb files exist, exception will be raised.

Parameters:

directory – model directory.

Returns:

directory contain pb file

predict(input_data_dict, output_names=None)[source]

Predict input data with loaded model.

Parameters:
  • input_data_dict – a dict containing all input data, key is the input name, value is the corresponding value

  • output_names – if not None, will fetch certain outputs, if set None, will return all the output info according to the output info in model signature

Returns:

a dict of outputs, key is the output name, value is the corresponding value

class easy_rec.python.inference.predictor.Predictor(model_path, profiling_file=None, fg_json_path=None, use_latest=True)[source]

Bases: PredictorInterface

__init__(model_path, profiling_file=None, fg_json_path=None, use_latest=True)[source]

Initialize a Predictor.

Parameters:
  • model_path – saved_model directory or frozenpb file path

  • profiling_file – profiling result file, default None. if not None, predict function will use Timeline to profiling prediction time, and the result json will be saved to profiling_file

  • fg_json_path – fg.json file

  • use_latest – use latest saved_model.pb if multiple one exists.

property input_names

Input names of the model.

Returns:

a list, which conaining the name of input nodes available in model

property output_names

Output names of the model.

Returns:

a list, which conaining the name of outputs nodes available in model

property out_of_range_exception
load_to_table(output_path, slice_num, slice_id)[source]
predict_impl(input_path, output_path, reserved_cols='', output_cols=None, batch_size=1024, slice_id=0, slice_num=1)[source]

Predict table input with loaded model.

Parameters:
  • input_path – table/file_path to read

  • output_path – table/file_path to write

  • reserved_cols – columns to be copy to output_table, comma separated, such as “a,b”

  • output_cols – output columns, comma separated, such as “y float, embedding string”, the output names[y, embedding] must be in saved_model output_names

  • batch_size – predict batch size

  • slice_id – when multiple workers write the same table, each worker should be assigned different slice_id, which is usually slice_id

  • slice_num – table slice number

predict(input_data_dict_list, output_names=None, batch_size=1)[source]

Predict input data with loaded model.

Parameters:
  • input_data_dict_list – list of dict

  • output_names – if not None, will fetch certain outputs, if set None, will

  • batch_size – batch_size used to predict, -1 indicates to use the real batch_size

Returns:

a list of dict, each dict contain a key-value pair for output_name, output_value

batch(data_list)[source]

Batching the data.

classmethod create_class(name)