Train models across distributed devices without centralizing raw records, accounting for uneven data, communication costs, and unreliable participants.