如何使用 Estimator 在 sagemaker 中保存 model.tar.gz 文件

2024-01-01

我无法使用以下代码将模型工件保存在 S3 存储桶中。我成功地将结果保存在输出数据路径中,并且训练作业已成功完成。我正在使用下面的代码。

任何人都可以确认我们如何使用以下代码将 model_artifacts 保存在 model-dir 中。

# train.py code
#!/usr/bin/env python

from __future__ import print_function
import os
import sys
import pandas as pd

prefix = '/opt/ml/'

input_dir = prefix + 'input/data'
output_data_dir = os.path.join(prefix, 'output/data')
model_dir = os.path.join(prefix, 'model')

channel_name='training'
training_path = os.path.join(input_dir, channel_name)

# The function to execute the training.
def train():
    print('Starting the training.')
    # Take the set of files and read them all into a single pandas dataframe
    input_files = [ os.path.join(training_path, file) for file in os.listdir(training_path) ]
    raw_data = [ pd.read_csv(file, header=None) for file in input_files ]
    input_data = pd.concat(raw_data)
    
    print(pd.DataFrame(input_data))
    
    output_data = input_data.to_csv(os.path.join(output_data_dir, 'output.csv'), header=False, index=False)
    

if __name__ == '__main__':
    train()

# Below are the S3 input and output paths :
output_path = "s3://{}/{}".format(bucket, prefix_output)
S3_input = "s3://{}/{}".format(bucket, prefix)

#Estimator Code

test_estimator = sagemaker.estimator.Estimator(ecr_image,                                # ECR image arn,
                                          role=role,                                 # execution role
                                          instance_count=1,                     # no. of sagemaker instances
                                          instance_type='ml.m4.xlarge',         # instance type
                                          output_path=output_path,              # output path to store model outputs
                                          base_job_name='sagemaker-job1',       # job name prefix
                                          sagemaker_session=session             # session
                                         )

# Launch instance and start training
test_estimator.fit({'training':S3_input})

这段代码缺少什么?


Sagemaker 自动保存到output_path模型目录中的所有内容,因此其中的所有内容/opt/ml/model。如果训练作业成功完成,最后 Sagemaker 会获取该文件夹中的所有内容,创建一个model.tar.gz并上传到您的output_path在与训练作业同名的文件夹中(sagemaker 创建此文件夹)。 您还可以使用环境变量SM_OUTPUT_DATA_DIR,默认情况下指向/opt/ml/output/data并放置非模型训练工件(例如评估结果),Sagemaker 将从名为output.tar.gz并将其上传到同一文件夹中model.tar.gz on S3.

我不明白你所说的“结果”是什么意思,但是无论你想把什么内容放入该档案中,都取决于你将其保存在你的model_dir。 例如,我如何将模型保存在 json 和 H5 中,第一个将在output.tar.gz存档,后者在model.tar.gz

output_artifacts = os.environ.get('SM_OUTPUT_DATA_DIR')

with open(os.path.join(output_artifacts,"model.json"), "w") as json_file:
        json_file.write(model_json) 

model_directory = os.environ.get('SM_MODEL_DIR')
model.save(os.path.join(model_directory, 'model.h5'))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Estimator 在 sagemaker 中保存 model.tar.gz 文件 的相关文章

随机推荐