예제 #1
0
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)
예제 #2
0
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()
예제 #3
0
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)
예제 #5
0
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)
예제 #8
0
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