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

AWS SageMaker TensorFlow Estimator无法联网安装requirements.txt依赖问题

问题排查及解决方案

你遇到的pip安装超时问题核心是SageMaker训练实例未分配公网IP导致的:虽然你使用的是绑定互联网网关的公网子网,且安全组放行了所有出站流量,但指定VPC配置(子网、安全组)的SageMaker训练作业默认不会给实例分配公网IP,无法通过互联网网关访问公网,和你手动启动EC2时默认开启公网IP分配的逻辑不同。


可选解决方案

  • 方案1:开启公网IP分配
    在Estimator初始化参数中新增assign_public_ip=True即可匹配你手动启动EC2时的网络配置,正常访问pypi下载依赖,修改后代码如下:
    estimator = TensorFlow(
        entry_point="train.py",
        source_dir=job_dir,
        role=role,
        instance_count=1,
        instance_type=instance_type,
        py_version="py37",
        framework_version="2.4",
        subnets=[environ["SUBNET_ID"]],
        security_group_ids=[environ["SECURITY_GROUP_ID"]],
        assign_public_ip=True # 新增公网IP分配配置
    )
    
  • 方案2:内网访问规避公网需求
    如果不允许训练实例绑定公网IP,可二选一配置:
    • 将训练作业放在私有子网,同VPC内部署NAT网关,训练实例通过NAT网关访问公网下载依赖
    • 搭建内部PyPI镜像源/使用托管的内部依赖服务,修改pip安装命令指向内部源
  • 方案3:预安装依赖规避运行时安装
    构建自定义SageMaker训练镜像,提前将所有依赖预装到镜像中,训练时无需再执行pip安装操作,从根本上规避网络问题

通用调试方法

如果调整配置后仍有问题,可在训练脚本开头添加以下网络调试代码,相关输出可在SageMaker训练作业的CloudWatch日志中查看,定位具体网络问题:

import subprocess
import sys

# 打印实例网卡配置
print("=== 网络接口信息 ===")
try:
    print(subprocess.check_output(["ifconfig"], stderr=subprocess.STDOUT).decode())
except Exception as e:
    print(f"获取网卡信息失败: {e}")

# 测试pypi连通性
print("=== 公网连通性测试 ===")
try:
    print(subprocess.check_output([sys.executable, "-m", "pip", "config", "list"], stderr=subprocess.STDOUT).decode())
    print(subprocess.check_output(["curl", "-m", "10", "-I", "https://pypi.org"], stderr=subprocess.STDOUT).decode())
except Exception as e:
    print(f"连通性测试失败: {e}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 18:48:03