Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 10 additions & 8 deletions src/sagemaker/estimator.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -790,10 +790,9 @@ def __init__(
sagemaker_session=sagemaker_session,
)
# If customer passes True from either direct_input or sagemaker_config, we will
# create a default hook config as an empty dict which will later be populated
# with default s3_output_path from _prepare_debugger_for_training function
# create a default hook config populated with the default s3_output_path.
if self.debugger_hook_config is True:
self.debugger_hook_config = {}
self.debugger_hook_config = DebuggerHookConfig()

self.tensorboard_output_config = tensorboard_output_config

Expand DownExpand Up@@ -1197,8 +1196,11 @@ def _validate_and_set_debugger_configs(self):
)

if region_supports_debugger:
if self.debugger_hook_config in [None, {}]:
self.debugger_hook_config = DebuggerHookConfig(s3_output_path=self.output_path)
# Debugger is opt-in: do NOT auto-attach a DebuggerHookConfig when the customer
# did not request one (unset -> None). The hook is still created upstream in
# _prepare_debugger_for_training when debugger_rules are set, or when the customer
# explicitly passes debugger_hook_config=True / a DebuggerHookConfig instance.
pass
else:
if self.debugger_hook_config is not False and self.debugger_hook_config:
# when user set debugger config in a unsupported region
Expand DownExpand Up@@ -1245,11 +1247,11 @@ def _prepare_profiler_for_training(self):
if self.profiler_rules:
raise RuntimeError("ProfilerRule cannot be set when disable_profiler is True.")
elif _region_supports_profiler(self.sagemaker_session.boto_region_name):
if self.profiler_config is None:
self.profiler_config = ProfilerConfig(s3_output_path=self.output_path)
# Profiler is opt-in: do NOT auto-attach an active ProfilerConfig by default.
# If profiler_config is left unset it is emitted as disabled below.
if self.rules is None or (self.rules and not self.profiler_rules):
self.profiler_rules = []
if self.profiler_config.profile_params:
if self.profiler_config and self.profiler_config.profile_params:
self.profiler_rules.append(
get_default_profiler_processing_job(
instance_type=self.profiler_config.profile_params.instanceType,
Expand Down
7 changes: 1 addition & 6 deletions tests/unit/sagemaker/huggingface/test_estimator.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -148,13 +148,8 @@ def _create_train_job(version, base_framework_version):
"retry_strategy": None,
"experiment_config": None,
"enable_network_isolation": False,
"debugger_hook_config": {
"CollectionConfigurations": [],
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
},
"profiler_config": {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
},
}

Expand Down
9 changes: 1 addition & 8 deletions tests/unit/sagemaker/tensorflow/test_estimator.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -146,17 +146,10 @@ def _create_train_job(tf_version, horovod=False, ps=False, py_version="py2", smd
"enable_network_isolation": False,
"experiment_config": None,
"profiler_config": {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
},
}

if not ps:
conf["debugger_hook_config"] = {
"CollectionConfigurations": [],
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
}

return conf


Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -150,13 +150,8 @@ def _create_train_job(
"environment": None,
"retry_strategy": None,
"experiment_config": EXPERIMENT_CONFIG,
"debugger_hook_config": {
"CollectionConfigurations": [],
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
},
"profiler_config": {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
},
}

Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -147,13 +147,8 @@ def _create_train_job(
"retry_strategy": None,
"experiment_config": EXPERIMENT_CONFIG,
"enable_network_isolation": False,
"debugger_hook_config": {
"CollectionConfigurations": [],
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
},
"profiler_config": {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
},
}

Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -146,13 +146,8 @@ def _create_train_job(
"retry_strategy": None,
"experiment_config": EXPERIMENT_CONFIG,
"enable_network_isolation": False,
"debugger_hook_config": {
"CollectionConfigurations": [],
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
},
"profiler_config": {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
},
}

Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -152,13 +152,8 @@ def _create_train_job(framework_version, instance_type, training_compiler_config
"retry_strategy": None,
"experiment_config": EXPERIMENT_CONFIG,
"enable_network_isolation": False,
"debugger_hook_config": {
"CollectionConfigurations": [],
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
},
"profiler_config": {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
},
}

Expand Down
16 changes: 0 additions & 16 deletions tests/unit/sagemaker/workflow/test_step_collections.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -767,10 +767,6 @@ def test_register_model_with_model_repack_with_estimator(
"TrainingImage": MODEL_REPACKING_IMAGE_URI,
"TrainingInputMode": "File",
},
"DebugHookConfig": {
"CollectionConfigurations": [],
"S3OutputPath": f"s3://{BUCKET}/",
},
"ProfilerConfig": {"DisableProfiler": True},
"HyperParameters": {
"inference_script": '"inference.py"',
Expand DownExpand Up@@ -896,10 +892,6 @@ def test_register_model_with_model_repack_with_model(model, model_metrics, drift
"TrainingImage": MODEL_REPACKING_IMAGE_URI,
"TrainingInputMode": "File",
},
"DebugHookConfig": {
"CollectionConfigurations": [],
"S3OutputPath": f"s3://{BUCKET}/",
},
"ProfilerConfig": {"DisableProfiler": True},
"HyperParameters": {
"inference_script": '"inference.py"',
Expand DownExpand Up@@ -1027,10 +1019,6 @@ def test_register_model_with_model_repack_with_pipeline_model(
"TrainingImage": MODEL_REPACKING_IMAGE_URI,
"TrainingInputMode": "File",
},
"DebugHookConfig": {
"CollectionConfigurations": [],
"S3OutputPath": f"s3://{BUCKET}/",
},
"ProfilerConfig": {"DisableProfiler": True},
"HyperParameters": {
"dependencies": "null",
Expand DownExpand Up@@ -1254,10 +1242,6 @@ def test_estimator_transformer_with_model_repack_with_estimator(estimator, sourc
"sagemaker_region": '"us-west-2"',
},
"VpcConfig": {"Subnets": ["abc", "def"], "SecurityGroupIds": ["123", "456"]},
"DebugHookConfig": {
"S3OutputPath": "s3://my-bucket/",
"CollectionConfigurations": [],
},
}
elif request_dict["Type"] == "Model":
assert request_dict["Name"] == "EstimatorTransformerStepCreateModelStep"
Expand Down
6 changes: 1 addition & 5 deletions tests/unit/sagemaker/workflow/test_steps.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -337,10 +337,6 @@ def test_training_step_base_estimator(sagemaker_session):
},
"RoleArn": ROLE,
"StoppingCondition": {"MaxRuntimeInSeconds": 86400},
"DebugHookConfig": {
"S3OutputPath": {"Std:Join": {"On": "/", "Values": ["s3:/", "a", "b"]}},
"CollectionConfigurations": [],
},
"ProfilerConfig": {
"DisableProfiler": False,
"ProfilingIntervalInMilliseconds": 500,
Expand DownExpand Up@@ -453,7 +449,7 @@ def test_training_step_tensorflow(sagemaker_session):
"sagemaker_instance_type": {"Get": "Parameters.InstanceType"},
"sagemaker_distributed_dataparallel_custom_mpi_options": '""',
},
"ProfilerConfig": {"DisableProfiler": False, "S3OutputPath": "s3://my-bucket/"},
"ProfilerConfig": {"DisableProfiler": True},
},
"CacheConfig": {"Enabled": True, "ExpireAfter": "PT1H"},
}
Expand Down
2 changes: 0 additions & 2 deletions tests/unit/sagemaker/workflow/test_utils.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -94,7 +94,6 @@ def test_repack_model_step(estimator):
"DependsOn": ["TestStep"],
"Arguments": {
"AlgorithmSpecification": {"TrainingInputMode": "File"},
"DebugHookConfig": {"CollectionConfigurations": [], "S3OutputPath": "s3://my-bucket/"},
"InputDataConfig": [
{
"ChannelName": "training",
Expand DownExpand Up@@ -176,7 +175,6 @@ def test_repack_model_step_with_source_dir(estimator, source_dir):
"Type": "Training",
"Arguments": {
"AlgorithmSpecification": {"TrainingInputMode": "File"},
"DebugHookConfig": {"CollectionConfigurations": [], "S3OutputPath": "s3://my-bucket/"},
"InputDataConfig": [
{
"ChannelName": "training",
Expand Down
7 changes: 1 addition & 6 deletions tests/unit/test_chainer.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -154,13 +154,8 @@ def _create_train_job(version, py_version):
"enable_network_isolation": False,
"environment": None,
"experiment_config": None,
"debugger_hook_config": {
"CollectionConfigurations": [],
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
},
"profiler_config": {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
},
}

Expand Down
35 changes: 15 additions & 20 deletions tests/unit/test_estimator.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -693,7 +693,7 @@ def test_estimator_with_debugger_hook_config_provided_as_bool_from_direct_input(
base_job_name="base_job_name",
debugger_hook_config=True,
)
assert estimator.debugger_hook_config == {}
assert isinstance(estimator.debugger_hook_config, DebuggerHookConfig)


def test_estimator_with_debugger_hook_config_provided_as_dict_from_direct_input(
Expand DownExpand Up@@ -1067,8 +1067,7 @@ def test_framework_with_debugger_and_built_in_rule(sagemaker_session):
],
}
assert args["profiler_config"] == {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
}


Expand DownExpand Up@@ -1226,14 +1225,10 @@ def test_framework_without_debugger_and_profiler(time, sagemaker_session):
f.fit("s3://mydata")
sagemaker_session.train.assert_called_once()
_, args = sagemaker_session.train.call_args
assert args["debugger_hook_config"] == {
"CollectionConfigurations": [],
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
}
assert "debugger_hook_config" not in args or args["debugger_hook_config"] is None
assert "debugger_rule_configs" not in args
assert args["profiler_config"] == {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
}


Expand DownExpand Up@@ -1296,8 +1291,7 @@ def test_framework_with_debugger_and_profiler_rules(sagemaker_session):
],
}
assert args["profiler_config"] == {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
}
assert args["profiler_rule_configs"] == [
{
Expand DownExpand Up@@ -1332,8 +1326,7 @@ def test_framework_with_only_profiler_rule_specified(sagemaker_session):
sagemaker_session.train.assert_called_once()
_, args = sagemaker_session.train.call_args
assert args["profiler_config"] == {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
}
assert args["profiler_rule_configs"] == [
{
Expand DownExpand Up@@ -2601,7 +2594,7 @@ def test_fit_verify_job_name(strftime, sagemaker_session):
@pytest.mark.parametrize(
"debugger_hook_config_direct_input, sagemaker_config, expected_debugger_hook_config_output",
[
(None, None, S3_OUTPUT_PATH_FROM_SESSION_S3_DEFAULT_CONFIG),
(None, None, None),
(True, None, S3_OUTPUT_PATH_FROM_SESSION_S3_DEFAULT_CONFIG),
(False, None, False),
(HOOK_CONFIG, None, HOOK_CONFIG.s3_output_path),
Expand DownExpand Up@@ -2665,6 +2658,8 @@ def test_prepare_for_training_for_debugger_hook_config_value_combinations(

if expected_debugger_hook_config_output is False:
assert fw.debugger_hook_config == expected_debugger_hook_config_output
elif expected_debugger_hook_config_output is None:
assert fw.debugger_hook_config is None
else:
assert fw.debugger_hook_config.s3_output_path == expected_debugger_hook_config_output

Expand DownExpand Up@@ -3522,7 +3517,7 @@ def test_unsupported_type_in_dict():
"input_config": None,
"input_mode": "File",
"output_config": {"S3OutputPath": OUTPUT_PATH},
"profiler_config": {"DisableProfiler": False, "S3OutputPath": OUTPUT_PATH},
"profiler_config": {"DisableProfiler": True},
"resource_config": {
"InstanceCount": INSTANCE_COUNT,
"InstanceType": INSTANCE_TYPE,
Expand DownExpand Up@@ -3802,7 +3797,7 @@ def test_generic_to_fit_no_input(time, sagemaker_session):

args.pop("job_name")
args.pop("role")
args.pop("debugger_hook_config")
args.pop("debugger_hook_config", None)

assert args == NO_INPUT_TRAIN_CALL

Expand All@@ -3827,7 +3822,7 @@ def test_generic_to_fit_no_hps(time, sagemaker_session):

args.pop("job_name")
args.pop("role")
args.pop("debugger_hook_config")
args.pop("debugger_hook_config", None)

assert args == BASE_TRAIN_CALL

Expand All@@ -3854,7 +3849,7 @@ def test_generic_to_fit_with_hps(time, sagemaker_session):

args.pop("job_name")
args.pop("role")
args.pop("debugger_hook_config")
args.pop("debugger_hook_config", None)

assert args == HP_TRAIN_CALL

Expand DownExpand Up@@ -3887,7 +3882,7 @@ def test_generic_to_fit_with_experiment_config(time, sagemaker_session):

args.pop("job_name")
args.pop("role")
args.pop("debugger_hook_config")
args.pop("debugger_hook_config", None)

assert args == EXP_TRAIN_CALL

Expand DownExpand Up@@ -4041,7 +4036,7 @@ def test_generic_to_deploy(time, sagemaker_session):

args.pop("job_name")
args.pop("role")
args.pop("debugger_hook_config")
args.pop("debugger_hook_config", None)

assert args == HP_TRAIN_CALL

Expand Down
7 changes: 1 addition & 6 deletions tests/unit/test_mxnet.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -170,13 +170,8 @@ def _get_train_args(job_name):
"retry_strategy": None,
"experiment_config": None,
"enable_network_isolation": False,
"debugger_hook_config": {
"CollectionConfigurations": [],
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
},
"profiler_config": {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
},
}

Expand Down
7 changes: 1 addition & 6 deletions tests/unit/test_pytorch.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -187,13 +187,8 @@ def _create_train_job(version, py_version):
"retry_strategy": None,
"experiment_config": None,
"enable_network_isolation": False,
"debugger_hook_config": {
"CollectionConfigurations": [],
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
},
"profiler_config": {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
},
}

Expand Down
Loading
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 10 additions & 8 deletions src/sagemaker/estimator.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -790,10 +790,9 @@ def __init__(
sagemaker_session=sagemaker_session,
)
# If customer passes True from either direct_input or sagemaker_config, we will
# create a default hook config as an empty dict which will later be populated
# with default s3_output_path from _prepare_debugger_for_training function
# create a default hook config populated with the default s3_output_path.
if self.debugger_hook_config is True:
self.debugger_hook_config = {}
self.debugger_hook_config = DebuggerHookConfig()

self.tensorboard_output_config = tensorboard_output_config

Expand DownExpand Up@@ -1197,8 +1196,11 @@ def _validate_and_set_debugger_configs(self):
)

if region_supports_debugger:
if self.debugger_hook_config in [None, {}]:
self.debugger_hook_config = DebuggerHookConfig(s3_output_path=self.output_path)
# Debugger is opt-in: do NOT auto-attach a DebuggerHookConfig when the customer
# did not request one (unset -> None). The hook is still created upstream in
# _prepare_debugger_for_training when debugger_rules are set, or when the customer
# explicitly passes debugger_hook_config=True / a DebuggerHookConfig instance.
pass
else:
if self.debugger_hook_config is not False and self.debugger_hook_config:
# when user set debugger config in a unsupported region
Expand DownExpand Up@@ -1245,11 +1247,11 @@ def _prepare_profiler_for_training(self):
if self.profiler_rules:
raise RuntimeError("ProfilerRule cannot be set when disable_profiler is True.")
elif _region_supports_profiler(self.sagemaker_session.boto_region_name):
if self.profiler_config is None:
self.profiler_config = ProfilerConfig(s3_output_path=self.output_path)
# Profiler is opt-in: do NOT auto-attach an active ProfilerConfig by default.
# If profiler_config is left unset it is emitted as disabled below.
if self.rules is None or (self.rules and not self.profiler_rules):
self.profiler_rules = []
if self.profiler_config.profile_params:
if self.profiler_config and self.profiler_config.profile_params:
self.profiler_rules.append(
get_default_profiler_processing_job(
instance_type=self.profiler_config.profile_params.instanceType,
Expand Down
7 changes: 1 addition & 6 deletions tests/unit/sagemaker/huggingface/test_estimator.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -148,13 +148,8 @@ def _create_train_job(version, base_framework_version):
"retry_strategy": None,
"experiment_config": None,
"enable_network_isolation": False,
"debugger_hook_config": {
"CollectionConfigurations": [],
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
},
"profiler_config": {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
},
}

Expand Down
9 changes: 1 addition & 8 deletions tests/unit/sagemaker/tensorflow/test_estimator.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -146,17 +146,10 @@ def _create_train_job(tf_version, horovod=False, ps=False, py_version="py2", smd
"enable_network_isolation": False,
"experiment_config": None,
"profiler_config": {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
},
}

if not ps:
conf["debugger_hook_config"] = {
"CollectionConfigurations": [],
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
}

return conf


Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -150,13 +150,8 @@ def _create_train_job(
"environment": None,
"retry_strategy": None,
"experiment_config": EXPERIMENT_CONFIG,
"debugger_hook_config": {
"CollectionConfigurations": [],
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
},
"profiler_config": {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
},
}

Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -147,13 +147,8 @@ def _create_train_job(
"retry_strategy": None,
"experiment_config": EXPERIMENT_CONFIG,
"enable_network_isolation": False,
"debugger_hook_config": {
"CollectionConfigurations": [],
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
},
"profiler_config": {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
},
}

Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -146,13 +146,8 @@ def _create_train_job(
"retry_strategy": None,
"experiment_config": EXPERIMENT_CONFIG,
"enable_network_isolation": False,
"debugger_hook_config": {
"CollectionConfigurations": [],
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
},
"profiler_config": {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
},
}

Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -152,13 +152,8 @@ def _create_train_job(framework_version, instance_type, training_compiler_config
"retry_strategy": None,
"experiment_config": EXPERIMENT_CONFIG,
"enable_network_isolation": False,
"debugger_hook_config": {
"CollectionConfigurations": [],
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
},
"profiler_config": {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
},
}

Expand Down
16 changes: 0 additions & 16 deletions tests/unit/sagemaker/workflow/test_step_collections.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -767,10 +767,6 @@ def test_register_model_with_model_repack_with_estimator(
"TrainingImage": MODEL_REPACKING_IMAGE_URI,
"TrainingInputMode": "File",
},
"DebugHookConfig": {
"CollectionConfigurations": [],
"S3OutputPath": f"s3://{BUCKET}/",
},
"ProfilerConfig": {"DisableProfiler": True},
"HyperParameters": {
"inference_script": '"inference.py"',
Expand DownExpand Up@@ -896,10 +892,6 @@ def test_register_model_with_model_repack_with_model(model, model_metrics, drift
"TrainingImage": MODEL_REPACKING_IMAGE_URI,
"TrainingInputMode": "File",
},
"DebugHookConfig": {
"CollectionConfigurations": [],
"S3OutputPath": f"s3://{BUCKET}/",
},
"ProfilerConfig": {"DisableProfiler": True},
"HyperParameters": {
"inference_script": '"inference.py"',
Expand DownExpand Up@@ -1027,10 +1019,6 @@ def test_register_model_with_model_repack_with_pipeline_model(
"TrainingImage": MODEL_REPACKING_IMAGE_URI,
"TrainingInputMode": "File",
},
"DebugHookConfig": {
"CollectionConfigurations": [],
"S3OutputPath": f"s3://{BUCKET}/",
},
"ProfilerConfig": {"DisableProfiler": True},
"HyperParameters": {
"dependencies": "null",
Expand DownExpand Up@@ -1254,10 +1242,6 @@ def test_estimator_transformer_with_model_repack_with_estimator(estimator, sourc
"sagemaker_region": '"us-west-2"',
},
"VpcConfig": {"Subnets": ["abc", "def"], "SecurityGroupIds": ["123", "456"]},
"DebugHookConfig": {
"S3OutputPath": "s3://my-bucket/",
"CollectionConfigurations": [],
},
}
elif request_dict["Type"] == "Model":
assert request_dict["Name"] == "EstimatorTransformerStepCreateModelStep"
Expand Down
6 changes: 1 addition & 5 deletions tests/unit/sagemaker/workflow/test_steps.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -337,10 +337,6 @@ def test_training_step_base_estimator(sagemaker_session):
},
"RoleArn": ROLE,
"StoppingCondition": {"MaxRuntimeInSeconds": 86400},
"DebugHookConfig": {
"S3OutputPath": {"Std:Join": {"On": "/", "Values": ["s3:/", "a", "b"]}},
"CollectionConfigurations": [],
},
"ProfilerConfig": {
"DisableProfiler": False,
"ProfilingIntervalInMilliseconds": 500,
Expand DownExpand Up@@ -453,7 +449,7 @@ def test_training_step_tensorflow(sagemaker_session):
"sagemaker_instance_type": {"Get": "Parameters.InstanceType"},
"sagemaker_distributed_dataparallel_custom_mpi_options": '""',
},
"ProfilerConfig": {"DisableProfiler": False, "S3OutputPath": "s3://my-bucket/"},
"ProfilerConfig": {"DisableProfiler": True},
},
"CacheConfig": {"Enabled": True, "ExpireAfter": "PT1H"},
}
Expand Down
2 changes: 0 additions & 2 deletions tests/unit/sagemaker/workflow/test_utils.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -94,7 +94,6 @@ def test_repack_model_step(estimator):
"DependsOn": ["TestStep"],
"Arguments": {
"AlgorithmSpecification": {"TrainingInputMode": "File"},
"DebugHookConfig": {"CollectionConfigurations": [], "S3OutputPath": "s3://my-bucket/"},
"InputDataConfig": [
{
"ChannelName": "training",
Expand DownExpand Up@@ -176,7 +175,6 @@ def test_repack_model_step_with_source_dir(estimator, source_dir):
"Type": "Training",
"Arguments": {
"AlgorithmSpecification": {"TrainingInputMode": "File"},
"DebugHookConfig": {"CollectionConfigurations": [], "S3OutputPath": "s3://my-bucket/"},
"InputDataConfig": [
{
"ChannelName": "training",
Expand Down
7 changes: 1 addition & 6 deletions tests/unit/test_chainer.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -154,13 +154,8 @@ def _create_train_job(version, py_version):
"enable_network_isolation": False,
"environment": None,
"experiment_config": None,
"debugger_hook_config": {
"CollectionConfigurations": [],
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
},
"profiler_config": {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
},
}

Expand Down
35 changes: 15 additions & 20 deletions tests/unit/test_estimator.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -693,7 +693,7 @@ def test_estimator_with_debugger_hook_config_provided_as_bool_from_direct_input(
base_job_name="base_job_name",
debugger_hook_config=True,
)
assert estimator.debugger_hook_config == {}
assert isinstance(estimator.debugger_hook_config, DebuggerHookConfig)


def test_estimator_with_debugger_hook_config_provided_as_dict_from_direct_input(
Expand DownExpand Up@@ -1067,8 +1067,7 @@ def test_framework_with_debugger_and_built_in_rule(sagemaker_session):
],
}
assert args["profiler_config"] == {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
}


Expand DownExpand Up@@ -1226,14 +1225,10 @@ def test_framework_without_debugger_and_profiler(time, sagemaker_session):
f.fit("s3://mydata")
sagemaker_session.train.assert_called_once()
_, args = sagemaker_session.train.call_args
assert args["debugger_hook_config"] == {
"CollectionConfigurations": [],
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
}
assert "debugger_hook_config" not in args or args["debugger_hook_config"] is None
assert "debugger_rule_configs" not in args
assert args["profiler_config"] == {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
}


Expand DownExpand Up@@ -1296,8 +1291,7 @@ def test_framework_with_debugger_and_profiler_rules(sagemaker_session):
],
}
assert args["profiler_config"] == {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
}
assert args["profiler_rule_configs"] == [
{
Expand DownExpand Up@@ -1332,8 +1326,7 @@ def test_framework_with_only_profiler_rule_specified(sagemaker_session):
sagemaker_session.train.assert_called_once()
_, args = sagemaker_session.train.call_args
assert args["profiler_config"] == {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
}
assert args["profiler_rule_configs"] == [
{
Expand DownExpand Up@@ -2601,7 +2594,7 @@ def test_fit_verify_job_name(strftime, sagemaker_session):
@pytest.mark.parametrize(
"debugger_hook_config_direct_input, sagemaker_config, expected_debugger_hook_config_output",
[
(None, None, S3_OUTPUT_PATH_FROM_SESSION_S3_DEFAULT_CONFIG),
(None, None, None),
(True, None, S3_OUTPUT_PATH_FROM_SESSION_S3_DEFAULT_CONFIG),
(False, None, False),
(HOOK_CONFIG, None, HOOK_CONFIG.s3_output_path),
Expand DownExpand Up@@ -2665,6 +2658,8 @@ def test_prepare_for_training_for_debugger_hook_config_value_combinations(

if expected_debugger_hook_config_output is False:
assert fw.debugger_hook_config == expected_debugger_hook_config_output
elif expected_debugger_hook_config_output is None:
assert fw.debugger_hook_config is None
else:
assert fw.debugger_hook_config.s3_output_path == expected_debugger_hook_config_output

Expand DownExpand Up@@ -3522,7 +3517,7 @@ def test_unsupported_type_in_dict():
"input_config": None,
"input_mode": "File",
"output_config": {"S3OutputPath": OUTPUT_PATH},
"profiler_config": {"DisableProfiler": False, "S3OutputPath": OUTPUT_PATH},
"profiler_config": {"DisableProfiler": True},
"resource_config": {
"InstanceCount": INSTANCE_COUNT,
"InstanceType": INSTANCE_TYPE,
Expand DownExpand Up@@ -3802,7 +3797,7 @@ def test_generic_to_fit_no_input(time, sagemaker_session):

args.pop("job_name")
args.pop("role")
args.pop("debugger_hook_config")
args.pop("debugger_hook_config", None)

assert args == NO_INPUT_TRAIN_CALL

Expand All@@ -3827,7 +3822,7 @@ def test_generic_to_fit_no_hps(time, sagemaker_session):

args.pop("job_name")
args.pop("role")
args.pop("debugger_hook_config")
args.pop("debugger_hook_config", None)

assert args == BASE_TRAIN_CALL

Expand All@@ -3854,7 +3849,7 @@ def test_generic_to_fit_with_hps(time, sagemaker_session):

args.pop("job_name")
args.pop("role")
args.pop("debugger_hook_config")
args.pop("debugger_hook_config", None)

assert args == HP_TRAIN_CALL

Expand DownExpand Up@@ -3887,7 +3882,7 @@ def test_generic_to_fit_with_experiment_config(time, sagemaker_session):

args.pop("job_name")
args.pop("role")
args.pop("debugger_hook_config")
args.pop("debugger_hook_config", None)

assert args == EXP_TRAIN_CALL

Expand DownExpand Up@@ -4041,7 +4036,7 @@ def test_generic_to_deploy(time, sagemaker_session):

args.pop("job_name")
args.pop("role")
args.pop("debugger_hook_config")
args.pop("debugger_hook_config", None)

assert args == HP_TRAIN_CALL

Expand Down
7 changes: 1 addition & 6 deletions tests/unit/test_mxnet.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -170,13 +170,8 @@ def _get_train_args(job_name):
"retry_strategy": None,
"experiment_config": None,
"enable_network_isolation": False,
"debugger_hook_config": {
"CollectionConfigurations": [],
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
},
"profiler_config": {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
},
}

Expand Down
7 changes: 1 addition & 6 deletions tests/unit/test_pytorch.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -187,13 +187,8 @@ def _create_train_job(version, py_version):
"retry_strategy": None,
"experiment_config": None,
"enable_network_isolation": False,
"debugger_hook_config": {
"CollectionConfigurations": [],
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
},
"profiler_config": {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
},
}

Expand Down
Loading
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 10 additions & 8 deletions src/sagemaker/estimator.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -790,10 +790,9 @@ def __init__(
sagemaker_session=sagemaker_session,
)
# If customer passes True from either direct_input or sagemaker_config, we will
# create a default hook config as an empty dict which will later be populated
# with default s3_output_path from _prepare_debugger_for_training function
# create a default hook config populated with the default s3_output_path.
if self.debugger_hook_config is True:
self.debugger_hook_config = {}
self.debugger_hook_config = DebuggerHookConfig()

self.tensorboard_output_config = tensorboard_output_config

Expand DownExpand Up@@ -1197,8 +1196,11 @@ def _validate_and_set_debugger_configs(self):
)

if region_supports_debugger:
if self.debugger_hook_config in [None, {}]:
self.debugger_hook_config = DebuggerHookConfig(s3_output_path=self.output_path)
# Debugger is opt-in: do NOT auto-attach a DebuggerHookConfig when the customer
# did not request one (unset -> None). The hook is still created upstream in
# _prepare_debugger_for_training when debugger_rules are set, or when the customer
# explicitly passes debugger_hook_config=True / a DebuggerHookConfig instance.
pass
else:
if self.debugger_hook_config is not False and self.debugger_hook_config:
# when user set debugger config in a unsupported region
Expand DownExpand Up@@ -1245,11 +1247,11 @@ def _prepare_profiler_for_training(self):
if self.profiler_rules:
raise RuntimeError("ProfilerRule cannot be set when disable_profiler is True.")
elif _region_supports_profiler(self.sagemaker_session.boto_region_name):
if self.profiler_config is None:
self.profiler_config = ProfilerConfig(s3_output_path=self.output_path)
# Profiler is opt-in: do NOT auto-attach an active ProfilerConfig by default.
# If profiler_config is left unset it is emitted as disabled below.
if self.rules is None or (self.rules and not self.profiler_rules):
self.profiler_rules = []
if self.profiler_config.profile_params:
if self.profiler_config and self.profiler_config.profile_params:
self.profiler_rules.append(
get_default_profiler_processing_job(
instance_type=self.profiler_config.profile_params.instanceType,
Expand Down
7 changes: 1 addition & 6 deletions tests/unit/sagemaker/huggingface/test_estimator.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -148,13 +148,8 @@ def _create_train_job(version, base_framework_version):
"retry_strategy": None,
"experiment_config": None,
"enable_network_isolation": False,
"debugger_hook_config": {
"CollectionConfigurations": [],
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
},
"profiler_config": {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
},
}

Expand Down
9 changes: 1 addition & 8 deletions tests/unit/sagemaker/tensorflow/test_estimator.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -146,17 +146,10 @@ def _create_train_job(tf_version, horovod=False, ps=False, py_version="py2", smd
"enable_network_isolation": False,
"experiment_config": None,
"profiler_config": {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
},
}

if not ps:
conf["debugger_hook_config"] = {
"CollectionConfigurations": [],
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
}

return conf


Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -150,13 +150,8 @@ def _create_train_job(
"environment": None,
"retry_strategy": None,
"experiment_config": EXPERIMENT_CONFIG,
"debugger_hook_config": {
"CollectionConfigurations": [],
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
},
"profiler_config": {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
},
}

Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -147,13 +147,8 @@ def _create_train_job(
"retry_strategy": None,
"experiment_config": EXPERIMENT_CONFIG,
"enable_network_isolation": False,
"debugger_hook_config": {
"CollectionConfigurations": [],
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
},
"profiler_config": {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
},
}

Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -146,13 +146,8 @@ def _create_train_job(
"retry_strategy": None,
"experiment_config": EXPERIMENT_CONFIG,
"enable_network_isolation": False,
"debugger_hook_config": {
"CollectionConfigurations": [],
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
},
"profiler_config": {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
},
}

Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -152,13 +152,8 @@ def _create_train_job(framework_version, instance_type, training_compiler_config
"retry_strategy": None,
"experiment_config": EXPERIMENT_CONFIG,
"enable_network_isolation": False,
"debugger_hook_config": {
"CollectionConfigurations": [],
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
},
"profiler_config": {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
},
}

Expand Down
16 changes: 0 additions & 16 deletions tests/unit/sagemaker/workflow/test_step_collections.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -767,10 +767,6 @@ def test_register_model_with_model_repack_with_estimator(
"TrainingImage": MODEL_REPACKING_IMAGE_URI,
"TrainingInputMode": "File",
},
"DebugHookConfig": {
"CollectionConfigurations": [],
"S3OutputPath": f"s3://{BUCKET}/",
},
"ProfilerConfig": {"DisableProfiler": True},
"HyperParameters": {
"inference_script": '"inference.py"',
Expand DownExpand Up@@ -896,10 +892,6 @@ def test_register_model_with_model_repack_with_model(model, model_metrics, drift
"TrainingImage": MODEL_REPACKING_IMAGE_URI,
"TrainingInputMode": "File",
},
"DebugHookConfig": {
"CollectionConfigurations": [],
"S3OutputPath": f"s3://{BUCKET}/",
},
"ProfilerConfig": {"DisableProfiler": True},
"HyperParameters": {
"inference_script": '"inference.py"',
Expand DownExpand Up@@ -1027,10 +1019,6 @@ def test_register_model_with_model_repack_with_pipeline_model(
"TrainingImage": MODEL_REPACKING_IMAGE_URI,
"TrainingInputMode": "File",
},
"DebugHookConfig": {
"CollectionConfigurations": [],
"S3OutputPath": f"s3://{BUCKET}/",
},
"ProfilerConfig": {"DisableProfiler": True},
"HyperParameters": {
"dependencies": "null",
Expand DownExpand Up@@ -1254,10 +1242,6 @@ def test_estimator_transformer_with_model_repack_with_estimator(estimator, sourc
"sagemaker_region": '"us-west-2"',
},
"VpcConfig": {"Subnets": ["abc", "def"], "SecurityGroupIds": ["123", "456"]},
"DebugHookConfig": {
"S3OutputPath": "s3://my-bucket/",
"CollectionConfigurations": [],
},
}
elif request_dict["Type"] == "Model":
assert request_dict["Name"] == "EstimatorTransformerStepCreateModelStep"
Expand Down
6 changes: 1 addition & 5 deletions tests/unit/sagemaker/workflow/test_steps.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -337,10 +337,6 @@ def test_training_step_base_estimator(sagemaker_session):
},
"RoleArn": ROLE,
"StoppingCondition": {"MaxRuntimeInSeconds": 86400},
"DebugHookConfig": {
"S3OutputPath": {"Std:Join": {"On": "/", "Values": ["s3:/", "a", "b"]}},
"CollectionConfigurations": [],
},
"ProfilerConfig": {
"DisableProfiler": False,
"ProfilingIntervalInMilliseconds": 500,
Expand DownExpand Up@@ -453,7 +449,7 @@ def test_training_step_tensorflow(sagemaker_session):
"sagemaker_instance_type": {"Get": "Parameters.InstanceType"},
"sagemaker_distributed_dataparallel_custom_mpi_options": '""',
},
"ProfilerConfig": {"DisableProfiler": False, "S3OutputPath": "s3://my-bucket/"},
"ProfilerConfig": {"DisableProfiler": True},
},
"CacheConfig": {"Enabled": True, "ExpireAfter": "PT1H"},
}
Expand Down
2 changes: 0 additions & 2 deletions tests/unit/sagemaker/workflow/test_utils.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -94,7 +94,6 @@ def test_repack_model_step(estimator):
"DependsOn": ["TestStep"],
"Arguments": {
"AlgorithmSpecification": {"TrainingInputMode": "File"},
"DebugHookConfig": {"CollectionConfigurations": [], "S3OutputPath": "s3://my-bucket/"},
"InputDataConfig": [
{
"ChannelName": "training",
Expand DownExpand Up@@ -176,7 +175,6 @@ def test_repack_model_step_with_source_dir(estimator, source_dir):
"Type": "Training",
"Arguments": {
"AlgorithmSpecification": {"TrainingInputMode": "File"},
"DebugHookConfig": {"CollectionConfigurations": [], "S3OutputPath": "s3://my-bucket/"},
"InputDataConfig": [
{
"ChannelName": "training",
Expand Down
7 changes: 1 addition & 6 deletions tests/unit/test_chainer.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -154,13 +154,8 @@ def _create_train_job(version, py_version):
"enable_network_isolation": False,
"environment": None,
"experiment_config": None,
"debugger_hook_config": {
"CollectionConfigurations": [],
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
},
"profiler_config": {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
},
}

Expand Down
35 changes: 15 additions & 20 deletions tests/unit/test_estimator.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -693,7 +693,7 @@ def test_estimator_with_debugger_hook_config_provided_as_bool_from_direct_input(
base_job_name="base_job_name",
debugger_hook_config=True,
)
assert estimator.debugger_hook_config == {}
assert isinstance(estimator.debugger_hook_config, DebuggerHookConfig)


def test_estimator_with_debugger_hook_config_provided_as_dict_from_direct_input(
Expand DownExpand Up@@ -1067,8 +1067,7 @@ def test_framework_with_debugger_and_built_in_rule(sagemaker_session):
],
}
assert args["profiler_config"] == {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
}


Expand DownExpand Up@@ -1226,14 +1225,10 @@ def test_framework_without_debugger_and_profiler(time, sagemaker_session):
f.fit("s3://mydata")
sagemaker_session.train.assert_called_once()
_, args = sagemaker_session.train.call_args
assert args["debugger_hook_config"] == {
"CollectionConfigurations": [],
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
}
assert "debugger_hook_config" not in args or args["debugger_hook_config"] is None
assert "debugger_rule_configs" not in args
assert args["profiler_config"] == {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
}


Expand DownExpand Up@@ -1296,8 +1291,7 @@ def test_framework_with_debugger_and_profiler_rules(sagemaker_session):
],
}
assert args["profiler_config"] == {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
}
assert args["profiler_rule_configs"] == [
{
Expand DownExpand Up@@ -1332,8 +1326,7 @@ def test_framework_with_only_profiler_rule_specified(sagemaker_session):
sagemaker_session.train.assert_called_once()
_, args = sagemaker_session.train.call_args
assert args["profiler_config"] == {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
}
assert args["profiler_rule_configs"] == [
{
Expand DownExpand Up@@ -2601,7 +2594,7 @@ def test_fit_verify_job_name(strftime, sagemaker_session):
@pytest.mark.parametrize(
"debugger_hook_config_direct_input, sagemaker_config, expected_debugger_hook_config_output",
[
(None, None, S3_OUTPUT_PATH_FROM_SESSION_S3_DEFAULT_CONFIG),
(None, None, None),
(True, None, S3_OUTPUT_PATH_FROM_SESSION_S3_DEFAULT_CONFIG),
(False, None, False),
(HOOK_CONFIG, None, HOOK_CONFIG.s3_output_path),
Expand DownExpand Up@@ -2665,6 +2658,8 @@ def test_prepare_for_training_for_debugger_hook_config_value_combinations(

if expected_debugger_hook_config_output is False:
assert fw.debugger_hook_config == expected_debugger_hook_config_output
elif expected_debugger_hook_config_output is None:
assert fw.debugger_hook_config is None
else:
assert fw.debugger_hook_config.s3_output_path == expected_debugger_hook_config_output

Expand DownExpand Up@@ -3522,7 +3517,7 @@ def test_unsupported_type_in_dict():
"input_config": None,
"input_mode": "File",
"output_config": {"S3OutputPath": OUTPUT_PATH},
"profiler_config": {"DisableProfiler": False, "S3OutputPath": OUTPUT_PATH},
"profiler_config": {"DisableProfiler": True},
"resource_config": {
"InstanceCount": INSTANCE_COUNT,
"InstanceType": INSTANCE_TYPE,
Expand DownExpand Up@@ -3802,7 +3797,7 @@ def test_generic_to_fit_no_input(time, sagemaker_session):

args.pop("job_name")
args.pop("role")
args.pop("debugger_hook_config")
args.pop("debugger_hook_config", None)

assert args == NO_INPUT_TRAIN_CALL

Expand All@@ -3827,7 +3822,7 @@ def test_generic_to_fit_no_hps(time, sagemaker_session):

args.pop("job_name")
args.pop("role")
args.pop("debugger_hook_config")
args.pop("debugger_hook_config", None)

assert args == BASE_TRAIN_CALL

Expand All@@ -3854,7 +3849,7 @@ def test_generic_to_fit_with_hps(time, sagemaker_session):

args.pop("job_name")
args.pop("role")
args.pop("debugger_hook_config")
args.pop("debugger_hook_config", None)

assert args == HP_TRAIN_CALL

Expand DownExpand Up@@ -3887,7 +3882,7 @@ def test_generic_to_fit_with_experiment_config(time, sagemaker_session):

args.pop("job_name")
args.pop("role")
args.pop("debugger_hook_config")
args.pop("debugger_hook_config", None)

assert args == EXP_TRAIN_CALL

Expand DownExpand Up@@ -4041,7 +4036,7 @@ def test_generic_to_deploy(time, sagemaker_session):

args.pop("job_name")
args.pop("role")
args.pop("debugger_hook_config")
args.pop("debugger_hook_config", None)

assert args == HP_TRAIN_CALL

Expand Down
7 changes: 1 addition & 6 deletions tests/unit/test_mxnet.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -170,13 +170,8 @@ def _get_train_args(job_name):
"retry_strategy": None,
"experiment_config": None,
"enable_network_isolation": False,
"debugger_hook_config": {
"CollectionConfigurations": [],
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
},
"profiler_config": {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
},
}

Expand Down
7 changes: 1 addition & 6 deletions tests/unit/test_pytorch.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -187,13 +187,8 @@ def _create_train_job(version, py_version):
"retry_strategy": None,
"experiment_config": None,
"enable_network_isolation": False,
"debugger_hook_config": {
"CollectionConfigurations": [],
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
},
"profiler_config": {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
},
}

Expand Down
Loading
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 10 additions & 8 deletions src/sagemaker/estimator.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -790,10 +790,9 @@ def __init__(
sagemaker_session=sagemaker_session,
)
# If customer passes True from either direct_input or sagemaker_config, we will
# create a default hook config as an empty dict which will later be populated
# with default s3_output_path from _prepare_debugger_for_training function
# create a default hook config populated with the default s3_output_path.
if self.debugger_hook_config is True:
self.debugger_hook_config = {}
self.debugger_hook_config = DebuggerHookConfig()

self.tensorboard_output_config = tensorboard_output_config

Expand DownExpand Up@@ -1197,8 +1196,11 @@ def _validate_and_set_debugger_configs(self):
)

if region_supports_debugger:
if self.debugger_hook_config in [None, {}]:
self.debugger_hook_config = DebuggerHookConfig(s3_output_path=self.output_path)
# Debugger is opt-in: do NOT auto-attach a DebuggerHookConfig when the customer
# did not request one (unset -> None). The hook is still created upstream in
# _prepare_debugger_for_training when debugger_rules are set, or when the customer
# explicitly passes debugger_hook_config=True / a DebuggerHookConfig instance.
pass
else:
if self.debugger_hook_config is not False and self.debugger_hook_config:
# when user set debugger config in a unsupported region
Expand DownExpand Up@@ -1245,11 +1247,11 @@ def _prepare_profiler_for_training(self):
if self.profiler_rules:
raise RuntimeError("ProfilerRule cannot be set when disable_profiler is True.")
elif _region_supports_profiler(self.sagemaker_session.boto_region_name):
if self.profiler_config is None:
self.profiler_config = ProfilerConfig(s3_output_path=self.output_path)
# Profiler is opt-in: do NOT auto-attach an active ProfilerConfig by default.
# If profiler_config is left unset it is emitted as disabled below.
if self.rules is None or (self.rules and not self.profiler_rules):
self.profiler_rules = []
if self.profiler_config.profile_params:
if self.profiler_config and self.profiler_config.profile_params:
self.profiler_rules.append(
get_default_profiler_processing_job(
instance_type=self.profiler_config.profile_params.instanceType,
Expand Down
7 changes: 1 addition & 6 deletions tests/unit/sagemaker/huggingface/test_estimator.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -148,13 +148,8 @@ def _create_train_job(version, base_framework_version):
"retry_strategy": None,
"experiment_config": None,
"enable_network_isolation": False,
"debugger_hook_config": {
"CollectionConfigurations": [],
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
},
"profiler_config": {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
},
}

Expand Down
9 changes: 1 addition & 8 deletions tests/unit/sagemaker/tensorflow/test_estimator.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -146,17 +146,10 @@ def _create_train_job(tf_version, horovod=False, ps=False, py_version="py2", smd
"enable_network_isolation": False,
"experiment_config": None,
"profiler_config": {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
},
}

if not ps:
conf["debugger_hook_config"] = {
"CollectionConfigurations": [],
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
}

return conf


Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -150,13 +150,8 @@ def _create_train_job(
"environment": None,
"retry_strategy": None,
"experiment_config": EXPERIMENT_CONFIG,
"debugger_hook_config": {
"CollectionConfigurations": [],
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
},
"profiler_config": {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
},
}

Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -147,13 +147,8 @@ def _create_train_job(
"retry_strategy": None,
"experiment_config": EXPERIMENT_CONFIG,
"enable_network_isolation": False,
"debugger_hook_config": {
"CollectionConfigurations": [],
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
},
"profiler_config": {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
},
}

Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -146,13 +146,8 @@ def _create_train_job(
"retry_strategy": None,
"experiment_config": EXPERIMENT_CONFIG,
"enable_network_isolation": False,
"debugger_hook_config": {
"CollectionConfigurations": [],
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
},
"profiler_config": {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
},
}

Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -152,13 +152,8 @@ def _create_train_job(framework_version, instance_type, training_compiler_config
"retry_strategy": None,
"experiment_config": EXPERIMENT_CONFIG,
"enable_network_isolation": False,
"debugger_hook_config": {
"CollectionConfigurations": [],
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
},
"profiler_config": {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
},
}

Expand Down
16 changes: 0 additions & 16 deletions tests/unit/sagemaker/workflow/test_step_collections.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -767,10 +767,6 @@ def test_register_model_with_model_repack_with_estimator(
"TrainingImage": MODEL_REPACKING_IMAGE_URI,
"TrainingInputMode": "File",
},
"DebugHookConfig": {
"CollectionConfigurations": [],
"S3OutputPath": f"s3://{BUCKET}/",
},
"ProfilerConfig": {"DisableProfiler": True},
"HyperParameters": {
"inference_script": '"inference.py"',
Expand DownExpand Up@@ -896,10 +892,6 @@ def test_register_model_with_model_repack_with_model(model, model_metrics, drift
"TrainingImage": MODEL_REPACKING_IMAGE_URI,
"TrainingInputMode": "File",
},
"DebugHookConfig": {
"CollectionConfigurations": [],
"S3OutputPath": f"s3://{BUCKET}/",
},
"ProfilerConfig": {"DisableProfiler": True},
"HyperParameters": {
"inference_script": '"inference.py"',
Expand DownExpand Up@@ -1027,10 +1019,6 @@ def test_register_model_with_model_repack_with_pipeline_model(
"TrainingImage": MODEL_REPACKING_IMAGE_URI,
"TrainingInputMode": "File",
},
"DebugHookConfig": {
"CollectionConfigurations": [],
"S3OutputPath": f"s3://{BUCKET}/",
},
"ProfilerConfig": {"DisableProfiler": True},
"HyperParameters": {
"dependencies": "null",
Expand DownExpand Up@@ -1254,10 +1242,6 @@ def test_estimator_transformer_with_model_repack_with_estimator(estimator, sourc
"sagemaker_region": '"us-west-2"',
},
"VpcConfig": {"Subnets": ["abc", "def"], "SecurityGroupIds": ["123", "456"]},
"DebugHookConfig": {
"S3OutputPath": "s3://my-bucket/",
"CollectionConfigurations": [],
},
}
elif request_dict["Type"] == "Model":
assert request_dict["Name"] == "EstimatorTransformerStepCreateModelStep"
Expand Down
6 changes: 1 addition & 5 deletions tests/unit/sagemaker/workflow/test_steps.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -337,10 +337,6 @@ def test_training_step_base_estimator(sagemaker_session):
},
"RoleArn": ROLE,
"StoppingCondition": {"MaxRuntimeInSeconds": 86400},
"DebugHookConfig": {
"S3OutputPath": {"Std:Join": {"On": "/", "Values": ["s3:/", "a", "b"]}},
"CollectionConfigurations": [],
},
"ProfilerConfig": {
"DisableProfiler": False,
"ProfilingIntervalInMilliseconds": 500,
Expand DownExpand Up@@ -453,7 +449,7 @@ def test_training_step_tensorflow(sagemaker_session):
"sagemaker_instance_type": {"Get": "Parameters.InstanceType"},
"sagemaker_distributed_dataparallel_custom_mpi_options": '""',
},
"ProfilerConfig": {"DisableProfiler": False, "S3OutputPath": "s3://my-bucket/"},
"ProfilerConfig": {"DisableProfiler": True},
},
"CacheConfig": {"Enabled": True, "ExpireAfter": "PT1H"},
}
Expand Down
2 changes: 0 additions & 2 deletions tests/unit/sagemaker/workflow/test_utils.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -94,7 +94,6 @@ def test_repack_model_step(estimator):
"DependsOn": ["TestStep"],
"Arguments": {
"AlgorithmSpecification": {"TrainingInputMode": "File"},
"DebugHookConfig": {"CollectionConfigurations": [], "S3OutputPath": "s3://my-bucket/"},
"InputDataConfig": [
{
"ChannelName": "training",
Expand DownExpand Up@@ -176,7 +175,6 @@ def test_repack_model_step_with_source_dir(estimator, source_dir):
"Type": "Training",
"Arguments": {
"AlgorithmSpecification": {"TrainingInputMode": "File"},
"DebugHookConfig": {"CollectionConfigurations": [], "S3OutputPath": "s3://my-bucket/"},
"InputDataConfig": [
{
"ChannelName": "training",
Expand Down
7 changes: 1 addition & 6 deletions tests/unit/test_chainer.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -154,13 +154,8 @@ def _create_train_job(version, py_version):
"enable_network_isolation": False,
"environment": None,
"experiment_config": None,
"debugger_hook_config": {
"CollectionConfigurations": [],
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
},
"profiler_config": {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
},
}

Expand Down
35 changes: 15 additions & 20 deletions tests/unit/test_estimator.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -693,7 +693,7 @@ def test_estimator_with_debugger_hook_config_provided_as_bool_from_direct_input(
base_job_name="base_job_name",
debugger_hook_config=True,
)
assert estimator.debugger_hook_config == {}
assert isinstance(estimator.debugger_hook_config, DebuggerHookConfig)


def test_estimator_with_debugger_hook_config_provided_as_dict_from_direct_input(
Expand DownExpand Up@@ -1067,8 +1067,7 @@ def test_framework_with_debugger_and_built_in_rule(sagemaker_session):
],
}
assert args["profiler_config"] == {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
}


Expand DownExpand Up@@ -1226,14 +1225,10 @@ def test_framework_without_debugger_and_profiler(time, sagemaker_session):
f.fit("s3://mydata")
sagemaker_session.train.assert_called_once()
_, args = sagemaker_session.train.call_args
assert args["debugger_hook_config"] == {
"CollectionConfigurations": [],
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
}
assert "debugger_hook_config" not in args or args["debugger_hook_config"] is None
assert "debugger_rule_configs" not in args
assert args["profiler_config"] == {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
}


Expand DownExpand Up@@ -1296,8 +1291,7 @@ def test_framework_with_debugger_and_profiler_rules(sagemaker_session):
],
}
assert args["profiler_config"] == {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
}
assert args["profiler_rule_configs"] == [
{
Expand DownExpand Up@@ -1332,8 +1326,7 @@ def test_framework_with_only_profiler_rule_specified(sagemaker_session):
sagemaker_session.train.assert_called_once()
_, args = sagemaker_session.train.call_args
assert args["profiler_config"] == {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
}
assert args["profiler_rule_configs"] == [
{
Expand DownExpand Up@@ -2601,7 +2594,7 @@ def test_fit_verify_job_name(strftime, sagemaker_session):
@pytest.mark.parametrize(
"debugger_hook_config_direct_input, sagemaker_config, expected_debugger_hook_config_output",
[
(None, None, S3_OUTPUT_PATH_FROM_SESSION_S3_DEFAULT_CONFIG),
(None, None, None),
(True, None, S3_OUTPUT_PATH_FROM_SESSION_S3_DEFAULT_CONFIG),
(False, None, False),
(HOOK_CONFIG, None, HOOK_CONFIG.s3_output_path),
Expand DownExpand Up@@ -2665,6 +2658,8 @@ def test_prepare_for_training_for_debugger_hook_config_value_combinations(

if expected_debugger_hook_config_output is False:
assert fw.debugger_hook_config == expected_debugger_hook_config_output
elif expected_debugger_hook_config_output is None:
assert fw.debugger_hook_config is None
else:
assert fw.debugger_hook_config.s3_output_path == expected_debugger_hook_config_output

Expand DownExpand Up@@ -3522,7 +3517,7 @@ def test_unsupported_type_in_dict():
"input_config": None,
"input_mode": "File",
"output_config": {"S3OutputPath": OUTPUT_PATH},
"profiler_config": {"DisableProfiler": False, "S3OutputPath": OUTPUT_PATH},
"profiler_config": {"DisableProfiler": True},
"resource_config": {
"InstanceCount": INSTANCE_COUNT,
"InstanceType": INSTANCE_TYPE,
Expand DownExpand Up@@ -3802,7 +3797,7 @@ def test_generic_to_fit_no_input(time, sagemaker_session):

args.pop("job_name")
args.pop("role")
args.pop("debugger_hook_config")
args.pop("debugger_hook_config", None)

assert args == NO_INPUT_TRAIN_CALL

Expand All@@ -3827,7 +3822,7 @@ def test_generic_to_fit_no_hps(time, sagemaker_session):

args.pop("job_name")
args.pop("role")
args.pop("debugger_hook_config")
args.pop("debugger_hook_config", None)

assert args == BASE_TRAIN_CALL

Expand All@@ -3854,7 +3849,7 @@ def test_generic_to_fit_with_hps(time, sagemaker_session):

args.pop("job_name")
args.pop("role")
args.pop("debugger_hook_config")
args.pop("debugger_hook_config", None)

assert args == HP_TRAIN_CALL

Expand DownExpand Up@@ -3887,7 +3882,7 @@ def test_generic_to_fit_with_experiment_config(time, sagemaker_session):

args.pop("job_name")
args.pop("role")
args.pop("debugger_hook_config")
args.pop("debugger_hook_config", None)

assert args == EXP_TRAIN_CALL

Expand DownExpand Up@@ -4041,7 +4036,7 @@ def test_generic_to_deploy(time, sagemaker_session):

args.pop("job_name")
args.pop("role")
args.pop("debugger_hook_config")
args.pop("debugger_hook_config", None)

assert args == HP_TRAIN_CALL

Expand Down
7 changes: 1 addition & 6 deletions tests/unit/test_mxnet.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -170,13 +170,8 @@ def _get_train_args(job_name):
"retry_strategy": None,
"experiment_config": None,
"enable_network_isolation": False,
"debugger_hook_config": {
"CollectionConfigurations": [],
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
},
"profiler_config": {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
},
}

Expand Down
7 changes: 1 addition & 6 deletions tests/unit/test_pytorch.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -187,13 +187,8 @@ def _create_train_job(version, py_version):
"retry_strategy": None,
"experiment_config": None,
"enable_network_isolation": False,
"debugger_hook_config": {
"CollectionConfigurations": [],
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
},
"profiler_config": {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
},
}

Expand Down
Loading
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 10 additions & 8 deletions src/sagemaker/estimator.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -790,10 +790,9 @@ def __init__(
sagemaker_session=sagemaker_session,
)
# If customer passes True from either direct_input or sagemaker_config, we will
# create a default hook config as an empty dict which will later be populated
# with default s3_output_path from _prepare_debugger_for_training function
# create a default hook config populated with the default s3_output_path.
if self.debugger_hook_config is True:
self.debugger_hook_config = {}
self.debugger_hook_config = DebuggerHookConfig()

self.tensorboard_output_config = tensorboard_output_config

Expand DownExpand Up@@ -1197,8 +1196,11 @@ def _validate_and_set_debugger_configs(self):
)

if region_supports_debugger:
if self.debugger_hook_config in [None, {}]:
self.debugger_hook_config = DebuggerHookConfig(s3_output_path=self.output_path)
# Debugger is opt-in: do NOT auto-attach a DebuggerHookConfig when the customer
# did not request one (unset -> None). The hook is still created upstream in
# _prepare_debugger_for_training when debugger_rules are set, or when the customer
# explicitly passes debugger_hook_config=True / a DebuggerHookConfig instance.
pass
else:
if self.debugger_hook_config is not False and self.debugger_hook_config:
# when user set debugger config in a unsupported region
Expand DownExpand Up@@ -1245,11 +1247,11 @@ def _prepare_profiler_for_training(self):
if self.profiler_rules:
raise RuntimeError("ProfilerRule cannot be set when disable_profiler is True.")
elif _region_supports_profiler(self.sagemaker_session.boto_region_name):
if self.profiler_config is None:
self.profiler_config = ProfilerConfig(s3_output_path=self.output_path)
# Profiler is opt-in: do NOT auto-attach an active ProfilerConfig by default.
# If profiler_config is left unset it is emitted as disabled below.
if self.rules is None or (self.rules and not self.profiler_rules):
self.profiler_rules = []
if self.profiler_config.profile_params:
if self.profiler_config and self.profiler_config.profile_params:
self.profiler_rules.append(
get_default_profiler_processing_job(
instance_type=self.profiler_config.profile_params.instanceType,
Expand Down
7 changes: 1 addition & 6 deletions tests/unit/sagemaker/huggingface/test_estimator.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -148,13 +148,8 @@ def _create_train_job(version, base_framework_version):
"retry_strategy": None,
"experiment_config": None,
"enable_network_isolation": False,
"debugger_hook_config": {
"CollectionConfigurations": [],
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
},
"profiler_config": {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
},
}

Expand Down
9 changes: 1 addition & 8 deletions tests/unit/sagemaker/tensorflow/test_estimator.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -146,17 +146,10 @@ def _create_train_job(tf_version, horovod=False, ps=False, py_version="py2", smd
"enable_network_isolation": False,
"experiment_config": None,
"profiler_config": {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
},
}

if not ps:
conf["debugger_hook_config"] = {
"CollectionConfigurations": [],
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
}

return conf


Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -150,13 +150,8 @@ def _create_train_job(
"environment": None,
"retry_strategy": None,
"experiment_config": EXPERIMENT_CONFIG,
"debugger_hook_config": {
"CollectionConfigurations": [],
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
},
"profiler_config": {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
},
}

Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -147,13 +147,8 @@ def _create_train_job(
"retry_strategy": None,
"experiment_config": EXPERIMENT_CONFIG,
"enable_network_isolation": False,
"debugger_hook_config": {
"CollectionConfigurations": [],
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
},
"profiler_config": {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
},
}

Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -146,13 +146,8 @@ def _create_train_job(
"retry_strategy": None,
"experiment_config": EXPERIMENT_CONFIG,
"enable_network_isolation": False,
"debugger_hook_config": {
"CollectionConfigurations": [],
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
},
"profiler_config": {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
},
}

Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -152,13 +152,8 @@ def _create_train_job(framework_version, instance_type, training_compiler_config
"retry_strategy": None,
"experiment_config": EXPERIMENT_CONFIG,
"enable_network_isolation": False,
"debugger_hook_config": {
"CollectionConfigurations": [],
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
},
"profiler_config": {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
},
}

Expand Down
16 changes: 0 additions & 16 deletions tests/unit/sagemaker/workflow/test_step_collections.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -767,10 +767,6 @@ def test_register_model_with_model_repack_with_estimator(
"TrainingImage": MODEL_REPACKING_IMAGE_URI,
"TrainingInputMode": "File",
},
"DebugHookConfig": {
"CollectionConfigurations": [],
"S3OutputPath": f"s3://{BUCKET}/",
},
"ProfilerConfig": {"DisableProfiler": True},
"HyperParameters": {
"inference_script": '"inference.py"',
Expand DownExpand Up@@ -896,10 +892,6 @@ def test_register_model_with_model_repack_with_model(model, model_metrics, drift
"TrainingImage": MODEL_REPACKING_IMAGE_URI,
"TrainingInputMode": "File",
},
"DebugHookConfig": {
"CollectionConfigurations": [],
"S3OutputPath": f"s3://{BUCKET}/",
},
"ProfilerConfig": {"DisableProfiler": True},
"HyperParameters": {
"inference_script": '"inference.py"',
Expand DownExpand Up@@ -1027,10 +1019,6 @@ def test_register_model_with_model_repack_with_pipeline_model(
"TrainingImage": MODEL_REPACKING_IMAGE_URI,
"TrainingInputMode": "File",
},
"DebugHookConfig": {
"CollectionConfigurations": [],
"S3OutputPath": f"s3://{BUCKET}/",
},
"ProfilerConfig": {"DisableProfiler": True},
"HyperParameters": {
"dependencies": "null",
Expand DownExpand Up@@ -1254,10 +1242,6 @@ def test_estimator_transformer_with_model_repack_with_estimator(estimator, sourc
"sagemaker_region": '"us-west-2"',
},
"VpcConfig": {"Subnets": ["abc", "def"], "SecurityGroupIds": ["123", "456"]},
"DebugHookConfig": {
"S3OutputPath": "s3://my-bucket/",
"CollectionConfigurations": [],
},
}
elif request_dict["Type"] == "Model":
assert request_dict["Name"] == "EstimatorTransformerStepCreateModelStep"
Expand Down
6 changes: 1 addition & 5 deletions tests/unit/sagemaker/workflow/test_steps.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -337,10 +337,6 @@ def test_training_step_base_estimator(sagemaker_session):
},
"RoleArn": ROLE,
"StoppingCondition": {"MaxRuntimeInSeconds": 86400},
"DebugHookConfig": {
"S3OutputPath": {"Std:Join": {"On": "/", "Values": ["s3:/", "a", "b"]}},
"CollectionConfigurations": [],
},
"ProfilerConfig": {
"DisableProfiler": False,
"ProfilingIntervalInMilliseconds": 500,
Expand DownExpand Up@@ -453,7 +449,7 @@ def test_training_step_tensorflow(sagemaker_session):
"sagemaker_instance_type": {"Get": "Parameters.InstanceType"},
"sagemaker_distributed_dataparallel_custom_mpi_options": '""',
},
"ProfilerConfig": {"DisableProfiler": False, "S3OutputPath": "s3://my-bucket/"},
"ProfilerConfig": {"DisableProfiler": True},
},
"CacheConfig": {"Enabled": True, "ExpireAfter": "PT1H"},
}
Expand Down
2 changes: 0 additions & 2 deletions tests/unit/sagemaker/workflow/test_utils.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -94,7 +94,6 @@ def test_repack_model_step(estimator):
"DependsOn": ["TestStep"],
"Arguments": {
"AlgorithmSpecification": {"TrainingInputMode": "File"},
"DebugHookConfig": {"CollectionConfigurations": [], "S3OutputPath": "s3://my-bucket/"},
"InputDataConfig": [
{
"ChannelName": "training",
Expand DownExpand Up@@ -176,7 +175,6 @@ def test_repack_model_step_with_source_dir(estimator, source_dir):
"Type": "Training",
"Arguments": {
"AlgorithmSpecification": {"TrainingInputMode": "File"},
"DebugHookConfig": {"CollectionConfigurations": [], "S3OutputPath": "s3://my-bucket/"},
"InputDataConfig": [
{
"ChannelName": "training",
Expand Down
7 changes: 1 addition & 6 deletions tests/unit/test_chainer.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -154,13 +154,8 @@ def _create_train_job(version, py_version):
"enable_network_isolation": False,
"environment": None,
"experiment_config": None,
"debugger_hook_config": {
"CollectionConfigurations": [],
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
},
"profiler_config": {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
},
}

Expand Down
35 changes: 15 additions & 20 deletions tests/unit/test_estimator.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -693,7 +693,7 @@ def test_estimator_with_debugger_hook_config_provided_as_bool_from_direct_input(
base_job_name="base_job_name",
debugger_hook_config=True,
)
assert estimator.debugger_hook_config == {}
assert isinstance(estimator.debugger_hook_config, DebuggerHookConfig)


def test_estimator_with_debugger_hook_config_provided_as_dict_from_direct_input(
Expand DownExpand Up@@ -1067,8 +1067,7 @@ def test_framework_with_debugger_and_built_in_rule(sagemaker_session):
],
}
assert args["profiler_config"] == {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
}


Expand DownExpand Up@@ -1226,14 +1225,10 @@ def test_framework_without_debugger_and_profiler(time, sagemaker_session):
f.fit("s3://mydata")
sagemaker_session.train.assert_called_once()
_, args = sagemaker_session.train.call_args
assert args["debugger_hook_config"] == {
"CollectionConfigurations": [],
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
}
assert "debugger_hook_config" not in args or args["debugger_hook_config"] is None
assert "debugger_rule_configs" not in args
assert args["profiler_config"] == {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
}


Expand DownExpand Up@@ -1296,8 +1291,7 @@ def test_framework_with_debugger_and_profiler_rules(sagemaker_session):
],
}
assert args["profiler_config"] == {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
}
assert args["profiler_rule_configs"] == [
{
Expand DownExpand Up@@ -1332,8 +1326,7 @@ def test_framework_with_only_profiler_rule_specified(sagemaker_session):
sagemaker_session.train.assert_called_once()
_, args = sagemaker_session.train.call_args
assert args["profiler_config"] == {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
}
assert args["profiler_rule_configs"] == [
{
Expand DownExpand Up@@ -2601,7 +2594,7 @@ def test_fit_verify_job_name(strftime, sagemaker_session):
@pytest.mark.parametrize(
"debugger_hook_config_direct_input, sagemaker_config, expected_debugger_hook_config_output",
[
(None, None, S3_OUTPUT_PATH_FROM_SESSION_S3_DEFAULT_CONFIG),
(None, None, None),
(True, None, S3_OUTPUT_PATH_FROM_SESSION_S3_DEFAULT_CONFIG),
(False, None, False),
(HOOK_CONFIG, None, HOOK_CONFIG.s3_output_path),
Expand DownExpand Up@@ -2665,6 +2658,8 @@ def test_prepare_for_training_for_debugger_hook_config_value_combinations(

if expected_debugger_hook_config_output is False:
assert fw.debugger_hook_config == expected_debugger_hook_config_output
elif expected_debugger_hook_config_output is None:
assert fw.debugger_hook_config is None
else:
assert fw.debugger_hook_config.s3_output_path == expected_debugger_hook_config_output

Expand DownExpand Up@@ -3522,7 +3517,7 @@ def test_unsupported_type_in_dict():
"input_config": None,
"input_mode": "File",
"output_config": {"S3OutputPath": OUTPUT_PATH},
"profiler_config": {"DisableProfiler": False, "S3OutputPath": OUTPUT_PATH},
"profiler_config": {"DisableProfiler": True},
"resource_config": {
"InstanceCount": INSTANCE_COUNT,
"InstanceType": INSTANCE_TYPE,
Expand DownExpand Up@@ -3802,7 +3797,7 @@ def test_generic_to_fit_no_input(time, sagemaker_session):

args.pop("job_name")
args.pop("role")
args.pop("debugger_hook_config")
args.pop("debugger_hook_config", None)

assert args == NO_INPUT_TRAIN_CALL

Expand All@@ -3827,7 +3822,7 @@ def test_generic_to_fit_no_hps(time, sagemaker_session):

args.pop("job_name")
args.pop("role")
args.pop("debugger_hook_config")
args.pop("debugger_hook_config", None)

assert args == BASE_TRAIN_CALL

Expand All@@ -3854,7 +3849,7 @@ def test_generic_to_fit_with_hps(time, sagemaker_session):

args.pop("job_name")
args.pop("role")
args.pop("debugger_hook_config")
args.pop("debugger_hook_config", None)

assert args == HP_TRAIN_CALL

Expand DownExpand Up@@ -3887,7 +3882,7 @@ def test_generic_to_fit_with_experiment_config(time, sagemaker_session):

args.pop("job_name")
args.pop("role")
args.pop("debugger_hook_config")
args.pop("debugger_hook_config", None)

assert args == EXP_TRAIN_CALL

Expand DownExpand Up@@ -4041,7 +4036,7 @@ def test_generic_to_deploy(time, sagemaker_session):

args.pop("job_name")
args.pop("role")
args.pop("debugger_hook_config")
args.pop("debugger_hook_config", None)

assert args == HP_TRAIN_CALL

Expand Down
7 changes: 1 addition & 6 deletions tests/unit/test_mxnet.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -170,13 +170,8 @@ def _get_train_args(job_name):
"retry_strategy": None,
"experiment_config": None,
"enable_network_isolation": False,
"debugger_hook_config": {
"CollectionConfigurations": [],
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
},
"profiler_config": {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
},
}

Expand Down
7 changes: 1 addition & 6 deletions tests/unit/test_pytorch.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -187,13 +187,8 @@ def _create_train_job(version, py_version):
"retry_strategy": None,
"experiment_config": None,
"enable_network_isolation": False,
"debugger_hook_config": {
"CollectionConfigurations": [],
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
},
"profiler_config": {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
},
}

Expand Down
Loading
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 10 additions & 8 deletions src/sagemaker/estimator.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -790,10 +790,9 @@ def __init__(
sagemaker_session=sagemaker_session,
)
# If customer passes True from either direct_input or sagemaker_config, we will
# create a default hook config as an empty dict which will later be populated
# with default s3_output_path from _prepare_debugger_for_training function
# create a default hook config populated with the default s3_output_path.
if self.debugger_hook_config is True:
self.debugger_hook_config = {}
self.debugger_hook_config = DebuggerHookConfig()

self.tensorboard_output_config = tensorboard_output_config

Expand DownExpand Up@@ -1197,8 +1196,11 @@ def _validate_and_set_debugger_configs(self):
)

if region_supports_debugger:
if self.debugger_hook_config in [None, {}]:
self.debugger_hook_config = DebuggerHookConfig(s3_output_path=self.output_path)
# Debugger is opt-in: do NOT auto-attach a DebuggerHookConfig when the customer
# did not request one (unset -> None). The hook is still created upstream in
# _prepare_debugger_for_training when debugger_rules are set, or when the customer
# explicitly passes debugger_hook_config=True / a DebuggerHookConfig instance.
pass
else:
if self.debugger_hook_config is not False and self.debugger_hook_config:
# when user set debugger config in a unsupported region
Expand DownExpand Up@@ -1245,11 +1247,11 @@ def _prepare_profiler_for_training(self):
if self.profiler_rules:
raise RuntimeError("ProfilerRule cannot be set when disable_profiler is True.")
elif _region_supports_profiler(self.sagemaker_session.boto_region_name):
if self.profiler_config is None:
self.profiler_config = ProfilerConfig(s3_output_path=self.output_path)
# Profiler is opt-in: do NOT auto-attach an active ProfilerConfig by default.
# If profiler_config is left unset it is emitted as disabled below.
if self.rules is None or (self.rules and not self.profiler_rules):
self.profiler_rules = []
if self.profiler_config.profile_params:
if self.profiler_config and self.profiler_config.profile_params:
self.profiler_rules.append(
get_default_profiler_processing_job(
instance_type=self.profiler_config.profile_params.instanceType,
Expand Down
7 changes: 1 addition & 6 deletions tests/unit/sagemaker/huggingface/test_estimator.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -148,13 +148,8 @@ def _create_train_job(version, base_framework_version):
"retry_strategy": None,
"experiment_config": None,
"enable_network_isolation": False,
"debugger_hook_config": {
"CollectionConfigurations": [],
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
},
"profiler_config": {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
},
}

Expand Down
9 changes: 1 addition & 8 deletions tests/unit/sagemaker/tensorflow/test_estimator.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -146,17 +146,10 @@ def _create_train_job(tf_version, horovod=False, ps=False, py_version="py2", smd
"enable_network_isolation": False,
"experiment_config": None,
"profiler_config": {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
},
}

if not ps:
conf["debugger_hook_config"] = {
"CollectionConfigurations": [],
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
}

return conf


Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -150,13 +150,8 @@ def _create_train_job(
"environment": None,
"retry_strategy": None,
"experiment_config": EXPERIMENT_CONFIG,
"debugger_hook_config": {
"CollectionConfigurations": [],
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
},
"profiler_config": {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
},
}

Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -147,13 +147,8 @@ def _create_train_job(
"retry_strategy": None,
"experiment_config": EXPERIMENT_CONFIG,
"enable_network_isolation": False,
"debugger_hook_config": {
"CollectionConfigurations": [],
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
},
"profiler_config": {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
},
}

Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -146,13 +146,8 @@ def _create_train_job(
"retry_strategy": None,
"experiment_config": EXPERIMENT_CONFIG,
"enable_network_isolation": False,
"debugger_hook_config": {
"CollectionConfigurations": [],
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
},
"profiler_config": {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
},
}

Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -152,13 +152,8 @@ def _create_train_job(framework_version, instance_type, training_compiler_config
"retry_strategy": None,
"experiment_config": EXPERIMENT_CONFIG,
"enable_network_isolation": False,
"debugger_hook_config": {
"CollectionConfigurations": [],
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
},
"profiler_config": {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
},
}

Expand Down
16 changes: 0 additions & 16 deletions tests/unit/sagemaker/workflow/test_step_collections.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -767,10 +767,6 @@ def test_register_model_with_model_repack_with_estimator(
"TrainingImage": MODEL_REPACKING_IMAGE_URI,
"TrainingInputMode": "File",
},
"DebugHookConfig": {
"CollectionConfigurations": [],
"S3OutputPath": f"s3://{BUCKET}/",
},
"ProfilerConfig": {"DisableProfiler": True},
"HyperParameters": {
"inference_script": '"inference.py"',
Expand DownExpand Up@@ -896,10 +892,6 @@ def test_register_model_with_model_repack_with_model(model, model_metrics, drift
"TrainingImage": MODEL_REPACKING_IMAGE_URI,
"TrainingInputMode": "File",
},
"DebugHookConfig": {
"CollectionConfigurations": [],
"S3OutputPath": f"s3://{BUCKET}/",
},
"ProfilerConfig": {"DisableProfiler": True},
"HyperParameters": {
"inference_script": '"inference.py"',
Expand DownExpand Up@@ -1027,10 +1019,6 @@ def test_register_model_with_model_repack_with_pipeline_model(
"TrainingImage": MODEL_REPACKING_IMAGE_URI,
"TrainingInputMode": "File",
},
"DebugHookConfig": {
"CollectionConfigurations": [],
"S3OutputPath": f"s3://{BUCKET}/",
},
"ProfilerConfig": {"DisableProfiler": True},
"HyperParameters": {
"dependencies": "null",
Expand DownExpand Up@@ -1254,10 +1242,6 @@ def test_estimator_transformer_with_model_repack_with_estimator(estimator, sourc
"sagemaker_region": '"us-west-2"',
},
"VpcConfig": {"Subnets": ["abc", "def"], "SecurityGroupIds": ["123", "456"]},
"DebugHookConfig": {
"S3OutputPath": "s3://my-bucket/",
"CollectionConfigurations": [],
},
}
elif request_dict["Type"] == "Model":
assert request_dict["Name"] == "EstimatorTransformerStepCreateModelStep"
Expand Down
6 changes: 1 addition & 5 deletions tests/unit/sagemaker/workflow/test_steps.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -337,10 +337,6 @@ def test_training_step_base_estimator(sagemaker_session):
},
"RoleArn": ROLE,
"StoppingCondition": {"MaxRuntimeInSeconds": 86400},
"DebugHookConfig": {
"S3OutputPath": {"Std:Join": {"On": "/", "Values": ["s3:/", "a", "b"]}},
"CollectionConfigurations": [],
},
"ProfilerConfig": {
"DisableProfiler": False,
"ProfilingIntervalInMilliseconds": 500,
Expand DownExpand Up@@ -453,7 +449,7 @@ def test_training_step_tensorflow(sagemaker_session):
"sagemaker_instance_type": {"Get": "Parameters.InstanceType"},
"sagemaker_distributed_dataparallel_custom_mpi_options": '""',
},
"ProfilerConfig": {"DisableProfiler": False, "S3OutputPath": "s3://my-bucket/"},
"ProfilerConfig": {"DisableProfiler": True},
},
"CacheConfig": {"Enabled": True, "ExpireAfter": "PT1H"},
}
Expand Down
2 changes: 0 additions & 2 deletions tests/unit/sagemaker/workflow/test_utils.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -94,7 +94,6 @@ def test_repack_model_step(estimator):
"DependsOn": ["TestStep"],
"Arguments": {
"AlgorithmSpecification": {"TrainingInputMode": "File"},
"DebugHookConfig": {"CollectionConfigurations": [], "S3OutputPath": "s3://my-bucket/"},
"InputDataConfig": [
{
"ChannelName": "training",
Expand DownExpand Up@@ -176,7 +175,6 @@ def test_repack_model_step_with_source_dir(estimator, source_dir):
"Type": "Training",
"Arguments": {
"AlgorithmSpecification": {"TrainingInputMode": "File"},
"DebugHookConfig": {"CollectionConfigurations": [], "S3OutputPath": "s3://my-bucket/"},
"InputDataConfig": [
{
"ChannelName": "training",
Expand Down
7 changes: 1 addition & 6 deletions tests/unit/test_chainer.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -154,13 +154,8 @@ def _create_train_job(version, py_version):
"enable_network_isolation": False,
"environment": None,
"experiment_config": None,
"debugger_hook_config": {
"CollectionConfigurations": [],
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
},
"profiler_config": {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
},
}

Expand Down
35 changes: 15 additions & 20 deletions tests/unit/test_estimator.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -693,7 +693,7 @@ def test_estimator_with_debugger_hook_config_provided_as_bool_from_direct_input(
base_job_name="base_job_name",
debugger_hook_config=True,
)
assert estimator.debugger_hook_config == {}
assert isinstance(estimator.debugger_hook_config, DebuggerHookConfig)


def test_estimator_with_debugger_hook_config_provided_as_dict_from_direct_input(
Expand DownExpand Up@@ -1067,8 +1067,7 @@ def test_framework_with_debugger_and_built_in_rule(sagemaker_session):
],
}
assert args["profiler_config"] == {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
}


Expand DownExpand Up@@ -1226,14 +1225,10 @@ def test_framework_without_debugger_and_profiler(time, sagemaker_session):
f.fit("s3://mydata")
sagemaker_session.train.assert_called_once()
_, args = sagemaker_session.train.call_args
assert args["debugger_hook_config"] == {
"CollectionConfigurations": [],
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
}
assert "debugger_hook_config" not in args or args["debugger_hook_config"] is None
assert "debugger_rule_configs" not in args
assert args["profiler_config"] == {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
}


Expand DownExpand Up@@ -1296,8 +1291,7 @@ def test_framework_with_debugger_and_profiler_rules(sagemaker_session):
],
}
assert args["profiler_config"] == {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
}
assert args["profiler_rule_configs"] == [
{
Expand DownExpand Up@@ -1332,8 +1326,7 @@ def test_framework_with_only_profiler_rule_specified(sagemaker_session):
sagemaker_session.train.assert_called_once()
_, args = sagemaker_session.train.call_args
assert args["profiler_config"] == {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
}
assert args["profiler_rule_configs"] == [
{
Expand DownExpand Up@@ -2601,7 +2594,7 @@ def test_fit_verify_job_name(strftime, sagemaker_session):
@pytest.mark.parametrize(
"debugger_hook_config_direct_input, sagemaker_config, expected_debugger_hook_config_output",
[
(None, None, S3_OUTPUT_PATH_FROM_SESSION_S3_DEFAULT_CONFIG),
(None, None, None),
(True, None, S3_OUTPUT_PATH_FROM_SESSION_S3_DEFAULT_CONFIG),
(False, None, False),
(HOOK_CONFIG, None, HOOK_CONFIG.s3_output_path),
Expand DownExpand Up@@ -2665,6 +2658,8 @@ def test_prepare_for_training_for_debugger_hook_config_value_combinations(

if expected_debugger_hook_config_output is False:
assert fw.debugger_hook_config == expected_debugger_hook_config_output
elif expected_debugger_hook_config_output is None:
assert fw.debugger_hook_config is None
else:
assert fw.debugger_hook_config.s3_output_path == expected_debugger_hook_config_output

Expand DownExpand Up@@ -3522,7 +3517,7 @@ def test_unsupported_type_in_dict():
"input_config": None,
"input_mode": "File",
"output_config": {"S3OutputPath": OUTPUT_PATH},
"profiler_config": {"DisableProfiler": False, "S3OutputPath": OUTPUT_PATH},
"profiler_config": {"DisableProfiler": True},
"resource_config": {
"InstanceCount": INSTANCE_COUNT,
"InstanceType": INSTANCE_TYPE,
Expand DownExpand Up@@ -3802,7 +3797,7 @@ def test_generic_to_fit_no_input(time, sagemaker_session):

args.pop("job_name")
args.pop("role")
args.pop("debugger_hook_config")
args.pop("debugger_hook_config", None)

assert args == NO_INPUT_TRAIN_CALL

Expand All@@ -3827,7 +3822,7 @@ def test_generic_to_fit_no_hps(time, sagemaker_session):

args.pop("job_name")
args.pop("role")
args.pop("debugger_hook_config")
args.pop("debugger_hook_config", None)

assert args == BASE_TRAIN_CALL

Expand All@@ -3854,7 +3849,7 @@ def test_generic_to_fit_with_hps(time, sagemaker_session):

args.pop("job_name")
args.pop("role")
args.pop("debugger_hook_config")
args.pop("debugger_hook_config", None)

assert args == HP_TRAIN_CALL

Expand DownExpand Up@@ -3887,7 +3882,7 @@ def test_generic_to_fit_with_experiment_config(time, sagemaker_session):

args.pop("job_name")
args.pop("role")
args.pop("debugger_hook_config")
args.pop("debugger_hook_config", None)

assert args == EXP_TRAIN_CALL

Expand DownExpand Up@@ -4041,7 +4036,7 @@ def test_generic_to_deploy(time, sagemaker_session):

args.pop("job_name")
args.pop("role")
args.pop("debugger_hook_config")
args.pop("debugger_hook_config", None)

assert args == HP_TRAIN_CALL

Expand Down
7 changes: 1 addition & 6 deletions tests/unit/test_mxnet.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -170,13 +170,8 @@ def _get_train_args(job_name):
"retry_strategy": None,
"experiment_config": None,
"enable_network_isolation": False,
"debugger_hook_config": {
"CollectionConfigurations": [],
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
},
"profiler_config": {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
},
}

Expand Down
7 changes: 1 addition & 6 deletions tests/unit/test_pytorch.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -187,13 +187,8 @@ def _create_train_job(version, py_version):
"retry_strategy": None,
"experiment_config": None,
"enable_network_isolation": False,
"debugger_hook_config": {
"CollectionConfigurations": [],
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
},
"profiler_config": {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
},
}

Expand Down
Loading
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 10 additions & 8 deletions src/sagemaker/estimator.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -790,10 +790,9 @@ def __init__(
sagemaker_session=sagemaker_session,
)
# If customer passes True from either direct_input or sagemaker_config, we will
# create a default hook config as an empty dict which will later be populated
# with default s3_output_path from _prepare_debugger_for_training function
# create a default hook config populated with the default s3_output_path.
if self.debugger_hook_config is True:
self.debugger_hook_config = {}
self.debugger_hook_config = DebuggerHookConfig()

self.tensorboard_output_config = tensorboard_output_config

Expand DownExpand Up@@ -1197,8 +1196,11 @@ def _validate_and_set_debugger_configs(self):
)

if region_supports_debugger:
if self.debugger_hook_config in [None, {}]:
self.debugger_hook_config = DebuggerHookConfig(s3_output_path=self.output_path)
# Debugger is opt-in: do NOT auto-attach a DebuggerHookConfig when the customer
# did not request one (unset -> None). The hook is still created upstream in
# _prepare_debugger_for_training when debugger_rules are set, or when the customer
# explicitly passes debugger_hook_config=True / a DebuggerHookConfig instance.
pass
else:
if self.debugger_hook_config is not False and self.debugger_hook_config:
# when user set debugger config in a unsupported region
Expand DownExpand Up@@ -1245,11 +1247,11 @@ def _prepare_profiler_for_training(self):
if self.profiler_rules:
raise RuntimeError("ProfilerRule cannot be set when disable_profiler is True.")
elif _region_supports_profiler(self.sagemaker_session.boto_region_name):
if self.profiler_config is None:
self.profiler_config = ProfilerConfig(s3_output_path=self.output_path)
# Profiler is opt-in: do NOT auto-attach an active ProfilerConfig by default.
# If profiler_config is left unset it is emitted as disabled below.
if self.rules is None or (self.rules and not self.profiler_rules):
self.profiler_rules = []
if self.profiler_config.profile_params:
if self.profiler_config and self.profiler_config.profile_params:
self.profiler_rules.append(
get_default_profiler_processing_job(
instance_type=self.profiler_config.profile_params.instanceType,
Expand Down
7 changes: 1 addition & 6 deletions tests/unit/sagemaker/huggingface/test_estimator.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -148,13 +148,8 @@ def _create_train_job(version, base_framework_version):
"retry_strategy": None,
"experiment_config": None,
"enable_network_isolation": False,
"debugger_hook_config": {
"CollectionConfigurations": [],
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
},
"profiler_config": {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
},
}

Expand Down
9 changes: 1 addition & 8 deletions tests/unit/sagemaker/tensorflow/test_estimator.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -146,17 +146,10 @@ def _create_train_job(tf_version, horovod=False, ps=False, py_version="py2", smd
"enable_network_isolation": False,
"experiment_config": None,
"profiler_config": {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
},
}

if not ps:
conf["debugger_hook_config"] = {
"CollectionConfigurations": [],
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
}

return conf


Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -150,13 +150,8 @@ def _create_train_job(
"environment": None,
"retry_strategy": None,
"experiment_config": EXPERIMENT_CONFIG,
"debugger_hook_config": {
"CollectionConfigurations": [],
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
},
"profiler_config": {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
},
}

Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -147,13 +147,8 @@ def _create_train_job(
"retry_strategy": None,
"experiment_config": EXPERIMENT_CONFIG,
"enable_network_isolation": False,
"debugger_hook_config": {
"CollectionConfigurations": [],
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
},
"profiler_config": {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
},
}

Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -146,13 +146,8 @@ def _create_train_job(
"retry_strategy": None,
"experiment_config": EXPERIMENT_CONFIG,
"enable_network_isolation": False,
"debugger_hook_config": {
"CollectionConfigurations": [],
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
},
"profiler_config": {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
},
}

Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -152,13 +152,8 @@ def _create_train_job(framework_version, instance_type, training_compiler_config
"retry_strategy": None,
"experiment_config": EXPERIMENT_CONFIG,
"enable_network_isolation": False,
"debugger_hook_config": {
"CollectionConfigurations": [],
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
},
"profiler_config": {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
},
}

Expand Down
16 changes: 0 additions & 16 deletions tests/unit/sagemaker/workflow/test_step_collections.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -767,10 +767,6 @@ def test_register_model_with_model_repack_with_estimator(
"TrainingImage": MODEL_REPACKING_IMAGE_URI,
"TrainingInputMode": "File",
},
"DebugHookConfig": {
"CollectionConfigurations": [],
"S3OutputPath": f"s3://{BUCKET}/",
},
"ProfilerConfig": {"DisableProfiler": True},
"HyperParameters": {
"inference_script": '"inference.py"',
Expand DownExpand Up@@ -896,10 +892,6 @@ def test_register_model_with_model_repack_with_model(model, model_metrics, drift
"TrainingImage": MODEL_REPACKING_IMAGE_URI,
"TrainingInputMode": "File",
},
"DebugHookConfig": {
"CollectionConfigurations": [],
"S3OutputPath": f"s3://{BUCKET}/",
},
"ProfilerConfig": {"DisableProfiler": True},
"HyperParameters": {
"inference_script": '"inference.py"',
Expand DownExpand Up@@ -1027,10 +1019,6 @@ def test_register_model_with_model_repack_with_pipeline_model(
"TrainingImage": MODEL_REPACKING_IMAGE_URI,
"TrainingInputMode": "File",
},
"DebugHookConfig": {
"CollectionConfigurations": [],
"S3OutputPath": f"s3://{BUCKET}/",
},
"ProfilerConfig": {"DisableProfiler": True},
"HyperParameters": {
"dependencies": "null",
Expand DownExpand Up@@ -1254,10 +1242,6 @@ def test_estimator_transformer_with_model_repack_with_estimator(estimator, sourc
"sagemaker_region": '"us-west-2"',
},
"VpcConfig": {"Subnets": ["abc", "def"], "SecurityGroupIds": ["123", "456"]},
"DebugHookConfig": {
"S3OutputPath": "s3://my-bucket/",
"CollectionConfigurations": [],
},
}
elif request_dict["Type"] == "Model":
assert request_dict["Name"] == "EstimatorTransformerStepCreateModelStep"
Expand Down
6 changes: 1 addition & 5 deletions tests/unit/sagemaker/workflow/test_steps.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -337,10 +337,6 @@ def test_training_step_base_estimator(sagemaker_session):
},
"RoleArn": ROLE,
"StoppingCondition": {"MaxRuntimeInSeconds": 86400},
"DebugHookConfig": {
"S3OutputPath": {"Std:Join": {"On": "/", "Values": ["s3:/", "a", "b"]}},
"CollectionConfigurations": [],
},
"ProfilerConfig": {
"DisableProfiler": False,
"ProfilingIntervalInMilliseconds": 500,
Expand DownExpand Up@@ -453,7 +449,7 @@ def test_training_step_tensorflow(sagemaker_session):
"sagemaker_instance_type": {"Get": "Parameters.InstanceType"},
"sagemaker_distributed_dataparallel_custom_mpi_options": '""',
},
"ProfilerConfig": {"DisableProfiler": False, "S3OutputPath": "s3://my-bucket/"},
"ProfilerConfig": {"DisableProfiler": True},
},
"CacheConfig": {"Enabled": True, "ExpireAfter": "PT1H"},
}
Expand Down
2 changes: 0 additions & 2 deletions tests/unit/sagemaker/workflow/test_utils.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -94,7 +94,6 @@ def test_repack_model_step(estimator):
"DependsOn": ["TestStep"],
"Arguments": {
"AlgorithmSpecification": {"TrainingInputMode": "File"},
"DebugHookConfig": {"CollectionConfigurations": [], "S3OutputPath": "s3://my-bucket/"},
"InputDataConfig": [
{
"ChannelName": "training",
Expand DownExpand Up@@ -176,7 +175,6 @@ def test_repack_model_step_with_source_dir(estimator, source_dir):
"Type": "Training",
"Arguments": {
"AlgorithmSpecification": {"TrainingInputMode": "File"},
"DebugHookConfig": {"CollectionConfigurations": [], "S3OutputPath": "s3://my-bucket/"},
"InputDataConfig": [
{
"ChannelName": "training",
Expand Down
7 changes: 1 addition & 6 deletions tests/unit/test_chainer.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -154,13 +154,8 @@ def _create_train_job(version, py_version):
"enable_network_isolation": False,
"environment": None,
"experiment_config": None,
"debugger_hook_config": {
"CollectionConfigurations": [],
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
},
"profiler_config": {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
},
}

Expand Down
35 changes: 15 additions & 20 deletions tests/unit/test_estimator.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -693,7 +693,7 @@ def test_estimator_with_debugger_hook_config_provided_as_bool_from_direct_input(
base_job_name="base_job_name",
debugger_hook_config=True,
)
assert estimator.debugger_hook_config == {}
assert isinstance(estimator.debugger_hook_config, DebuggerHookConfig)


def test_estimator_with_debugger_hook_config_provided_as_dict_from_direct_input(
Expand DownExpand Up@@ -1067,8 +1067,7 @@ def test_framework_with_debugger_and_built_in_rule(sagemaker_session):
],
}
assert args["profiler_config"] == {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
}


Expand DownExpand Up@@ -1226,14 +1225,10 @@ def test_framework_without_debugger_and_profiler(time, sagemaker_session):
f.fit("s3://mydata")
sagemaker_session.train.assert_called_once()
_, args = sagemaker_session.train.call_args
assert args["debugger_hook_config"] == {
"CollectionConfigurations": [],
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
}
assert "debugger_hook_config" not in args or args["debugger_hook_config"] is None
assert "debugger_rule_configs" not in args
assert args["profiler_config"] == {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
}


Expand DownExpand Up@@ -1296,8 +1291,7 @@ def test_framework_with_debugger_and_profiler_rules(sagemaker_session):
],
}
assert args["profiler_config"] == {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
}
assert args["profiler_rule_configs"] == [
{
Expand DownExpand Up@@ -1332,8 +1326,7 @@ def test_framework_with_only_profiler_rule_specified(sagemaker_session):
sagemaker_session.train.assert_called_once()
_, args = sagemaker_session.train.call_args
assert args["profiler_config"] == {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
}
assert args["profiler_rule_configs"] == [
{
Expand DownExpand Up@@ -2601,7 +2594,7 @@ def test_fit_verify_job_name(strftime, sagemaker_session):
@pytest.mark.parametrize(
"debugger_hook_config_direct_input, sagemaker_config, expected_debugger_hook_config_output",
[
(None, None, S3_OUTPUT_PATH_FROM_SESSION_S3_DEFAULT_CONFIG),
(None, None, None),
(True, None, S3_OUTPUT_PATH_FROM_SESSION_S3_DEFAULT_CONFIG),
(False, None, False),
(HOOK_CONFIG, None, HOOK_CONFIG.s3_output_path),
Expand DownExpand Up@@ -2665,6 +2658,8 @@ def test_prepare_for_training_for_debugger_hook_config_value_combinations(

if expected_debugger_hook_config_output is False:
assert fw.debugger_hook_config == expected_debugger_hook_config_output
elif expected_debugger_hook_config_output is None:
assert fw.debugger_hook_config is None
else:
assert fw.debugger_hook_config.s3_output_path == expected_debugger_hook_config_output

Expand DownExpand Up@@ -3522,7 +3517,7 @@ def test_unsupported_type_in_dict():
"input_config": None,
"input_mode": "File",
"output_config": {"S3OutputPath": OUTPUT_PATH},
"profiler_config": {"DisableProfiler": False, "S3OutputPath": OUTPUT_PATH},
"profiler_config": {"DisableProfiler": True},
"resource_config": {
"InstanceCount": INSTANCE_COUNT,
"InstanceType": INSTANCE_TYPE,
Expand DownExpand Up@@ -3802,7 +3797,7 @@ def test_generic_to_fit_no_input(time, sagemaker_session):

args.pop("job_name")
args.pop("role")
args.pop("debugger_hook_config")
args.pop("debugger_hook_config", None)

assert args == NO_INPUT_TRAIN_CALL

Expand All@@ -3827,7 +3822,7 @@ def test_generic_to_fit_no_hps(time, sagemaker_session):

args.pop("job_name")
args.pop("role")
args.pop("debugger_hook_config")
args.pop("debugger_hook_config", None)

assert args == BASE_TRAIN_CALL

Expand All@@ -3854,7 +3849,7 @@ def test_generic_to_fit_with_hps(time, sagemaker_session):

args.pop("job_name")
args.pop("role")
args.pop("debugger_hook_config")
args.pop("debugger_hook_config", None)

assert args == HP_TRAIN_CALL

Expand DownExpand Up@@ -3887,7 +3882,7 @@ def test_generic_to_fit_with_experiment_config(time, sagemaker_session):

args.pop("job_name")
args.pop("role")
args.pop("debugger_hook_config")
args.pop("debugger_hook_config", None)

assert args == EXP_TRAIN_CALL

Expand DownExpand Up@@ -4041,7 +4036,7 @@ def test_generic_to_deploy(time, sagemaker_session):

args.pop("job_name")
args.pop("role")
args.pop("debugger_hook_config")
args.pop("debugger_hook_config", None)

assert args == HP_TRAIN_CALL

Expand Down
7 changes: 1 addition & 6 deletions tests/unit/test_mxnet.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -170,13 +170,8 @@ def _get_train_args(job_name):
"retry_strategy": None,
"experiment_config": None,
"enable_network_isolation": False,
"debugger_hook_config": {
"CollectionConfigurations": [],
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
},
"profiler_config": {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
},
}

Expand Down
7 changes: 1 addition & 6 deletions tests/unit/test_pytorch.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -187,13 +187,8 @@ def _create_train_job(version, py_version):
"retry_strategy": None,
"experiment_config": None,
"enable_network_isolation": False,
"debugger_hook_config": {
"CollectionConfigurations": [],
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
},
"profiler_config": {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
},
}

Expand Down
Loading
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 10 additions & 8 deletions src/sagemaker/estimator.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -790,10 +790,9 @@ def __init__(
sagemaker_session=sagemaker_session,
)
# If customer passes True from either direct_input or sagemaker_config, we will
# create a default hook config as an empty dict which will later be populated
# with default s3_output_path from _prepare_debugger_for_training function
# create a default hook config populated with the default s3_output_path.
if self.debugger_hook_config is True:
self.debugger_hook_config = {}
self.debugger_hook_config = DebuggerHookConfig()

self.tensorboard_output_config = tensorboard_output_config

Expand DownExpand Up@@ -1197,8 +1196,11 @@ def _validate_and_set_debugger_configs(self):
)

if region_supports_debugger:
if self.debugger_hook_config in [None, {}]:
self.debugger_hook_config = DebuggerHookConfig(s3_output_path=self.output_path)
# Debugger is opt-in: do NOT auto-attach a DebuggerHookConfig when the customer
# did not request one (unset -> None). The hook is still created upstream in
# _prepare_debugger_for_training when debugger_rules are set, or when the customer
# explicitly passes debugger_hook_config=True / a DebuggerHookConfig instance.
pass
else:
if self.debugger_hook_config is not False and self.debugger_hook_config:
# when user set debugger config in a unsupported region
Expand DownExpand Up@@ -1245,11 +1247,11 @@ def _prepare_profiler_for_training(self):
if self.profiler_rules:
raise RuntimeError("ProfilerRule cannot be set when disable_profiler is True.")
elif _region_supports_profiler(self.sagemaker_session.boto_region_name):
if self.profiler_config is None:
self.profiler_config = ProfilerConfig(s3_output_path=self.output_path)
# Profiler is opt-in: do NOT auto-attach an active ProfilerConfig by default.
# If profiler_config is left unset it is emitted as disabled below.
if self.rules is None or (self.rules and not self.profiler_rules):
self.profiler_rules = []
if self.profiler_config.profile_params:
if self.profiler_config and self.profiler_config.profile_params:
self.profiler_rules.append(
get_default_profiler_processing_job(
instance_type=self.profiler_config.profile_params.instanceType,
Expand Down
7 changes: 1 addition & 6 deletions tests/unit/sagemaker/huggingface/test_estimator.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -148,13 +148,8 @@ def _create_train_job(version, base_framework_version):
"retry_strategy": None,
"experiment_config": None,
"enable_network_isolation": False,
"debugger_hook_config": {
"CollectionConfigurations": [],
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
},
"profiler_config": {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
},
}

Expand Down
9 changes: 1 addition & 8 deletions tests/unit/sagemaker/tensorflow/test_estimator.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -146,17 +146,10 @@ def _create_train_job(tf_version, horovod=False, ps=False, py_version="py2", smd
"enable_network_isolation": False,
"experiment_config": None,
"profiler_config": {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
},
}

if not ps:
conf["debugger_hook_config"] = {
"CollectionConfigurations": [],
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
}

return conf


Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -150,13 +150,8 @@ def _create_train_job(
"environment": None,
"retry_strategy": None,
"experiment_config": EXPERIMENT_CONFIG,
"debugger_hook_config": {
"CollectionConfigurations": [],
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
},
"profiler_config": {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
},
}

Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -147,13 +147,8 @@ def _create_train_job(
"retry_strategy": None,
"experiment_config": EXPERIMENT_CONFIG,
"enable_network_isolation": False,
"debugger_hook_config": {
"CollectionConfigurations": [],
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
},
"profiler_config": {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
},
}

Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -146,13 +146,8 @@ def _create_train_job(
"retry_strategy": None,
"experiment_config": EXPERIMENT_CONFIG,
"enable_network_isolation": False,
"debugger_hook_config": {
"CollectionConfigurations": [],
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
},
"profiler_config": {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
},
}

Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -152,13 +152,8 @@ def _create_train_job(framework_version, instance_type, training_compiler_config
"retry_strategy": None,
"experiment_config": EXPERIMENT_CONFIG,
"enable_network_isolation": False,
"debugger_hook_config": {
"CollectionConfigurations": [],
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
},
"profiler_config": {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
},
}

Expand Down
16 changes: 0 additions & 16 deletions tests/unit/sagemaker/workflow/test_step_collections.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -767,10 +767,6 @@ def test_register_model_with_model_repack_with_estimator(
"TrainingImage": MODEL_REPACKING_IMAGE_URI,
"TrainingInputMode": "File",
},
"DebugHookConfig": {
"CollectionConfigurations": [],
"S3OutputPath": f"s3://{BUCKET}/",
},
"ProfilerConfig": {"DisableProfiler": True},
"HyperParameters": {
"inference_script": '"inference.py"',
Expand DownExpand Up@@ -896,10 +892,6 @@ def test_register_model_with_model_repack_with_model(model, model_metrics, drift
"TrainingImage": MODEL_REPACKING_IMAGE_URI,
"TrainingInputMode": "File",
},
"DebugHookConfig": {
"CollectionConfigurations": [],
"S3OutputPath": f"s3://{BUCKET}/",
},
"ProfilerConfig": {"DisableProfiler": True},
"HyperParameters": {
"inference_script": '"inference.py"',
Expand DownExpand Up@@ -1027,10 +1019,6 @@ def test_register_model_with_model_repack_with_pipeline_model(
"TrainingImage": MODEL_REPACKING_IMAGE_URI,
"TrainingInputMode": "File",
},
"DebugHookConfig": {
"CollectionConfigurations": [],
"S3OutputPath": f"s3://{BUCKET}/",
},
"ProfilerConfig": {"DisableProfiler": True},
"HyperParameters": {
"dependencies": "null",
Expand DownExpand Up@@ -1254,10 +1242,6 @@ def test_estimator_transformer_with_model_repack_with_estimator(estimator, sourc
"sagemaker_region": '"us-west-2"',
},
"VpcConfig": {"Subnets": ["abc", "def"], "SecurityGroupIds": ["123", "456"]},
"DebugHookConfig": {
"S3OutputPath": "s3://my-bucket/",
"CollectionConfigurations": [],
},
}
elif request_dict["Type"] == "Model":
assert request_dict["Name"] == "EstimatorTransformerStepCreateModelStep"
Expand Down
6 changes: 1 addition & 5 deletions tests/unit/sagemaker/workflow/test_steps.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -337,10 +337,6 @@ def test_training_step_base_estimator(sagemaker_session):
},
"RoleArn": ROLE,
"StoppingCondition": {"MaxRuntimeInSeconds": 86400},
"DebugHookConfig": {
"S3OutputPath": {"Std:Join": {"On": "/", "Values": ["s3:/", "a", "b"]}},
"CollectionConfigurations": [],
},
"ProfilerConfig": {
"DisableProfiler": False,
"ProfilingIntervalInMilliseconds": 500,
Expand DownExpand Up@@ -453,7 +449,7 @@ def test_training_step_tensorflow(sagemaker_session):
"sagemaker_instance_type": {"Get": "Parameters.InstanceType"},
"sagemaker_distributed_dataparallel_custom_mpi_options": '""',
},
"ProfilerConfig": {"DisableProfiler": False, "S3OutputPath": "s3://my-bucket/"},
"ProfilerConfig": {"DisableProfiler": True},
},
"CacheConfig": {"Enabled": True, "ExpireAfter": "PT1H"},
}
Expand Down
2 changes: 0 additions & 2 deletions tests/unit/sagemaker/workflow/test_utils.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -94,7 +94,6 @@ def test_repack_model_step(estimator):
"DependsOn": ["TestStep"],
"Arguments": {
"AlgorithmSpecification": {"TrainingInputMode": "File"},
"DebugHookConfig": {"CollectionConfigurations": [], "S3OutputPath": "s3://my-bucket/"},
"InputDataConfig": [
{
"ChannelName": "training",
Expand DownExpand Up@@ -176,7 +175,6 @@ def test_repack_model_step_with_source_dir(estimator, source_dir):
"Type": "Training",
"Arguments": {
"AlgorithmSpecification": {"TrainingInputMode": "File"},
"DebugHookConfig": {"CollectionConfigurations": [], "S3OutputPath": "s3://my-bucket/"},
"InputDataConfig": [
{
"ChannelName": "training",
Expand Down
7 changes: 1 addition & 6 deletions tests/unit/test_chainer.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -154,13 +154,8 @@ def _create_train_job(version, py_version):
"enable_network_isolation": False,
"environment": None,
"experiment_config": None,
"debugger_hook_config": {
"CollectionConfigurations": [],
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
},
"profiler_config": {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
},
}

Expand Down
35 changes: 15 additions & 20 deletions tests/unit/test_estimator.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -693,7 +693,7 @@ def test_estimator_with_debugger_hook_config_provided_as_bool_from_direct_input(
base_job_name="base_job_name",
debugger_hook_config=True,
)
assert estimator.debugger_hook_config == {}
assert isinstance(estimator.debugger_hook_config, DebuggerHookConfig)


def test_estimator_with_debugger_hook_config_provided_as_dict_from_direct_input(
Expand DownExpand Up@@ -1067,8 +1067,7 @@ def test_framework_with_debugger_and_built_in_rule(sagemaker_session):
],
}
assert args["profiler_config"] == {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
}


Expand DownExpand Up@@ -1226,14 +1225,10 @@ def test_framework_without_debugger_and_profiler(time, sagemaker_session):
f.fit("s3://mydata")
sagemaker_session.train.assert_called_once()
_, args = sagemaker_session.train.call_args
assert args["debugger_hook_config"] == {
"CollectionConfigurations": [],
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
}
assert "debugger_hook_config" not in args or args["debugger_hook_config"] is None
assert "debugger_rule_configs" not in args
assert args["profiler_config"] == {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
}


Expand DownExpand Up@@ -1296,8 +1291,7 @@ def test_framework_with_debugger_and_profiler_rules(sagemaker_session):
],
}
assert args["profiler_config"] == {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
}
assert args["profiler_rule_configs"] == [
{
Expand DownExpand Up@@ -1332,8 +1326,7 @@ def test_framework_with_only_profiler_rule_specified(sagemaker_session):
sagemaker_session.train.assert_called_once()
_, args = sagemaker_session.train.call_args
assert args["profiler_config"] == {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
}
assert args["profiler_rule_configs"] == [
{
Expand DownExpand Up@@ -2601,7 +2594,7 @@ def test_fit_verify_job_name(strftime, sagemaker_session):
@pytest.mark.parametrize(
"debugger_hook_config_direct_input, sagemaker_config, expected_debugger_hook_config_output",
[
(None, None, S3_OUTPUT_PATH_FROM_SESSION_S3_DEFAULT_CONFIG),
(None, None, None),
(True, None, S3_OUTPUT_PATH_FROM_SESSION_S3_DEFAULT_CONFIG),
(False, None, False),
(HOOK_CONFIG, None, HOOK_CONFIG.s3_output_path),
Expand DownExpand Up@@ -2665,6 +2658,8 @@ def test_prepare_for_training_for_debugger_hook_config_value_combinations(

if expected_debugger_hook_config_output is False:
assert fw.debugger_hook_config == expected_debugger_hook_config_output
elif expected_debugger_hook_config_output is None:
assert fw.debugger_hook_config is None
else:
assert fw.debugger_hook_config.s3_output_path == expected_debugger_hook_config_output

Expand DownExpand Up@@ -3522,7 +3517,7 @@ def test_unsupported_type_in_dict():
"input_config": None,
"input_mode": "File",
"output_config": {"S3OutputPath": OUTPUT_PATH},
"profiler_config": {"DisableProfiler": False, "S3OutputPath": OUTPUT_PATH},
"profiler_config": {"DisableProfiler": True},
"resource_config": {
"InstanceCount": INSTANCE_COUNT,
"InstanceType": INSTANCE_TYPE,
Expand DownExpand Up@@ -3802,7 +3797,7 @@ def test_generic_to_fit_no_input(time, sagemaker_session):

args.pop("job_name")
args.pop("role")
args.pop("debugger_hook_config")
args.pop("debugger_hook_config", None)

assert args == NO_INPUT_TRAIN_CALL

Expand All@@ -3827,7 +3822,7 @@ def test_generic_to_fit_no_hps(time, sagemaker_session):

args.pop("job_name")
args.pop("role")
args.pop("debugger_hook_config")
args.pop("debugger_hook_config", None)

assert args == BASE_TRAIN_CALL

Expand All@@ -3854,7 +3849,7 @@ def test_generic_to_fit_with_hps(time, sagemaker_session):

args.pop("job_name")
args.pop("role")
args.pop("debugger_hook_config")
args.pop("debugger_hook_config", None)

assert args == HP_TRAIN_CALL

Expand DownExpand Up@@ -3887,7 +3882,7 @@ def test_generic_to_fit_with_experiment_config(time, sagemaker_session):

args.pop("job_name")
args.pop("role")
args.pop("debugger_hook_config")
args.pop("debugger_hook_config", None)

assert args == EXP_TRAIN_CALL

Expand DownExpand Up@@ -4041,7 +4036,7 @@ def test_generic_to_deploy(time, sagemaker_session):

args.pop("job_name")
args.pop("role")
args.pop("debugger_hook_config")
args.pop("debugger_hook_config", None)

assert args == HP_TRAIN_CALL

Expand Down
7 changes: 1 addition & 6 deletions tests/unit/test_mxnet.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -170,13 +170,8 @@ def _get_train_args(job_name):
"retry_strategy": None,
"experiment_config": None,
"enable_network_isolation": False,
"debugger_hook_config": {
"CollectionConfigurations": [],
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
},
"profiler_config": {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
},
}

Expand Down
7 changes: 1 addition & 6 deletions tests/unit/test_pytorch.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -187,13 +187,8 @@ def _create_train_job(version, py_version):
"retry_strategy": None,
"experiment_config": None,
"enable_network_isolation": False,
"debugger_hook_config": {
"CollectionConfigurations": [],
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
},
"profiler_config": {
"DisableProfiler": False,
"S3OutputPath": "s3://{}/".format(BUCKET_NAME),
"DisableProfiler": True,
},
}

Expand Down
Loading
Loading