在 Sagemaker 中执行 Sagemaker.sklearn.processing.SKLearnProcessor.run 作业时出现延迟

发布于 2025-01-09 22:13:31 字数 1143 浏览 0 评论 0原文

我使用 Sagemaker 的 SKLearnProcessor.run 来执行我的训练工作。从我的处理作业开始执行到读取processing.py 文件中的第一行代码,有 4-5 分钟的延迟。 作业开始执行后,无论输入文件有多大,作业都会快速完成执行,这符合 Sagemaker 处理能力的预期。

我的问题是,我能否以某种方式减少开始执行processing.py 文件所需的时间。

sklearn_job.run(code= os.path.join('s3://',bucket, code_prefix, 'preprocessing_v2.py'),

'''

            inputs=[ProcessingInput(
                input_name='raw1',
                source= os.path.join('s3://',bucket, input_prefix, 'file1.csv'),
                destination='/opt/ml/processing/input1'),
                   ProcessingInput(
                input_name='raw2',
                source= os.path.join('s3://',bucket, input_prefix, 'file2.csv'),
                destination='/opt/ml/processing/input2')],
            outputs=[ProcessingOutput(output_name='sample_file',
                                      source='/opt/ml/processing/dataset',
                                      destination=os.path.join('s3://',bucket, output_prefix))],
                  
            arguments=["--train_size", "0.8","--test_size","0.2"],
            wait=True, logs=True,
           )

'''

I use Sagemaker's SKLearnProcessor.run for executing my training job. Between the time my processing job starts executing and the time my first line of the code in the processing.py file is read, there is a delay of 4-5 minutes.
After the job starts executing, irrespective of how large the input file is, the job completes execution quickly, as is expected from Sagemaker's processing capabilities.

My question is, can I somehow reduce the time it takes to start executing my processing.py file.

sklearn_job.run(code= os.path.join('s3://',bucket, code_prefix, 'preprocessing_v2.py'),

'''

            inputs=[ProcessingInput(
                input_name='raw1',
                source= os.path.join('s3://',bucket, input_prefix, 'file1.csv'),
                destination='/opt/ml/processing/input1'),
                   ProcessingInput(
                input_name='raw2',
                source= os.path.join('s3://',bucket, input_prefix, 'file2.csv'),
                destination='/opt/ml/processing/input2')],
            outputs=[ProcessingOutput(output_name='sample_file',
                                      source='/opt/ml/processing/dataset',
                                      destination=os.path.join('s3://',bucket, output_prefix))],
                  
            arguments=["--train_size", "0.8","--test_size","0.2"],
            wait=True, logs=True,
           )

'''

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

纸短情长 2025-01-16 22:13:31

感谢您发帖!您可以通过以下方式减少作业持续时间:

  1. 使用轻型 docker 映像(如果您使用托管映像,这不是一个选项)
  2. 使用小型数据集来最大程度地减少下载时间

除此之外,实际上您仍然会面临几分钟的“冷启动”(使用 Sklearn Estimator)在 CPU 实例上,我发现很少超过 1-2),以便 SageMaker 启动和配置计算集群。

这种“冷启动”是该服务的一个良好功能的症状,这是计算集群的瞬态性质:每个作业执行都在新的 EC2 集群上运行(根据您的配置,有 1 台或 N 台机器)。这有利于安全性、可扩展性和容错能力。

thanks for posting! You can reduce the job duration by:

  1. Using light docker images (if you use a managed image that's not an option)
  2. Using small datasets to minimize download times

beyond that indeed you will still face a "cold start" of few minutes (with Sklearn Estimator on CPU instances I found it's rarely more than 1-2), for SageMaker to launch and configure the compute cluster.

This "cold start" is a symptom of a good feature of the service, which is the transient nature of compute clusters: every job execution runs on a new EC2 cluster (1 or N machines based on your config). This is good for security, scalability and fault tolerance.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文