Zygote

21st century AD

https://github.com/fluxml/zygote.jl

Science Score: 64.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
    Links to: arxiv.org
  • Committers with academic emails
    13 of 118 committers (11.0%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (12.7%) to scientific vocabulary

Keywords

automatic-differentiation control-flow gradient julia julia-compiler machine-learning

Keywords from Contributors

flux the-human-brain matrix-exponential sciml julialang differential-equations graphics pde interface primitives
Last synced: 6 months ago · JSON representation ·

Repository

21st century AD

Basic Info
Statistics
  • Stars: 1,540
  • Watchers: 51
  • Forks: 216
  • Open Issues: 442
  • Releases: 136
Topics
automatic-differentiation control-flow gradient julia julia-compiler machine-learning
Created over 7 years ago · Last pushed 8 months ago
Metadata Files
Readme Funding License Citation

README.md

CI Testing Coverage Dev Docs

] add Zygote

Zygote provides source-to-source automatic differentiation (AD) in Julia, and is the next-gen AD system for the Flux differentiable programming framework. For more details and benchmarks of Zygote's technique, see our paper. You may want to check out Flux for more interesting examples of Zygote usage; the documentation here focuses on internals and advanced AD usage.

Zygote supports Julia 1.6 onwards, but we highly recommend using Julia 1.8 or later.

```julia julia> using Zygote

julia> f(x) = 5x + 3

julia> f(10), f'(10) (53, 5.0)

julia> @codellvm f'(10) define i64 @"julia#625_38792"(i64) { top: ret i64 5 } ```

"Source-to-source" means that Zygote hooks into Julia's compiler, and generates the backwards pass for you – as if you had written it by hand.

Zygote supports the flexibility and dynamism of the Julia language, including control flow, recursion, closures, structs, dictionaries, and more. Mutation and exception handling are currently not supported.

```julia julia> fs = Dict("sin" => sin, "cos" => cos, "tan" => tan);

julia> gradient(x -> fsreadline(), 1) sin 0.5403023058681398 ```

Zygote benefits from using the ChainRules.jl ruleset. Custom gradients can be defined by extending the ChainRulesCore.jl's rrule:

```julia julia> using ChainRulesCore

julia> add(a, b) = a + b

julia> function ChainRulesCore.rrule(::typeof(add), a, b) addpb(dy) = (NoTangent(), dy, dy) return add(a, b), addpb end ```

To support large machine learning models with many parameters, Zygote can differentiate implicitly-used parameters, as opposed to just function arguments.

```julia julia> W, b = rand(2, 3), rand(2);

julia> predict(x) = W*x .+ b;

julia> g = gradient(Params([W, b])) do sum(predict([1,2,3])) end Grads(...)

julia> g[W], gb ```

Owner

  • Name: FluxML
  • Login: FluxML
  • Kind: organization

The Elegant Machine Learning Stack

Citation (CITATION.bib)

@article{Zygote.jl-2018,
  author    = {Michael Innes},
  title     = {Don't Unroll Adjoint: Differentiating SSA-Form Programs},
  journal   = {CoRR},
  volume    = {abs/1810.07951},
  year      = {2018},
  url       = {http://arxiv.org/abs/1810.07951},
  archivePrefix = {arXiv},
  eprint    = {1810.07951},
  timestamp = {Tue, 30 Oct 2018 20:39:56 +0100},
  biburl    = {https://dblp.org/rec/bib/journals/corr/abs-1810-07951},
  bibsource = {dblp computer science bibliography, https://dblp.org}
}

GitHub Events

Total
  • Create event: 28
  • Commit comment event: 25
  • Release event: 15
  • Issues event: 32
  • Watch event: 62
  • Delete event: 13
  • Issue comment event: 151
  • Push event: 150
  • Pull request review comment event: 14
  • Pull request review event: 37
  • Pull request event: 54
  • Fork event: 10
Last Year
  • Create event: 28
  • Commit comment event: 25
  • Release event: 15
  • Issues event: 32
  • Watch event: 62
  • Delete event: 13
  • Issue comment event: 151
  • Push event: 150
  • Pull request review comment event: 14
  • Pull request review event: 37
  • Pull request event: 54
  • Fork event: 10

Committers

Last synced: 9 months ago

All Time
  • Total Commits: 1,931
  • Total Committers: 118
  • Avg Commits per committer: 16.364
  • Development Distribution Score (DDS): 0.682
Past Year
  • Commits: 40
  • Committers: 15
  • Avg Commits per committer: 2.667
  • Development Distribution Score (DDS): 0.825
Top Committers
Name Email Commits
Mike J Innes m****s@g****m 614
Michael Abbott 3****t 134
Carlo Lucibello c****o@g****m 123
Lyndon White l****e@i****k 93
Dhairya Gandhi d****a@j****m 92
Will Tebbutt w****1@m****k 75
Brian Chen T****r 71
Seth Axen s****n@g****m 63
Michael Abbott me@e****k 41
Dhairya Gandhi d****a@j****m 38
Miha Zgubic m****c@i****k 34
lxvm l****o@v****m 31
Christopher Rackauckas a****s@c****m 29
David Widmann d****b@d****e 28
Simeon Schaub s****9@g****m 22
github-actions[bot] 4****] 21
cossio j****z@g****m 21
mohamed82008 m****8@g****m 19
Matěj Račinský m****y@a****m 17
wt w****t@i****k 16
dsweber2 d****2@g****m 15
Roger-luo h****r@q****m 14
Sebastian s****r@m****e 14
Jun Tian t****p@g****m 13
Paul p****l@p****g 13
marius m****a@g****m 11
lassepe l****s@m****g 11
Elliot Saba s****t@g****m 10
Jordi Bolibar j****r@g****m 10
Yingbo Ma m****5@g****m 10
and 88 more...

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 160
  • Total pull requests: 142
  • Average time to close issues: 7 months
  • Average time to close pull requests: 7 months
  • Total issue authors: 119
  • Total pull request authors: 51
  • Average comments per issue: 4.2
  • Average comments per pull request: 4.62
  • Merged pull requests: 91
  • Bot issues: 0
  • Bot pull requests: 8
Past Year
  • Issues: 27
  • Pull requests: 45
  • Average time to close issues: 4 days
  • Average time to close pull requests: 8 days
  • Issue authors: 21
  • Pull request authors: 15
  • Average comments per issue: 1.15
  • Average comments per pull request: 2.16
  • Merged pull requests: 37
  • Bot issues: 0
  • Bot pull requests: 5
Top Authors
Issue Authors
  • CarloLucibello (12)
  • mcabbott (4)
  • simsurace (3)
  • ToucheSir (3)
  • jarroyoe (3)
  • ChrisRackauckas (3)
  • bicycle1885 (3)
  • juliohm (2)
  • pxl-th (2)
  • LilithHafner (2)
  • leonardogalliano (2)
  • lxvm (2)
  • mrazomej (2)
  • Red-Portal (2)
  • benedict-96 (2)
Pull Request Authors
  • ToucheSir (32)
  • DhairyaLGandhi (15)
  • mcabbott (13)
  • github-actions[bot] (11)
  • pxl-th (7)
  • CarloLucibello (6)
  • lxvm (6)
  • BioTurboNick (6)
  • Pangoraw (5)
  • serenity4 (4)
  • oxinabox (3)
  • devmotion (3)
  • vpuri3 (3)
  • NAThompson (2)
  • tej2612 (2)
Top Labels
Issue Labels
bug (22) ChainRules (15) help wanted (8) compiler (7) second order (4) needs adjoint (4) CUDA (4) good first issue (3) up for grabs (3) dictionary (3) discussion (2) needs tests (2) performance (2) implicit (2) namedtuple (1) enhancement (1)
Pull Request Labels
ChainRules (7) second order (6) performance (5) CUDA (4) discussion (2) implicit (2) enhancement (2) dictionary (1) needs adjoint (1)

Packages

  • Total packages: 1
  • Total downloads:
    • julia 4,353 total
  • Total dependent packages: 180
  • Total dependent repositories: 6
  • Total versions: 137
juliahub.com: Zygote

21st century AD

  • Versions: 137
  • Dependent Packages: 180
  • Dependent Repositories: 6
  • Downloads: 4,353 Total
Rankings
Stargazers count: 0.2%
Forks count: 0.3%
Dependent packages count: 0.4%
Average: 1.3%
Dependent repos count: 4.4%
Last synced: 6 months ago