Развертывание конечной точки SageMaker не удается найти файл зависимости - PullRequest
0 голосов
/ 29 апреля 2020

Развертывание конечной точки SageMaker не удается найти файл зависимости.

В следующем примере я использую "lables.txt" в функции load_lables(), которая вызывается в model_fn() function

структура папок проекта

--model (directory)
|--code (directory)
   |--requirements.txt
   |--train.py (entry point)
   |--labels.txt
|--notebook_train_deploy.ipynb

train.py

def load_labels(file_name_category='labels.txt'):

    labels = list()
    with open(file_name_category) as label_file:
        for line in label_file:
            labels.append(line.strip().split(' ')[0][:])
    _out_labels = tuple(labels)

    return _out_labels

def model_fn(model_dir):

    labels = load_labels()
    num_labels = len(labels)    
    device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')

    model_ft = models.resnet18(pretrained=True)
    .
    .
    .  
    with open(os.path.join(model_dir, 'model.pth'), 'rb') as f:
        model_ft .load_state_dict(torch.load(f))
    model_ft .eval()

    return model_ft .to(device)

notebook_train_deploy.ipynb

pytorch_model = PyTorchModel(model_data='s3://sagemaker-poc/model.tar.gz', 
                             role=role,
                             source_dir='code',
                             entry_point='train.py',
                             framework_version='1.0.0',
                             dependencies=['./code/labels.txt']
                            )

predictor = pytorch_model.deploy(
    instance_type='ml.t2.medium', 
    initial_instance_count=1)

ОШИБКА

algo-1-esw8d_1  | [2020-04-29 19:33:40 +0000] [22] [ERROR] Error handling request /ping
algo-1-esw8d_1  | Traceback (most recent call last):
algo-1-esw8d_1  |   File "/usr/local/lib/python3.6/dist-packages/sagemaker_containers/_functions.py", line 85, in wrapper
algo-1-esw8d_1  |     return fn(*args, **kwargs)
algo-1-esw8d_1  |   File "/usr/local/lib/python3.6/dist-packages/train.py", line 49, in model_fn
algo-1-esw8d_1  |     labels = load_labels()
algo-1-esw8d_1  |   File "/usr/local/lib/python3.6/dist-packages/train.py", line 25, in load_labels
algo-1-esw8d_1  |     with open(os.path.join(file_name_category)) as label_file:
algo-1-esw8d_1  | FileNotFoundError: [Errno 2] No such file or directory: 'labels.txt'
...