def test_tf_local_data_local_script(): with timeout(minutes=5): script_path = os.path.join(DATA_DIR, 'iris', 'iris-dnn-classifier.py') estimator = TensorFlow(entry_point=script_path, role='SageMakerRole', training_steps=1, evaluation_steps=1, hyperparameters={'input_tensor_name': 'inputs'}, train_instance_count=1, train_instance_type='local', base_job_name='test-tf', sagemaker_session=LocalNoS3Session()) inputs = 'file://' + DATA_PATH estimator.fit(inputs) print('job succeeded: {}'.format(estimator.latest_training_job.name)) endpoint_name = estimator.latest_training_job.name with local_mode_utils.lock(): try: json_predictor = estimator.deploy(initial_instance_count=1, instance_type='local', endpoint_name=endpoint_name) features = [6.4, 3.2, 4.5, 1.5] dict_result = json_predictor.predict({'inputs': features}) print('predict result: {}'.format(dict_result)) list_result = json_predictor.predict(features) print('predict result: {}'.format(list_result)) assert dict_result == list_result finally: estimator.delete_endpoint()
def test_cifar(sagemaker_session): with timeout(minutes=15): script_path = os.path.join(DATA_DIR, 'cifar_10', 'source') dataset_path = os.path.join(DATA_DIR, 'cifar_10', 'data') estimator = TensorFlow(entry_point='resnet_cifar_10.py', source_dir=script_path, role='SageMakerRole', training_steps=20, evaluation_steps=5, train_instance_count=2, train_instance_type='ml.p2.xlarge', sagemaker_session=sagemaker_session, base_job_name='test-cifar') inputs = estimator.sagemaker_session.upload_data( path=dataset_path, key_prefix='data/cifar10') estimator.fit(inputs) print('job succeeded: {}'.format(estimator.latest_training_job.name)) try: with timeout(minutes=15): estimator.deploy(initial_instance_count=1, instance_type='ml.c4.xlarge') finally: try: estimator.delete_endpoint() except Exception: pass
def test_tf(sagemaker_session): with timeout(minutes=15): script_path = os.path.join(DATA_DIR, 'iris', 'iris-dnn-classifier.py') data_path = os.path.join(DATA_DIR, 'iris', 'data') estimator = TensorFlow(entry_point=script_path, role='SageMakerRole', training_steps=1, evaluation_steps=1, hyperparameters={'input_tensor_name': 'inputs'}, train_instance_count=1, train_instance_type='ml.c4.xlarge', sagemaker_session=sagemaker_session, base_job_name='test-tf') inputs = estimator.sagemaker_session.upload_data( path=data_path, key_prefix='integ-test-data/tf_iris') estimator.fit(inputs) print('job succeeded: {}'.format(estimator.latest_training_job.name)) try: with timeout(minutes=15): json_predictor = estimator.deploy(initial_instance_count=1, instance_type='ml.c4.xlarge') result = json_predictor.predict([6.4, 3.2, 4.5, 1.5]) print('predict result: {}'.format(result)) finally: try: estimator.delete_endpoint() except Exception: pass
def test_tf_local_mode(tf_full_version, sagemaker_local_session): local_mode_lock_fd = open(LOCK_PATH, 'w') local_mode_lock = local_mode_lock_fd.fileno() 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'}, train_instance_count=1, train_instance_type='local', base_job_name='test-tf', sagemaker_session=sagemaker_local_session) inputs = estimator.sagemaker_session.upload_data( path=DATA_PATH, key_prefix='integ-test-data/tf_iris') estimator.fit(inputs) print('job succeeded: {}'.format(estimator.latest_training_job.name)) endpoint_name = estimator.latest_training_job.name try: # Since Local Mode uses the same port for serving, we need a lock in order # to allow concurrent test execution. The serving test is really fast so it still # makes sense to allow this behavior. fcntl.lockf(local_mode_lock, fcntl.LOCK_EX) json_predictor = estimator.deploy(initial_instance_count=1, instance_type='local', endpoint_name=endpoint_name) features = [6.4, 3.2, 4.5, 1.5] dict_result = json_predictor.predict({'inputs': features}) print('predict result: {}'.format(dict_result)) list_result = json_predictor.predict(features) print('predict result: {}'.format(list_result)) assert dict_result == list_result finally: estimator.delete_endpoint() time.sleep(5) fcntl.lockf(local_mode_lock, fcntl.LOCK_UN)
def test_tf_local_mode(tf_full_version, sagemaker_local_session): local_mode_lock_fd = open(LOCK_PATH, 'w') local_mode_lock = local_mode_lock_fd.fileno() 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'}, train_instance_count=1, train_instance_type='local', base_job_name='test-tf', sagemaker_session=sagemaker_local_session) inputs = estimator.sagemaker_session.upload_data(path=DATA_PATH, key_prefix='integ-test-data/tf_iris') estimator.fit(inputs) print('job succeeded: {}'.format(estimator.latest_training_job.name)) endpoint_name = estimator.latest_training_job.name try: # Since Local Mode uses the same port for serving, we need a lock in order # to allow concurrent test execution. The serving test is really fast so it still # makes sense to allow this behavior. fcntl.lockf(local_mode_lock, fcntl.LOCK_EX) json_predictor = estimator.deploy(initial_instance_count=1, instance_type='local', endpoint_name=endpoint_name) features = [6.4, 3.2, 4.5, 1.5] dict_result = json_predictor.predict({'inputs': features}) print('predict result: {}'.format(dict_result)) list_result = json_predictor.predict(features) print('predict result: {}'.format(list_result)) assert dict_result == list_result finally: estimator.delete_endpoint() time.sleep(5) fcntl.lockf(local_mode_lock, fcntl.LOCK_UN)
def test_tf_local_mode(sagemaker_local_session): with stopit.ThreadingTimeout(5 * 60, swallow_exc=False): script_path = os.path.join(DATA_DIR, "iris", "iris-dnn-classifier.py") estimator = TensorFlow( entry_point=script_path, role="SageMakerRole", framework_version="1.12", training_steps=1, evaluation_steps=1, hyperparameters={"input_tensor_name": "inputs"}, train_instance_count=1, train_instance_type="local", base_job_name="test-tf", sagemaker_session=sagemaker_local_session, ) inputs = estimator.sagemaker_session.upload_data( path=DATA_PATH, key_prefix="integ-test-data/tf_iris" ) estimator.fit(inputs) print("job succeeded: {}".format(estimator.latest_training_job.name)) endpoint_name = estimator.latest_training_job.name with lock.lock(LOCK_PATH): try: json_predictor = estimator.deploy( initial_instance_count=1, instance_type="local", endpoint_name=endpoint_name ) features = [6.4, 3.2, 4.5, 1.5] dict_result = json_predictor.predict({"inputs": features}) print("predict result: {}".format(dict_result)) list_result = json_predictor.predict(features) print("predict result: {}".format(list_result)) assert dict_result == list_result finally: estimator.delete_endpoint()