@R72 thank you for this lengthy description of your Optimization process. A lot of issues sound familiar.
I would like to add these remarks.
If sounds have a lengthy process and there is a risk of crash you can try and store a list of already processed items or batches and continue there:
Then if you want to collect results you can append them to a CSV file. The writer offers the option to continue a file without headers or you collect several parquet files into a big one. You could combine this with an approach to restore a process
Then you can read further hints. But you have mentioned quite a few: