Skip to content

Update default versions to TensorFlow 1.6 and MXNet 1.1 #118

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 6 commits into from
Apr 2, 2018
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 5 additions & 2 deletions CHANGELOG.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,13 @@
CHANGELOG
=========

1.1.dev4
1.2.0
========
* feature: Frameworks: Use more idiomatic ECR repository naming scheme

* feature: Add Support for Local Mode
* feature: Estimators: add support for TensorFlow 1.6.0
* feature: Estimators: add support for MXNet 1.1.0
* feature: Frameworks: Use more idiomatic ECR repository naming scheme

1.1.3
========
Expand Down
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ def read(fname):


setup(name="sagemaker",
version="1.1.3",
version="1.2.0",
description="Open source library for training and deploying models on Amazon SageMaker.",
packages=find_packages('src'),
package_dir={'': 'src'},
Expand Down
2 changes: 1 addition & 1 deletion src/sagemaker/mxnet/defaults.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,4 @@
# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
# ANY KIND, either express or implied. See the License for the specific
# language governing permissions and limitations under the License.
MXNET_VERSION = '1.0'
MXNET_VERSION = '1.1'
2 changes: 1 addition & 1 deletion src/sagemaker/tensorflow/defaults.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,4 @@
# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
# ANY KIND, either express or implied. See the License for the specific
# language governing permissions and limitations under the License.
TF_VERSION = '1.5'
TF_VERSION = '1.6'
8 changes: 4 additions & 4 deletions tests/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -56,21 +56,21 @@ def sagemaker_session(sagemaker_client_config, sagemaker_runtime_config, boto_co
sagemaker_runtime_client=runtime_client)


@pytest.fixture(scope='module', params=["1.4", "1.4.1", "1.5", "1.5.0"])
@pytest.fixture(scope='module', params=['1.4', '1.4.1', '1.5', '1.5.0', '1.6', '1.6.0'])
def tf_version(request):
return request.param


@pytest.fixture(scope='module', params=["0.12", "0.12.1", "1.0", "1.0.0"])
@pytest.fixture(scope='module', params=['0.12', '0.12.1', '1.0', '1.0.0', '1.1', '1.1.0'])
def mxnet_version(request):
return request.param


@pytest.fixture(scope='module', params=["1.4.1", "1.5.0"])
@pytest.fixture(scope='module', params=['1.4.1', '1.5.0', '1.6.0'])
def tf_full_version(request):
return request.param


@pytest.fixture(scope='module', params=["0.12.1", "1.0.0"])
@pytest.fixture(scope='module', params=['0.12.1', '1.0.0', '1.1.0'])
def mxnet_full_version(request):
return request.param
32 changes: 15 additions & 17 deletions tests/integ/test_mxnet_train.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,16 +52,28 @@ def test_attach_deploy(mxnet_training_job, sagemaker_session):
predictor.predict(data)


def test_async_fit(sagemaker_session, mxnet_full_version):
def test_deploy_model(mxnet_training_job, sagemaker_session):
endpoint_name = 'test-mxnet-deploy-model-{}'.format(sagemaker_timestamp())

with timeout_and_delete_endpoint_by_name(endpoint_name, sagemaker_session, minutes=20):
desc = sagemaker_session.sagemaker_client.describe_training_job(TrainingJobName=mxnet_training_job)
model_data = desc['ModelArtifacts']['S3ModelArtifacts']
script_path = os.path.join(DATA_DIR, 'mxnet_mnist', 'mnist.py')
model = MXNetModel(model_data, 'SageMakerRole', entry_point=script_path, sagemaker_session=sagemaker_session)
predictor = model.deploy(1, 'ml.m4.xlarge', endpoint_name=endpoint_name)

training_job_name = ""
data = numpy.zeros(shape=(1, 1, 28, 28))
predictor.predict(data)


def test_async_fit(sagemaker_session):
endpoint_name = 'test-mxnet-attach-deploy-{}'.format(sagemaker_timestamp())

with timeout(minutes=5):
script_path = os.path.join(DATA_DIR, 'mxnet_mnist', 'mnist.py')
data_path = os.path.join(DATA_DIR, 'mxnet_mnist')

mx = MXNet(entry_point=script_path, role='SageMakerRole', framework_version=mxnet_full_version,
mx = MXNet(entry_point=script_path, role='SageMakerRole',
train_instance_count=1, train_instance_type='ml.c4.xlarge',
sagemaker_session=sagemaker_session)

Expand All @@ -84,20 +96,6 @@ def test_async_fit(sagemaker_session, mxnet_full_version):
predictor.predict(data)


def test_deploy_model(mxnet_training_job, sagemaker_session):
endpoint_name = 'test-mxnet-deploy-model-{}'.format(sagemaker_timestamp())

with timeout_and_delete_endpoint_by_name(endpoint_name, sagemaker_session, minutes=20):
desc = sagemaker_session.sagemaker_client.describe_training_job(TrainingJobName=mxnet_training_job)
model_data = desc['ModelArtifacts']['S3ModelArtifacts']
script_path = os.path.join(DATA_DIR, 'mxnet_mnist', 'mnist.py')
model = MXNetModel(model_data, 'SageMakerRole', entry_point=script_path, sagemaker_session=sagemaker_session)
predictor = model.deploy(1, 'ml.m4.xlarge', endpoint_name=endpoint_name)

data = numpy.zeros(shape=(1, 1, 28, 28))
predictor.predict(data)


def test_failed_training_job(sagemaker_session, mxnet_full_version):
with timeout(minutes=15):
script_path = os.path.join(DATA_DIR, 'mxnet_mnist', 'failure_script.py')
Expand Down
4 changes: 1 addition & 3 deletions tests/integ/test_tf.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,14 +55,12 @@ def test_tf(sagemaker_session, tf_full_version):
assert dict_result == list_result


def test_tf_async(sagemaker_session, tf_full_version):
training_job_name = ""
def test_tf_async(sagemaker_session):
with timeout(minutes=5):
script_path = os.path.join(DATA_DIR, 'iris', 'iris-dnn-classifier.py')

estimator = TensorFlow(entry_point=script_path,
role='SageMakerRole',
framework_version=tf_full_version,
training_steps=1,
evaluation_steps=1,
hyperparameters={'input_tensor_name': 'inputs'},
Expand Down