{"record":{"id":"fd6f13f8f097c1cd","repo":"tensorflow/models","slug":"model-dir-must-be-specified-but-got-none","errorCode":null,"errorMessage":"model_dir must be specified, but got None","messagePattern":"model_dir must be specified, but got None","errorType":"exception","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"official/core/train_lib.py","lineNumber":168,"sourceCode":"    with self.strategy.scope():\n      trainer = train_utils.create_trainer(\n          self.params,\n          task,\n          train=train,\n          evaluate=evaluate,\n          checkpoint_exporter=self._build_best_checkpoint_exporter())\n    return trainer\n\n  def _build_best_checkpoint_exporter(self):\n    return maybe_create_best_ckpt_exporter(self.params, self.model_dir)\n\n  def _maybe_build_checkpoint_manager(\n      self) -> Optional[tf.train.CheckpointManager]:\n    \"\"\"Maybe create a CheckpointManager.\"\"\"\n    assert self.trainer is not None\n    if self.trainer.checkpoint:\n      if self.model_dir is None:\n        raise ValueError('model_dir must be specified, but got None')\n\n      if (not self.strategy) or self.strategy.extended.should_checkpoint:\n        ckpt_path = self.model_dir\n        max_to_keep = self.params.trainer.max_to_keep\n      else:\n        # In multi worker training we need every worker to save checkpoint,\n        # because variables can trigger synchronization on read and\n        # synchronization needs all workers to participate. To avoid workers\n        # overriding each other we save to a temporary directory on non-chief\n        # workers.\n        ckpt_path = tempfile.mkdtemp()\n        max_to_keep = 1\n\n      checkpoint_manager = tf.train.CheckpointManager(\n          self.trainer.checkpoint,\n          directory=ckpt_path,\n          max_to_keep=max_to_keep,\n          step_counter=self.trainer.global_step,","sourceCodeStart":150,"sourceCodeEnd":186,"githubUrl":"https://github.com/tensorflow/models/blob/e006f5f0d534913e49c1f1dae87364039fa607e2/official/core/train_lib.py#L150-L186","documentation":"Error \"model_dir must be specified, but got None\" thrown in tensorflow/models.","triggerScenarios":"Thrown at official/core/train_lib.py:168 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"}