stan-dev / design-docs Goto Github PK
View Code? Open in Web Editor NEWLicense: BSD 3-Clause "New" or "Revised" License
License: BSD 3-Clause "New" or "Revised" License
Hey,
Myself Debojyoti a cs prefinal year student hope to participate in gsoc 2021 and I found this project quite interesting to implement https://github.com/stan-dev/design-docs/blob/master/gsoc_proposals/2021/bayesian_benchmarking.md
can you guys help me to getting start @mike-lawrence @MansMeg
A few comments for consideration in the matrix autodiff design document.
As much as the matrix of vars enables better performance it also greatly facilities the implementation matrix-valued reverse mode updates, as demonstrated in the matrix product example. The resulting code is not only easier to develop but also easier to read -- all in addition to likely being much faster. Perhaps worthy of mentioning in the summary.
Given the amount of compiler logic proposed it would be great to have a compiler option that returns an annotated Stan program indicating with variables were assigned matrix<var>
and which were assigned var<matrix>
. This would help users track down undesired casts down to matrix<var>
and optimize their code without having to guess at the underlying compiler logic.
It would also be great to have some way to force a conversion from a matrix<var>
to a var<matrix>
, even if only with a function meant for advanced users. I'm thinking in particular of Gaussian process applications where custom Gram matrices are built element by element in a user-defined function, but afterwards are used used as only monolithic matrices. My understanding of the proposed logic is that this would propagate a matrix<var>
throughout the Stan program and miss out on potential performance unless there is some way to force a user-defined function to return a var<matrix>
to cast the return, for example
functions {
matrix custom_covar(...);
}
...
model {
matrix[N, N] custom_gram = to_varmat(custom_covar(...));
}
I know this is a stan flavored version of the Rust RFC, but why don't we have the "motion for final comment" period and the subteam voting schema?
From the Rust RFC
At some point, a member of the subteam will propose a "motion for final comment period" (FCP), along with a disposition for the RFC (merge, close, or postpone).
This step is taken when enough of the tradeoffs have been discussed that the subteam is in a position to make a decision. That does not require consensus amongst all participants in the RFC thread (which is usually impossible). However, the argument supporting the disposition on the RFC needs to have already been clearly articulated, and there should not be a strong consensus against that position outside of the subteam. Subteam members use their best judgment in taking this step, and the FCP itself ensures there is ample time and notification for stakeholders to push back if it is made prematurely.
For RFCs with lengthy discussion, the motion to FCP is usually preceded by a summary comment trying to lay out the current state of the discussion and major tradeoffs/points of disagreement.
Before actually entering FCP, all members of the subteam must sign off; this is often the point at which many subteam members first review the RFC in full depth.
Is the voting stuff we are currently talking about on discourse going to be used instead of the subteam model Rust uses or is that for other things?
It feels like a good idea to have a way to formalize a final vote of "We are doing this feature"
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.