Dear Omar,
well I might be misunderstand what you want to achieve. I also used a machine with 16GB only. So, here is what I did:
alltuples = Tuples[{1, 0}, 27];
Note that I do not (!) print that out on the screen. This is
alltuples // ByteCount
(*28991029392*)
29 GB, but my 16 GB physical memory handle it gracefully. The Wolfram Kernel uses 27.24GB (compressed 26.04) I can recall the tuples, e.g.:
alltuples[[341535]]
(*{1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, \
0, 0, 0, 1}*)
I think I could apply them as substitution rules now. That might take a while and you might want to use "Dispatch". What would these substitution rules look like?
I am not sure whether substitution rules are the best way to go when dealing with such large sets of vectors/sequences.
Best wishes,
Marco
PS: I am on OSX 10.13.6.