in container/neo_template_mxnet_byom.py [0:0]
def initialize(self, context):
self._context = context
self._batch_size = context.system_properties.get('batch_size')
model_dir = context.system_properties.get('model_dir')
print('Loading the model from directory {}'.format(model_dir))
USE_GPU = os.getenv('USE_GPU', None)
if USE_GPU == '1':
self.model = dlr.DLRModel(model_dir, dev_type='gpu', error_log_file=SAGEMAKER_ERROR_LOG_FILE)
else:
self.model = dlr.DLRModel(model_dir, error_log_file=SAGEMAKER_ERROR_LOG_FILE)
# Load user module
SAGEMAKER_SUBMIT_DIRECTORY = os.getenv('SAGEMAKER_SUBMIT_DIRECTORY', None)
tempdir = tempfile.gettempdir()
source_tar = os.path.join(tempdir, 'script.tar.gz')
download_s3_resource(SAGEMAKER_SUBMIT_DIRECTORY, source_tar)
script_name = None
with tarfile.open(source_tar, 'r:*') as tar:
for member_info in tar.getmembers():
if member_info.name.endswith('.py'):
if script_name is not None:
raise RuntimeError('{} contains more than one *.py file'\
.format(source_tar))
print('Importing user module from {}...'.format(member_info.name))
tar.extract(member_info, path=tempdir)
script_name = member_info.name
if script_name is None:
raise RuntimeError('{} contains no *.py file'.format(source_tar))
cur_dir = tempdir
script_path = script_name[:-3]
if '/' in script_path:
file_depth = len(script_path.split('/')) - 1
for i in range(file_depth):
cur_dir = os.path.join(cur_dir, script_name[:-3].split('/')[i])
script_path = script_path.split('/')[file_depth]
self.user_module = import_user_module(cur_dir, script_path)
self.input_names = self.model.get_input_names()
self.initialized = True