Write a generator function `flatten_deep(*iterables)` that yields all elements from the given iterables in order, flattening any nested iterables (lists, tuples, sets, etc.) completely. For example, `flatten_deep([1, [2, (3, 4)], 5], (6, [7, 8]))` should yield `1, 2, 3, 4, 5, 6, 7, 8` in that order. Strings are considered atomic and should be yielded as single items, not flattened into characters. The function must be a generator and should use `yield from` for delegation.
Constraints
- Each argument can be any iterable (list, tuple, set, etc.) of any depth.
- The total number of elements to yield will not exceed 10^4.
- Strings are atomic; do not flatten them into characters.
- The function must return a generator object.