【发布时间】:2021-05-22 17:08:57
【问题描述】:
我在 ec2 实例上运行 MLFlow 服务器,端口为 5000。
此 ec2 实例的安全组在端口 5000 上打开了与另一个为 SageMaker 指定的安全组的 TCP 连接。
这 2 个安全组在同一个 VPC 中
现在,我尝试使用指定的安全组运行 SageMaker 训练作业,以便训练脚本通过内部 IP 地址将指标记录到 ec2 服务器。 (如回答here),但连接失败
SageMaker 作业初始化:
role = "ml_sagemaker"
security_group_ids = ['sg-04868acca16e81183']
bucket = sagemaker_session.default_bucket()
out_path = f"s3://{bucket}/{project_name}"
estimator = PyTorch(entry_point='run_train.py',
source_dir='.',
sagemaker_session=sagemaker_session,
instance_type=instance_type,
instance_count=1,
framework_version='1.5.0',
py_version='py3',
role=role,
security_group_ids=security_group_ids,
hyperparameters={},
)
....
内部run_train.py:
import mlflow
tracking_uri = "http://172.31.77.137:5000" # <- this is internal ec2 IP
mlflow.set_tracking_uri(tracking_uri)
mlflow.log_param("test_param", 3)
错误:
File "/opt/conda/lib/python3.6/site-packages/urllib3/util/connection.py", line 74, in create_connection
sock.connect(sa)
TimeoutError: [Errno 110] Connection timed out
但是,当我创建具有相同安全组和相同 IAM 角色的 SageMaker Notebook 实例时,我能够成功连接到 ec2 并从 Notebook 中记录指标。
这是 SageMaker Notebook 配置:
如何从 SageMaker 训练作业连接到 ec2 实例?
【问题讨论】:
标签: amazon-ec2 amazon-vpc amazon-sagemaker aws-security-group mlflow