xai-org/x-algorithm · error · IllegalArgumentException

SimClusters model version not supported ${modelVersion.name}

Error message

SimClusters model version not supported ${modelVersion.name}

What it means

LocaleEntitySimClustersEmbeddingsJob only supports the Model20m145kUpdated SimClusters model version when selecting the simClustersInterestedIn source. Any other modelVersion falls into the catch-all case and this IllegalArgumentException is thrown at job-graph construction time.

Source

Thrown at simclusters/simclusters_v2/scalding/embedding/LocaleEntitySimClustersEmbeddingsJob.scala:94

    uniqueID: UniqueID
  ): Execution[Unit] = {

    val jobConfig = EntityEmbeddingsJobConfig(args, isAdhoc = true)

    val numReducers = args.getOrElse("m", "2000").toInt

    val userEntityMatrix: TypedPipe[(UserId, (Entity, Double))] =
      getUserEntityMatrix(
        jobConfig,
        DataSources.entityRealGraphAggregationDataSetSource(dateRange.embiggen(Days(7))),
        Some(ExternalDataSources.uttEntitiesSource())
      ).forceToDisk

    val simClustersSource = jobConfig.modelVersion match {
      case ModelVersion.Model20m145kUpdated =>
        InterestedInSources.simClustersInterestedInUpdatedSource(dateRange, timeZone)
      case modelVersion =>
        throw new IllegalArgumentException(
          s"SimClusters model version not supported ${modelVersion.name}")
    }

    val entityPerLanguage = userEntityMatrix.join(ExternalDataSources.userSource).map {
      case (userId, ((entity, score), (_, language))) =>
        ((entity, language), (userId, score))
    }

    val normalizedUserEntityMatrix =
      getNormalizedTransposeInputMatrix(entityPerLanguage, numReducers = Some(numReducers))

    val embeddings = computeEmbeddings[(Entity, String)](
      simClustersSource,
      normalizedUserEntityMatrix,
      scoreExtractors,
      ModelVersion.Model20m145kUpdated,
      toSimClustersEmbeddingId(jobConfig.modelVersion),
      numReducers = Some(numReducers * 2)

View on GitHub (pinned to 24c60942c5)

Solutions

  1. Set the model version arg to Model20m145kUpdated for this job
  2. If a new version must be supported, add a case in the match calling the corresponding InterestedInSources source
  3. Centralize supported-version checks in job config parsing so failures happen early with a clearer message

Example fix

// before
case modelVersion =>
  throw new IllegalArgumentException(
    s"SimClusters model version not supported ${modelVersion.name}")

// after
// add the new supported branch
case ModelVersion.Model20m145kDec11 =>
  InterestedInSources.simClustersInterestedInDec11Source(dateRange, timeZone)
Defensive patterns

Strategy: validation

Validate before calling

require(jobConfig.modelVersion == ModelVersion.Model20m145kUpdated,
  s"Unsupported model version ${jobConfig.modelVersion.name} for LocaleEntitySimClustersEmbeddingsJob")

Type guard

def isSupportedModel(v: ModelVersion): Boolean = v == ModelVersion.Model20m145kUpdated

Prevention

When it happens

Trigger: Running the job (or its scheduled execution) with jobConfig.modelVersion set to a version other than ModelVersion.Model20m145kUpdated, e.g. Model20m145kDec11 for locale embeddings.

Common situations: Upgrading the job to a new model version without adding a source branch; copying job args from another job that uses a different model; defaulting to the newest model version in shared config.

Related errors


AI-assisted analysis of xai-org/x-algorithm@24c60942c5 (2026-08-28). Data as JSON: /api/errors/dde80053a7d87a8a. Report an issue: GitHub.