Comments (9)
Copying design here since README will change:
For a given parameter group, git-cml will store either the group's parameter's values or an update to the values in the event that it can be stored more efficiently. For example, if a sparse update is made to a parameter group, git-cml will store the sparse update in a sparse format to save storage costs. For a given parameter group, all updates made since the last time the group's values were stored are stored in an updates subdirectory within .git_cml/{checkpoint_file_name}/{parameter_name}. Whenever a dense update is made to a parameter group, the new full set of parameter values is stored and all prior updates are removed from the updates subdirectory. All parameters and updates are currently stored via git-lfs.
from git-theta.
Requires making it so that you can provide hints to git-theta
as to the appropriate update type to use
from git-theta.
Do we want to allow a single commit to have multiple changed parameters with different update types? Like a dense update to attn weights but a sparse update to the embedding table? Or a single change changes everything the same way?
from git-theta.
Last time we discussed this, we decided on a single commit to have only 1 kind of update to begin with. @craffel are there scenarios wherein multiple update types are used in the same training run?
from git-theta.
Ideally we could support something like that - there's no reason someone wouldn't possibly update different parameter groups with different methods. But I think it's probably a lot less common, and we could always force users to break up their changes into multiple subsequent commits according to update type.
from git-theta.
With #92 merged we can now use plugins for different update types.
@vishalathreya The current "sparse" implementation is really simple and you don't get any actual gain wrt to the sparseness. It would be good to incorporate the smart sparseness features you had in #75. It would probably be via updates to the read, write, and calculate sparse methods here https://github.com/r-three/git-theta/blob/main/git_theta/updates/sparse.py#L51(it would probably also make sense to abstract part of the writing into a write_update
method.
from git-theta.
After #114 the current pattern is that git add <model>
will default to storing the updates as dense updates. In cases where a user wants to use a different update type, they can set an environment variable GIT_THETA_UPDATE_TYPE=sparse
before running git add <model>
. Alternatively, they can do git theta add <model> --update-type sparse
which internally just sets the environment variable, calls git add <model>
, and restores the environment variable to its initial value.
from git-theta.
I think once #127 (low-rank) and #125 (real sparse updates) land it should probably be enough to close this.
from git-theta.
Closing because it's subsumed by #127 and #125.
from git-theta.
Related Issues (20)
- Add an "apply to all" option to merge actions
- Parameter groups that are more than just tensors? HOT 3
- Add a way to script merges
- Functionality for partial model loading HOT 3
- Method to tell if git-theta wasn't installed? HOT 4
- Pytorch Checkpoint reading
- Git Add can have high memory usage.
- Finer-grained control of `git theta install` HOT 1
- Tensorflow model loading/saving seems bugged
- `git theta ls-files` HOT 1
- Git-Theta Clean
- Hanging when crashing
- More intelligent concurrency limits
- Investigate using cffi to speed up git lfs interface
- Configurable Serialization, Combining, and Saving to a backend
- Add `__str__` to metadata object HOT 1
- Update CI to handle MacOS
- Add retry to end2end tests
- in the `clean` filter, auto-detect checkpoint handler based on file extension HOT 1
- [end2ends] push repos to Hugging Face Hub (and git clone from there) to ensure it works HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from git-theta.