How about this:
list(set(tuple(sorted(s)) for s in all_the_ways))
Output:
[(1, 2, 2), (5,), (1, 1, 1, 1, 1), (1, 1, 1, 2)]
It will mangle the order of each tuple though. I'm assuming that doesn't matter, as tuples containing the same set of numbers are considered the same for your case. What this implies is that in the end, the output list might contain tuples that are not among the original input, for example (credit to @thefourtheye):
all_the_ways = [(2, 1, 2), (2, 2, 1)]
# Output: [(1, 2, 2)]
This may or may not be a problem, and if it is, you can use the more robust solutions which are already mentioned in the other excellent answers.