У меня есть сервер MLFlow, работающий на экземпляре ec2, порт 5000.
У этого экземпляра ec2 есть группа безопасности с открытым TCP-соединением на порту 5000 с другой группой безопасности, предназначенной для SageMaker.
Входящие правила экземпляра ec2:
Эти 2 группы безопасности находятся в одном VPC.
Теперь я пытаюсь запустить задание обучения SageMaker с назначенной группой безопасности, чтобы сценарий обучения регистрировал метрики на сервере ec2 через внутренний IP-адрес. (Как ответил здесь), но соединение не установлено
Инициализация задания 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
Однако когда я создаю экземпляр SageMaker Notebook с той же группой безопасности и той же ролью IAM, я могу успешно подключиться к ec2 и регистрировать показатели из Notebook.
Вот конфигурации ноутбука SageMaker:
![](https://i.stack.imgur.com/bslu8.png)
Как я могу подключиться к инстансу ec2 из учебного задания SageMaker?