{"record":{"id":"c297bf736e115daf","repo":"tensorflow/models","slug":"number-of-transformer-layer-must-be-equal-or-divis","errorCode":null,"errorMessage":"Number of transformer layer must be equal or divisible.","messagePattern":"Number of transformer layer must be equal or divisible\\.","errorType":"exception","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"official/projects/edgetpu/nlp/mobilebert_edgetpu_trainer.py","lineNumber":136,"sourceCode":"    self.word_vocab_size = experiment_params.student_model.encoder.mobilebert.word_vocab_size\n    self.distill_gt_ratio = experiment_params.end_to_end_distillation.distill_ground_truth_ratio\n    self.teacher_transformer_layers = experiment_params.teacher_model.encoder.mobilebert.num_blocks\n    self.student_transformer_layers = experiment_params.student_model.encoder.mobilebert.num_blocks\n    self.exported_ckpt_path = export_ckpt_path\n    self.current_step = orbit.utils.create_global_step()\n    self.current_step.assign(0)\n\n    # Stage is updated every time when the distillation is done for one\n    # transformer layer. self.stage is updated at the train_loop_begin()\n    # function. After the last stage is done, the self.mode is changed to\n    # 'e2e'.\n    self.stage = 0\n    self.mode = DistillationMode.INIT\n\n    # Number of transformer layers in teacher should be equal (or divisible)\n    # by the number of transformer layers in student.\n    if self.teacher_transformer_layers % self.student_transformer_layers != 0:\n      raise ValueError(\n          'Number of transformer layer must be equal or divisible.')\n    self.ratio = (self.teacher_transformer_layers //\n                  self.student_transformer_layers)\n\n    # Create optimizers for different training stage.\n    self.layer_wise_optimizer = self.build_optimizer(\n        self.layer_wise_distill_config)\n    self.e2e_optimizer = self.build_optimizer(self.e2e_distill_config)\n    self.current_optimizer = self.layer_wise_optimizer\n\n    # A non-trainable layer for feature normalization for transfer loss.\n    self._layer_norm = tf_keras.layers.LayerNormalization(\n        axis=-1,\n        beta_initializer='zeros',\n        gamma_initializer='ones',\n        trainable=False)\n\n    self.build_dataset()","sourceCodeStart":118,"sourceCodeEnd":154,"githubUrl":"https://github.com/tensorflow/models/blob/e006f5f0d534913e49c1f1dae87364039fa607e2/official/projects/edgetpu/nlp/mobilebert_edgetpu_trainer.py#L118-L154","documentation":"Error \"Number of transformer layer must be equal or divisible.\" thrown in tensorflow/models.","triggerScenarios":"Thrown at official/projects/edgetpu/nlp/mobilebert_edgetpu_trainer.py:136 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"e006f5f0d534913e49c1f1dae87364039fa607e2","analyzedAt":"2026-08-24T14:09:15.576Z","schemaVersion":2},"datasetVersion":"2026-08-24T17:17:21.512Z"}