Dolphin only supports totally asynchronous execution (TAP).
We need to extend it to support synchronous execution (BSP).
SSP is a good way for controlling synchronicity.
To minimize the implementation effort, it's possible to ignore cache layer and just control the progress of mini-batches in workers.
Decoupling progress control and cache policy also enables us support TAP, which pulls model upon every mini-batch start, in our SSP implementation; slack 0 means BSP and infinity means TAP.
To make it be original SSP, users need to configure cache layer (e.g., CachedModelAccessor
) correspondingly.