Class AutoMlTrainingService


  • public class AutoMlTrainingService
    extends Object
    Service layer for AutoML training operations with Solr persistence. Handles the complete training lifecycle including:
    • GCS bucket scanning for training files
    • AutoML dataset creation and data import
    • Model training orchestration
    • Training job status tracking and persistence in Solr

    This service manages asynchronous training jobs using a thread pool executor. Each training job progresses through the following states:

     SCANNING_BUCKETS → PREPARING_DATASET → IMPORTING_DATA → TRAINING → COMPLETED/FAILED
     

    AutoML Limits:

    • Minimum segments: 1,000
    • Maximum segments: 15,000,000
    • Supported file formats: TMX, TSV, CSV, TXT
    • Automatic 80/10/10 train/validation/test split

    Persistence: Training job state is persisted in Solr (ath_automl_jobs core) for:

    • Durability across service restarts
    • Multi-node coordination
    • Status queries and reporting

    Since:
    1.0
    Version:
    1.0
    Author:
    Acumen Velocity
    • Constructor Detail

      • AutoMlTrainingService

        public AutoMlTrainingService()
      • AutoMlTrainingService

        public AutoMlTrainingService​(org.apache.solr.client.solrj.SolrClient solrClient,
                                     com.google.cloud.storage.Storage storageClient)
        Constructor with dependency injection for testing.
        Parameters:
        solrClient - the Solr client to use
        storageClient - the GCS storage client to use
    • Method Detail

      • trainingJobExists

        public boolean trainingJobExists​(UUID trainingJobId)
        Checks if a training job with the given ID exists in Solr.
        Parameters:
        trainingJobId - the training job UUID
        Returns:
        true if the job exists, false otherwise
      • initiateTraining

        public void initiateTraining​(UUID trainingJobId,
                                     String modelName,
                                     String srcLang,
                                     String trgLang,
                                     List<URI> gcsBuckets,
                                     String projectId,
                                     String location,
                                     UUID userId)
        Initiates an asynchronous AutoML training job.

        This method:

        1. Creates a training job record in Solr
        2. Submits the job to the executor service
        3. Returns immediately (non-blocking)

        The training process runs asynchronously and updates the job status in Solr as it progresses.

        Parameters:
        trainingJobId - UUID for the training job
        modelName - display name for the model
        srcLang - source language ISO code
        trgLang - target language ISO code
        gcsBuckets - list of GCS bucket URIs to scan
        projectId - GCP project ID
        location - GCP region (e.g., "us-central1")
        userId - UUID of the user initiating training
        Throws:
        IllegalArgumentException - if segment count violates AutoML limits
      • getTrainingStatus

        public TrainingJobStatus getTrainingStatus​(UUID trainingJobId)
        Gets the current status of a training job from Solr.
        Parameters:
        trainingJobId - the training job UUID
        Returns:
        current status enum, or null if job not found
      • getProgress

        public int getProgress​(UUID trainingJobId)
        Gets the progress percentage of a training job.
        Parameters:
        trainingJobId - the training job UUID
        Returns:
        progress percentage (0-100)
      • getStartedAt

        public Date getStartedAt​(UUID trainingJobId)
        Gets the start timestamp of a training job.
        Parameters:
        trainingJobId - the training job UUID
        Returns:
        start date
      • getCurrentPhase

        public String getCurrentPhase​(UUID trainingJobId)
        Gets the current phase description of a training job.
        Parameters:
        trainingJobId - the training job UUID
        Returns:
        human-readable phase description
      • getModelId

        public String getModelId​(UUID trainingJobId)
        Gets the AutoML model ID for a completed training job.
        Parameters:
        trainingJobId - the training job UUID
        Returns:
        AutoML model resource name
      • getModelName

        public String getModelName​(UUID trainingJobId)
        Gets the model name for a completed training job.
        Parameters:
        trainingJobId - the training job UUID
        Returns:
        model display name
      • getDatasetId

        public String getDatasetId​(UUID trainingJobId)
        Gets the AutoML dataset ID for a training job.
        Parameters:
        trainingJobId - the training job UUID
        Returns:
        AutoML dataset resource name
      • getCompletedAt

        public Date getCompletedAt​(UUID trainingJobId)
        Gets the completion timestamp for a training job.
        Parameters:
        trainingJobId - the training job UUID
        Returns:
        completion date
      • getDatasetStats

        public DatasetStats getDatasetStats​(UUID trainingJobId)
        Gets the dataset statistics for a training job.
        Parameters:
        trainingJobId - the training job UUID
        Returns:
        dataset statistics object
      • getErrorType

        public TrainingFailedResponse.ErrorTypeEnum getErrorType​(UUID trainingJobId)
        Gets the error type for a failed training job.
        Parameters:
        trainingJobId - the training job UUID
        Returns:
        error type enum
      • getErrorMessage

        public String getErrorMessage​(UUID trainingJobId)
        Gets the error message for a failed training job.
        Parameters:
        trainingJobId - the training job UUID
        Returns:
        error message string
      • getFailedAt

        public Date getFailedAt​(UUID trainingJobId)
        Gets the failure timestamp for a failed training job.
        Parameters:
        trainingJobId - the training job UUID
        Returns:
        failure date
      • getJobOwnerId

        public UUID getJobOwnerId​(UUID trainingJobId)
        Returns the user ID who owns (initiated) this training job.
        Parameters:
        trainingJobId - the training job UUID
        Returns:
        user UUID who created the job
      • cancelTraining

        public void cancelTraining​(UUID trainingJobId)
        Cancels an in-progress training job.
        Parameters:
        trainingJobId - the training job UUID
      • getAllModels

        public List<ModelInfo> getAllModels()
        Gets a list of all successfully trained models from Solr.
        Returns:
        list of model information objects