def run(self): # Since we're running in a separate process already, use threads. os.environ["WANDB_START_METHOD"] = "thread" run = wandb.init(*self.args, **self.kwargs) # Run external hook to process information about wandb run if WANDB_PROCESS_RUN_INFO_HOOK in os.environ: try: _load_class(os.environ[WANDB_PROCESS_RUN_INFO_HOOK])(run) except Exception as e: logger.exception( f"Error calling {WANDB_PROCESS_RUN_INFO_HOOK}: {e}", exc_info=e) while True: item_type, item_content = self.queue.get() if item_type == _QueueItem.END: break if item_type == _QueueItem.CHECKPOINT: self._handle_checkpoint(item_content) continue assert item_type == _QueueItem.RESULT log, config_update = self._handle_result(item_content) try: wandb.config.update(config_update, allow_val_change=True) wandb.log(log) except urllib.error.HTTPError as e: # Ignore HTTPError. Missing a few data points is not a # big issue, as long as things eventually recover. logger.warn("Failed to log result to w&b: {}".format(str(e))) wandb.finish()
def run(self): os.environ["WANDB_START_METHOD"] = "fork" wandb.init(*self.args, **self.kwargs) while True: result = self.queue.get() if result == _WANDB_QUEUE_END: break log, config_update = self._handle_result(result) try: wandb.config.update(config_update, allow_val_change=True) wandb.log(log) except urllib.error.HTTPError as e: # Ignore HTTPError. Missing a few data points is not a # big issue, as long as things eventually recover. logger.warn("Failed to log result to w&b: {}".format(str(e))) wandb.join()
def run(self): wandb.require("service") wandb.init(*self.args, **self.kwargs) wandb.setup() while True: item_type, item_content = self.queue.get() if item_type == _QueueItem.END: break if item_type == _QueueItem.CHECKPOINT: self._handle_checkpoint(item_content) continue assert item_type == _QueueItem.RESULT log, config_update = self._handle_result(item_content) try: wandb.config.update(config_update, allow_val_change=True) wandb.log(log) except urllib.error.HTTPError as e: # Ignore HTTPError. Missing a few data points is not a # big issue, as long as things eventually recover. logger.warn("Failed to log result to w&b: {}".format(str(e))) wandb.finish()
def run(self): # Since we're running in a separate process already, use threads. os.environ["WANDB_START_METHOD"] = "thread" wandb.init(*self.args, **self.kwargs) while True: item_type, item_content = self.queue.get() if item_type == _QueueItem.END: break if item_type == _QueueItem.CHECKPOINT: self._handle_checkpoint(item_content) continue assert item_type == _QueueItem.RESULT log, config_update = self._handle_result(item_content) try: wandb.config.update(config_update, allow_val_change=True) wandb.log(log) except urllib.error.HTTPError as e: # Ignore HTTPError. Missing a few data points is not a # big issue, as long as things eventually recover. logger.warn("Failed to log result to w&b: {}".format(str(e))) wandb.finish()