aws / sagemaker-mxnet-training-toolkit

Toolkit for running MXNet training scripts on SageMaker. Dockerfiles used for building SageMaker MXNet Containers are at https://github.com/aws/deep-learning-containers.
Apache License 2.0
60 stars 55 forks source link

How to support multiple model inputs? #58

Open iluoyi opened 5 years ago

iluoyi commented 5 years ago

https://github.com/aws/sagemaker-mxnet-container/blob/ee9098c8c2de6a635dcd9f4b0819dc5340061cde/src/sagemaker_mxnet_container/serving.py#L228

If my mxnet model takes 2 data inputs (both are float arrays), how should I make it work at this point?

But I got errors on the server side:

Traceback (most recent call last):
File "/usr/local/lib/python3.5/dist-packages/sagemaker_containers/_functions.py", line 84, in wrapper
return fn(*args, **kwargs)
File "/usr/local/lib/python3.5/dist-packages/sagemaker_mxnet_container/serving.py", line 229, in default_input_fn
[data_shape] = self._model.data_shapes

ValueError: too many values to unpack (expected 1)
laurenyu commented 5 years ago

sorry for the delayed response @iluoyi!

We don't natively support multiple inputs in our default hosting functions, but you can override the defaults by providing your own transform_fn in your entry point code.

Here is an example of where we've overridden the default transform_fn: https://github.com/awslabs/amazon-sagemaker-examples/blob/master/sagemaker-python-sdk/mxnet_gluon_mnist/mnist.py#L166-L183. (Unfortunately, I don't think we have an example of a model accepting multiple inputs yet.)

ZHAO0189 commented 5 years ago

same question here. I trained my own model which requires two inputs and deployed it as endpoint. But when I called predict(), the error was "Expects arg[1] to be int32 but float is provided".

laurenyu commented 4 years ago

@ZHAO0189 sorry for the slow response. that sounds like it's likely an issue with your serving entry point code. can you share your inference script?