class_docstr: A ``SearcherOperation`` is a request from the hyperparameter-search logic for the training
  script to execute one train-validate-report cycle.
  
  Some searchers, such as single, random, or grid, pass only a single ``SearcherOperation`` to
  each trial, while others may pass many ``SearcherOperations``.
  
  Each ``SearcherOperation`` has a length attribute representing the cumulative training that
  should be completed before the validate-report steps of the cycle.  The length attribute is
  absolute, not incremental, meaning that if the searcher wants you to train for 10 units and
  validate, then train for 10 more units and validate, it emits one ``SearcherOperation`` with
  ``.length=10`` followed by a second ``SearcherOperation`` with ``.length=20``.  Using absolute
  lengths instead of incremental lengths makes restarting after crashes simple and robust.
class_docstr_tok: ["A","``","SearcherOperation","``","is","a","request","from","the","hyperparameter-search","logic","for","the","training","script","to","execute","one","train-validate-report","cycle",".","Some","searchers",",","such","as","single",",","random",",","or","grid",",","pass","only","a","single","``","SearcherOperation","``","to","each","trial",",","while","others","may","pass","many","``","SearcherOperations","``",".","Each","``","SearcherOperation","``","has","a","length","attribute","representing","the","cumulative","training","that","should","be","completed","before","the","validate-report","steps","of","the","cycle",".","The","length","attribute","is","absolute",",","not","incremental",",","meaning","that","if","the","searcher","wants","you","to","train","for","10","units","and","validate",",","then","train","for","10","more","units","and","validate",",","it","emits","one","``","SearcherOperation","``","with","``",".length=10","``","followed","by","a","second","``","SearcherOperation","``","with","``",".length=20","``",".","Using","absolute","lengths","instead","of","incremental","lengths","makes","restarting","after","crashes","simple","and","robust","."]
docstr: ``report_progress()`` reports the training progress to the Determined master so the WebUI
  can show accurate progress to users.
  
  The unit of the length value passed to ``report_progress()`` must match the unit of the
  ``.length`` attribute.  The unit of the ``.length`` attribute is user-defined.  When
  treating ``.length`` as batches, ``report_progress()`` should report batches.  When treating
  .length as epochs, ``report_progress()`` must also be in epochs.
docstr_tok: ["``","report_progress","(",")","``","reports","the","training","progress","to","the","Determined","master","so","the","WebUI","can","show","accurate","progress","to","users",".","The","unit","of","the","length","value","passed","to","``","report_progress","(",")","``","must","match","the","unit","of","the","``",".length","``","attribute",".","The","unit","of","the","``",".length","``","attribute","is","user-defined",".","When","treating","``",".length","``","as","batches",",","``","report_progress","(",")","``","should","report","batches",".","When","treating",".length","as","epochs",",","``","report_progress","(",")","``","must","also","be","in","epochs","."]
code: def report_progress(self, length: float) -> None:
      """
      ``report_progress()`` reports the training progress to the Determined master so the WebUI
      can show accurate progress to users.
  
      The unit of the length value passed to ``report_progress()`` must match the unit of the
      ``.length`` attribute.  The unit of the ``.length`` attribute is user-defined.  When
      treating ``.length`` as batches, ``report_progress()`` should report batches.  When treating
      .length as epochs, ``report_progress()`` must also be in epochs.
      """
      if not self._is_chief:
          raise RuntimeError(
              "you must only call op.report_progress() from the chief worker"
          )
      if self._completed and length != self._length:
          raise RuntimeError(
              "you must not call op.report_progress() after op.report_completed()"
          )
      logger.debug(f"op.report_progress({length})")
      self._session.post(
          f"/api/v1/trials/{self._trial_id}/progress",
          data=det.util.json_encode(length),
      )
  
imports: import enum
  import logging
  from typing import Any, Iterator, Optional
  import determined
  from determined import core
  from determined.common import api
label_desc: Use image node_id 3 for calling the SearcherOperation obj's underlying member method code with example usage: obj.report_progress(length) without return types