def main(): sagemaker_session = LocalSession() sagemaker_session.config = {'local': {'local_code': True}} # For local training a dummy role will be sufficient role = 'arn:aws:iam::111111111111:role/service-role/AmazonSageMaker-ExecutionRole-20200101T000001' print('Deploying local mode endpoint') print( 'Note: if launching for the first time in local mode, container image download might take a few minutes to complete.' ) pytorch_model = PyTorchModel(model_data='./model/model.tar.gz', role=role, framework_version="1.7.1", source_dir="code", py_version="py3", entry_point="inference.py") predictor = pytorch_model.deploy(initial_instance_count=1, instance_type='local') predictor.serializer = sagemaker.serializers.JSONSerializer() predictor.deserializer = sagemaker.deserializers.JSONDeserializer() result = predictor.predict("אני אוהב לעבוד באמזון") print('result: {}'.format(result)) predictor.delete_endpoint(predictor.endpoint)
def main(): testloader = download_training_data() sagemaker_session = LocalSession() sagemaker_session.config = {'local': {'local_code': True}} # For local training a dummy role will be sufficient role = 'arn:aws:iam::111111111111:role/service-role/AmazonSageMaker-ExecutionRole-20200101T000001' print('Starting model training') print( 'Note: if launching for the first time in local mode, container image download might take a few minutes to complete.' ) cifar10_estimator = PyTorch(entry_point='cifar10_pytorch.py', source_dir='./code', role=role, framework_version='1.7.1', py_version='py3', instance_count=1, instance_type='local', hyperparameters={ 'epochs': 1, }) cifar10_estimator.fit('file://./data/') print('Deploying local mode endpoint') predictor = cifar10_estimator.deploy(initial_instance_count=1, instance_type='local') do_inference_on_local_endpoint(predictor, testloader) predictor.delete_endpoint(predictor.endpoint) predictor.delete_model()
def main(): session = LocalSession() session.config = {'local': {'local_code': True}} role = DUMMY_IAM_ROLE model_dir = 's3://tensorflow-script-mode-local-model-inference/model.tar.gz' model = TensorFlowModel( entry_point='inference.py', source_dir='./code', role=role, model_data=model_dir, framework_version='2.3.0', ) print('Deploying endpoint in local mode') predictor = model.deploy( initial_instance_count=1, instance_type='local', ) dummy_inputs = { 'bucket_name': 'tensorflow-script-mode-local-model-inference', 'object_name': 'instances.json' } predictions = predictor.predict(dummy_inputs) print("predictions: {}".format(predictions)) print('About to delete the endpoint') predictor.delete_endpoint(predictor.endpoint_name) predictor.delete_model()
def main(): test_loader = download_data_for_inference() sagemaker_session = LocalSession() sagemaker_session.config = {'local': {'local_code': True}} # For local training a dummy role will be sufficient role = DUMMY_IAM_ROLE model_dir = 's3://aws-ml-blog/artifacts/pytorch-script-mode-local-model-inference/model.tar.gz' model = PyTorchModel( role=role, model_data=model_dir, framework_version='1.8', py_version='py3', entry_point='inference.py' ) print('Deploying endpoint in local mode') print( 'Note: if launching for the first time in local mode, container image download might take a few minutes to complete.') predictor = model.deploy( initial_instance_count=1, instance_type='local', ) do_inference_on_local_endpoint(predictor, test_loader) predictor.delete_endpoint(predictor.endpoint)
def main(): download_training_and_eval_data() sagemaker_session = LocalSession() sagemaker_session.config = {'local': {'local_code': True}} # For local training a dummy role will be sufficient role = 'arn:aws:iam::111111111111:role/service-role/AmazonSageMaker-ExecutionRole-20200101T000001' print('Starting model training') mnist_estimator = TensorFlow( entry_point='mnist_tf2.py', role=role, instance_count=1, instance_type='local', framework_version='2.3.0', py_version='py37', distribution={'parameter_server': { 'enabled': True }}) mnist_estimator.fit("file://./data/") print('Deploying local mode endpoint') predictor = mnist_estimator.deploy(initial_instance_count=1, instance_type='local') do_inference_on_local_endpoint(predictor) predictor.delete_endpoint(predictor.endpoint) predictor.delete_model()
def get_config(): print('Will run training locally in a container image.') session = LocalSession() session.config = {'local': {'local_code': True}} instance_type = 'local' training_dataset_path = "file://./data/" role = DUMMY_IAM_ROLE # not needed in local training s3_data_prefix = None # not needed in local training bucket = None # not needed in local training config = { 's3_data_prefix': s3_data_prefix, 'sagemaker_session': session, 'bucket': bucket, 'instance_type': instance_type, 'training_dataset_path': training_dataset_path, 'role': role} return config
def main(): session = LocalSession() session.config = {'local': {'local_code': True}} role = DUMMY_IAM_ROLE model_dir = 's3://aws-ml-blog/artifacts/tensorflow-script-mode-local-model-inference/model.tar.gz' model = TensorFlowModel( entry_point='inference.py', source_dir='./code', role=role, model_data=model_dir, framework_version='2.3.0', ) print('Deploying endpoint in local mode') print( 'Note: if launching for the first time in local mode, container image download might take a few minutes to complete.' ) predictor = model.deploy( initial_instance_count=1, instance_type='local', ) print('Endpoint deployed in local mode') dummy_inputs = { 'bucket_name': 'aws-ml-blog', 'object_name': 'artifacts/tensorflow-script-mode-local-model-inference/instances.json' } predictions = predictor.predict(dummy_inputs) print("predictions: {}".format(predictions)) print('About to delete the endpoint') predictor.delete_endpoint(predictor.endpoint_name)
def main(): sagemaker_session = LocalSession() sagemaker_session.config = {'local': {'local_code': True}} # For local training a dummy role will be sufficient role = DUMMY_IAM_ROLE model_dir = 's3://aws-ml-blog/artifacts/pytorch-nlp-script-mode-local-model-inference/model.tar.gz' test_data = pd.read_csv('./data/test_data.csv', header=None) print(f'test_data: {test_data}') model = PyTorchModel(role=role, model_data=model_dir, framework_version='1.7.1', source_dir='code', py_version='py3', entry_point='inference.py') print('Deploying endpoint in local mode') print( 'Note: if launching for the first time in local mode, container image download might take a few minutes to complete.' ) predictor = model.deploy( initial_instance_count=1, instance_type='local', ) predictor.serializer = sagemaker.serializers.CSVSerializer() predictor.deserializer = sagemaker.deserializers.CSVDeserializer() predictions = predictor.predict(test_data.to_csv(header=False, index=False)) print(f'predictions: {predictions}') predictor.delete_endpoint(predictor.endpoint)
def get_config(mode): assert mode is CLOUD_MODE or mode is LOCAL_MODE, f'unknown mode selected: {mode}' if mode == CLOUD_MODE: ## REPLACE WITH A VALID IAM ROLE - START ## role = DUMMY_IAM_ROLE ## REPLACE WITH A VALID IAM ROLE - END ## assert role is not DUMMY_IAM_ROLE, "For cloud mode set a valid sagemaker iam role" print('Will run training on an ML instance in AWS.') session = sagemaker.Session() bucket = session.default_bucket() s3_data_prefix = 'tensorflow_script_mode_cloud_training/mnist/' instance_type = 'ml.m5.large' training_dataset_path = 's3://' + bucket + '/' + s3_data_prefix else: # mode == LOCAL_MODE print('Will run training locally in a container image.') session = LocalSession() session.config = {'local': {'local_code': True}} instance_type = 'local' training_dataset_path = "file://./data/" role = DUMMY_IAM_ROLE # not needed in local training s3_data_prefix = None # not needed in local training bucket = None # not needed in local training config = { 'mode': mode, 's3_data_prefix': s3_data_prefix, 'sagemaker_session': session, 'bucket': bucket, 'instance_type': instance_type, 'training_dataset_path': training_dataset_path, 'role': role } return config
from tensorflow.keras import datasets import numpy as np from sagemaker.tensorflow import TensorFlow import os from sagemaker.local import LocalSession sagemaker_role = 'arn:aws:iam::70******AccountId:role/RoleNameHere' sagemaker_session = LocalSession() sagemaker_session.config = {'local': {'local_code': True}} def sagemaker_estimator(sagemaker_role, code_entry, code_dir, hyperparameters): sm_estimator = TensorFlow(entry_point=code_entry, source_dir=code_dir, role=sagemaker_role, instance_type='local', instance_count=1, model_dir='/opt/ml/model', hyperparameters=hyperparameters, output_path='file://{}/model/'.format( os.getcwd()), framework_version='2.2', py_version='py37', script_mode=True) return sm_estimator def sagemaker_local_training(local_estimator, train_data_local): local_estimator.fit({'training': train_data_local}) return local_estimator