Does any exit code appear? What is the status message and status reason in the 'INFO' section?
If you remove any reference of ClearML from the code on that machine, does it still hang?
Yes it is logging to the console. The script does hang whenever it completes all the epochs when it is having the issue.
I just created a new virtual environment and the problem persists. There are only two dependencies clearml and tensorflow. CostlyOstrich36 what logs are you referring to?
Thank you ThankfulClams64 for opening the GI, hopefully we will be able to reproduce it and fox ot quickly
There is clearly some connection to the ClearML server as it remains "running" the entire training session but there are no metrics or debug samples. And I see nothing in the logs to indicate there is an issue
Yes I see it in the terminal on the machine
Yes tensorboard. It is still logging the tensorboard scalers and images. It just doesn't log the console output
That makes sense... If you turn auto_connect_streams to false this mean that auto reporting will be disabled as per the documentation.. If you turn it to True then logging should resume.
Another thing I notice is that aborting the experiment does not work when this is happening. It just continues to run
So I was able to repeat the same behavior on a machine running this example None
by adding the following callback
class TensorBoardImage(TensorBoard):
@staticmethod
def make_image(tensor):
from PIL import Image
import io
tensor = np.stack((tensor, tensor, tensor), axis=2)
height, width, channels = tensor.shape
image = Image.fromarray(tensor)
output = io.BytesIO()
image.save(output, format='PNG')
image_string = output.getvalue()
output.close()
return tf.Summary.Image(height=height,
width=width,
colorspace=channels,
encoded_image_string=image_string)
def on_epoch_end(self, epoch, logs=None):
if logs is None:
logs = {}
super(TensorBoardImage, self).on_epoch_end(epoch, logs)
images = self.validation_data[0] # 0 - data; 1 - labels
img = (255 * images[0].reshape(28, 28)).astype('uint8')
image = self.make_image(img)
summary = tf.Summary(value=[tf.Summary.Value(tag='image', image=image)])
self.writer.add_summary(summary, epoch)
So it seems like there is some bug in the how ClearML is logging tensorbaord images that causes everything to fail
Do you also see the same in the terminal itself on the machine?
Not sure why that is related to saving images
ThankfulClams64 , can you provide a small code snippet that reproduces this behaviour? Can you also test with the latest version of clearml
?
I'm not sure how to even troubleshoot this.
When I try to abort an experiment. I get this in the log
clearml.Task - WARNING - ### TASK STOPPED - USER ABORTED - STATUS CHANGED ###
but it does not stop anything it just continues to run
The same training works sometimes. But I'm not sure how to troubleshoot when it stops logging the metrics
Okay I will do another run to capture the console output. We currently set auto_connect_streams to False to reduce the number of API calls. So there isn't really anything in the ClearML task page console section
When the script is hung at the end the experiment says failed in ClearML
Running clearml_example.py in None reproduces the issue
It seems similar to this None is it possible saving too many model weights causes metric logging thread to die?
We are running the same code on multiple machines and it just randomly happens. Currently we are having the issue on 1 out of 4
Hi ThankfulClams64 ! What tensorflow/keras version are you using? I noticed that in the TensorBoardImage
you are using tf.Summary
which no longer exists since tensorflow 2.2.3
, which I believe is too old to work with tesorboard==2.16.2.
Also, how are you stopping and starting the experiments? When starting an experiment, are you resuming training? In that case, you might want to consider setting the initial iteration to the last iteration your program reported
My bad, if you set auto_connect_streams to false, you basically disable the console logging... Please see the documentation:
auto_connect_streams (Union[bool, Mapping[str, bool]]) – Control the automatic logging of stdout and stderr.
Yea I am fine not having the console logging. My issues is the scalers and debug images occasionally don't record to ClearML
Just to make sure, did the logging to the clearml server work previously and stoped working at some point?
This was on the same machine I am having issues with it logs scalars correctly using the example code, but when I add in that callback which just logs a random image to tensorboard I don't get any scalars logged
Is this just the console output while training?