-
Notifications
You must be signed in to change notification settings - Fork 5.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Initialization design doc #4852
Conversation
|
From https://travis-ci.org/PaddlePaddle/Paddle/jobs/288826972#L993 , it seems that the updated Markdown file ends with none or more than one empty lines. This has to be fixed; otherwise, pre-commit will fail. |
I vote for Proposal 1. -- make it run once. |
Update: the current implementation is based on proposal 1. |
doc/design/initialization.md
Outdated
|
||
## Proposals | ||
|
||
### Proposal 1: Two seperate `ProgramDesc`. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this seems simple and workable.
The resource which survived across multiple block/program is the Variables
in Scopes
.
A program is the container of multiple Blocks, more than one program seems not a problem.
if we have a conclusion that we will use multiple programs, one is for initializing, should we update this design? |
doc/design/initialization.md
Outdated
## Proposals | ||
|
||
### Proposal 1: Two seperate `ProgramDesc`. | ||
## Solution: Two seperate `ProgramDesc`. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Who will output the two separate ProgramDesc
s?
I my mind:
Python ---(entire ProgramDesc
) ---> Pruner ---(ProgramDesc1
, ProgramDesc2
)---> Executor.
We need to make sure Pruner have the global view. For example, in cluster training, the Pruner need to have the global view in order to do things like deciding parameter placement.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Python generates two separate ProgramDesc
, one for initialization, and one for training. Both ProgramDesc
s contain all the parameter description. Do you think it is enough to decide parameter placement? If not, we can always send both ProgramDesc
s to Pruner.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If Python can do the separation, pruner should be able to do it as well. Is it possible to let pruner do the job?
Parameter placement is just an example supporting the argument that the pruner needs to have the global view.
doc/design/initialization.md
Outdated
## Proposals | ||
|
||
### Proposal 1: Two seperate `ProgramDesc`. | ||
## Solution: Two seperate `ProgramDesc`. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
seperate -> separate
Conclusion: two separate programDesc.