The simplest solution without changing the simulation would be to divide your render into several buckets of frames. Make several files with each a different frame range and provide only these frames' caches. Otherwise, redo the simulation at lower resolution and no "noise" if you have some. Or even a combination of both.
Buckets method
First, you need to look at your cache files to figure out how many frames you can share without going over the upload limit. Then, use that number to make each bucket.
Let's say you established that you can have up to 10 frames of simulation without going over 750MB.
Open your scene, set your time range to the first 10 frames:
Save this as a new scene. Then make a zip file with that scene and only the first 10 frames of simulation caches.
Repeat for each 10 frames until you covered the whole frame range you need.
You can then send each scene to sheep it.
Modifying the simulation
Since it's the fire simulation that takes most of the space, then let's focus on this one only.
To my knowledge, there are two parameters that drastically impact the file size of caches: the domain's resolution and noise.
My advice would be to first disable the noise entirely. Then lower the domain's resolution to the lowest you can to get the overall shape you need, then enable the noise again and adapt its upres factor to the lowest you can to get the look you need.
Resolution Divisions: how many voxels you have in your domain. Similar to image pictures: the higher the resolution, the more data, the heavier the file.
Noise is a cheap and easy way to add finer details over the original simulation, so that instead of spending lots of computing time and memory on simulating a precise simulation, you instead quickly simulate just the global shape of the simulation and add noise over it to make it look finer than it is. But it's still more data to cache, and the upres factor works the same way as the domain's resolution.