There is only one way to find out. Test it. It is test-steps depended, not just the number of requests.
Setup a single instance on Amazon, do a load test and ramp-up requests until you hit the limit of the single box. Let's take a guess and say 1000k requests per second per box. (Do measure this)
Divide the 20-50k by the max number of requests = total machines.
Example: 50.000 \ 1.000 = 50 machines.
I don't think you can do this from a single instance. I would probably buy lots of small instances and cluster them. Linux technically accepts 64k connections on a single machine, but io and memory will probably be the bottle-neck.
Should be relative easy to measure how a machine behaves while running your tests:
And multiply by the number of wanted requests.