I use what might be considered a third way to ensure persistence. This method uses snapshots and Amazon-machine-instances (AMIs). I chose this method because of the further cost savings. Snapshots are stored at 0.05$/GB-Month, as opposed to the higher rates when EBS volumes are kept running through the month.
How do I do this?
The first time I create a new spot request, I create volumes that do not delete automatically on termination. Once I am done with the spot instance, or if the instance gets terminated automatically, I create a snapshot of the volume, and then go ahead and delete the volume.
The next time I need to create a spot instance, while still carrying on the work I was doing earlier, I create an AMI (with Hardware-assisted virtualization) from the snapshot, and then create a spot request using this new AMI. I need Hardware-assisted virtualization to allow me to create GPU Compute instances.
The new spot instance contains all the data I had on the last volume that I was using.
As of now, I do all of this manually on the aws-console, but I guess it can be automated through the CLI.