You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VS Code开发容器中AWS SageMaker本地模式运行失败求助

问题排查:SageMaker本地模式在VS Code开发容器内找不到处理脚本

核心问题分析

报错提示找不到/opt/ml/processing/code/processing_script.py,但脚本实际存在,且在VS Code容器外、SageMaker常规模式下正常运行,说明问题出在VS Code开发容器与SageMaker本地模式的嵌套Docker文件挂载逻辑上——SageMaker本地模式通过docker-compose挂载本地文件,但外层VS Code容器的路径映射可能导致内层容器无法正确访问脚本。

解决方案步骤

1. 显式挂载处理脚本

放弃processor.run()中的code参数,改用ProcessingInput直接挂载脚本到容器指定路径,避免自动挂载的路径偏差:
修改代码中的inputs列表,添加脚本挂载:

processor.run(
    # 移除code参数
    inputs=[
        ProcessingInput(
            source='./input_data/',
            destination="/opt/ml/processing/input_data/",
        ),
        # 新增:显式挂载处理脚本
        ProcessingInput(
            source="./processing_script.py",
            destination="/opt/ml/processing/code/processing_script.py"
        )
    ],
    outputs=[
        ProcessingOutput(
            output_name="word_count_data", source="/opt/ml/processing/processed_data/"
        )
    ],
    arguments=["job-type", "word-count"],
)

2. 验证VS Code容器内的文件路径

在VS Code开发容器的终端中,执行以下命令确认脚本存在且路径正确:

# 确认脚本在当前工作目录
ls -l processing_script.py
# 输出脚本绝对路径
realpath processing_script.py

如果脚本不在当前工作目录,需要调整source参数为正确的绝对路径。

3. 检查SageMaker生成的docker-compose配置

SageMaker本地模式会临时生成docker-compose.yaml文件(日志中路径为/tmp/tmpx5_z74cs/docker-compose.yaml),可以查看该文件中的volumes配置,确认代码挂载路径是否正确:

cat /tmp/tmpx5_z74cs/docker-compose.yaml

如果发现挂载的路径和实际脚本路径不匹配,可以手动调整,或者通过SageSession的配置修改挂载逻辑。

4. 确保嵌套Docker的权限与映射

VS Code开发容器本身运行在Docker中,需要确保:

  • 容器内用户拥有Docker操作权限(已加入docker组)
  • 内层SageMaker容器能读取挂载的文件:检查脚本的权限,避免设置为仅root可读(可以执行chmod 644 processing_script.py调整权限)

5. 尝试指定绝对路径

将code参数改为脚本的绝对路径,替换原代码中的code="processing_script.py":

import os
processor.run(
    code=os.path.abspath("processing_script.py"),
    # 其余参数不变
)

内容的提问来源于stack exchange,提问作者Kedhar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 07:42:34