Hello, I am experiencing an issue while using SageMaker to build a machine learning model. in Sagemaker local mode, I am facing an issue that says "python3: can't open file '/opt/ml/processing/code/processing_script.py': [Errno 2] No such file or directory." Even though the file is present in the correct location, the same code works fine in the normal mode. I am running my project in vscode dev conatiner and inside the dev container i am trying out the sagemaker local mode. Please let me know what could possibly be wrong with the following code.
Error
INFO:sagemaker.local.image:docker command: docker-compose -f /tmp/tmpx5_z74cs/docker-compose.yaml up --build --abort-on-container-exit
Creating 5ktwpjv1ug-algo-1-5bua0 ...
Creating 5ktwpjv1ug-algo-1-5bua0 ... done
Attaching to 5ktwpjv1ug-algo-1-5bua0
5ktwpjv1ug-algo-1-5bua0 | python3: can't open file '/opt/ml/processing/input/code/processing_script.py': [Errno 2] No such file or directory
5ktwpjv1ug-algo-1-5bua0 exited with code 2
2
Aborting on container exit...
Traceback (most recent call last):
File "/usr/local/lib/python3.8/dist-packages/sagemaker/local/image.py", line 166, in process
_stream_output(process)
File "/usr/local/lib/python3.8/dist-packages/sagemaker/local/image.py", line 916, in _stream_output
raise RuntimeError("Process exited with code: %s" % exit_code)
RuntimeError: Process exited with code: 2
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "main2.py", line 20, in <module>
processor.run(
File "/usr/local/lib/python3.8/dist-packages/sagemaker/workflow/pipeline_context.py", line 272, in wrapper
return run_func(*args, **kwargs)
File "/usr/local/lib/python3.8/dist-packages/sagemaker/processing.py", line 615, in run
self.latest_job = ProcessingJob.start_new(
File "/usr/local/lib/python3.8/dist-packages/sagemaker/processing.py", line 849, in start_new
processor.sagemaker_session.process(**process_args)
File "/usr/local/lib/python3.8/dist-packages/sagemaker/session.py", line 1024, in process
self._intercept_create_request(process_request, submit, self.process.__name__)
File "/usr/local/lib/python3.8/dist-packages/sagemaker/session.py", line 4813, in _intercept_create_request
return create(request)
File "/usr/local/lib/python3.8/dist-packages/sagemaker/session.py", line 1022, in submit
self.sagemaker_client.create_processing_job(**request)
File "/usr/local/lib/python3.8/dist-packages/sagemaker/local/local_session.py", line 128, in create_processing_job
processing_job.start(
File "/usr/local/lib/python3.8/dist-packages/sagemaker/local/entities.py", line 140, in start
self.container.process(
File "/usr/local/lib/python3.8/dist-packages/sagemaker/local/image.py", line 171, in process
raise RuntimeError(msg) from e
RuntimeError: Failed to run: ['docker-compose', '-f', '/tmp/tmpx5_z74cs/docker-compose.yaml', 'up', '--build', '--abort-on-container-exit']
Code
from sagemaker.local import LocalSession
from sagemaker.processing import ProcessingInput, ProcessingOutput
from sagemaker.sklearn.processing import SKLearnProcessor
sagemaker_session = LocalSession()
sagemaker_session.config = {"local": {"local_code": True}}
role = "arn:aws:iam::111111111111:role/service-role/AmazonSageMaker-ExecutionRole-20200101T000001"
processor = SKLearnProcessor(
framework_version="0.20.0", instance_count=1, instance_type="local", role=role
)
print("Starting processing job.")
print(
"Note: if launching for the first time in local mode, container image download"
" might take a few minutes to complete."
)
processor.run(
code="processing_script.py",
inputs=[
ProcessingInput(
source='./input_data/',
destination="/opt/ml/processing/input_data/",
)
],
outputs=[
ProcessingOutput(
output_name="word_count_data", source="/opt/ml/processing/processed_data/"
)
],
arguments=["job-type", "word-count"],
)
preprocessing_job_description = processor.jobs[-1].describe()
output_config = preprocessing_job_description["ProcessingOutputConfig"]
print(output_config)
for output in output_config["Outputs"]:
if output["OutputName"] == "word_count_data":
word_count_data_file = output["S3Output"]["S3Uri"]
print("Output file is located on: {}".format(word_count_data_file))
Hello, I am experiencing an issue while using SageMaker to build a machine learning model. in Sagemaker local mode, I am facing an issue that says "python3: can't open file '/opt/ml/processing/code/processing_script.py': [Errno 2] No such file or directory." Even though the file is present in the correct location, the same code works fine in the normal mode. I am running my project in vscode dev conatiner and inside the dev container i am trying out the sagemaker local mode. Please let me know what could possibly be wrong with the following code.
Error
Code
from sagemaker.local import LocalSession
from sagemaker.processing import ProcessingInput, ProcessingOutput
from sagemaker.sklearn.processing import SKLearnProcessor
sagemaker_session = LocalSession()
sagemaker_session.config = {"local": {"local_code": True}}
role = "arn:aws:iam::111111111111:role/service-role/AmazonSageMaker-ExecutionRole-20200101T000001"
processor = SKLearnProcessor(
framework_version="0.20.0", instance_count=1, instance_type="local", role=role
)
print("Starting processing job.")
print(
"Note: if launching for the first time in local mode, container image download"
" might take a few minutes to complete."
)
processor.run(
code="processing_script.py",
inputs=[
ProcessingInput(
source='./input_data/',
destination="/opt/ml/processing/input_data/",
)
],
outputs=[
ProcessingOutput(
output_name="word_count_data", source="/opt/ml/processing/processed_data/"
)
],
arguments=["job-type", "word-count"],
)
preprocessing_job_description = processor.jobs[-1].describe()
output_config = preprocessing_job_description["ProcessingOutputConfig"]
print(output_config)
for output in output_config["Outputs"]:
if output["OutputName"] == "word_count_data":
word_count_data_file = output["S3Output"]["S3Uri"]
print("Output file is located on: {}".format(word_count_data_file))