-
-
Notifications
You must be signed in to change notification settings - Fork 3
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Added filter_spec, disabled dynamic tracing, added docs.
- Loading branch information
1 parent
1854c76
commit 8bbef0a
Showing
19 changed files
with
1,607 additions
and
212 deletions.
There are no files selected for viewing
This file contains 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
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
ErrorDocument 404 /equinox/404.html |
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
```python | ||
import equinox as eqx | ||
import jax.random as jr | ||
import quax | ||
import quax.examples.lora as lora | ||
|
||
# | ||
# Start off with any JAX program: here, the forward pass through a linear layer. | ||
# | ||
|
||
key1, key2, key3 = jr.split(jr.PRNGKey(0), 3) | ||
linear = eqx.nn.Linear(10, 12, key=key1) | ||
vector = jr.normal(key2, (10,)) | ||
|
||
def run(model, x): | ||
return model(x) | ||
|
||
run(linear, vector) # can call this as normal | ||
|
||
# | ||
# Now let's Lora-ify it. | ||
# | ||
|
||
# Step 1: make the weight be a LoraArray. | ||
lora_weight = lora.LoraArray(linear.weight, rank=2, key=key3) | ||
lora_linear = eqx.tree_at(lambda l: l.weight, linear, lora_weight) | ||
# Step 2: quaxify and call the original function. The transform will call the | ||
# original function, whilst looking up any multiple dispatch rules registered. | ||
# (In this case for doing matmuls against LoraArrays.) | ||
quax.quaxify(run)(lora_linear, vector) | ||
# Appendix: Quax includes a helper to automatically apply Step 1 to all | ||
# `eqx.nn.Linear` layers in a model. | ||
lora_linear = lora.loraify(linear, rank=2, key=key3) | ||
``` |
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
{% import "partials/language.html" as lang with context %} | ||
<a href="{{ config.repo_url }}" title="{{ lang.t('source.link.title') }}" class="md-source" data-md-component="source"> | ||
<div class="md-source__icon md-icon"> | ||
{% set icon = config.theme.icon.repo or "fontawesome/brands/git-alt" %} | ||
{% include ".icons/" ~ icon ~ ".svg" %} | ||
</div> | ||
<div class="md-source__repository"> | ||
{{ config.repo_name }} | ||
</div> | ||
</a> | ||
{% if config.theme.twitter_url %} | ||
<a href="{{ config.theme.twitter_url }}" title="Go to Twitter" class="md-source"> | ||
<div class="md-source__icon md-icon"> | ||
{% include ".icons/fontawesome/brands/twitter.svg" %} | ||
</div> | ||
<div class="md-source__repository"> | ||
{{ config.theme.twitter_name }} | ||
</div> | ||
</a> | ||
{% endif %} |
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
The favicon is `math-integral` from https://materialdesignicons.com, found by way of https://pictogrammers.com. | ||
(The logo is `math-integral-box`.) |
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,167 @@ | ||
/* Fix /page#foo going to the top of the viewport and being hidden by the navbar */ | ||
html { | ||
scroll-padding-top: 50px; | ||
} | ||
|
||
/* Fit the Twitter handle alongside the GitHub one in the top right. */ | ||
|
||
div.md-header__source { | ||
width: revert; | ||
max-width: revert; | ||
} | ||
|
||
a.md-source { | ||
display: inline-block; | ||
} | ||
|
||
.md-source__repository { | ||
max-width: 100%; | ||
} | ||
|
||
/* Emphasise sections of nav on left hand side */ | ||
|
||
nav.md-nav { | ||
padding-left: 5px; | ||
} | ||
|
||
nav.md-nav--secondary { | ||
border-left: revert !important; | ||
} | ||
|
||
.md-nav__title { | ||
font-size: 0.9rem; | ||
} | ||
|
||
.md-nav__item--section > .md-nav__link { | ||
font-size: 0.9rem; | ||
} | ||
|
||
/* Indent autogenerated documentation */ | ||
|
||
div.doc-contents { | ||
padding-left: 25px; | ||
border-left: 4px solid rgba(230, 230, 230); | ||
} | ||
|
||
/* Increase visibility of splitters "---" */ | ||
|
||
[data-md-color-scheme="default"] .md-typeset hr { | ||
border-bottom-color: rgb(0, 0, 0); | ||
border-bottom-width: 1pt; | ||
} | ||
|
||
[data-md-color-scheme="slate"] .md-typeset hr { | ||
border-bottom-color: rgb(230, 230, 230); | ||
} | ||
|
||
/* More space at the bottom of the page */ | ||
|
||
.md-main__inner { | ||
margin-bottom: 1.5rem; | ||
} | ||
|
||
/* Remove prev/next footer buttons */ | ||
|
||
.md-footer__inner { | ||
display: none; | ||
} | ||
|
||
/* Change font sizes */ | ||
|
||
html { | ||
/* Decrease font size for overall webpage | ||
Down from 137.5% which is the Material default */ | ||
font-size: 110%; | ||
} | ||
|
||
.md-typeset .admonition { | ||
/* Increase font size in admonitions */ | ||
font-size: 100% !important; | ||
} | ||
|
||
.md-typeset details { | ||
/* Increase font size in details */ | ||
font-size: 100% !important; | ||
} | ||
|
||
.md-typeset h1 { | ||
font-size: 1.6rem; | ||
} | ||
|
||
.md-typeset h2 { | ||
font-size: 1.5rem; | ||
} | ||
|
||
.md-typeset h3 { | ||
font-size: 1.3rem; | ||
} | ||
|
||
.md-typeset h4 { | ||
font-size: 1.1rem; | ||
} | ||
|
||
.md-typeset h5 { | ||
font-size: 0.9rem; | ||
} | ||
|
||
.md-typeset h6 { | ||
font-size: 0.8rem; | ||
} | ||
|
||
/* Bugfix: remove the superfluous parts generated when doing: | ||
??? Blah | ||
::: library.something | ||
*/ | ||
|
||
.md-typeset details .mkdocstrings > h4 { | ||
display: none; | ||
} | ||
|
||
.md-typeset details .mkdocstrings > h5 { | ||
display: none; | ||
} | ||
|
||
/* Change default colours for <a> tags */ | ||
|
||
[data-md-color-scheme="default"] { | ||
--md-typeset-a-color: rgb(0, 189, 164) !important; | ||
} | ||
[data-md-color-scheme="slate"] { | ||
--md-typeset-a-color: rgb(0, 189, 164) !important; | ||
} | ||
|
||
/* Highlight functions, classes etc. type signatures. Really helps to make clear where | ||
one item ends and another begins. */ | ||
|
||
[data-md-color-scheme="default"] { | ||
--doc-heading-color: #DDD; | ||
--doc-heading-border-color: #CCC; | ||
--doc-heading-color-alt: #F0F0F0; | ||
} | ||
[data-md-color-scheme="slate"] { | ||
--doc-heading-color: rgb(25,25,33); | ||
--doc-heading-border-color: rgb(25,25,33); | ||
--doc-heading-color-alt: rgb(33,33,44); | ||
--md-code-bg-color: rgb(38,38,50); | ||
} | ||
|
||
h4.doc-heading { | ||
/* NOT var(--md-code-bg-color) as that's not visually distinct from other code blocks.*/ | ||
background-color: var(--doc-heading-color); | ||
border: solid var(--doc-heading-border-color); | ||
border-width: 1.5pt; | ||
border-radius: 2pt; | ||
padding: 0pt 5pt 2pt 5pt; | ||
} | ||
h5.doc-heading, h6.heading { | ||
background-color: var(--doc-heading-color-alt); | ||
border-radius: 2pt; | ||
padding: 0pt 5pt 2pt 5pt; | ||
} | ||
|
||
/* Make errors in notebooks have scrolling */ | ||
.output_error > pre { | ||
overflow: auto; | ||
} |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
window.MathJax = { | ||
tex: { | ||
inlineMath: [["\\(", "\\)"]], | ||
displayMath: [["\\[", "\\]"]], | ||
processEscapes: true, | ||
processEnvironments: true | ||
}, | ||
options: { | ||
ignoreHtmlClass: ".*|", | ||
processHtmlClass: "arithmatex" | ||
} | ||
}; | ||
|
||
document$.subscribe(() => { | ||
MathJax.typesetPromise() | ||
}) |
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
# quax.examples.lora | ||
|
||
As a (actually quite useful) tech-demo, Quax provides an implementation of [LoRA: Low-Rank Adaptation](https://arxiv.org/abs/2106.09685), which is a popular fine-tuning method for large neural network models. | ||
|
||
Most of the time you will just need the [`quax.examples.lora.loraify`][] function, which transforms an existing [Equinox](https://github.com/patrick-kidger/equinox) model. | ||
|
||
For a user who only wants to LoRA'ify only part of their model, the underlying [`quax.examples.lora.LoraArray`][] array-ish object (which subclasses [`quax.ArrayValue`][]) is also available. | ||
|
||
--- | ||
|
||
::: quax.examples.lora.loraify | ||
|
||
::: quax.examples.lora.LoraArray | ||
selection: | ||
members: | ||
- __init__ | ||
|
||
## Example | ||
|
||
Here's a copy of the LoRA example from the README again: | ||
|
||
--8<-- ".lora-example.md" |
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
# quax | ||
|
||
An end user of a library built on Quax needs only one thing from this section: the [`quax.quaxify`][] function. | ||
|
||
::: quax.quaxify | ||
|
||
--- | ||
|
||
A developer of a library built on Quax (e.g. if you wanted to write your own libary analogous to `quax.examples.lora`) should additionally know about the following functionality. | ||
|
||
!!! Info | ||
|
||
See also the [tutorials](../examples/custom_rules.ipynb) for creating your own array-ish Quax types. | ||
|
||
::: quax.register | ||
|
||
::: quax.Value | ||
selection: | ||
members: | ||
- aval | ||
- default | ||
- materialise | ||
|
||
::: quax.ArrayValue | ||
selection: | ||
members: false |
Oops, something went wrong.