11import sys
22
3+ from network_security .cloud .s3_syncer import S3Sync
34from network_security .components .data_ingestion import DataIngestion
45from network_security .components .data_transformation import DataTransformation
56from network_security .components .data_validation import DataValidation
67from network_security .components .model_trainer import ModelTrainer
8+ from network_security .constant .training_pipeline import TRAINING_BUCKET_NAME
79from network_security .entity .artifact_entity import (
810 DataIngestionArtifact ,
911 DataTransformationArtifact ,
2426class TrainingPipeline :
2527 def __init__ (self ) -> None :
2628 self .training_pipeline_config = TrainingPipelineConfig ()
29+ self .s3_sync = S3Sync ()
2730
2831 def start_data_ingestion (self ) -> DataIngestionArtifact :
2932 try :
@@ -43,7 +46,9 @@ def start_data_ingestion(self) -> DataIngestionArtifact:
4346 except Exception as e :
4447 raise NetworkSecurityException (e , sys )
4548
46- def start_data_validation (self , data_ingestion_artifact : DataIngestionArtifact ) -> DataValidationArtifact :
49+ def start_data_validation (
50+ self , data_ingestion_artifact : DataIngestionArtifact ,
51+ ) -> DataValidationArtifact :
4752 try :
4853 self .data_validation_config = DataValidationConfig (
4954 training_pipeline_config = self .training_pipeline_config ,
@@ -61,7 +66,9 @@ def start_data_validation(self, data_ingestion_artifact: DataIngestionArtifact)
6166 except Exception as e :
6267 raise NetworkSecurityException (e , sys )
6368
64- def start_data_transformation (self , data_validation_artifact : DataValidationArtifact ) -> DataTransformationArtifact :
69+ def start_data_transformation (
70+ self , data_validation_artifact : DataValidationArtifact ,
71+ ) -> DataTransformationArtifact :
6572 try :
6673 self .data_transformation_config = DataTransformationConfig (
6774 training_pipeline_config = self .training_pipeline_config ,
@@ -82,7 +89,9 @@ def start_data_transformation(self, data_validation_artifact: DataValidationArti
8289 except Exception as e :
8390 raise NetworkSecurityException (e , sys )
8491
85- def start_model_trainer (self , data_transformation_artifact : DataTransformationArtifact ) -> ModelTrainerArtifact :
92+ def start_model_trainer (
93+ self , data_transformation_artifact : DataTransformationArtifact ,
94+ ) -> ModelTrainerArtifact :
8695 try :
8796 self .model_trainer_config : ModelTrainerConfig = ModelTrainerConfig (
8897 training_pipeline_config = self .training_pipeline_config ,
@@ -102,6 +111,28 @@ def start_model_trainer(self, data_transformation_artifact: DataTransformationAr
102111 except Exception as e :
103112 raise NetworkSecurityException (e , sys )
104113
114+ ## Local artifact -----> s3 bucket
115+ def sync_artifact_dir_to_s3 (self ) -> None :
116+ try :
117+ aws_bucket_url = f"s3://{ TRAINING_BUCKET_NAME } /artifact/{ self .training_pipeline_config .timestamp } "
118+ self .s3_sync .sync_folder_to_s3 (
119+ folder = self .training_pipeline_config .artifact_dir ,
120+ aws_bucket_url = aws_bucket_url ,
121+ )
122+ except Exception as e :
123+ raise NetworkSecurityException (e , sys )
124+
125+ ## Local final model -----> s3 bucket
126+ def sync_saved_model_dir_to_s3 (self ) -> None :
127+ try :
128+ aws_bucket_url = f"s3://{ TRAINING_BUCKET_NAME } /final_model/{ self .training_pipeline_config .timestamp } "
129+ self .s3_sync .sync_folder_to_s3 (
130+ folder = self .training_pipeline_config .model_dir ,
131+ aws_bucket_url = aws_bucket_url ,
132+ )
133+ except Exception as e :
134+ raise NetworkSecurityException (e , sys )
135+
105136 def run_pipeline (self ) -> ModelTrainerArtifact :
106137 try :
107138 data_ingestion_artifact = self .start_data_ingestion ()
@@ -114,6 +145,8 @@ def run_pipeline(self) -> ModelTrainerArtifact:
114145 model_trainer_artifact = self .start_model_trainer (
115146 data_transformation_artifact = data_transformation_artifact ,
116147 )
148+ self .sync_artifact_dir_to_s3 ()
149+ self .sync_saved_model_dir_to_s3 ()
117150
118151 return model_trainer_artifact
119152 except Exception as e :
0 commit comments