{"record":{"id":"1fdec72159e59eb5","repo":"tensorflow/models","slug":"global-step-must-be-a-tf-variable","errorCode":null,"errorMessage":"`global_step` must be a `tf.Variable`.","messagePattern":"`global_step` must be a `tf\\.Variable`\\.","errorType":"exception","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"orbit/controller.py","lineNumber":206,"sourceCode":"            \"`steps_per_loop` is required when `trainer` is provided.\")\n      elif not callable(steps_per_loop) and (\n          not isinstance(steps_per_loop, int) or steps_per_loop < 1):\n        raise ValueError(\n            f\"`steps_per_loop` ({steps_per_loop}) must be a positive integer \"\n            \"or a callable.\")\n\n      if summary_interval is not None:\n        if summary_interval <= 0:\n          raise ValueError(\n              f\"`summary_interval` ({summary_interval}) must be larger than 0.\")\n        elif not callable(steps_per_loop) and (summary_interval % steps_per_loop\n                                               != 0):\n          raise ValueError(\n              f\"`summary interval` ({summary_interval}) must be a multiple \"\n              f\"of `steps_per_loop` ({steps_per_loop}).\")\n\n    if not isinstance(global_step, tf.Variable):\n      raise ValueError(\"`global_step` must be a `tf.Variable`.\")\n\n    self.trainer = trainer\n    self.evaluator = evaluator\n\n    self.strategy = strategy or tf.distribute.get_strategy()\n\n    self.train_actions = () if train_actions is None else tuple(train_actions)\n    self.eval_actions = () if eval_actions is None else tuple(eval_actions)\n\n    self.global_step = global_step\n    self.checkpoint_manager = checkpoint_manager\n    self._enable_async_checkpoint_saving = enable_async_checkpointing\n    self._checkpoint_options = tf.train.CheckpointOptions(\n        enable_async=enable_async_checkpointing\n    )\n\n    if self.trainer is not None:\n      self.step_timer = None","sourceCodeStart":188,"sourceCodeEnd":224,"githubUrl":"https://github.com/tensorflow/models/blob/e006f5f0d534913e49c1f1dae87364039fa607e2/orbit/controller.py#L188-L224","documentation":"Error \"`global_step` must be a `tf.Variable`.\" thrown in tensorflow/models.","triggerScenarios":"Thrown at orbit/controller.py:206 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Pass global_step as a tf.Variable (e.g. tf.Variable(0, dtype=tf.int64)).","Use the optimizer's iterations variable as global_step."],"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"}