Data queues, prefetching and multi-source#1933
Closed
cypof wants to merge 1 commit intoBVLC:masterfrom
Closed
Conversation
Member
Author
|
@shelhamer I have a proto of the socket_layer, do you prefer it added to this PR or separate? Also do you guys plan to merge this one soon, or prefer to wait until we make more progress on P2P? |
Member
Author
|
It seems on RedHat Linux in some cases only one core is used. I suspect an opencv compile option, as it was only on encoded images, but haven't had time to investigate. On Ubuntu 14.04 things work well, on imagenet we get about 1500 images/s with 8 GPUs and prefetch threads. |
cypof
added a commit
to cypof/caffe
that referenced
this pull request
Apr 22, 2015
cypof
added a commit
to cypof/caffe
that referenced
this pull request
Apr 23, 2015
Member
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
(Moved from dev branch (#1775) to master.)
I split the work on data_layer from #1148. It was written initially to get enough bandwidth to feed multiple GPUs and fix performance issues with the thread creation/destruction on each batch. Over time a few other things got in. In particular we are experimenting at Flickr with different ratios of classes by reading from multiple sources. E.g. each dataset can be setup to contain one class, and the probability of each source defines the class ratios at runtime.
In terms of performance, the current code could be fast enough, but it's hard to evaluate. If many solvers open the same DB and read, only the first one will actually load data, the other ones read from the cache. For parallel training, each solver needs to see a different batch, so either we split the dataset in several DBs, or use large initial offsets in the same DB and hope they won't catch up with each other. If the offset if large, data might not be in cache anymore when the next solver reaches the same location, requiring the disk to seek back and forth. Seeking kills mechanical disks performance. Using SSD helps but now the dataset might not fit and you need multiple sources. This PR tries to answer these different problems.
Features: