def METHOD_NAME(
    self,
    df,
    args
):
    request = ml_pb2.PredictCall(context=self.context, df=pickle.dumps(df), args=json.dumps(args))
    resp = self.stub.Predict(request)
    logger.info("%s.learn: returned error - %s, error_message - %s", self.__class__.__name__, resp.error_code, resp.error_message)
    if resp.error_code and resp.error_message:
        raise Exception(resp.error_message)
    return pickle.loads(resp.data_frame)