Suppose you have a workload that has no dependency and no one is really waiting for it to finish, say, a batch job analyzing a large data set, you can optimize your spend by choosing preemptible VMs to run this kind of process.
A preemptible VM is different from an ordinary Compute Engine VM in only one respect. In this instance you are explicitly providing Compute Engine, with the permission to terminate it if its resources are needed elsewhere.
You can save a lot of money with preemptible VMs.
You can choose therefore, how to make proper use of your instances, such as the number of virtual CPUs and the amount of memory, by using a set of predefined machine types or by creating your own custom machine types.