-
Notifications
You must be signed in to change notification settings - Fork 36
Expand file tree
/
Copy pathsettings.py
More file actions
145 lines (111 loc) · 5.96 KB
/
Copy pathsettings.py
File metadata and controls
145 lines (111 loc) · 5.96 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
"""Defines the stack settings."""
from abc import ABC
from typing import Dict, List, Optional
from pydantic import Field, computed_field
from pydantic_settings import BaseSettings, SettingsConfigDict
class CdkBaseSettings(BaseSettings, ABC):
"""Defines common configuration for settings."""
model_config = SettingsConfigDict(
case_sensitive=False,
env_nested_delimiter="__",
protected_namespaces=(),
extra="ignore",
populate_by_name=True,
)
class ModuleSettings(CdkBaseSettings):
"""SeedFarmer Parameters.
These parameters are required for the module stack.
"""
model_config = SettingsConfigDict(env_prefix="SEEDFARMER_PARAMETER_")
endpoint_name: str
security_group_id: Optional[str] = Field(default=None)
subnet_ids: Optional[List[str]] = Field(default=None)
model_bucket_arn: str
kms_key_id: Optional[str] = Field(default=None)
# Baselining parameters
baseline_training_data_s3_uri: Optional[str] = Field(default=None)
baseline_output_data_s3_uri: Optional[str] = Field(default=None)
baseline_instance_count: int = Field(default=1, ge=1)
baseline_instance_type: str = Field(default="ml.m5.xlarge")
baseline_volume_size_gb: int = Field(default=20, ge=1)
baseline_max_runtime_seconds: int = Field(default=3600, ge=1)
sagemaker_project_id: Optional[str] = Field(default=None)
sagemaker_project_name: Optional[str] = Field(default=None)
enable_data_quality_monitor: bool = Field(default=False)
enable_model_quality_monitor: bool = Field(default=False)
enable_model_bias_monitor: bool = Field(default=False)
enable_model_explainability_monitor: bool = Field(default=False)
# Data quality monitoring options.
data_quality_baseline_s3_uri: Optional[str] = Field(default="")
data_quality_output_s3_uri: Optional[str] = Field(default="")
data_quality_instance_count: int = Field(default=1, ge=1)
data_quality_instance_type: str = Field(default="ml.m5.large")
data_quality_instance_volume_size_in_gb: int = Field(default=20, ge=1)
data_quality_max_runtime_in_seconds: int = Field(default=3600, ge=1)
data_quality_schedule_expression: str = Field(default="cron(0 * ? * * *)")
# Model quality monitoring options.
model_quality_baseline_s3_uri: str = Field(default="")
model_quality_output_s3_uri: str = Field(default="")
model_quality_ground_truth_s3_uri: str = Field(default="")
model_quality_instance_count: int = Field(default=1, ge=1)
model_quality_instance_type: str = Field(default="ml.m5.large")
model_quality_instance_volume_size_in_gb: int = Field(default=20, ge=1)
model_quality_max_runtime_in_seconds: int = Field(default=1800, ge=1)
model_quality_problem_type: str = Field(default="Regression")
model_quality_inference_attribute: Optional[str] = Field(default=None)
model_quality_probability_attribute: Optional[str] = Field(default=None)
model_quality_probability_threshold_attribute: Optional[float] = Field(default=None)
model_quality_schedule_expression: str = Field(default="cron(0 * ? * * *)")
# Model bias monitoring options.
model_bias_baseline_s3_uri: str = Field(default="")
model_bias_output_s3_uri: str = Field(default="")
model_bias_ground_truth_s3_uri: str = Field(default="")
model_bias_instance_count: int = Field(default=1, ge=1)
model_bias_instance_type: str = Field(default="ml.m5.large")
model_bias_instance_volume_size_in_gb: int = Field(default=20, ge=1)
model_bias_max_runtime_in_seconds: int = Field(default=1800, ge=1)
model_bias_features_attribute: Optional[str] = Field(default=None)
model_bias_inference_attribute: Optional[str] = Field(default=None)
model_bias_probability_attribute: Optional[str] = Field(default=None)
model_bias_probability_threshold_attribute: Optional[float] = Field(default=None)
model_bias_schedule_expression: str = Field(default="cron(0 * ? * * *)")
# Model explainability monitoring options.
model_explainability_baseline_s3_uri: str = Field(default="")
model_explainability_output_s3_uri: str = Field(default="")
model_explainability_instance_count: int = Field(default=1, ge=1)
model_explainability_instance_type: str = Field(default="ml.m5.large")
model_explainability_instance_volume_size_in_gb: int = Field(default=20, ge=1)
model_explainability_max_runtime_in_seconds: int = Field(default=1800, ge=1)
model_explainability_features_attribute: Optional[str] = Field(default=None)
model_explainability_inference_attribute: Optional[str] = Field(default=None)
model_explainability_probability_attribute: Optional[str] = Field(default=None)
model_explainability_schedule_expression: str = Field(default="cron(0 * ? * * *)")
permissions_boundary_name: Optional[str] = Field(default=None)
tags: Optional[Dict[str, str]] = Field(default=None)
custom_tags: Optional[Dict[str, str]] = Field(default=None)
class SeedFarmerSettings(CdkBaseSettings):
"""SeedFarmer Settings.
These parameters comes from seedfarmer by default.
"""
model_config = SettingsConfigDict(env_prefix="SEEDFARMER_")
project_name: str = Field(default="")
deployment_name: str = Field(default="")
module_name: str = Field(default="")
@computed_field # type: ignore
@property
def app_prefix(self) -> str:
"""Application prefix."""
prefix = "-".join([self.project_name, self.deployment_name, self.module_name])
return prefix
class CDKSettings(CdkBaseSettings):
"""CDK default Settings.
These parameters come from AWS CDK by default.
"""
model_config = SettingsConfigDict(env_prefix="CDK_DEFAULT_")
account: str
region: str
class ApplicationSettings(CdkBaseSettings):
"""Application settings."""
seedfarmer_settings: SeedFarmerSettings = Field(default_factory=SeedFarmerSettings)
module_settings: ModuleSettings = Field(default_factory=ModuleSettings)
cdk_settings: CDKSettings = Field(default_factory=CDKSettings)