sinanmohd / evanix Goto Github PK
View Code? Open in Web Editor NEWNix build Scheduler
Home Page: https://git.sinanmohd.com/evanix
License: GNU General Public License v3.0
Nix build Scheduler
Home Page: https://git.sinanmohd.com/evanix
License: GNU General Public License v3.0
Implement the greedy selection algorithm for the "counting" cost
The return value of the solver part of evanix
should contain enough information to generate a report saying (0) how many derivations in total will be built (in future versions also how many compute hours we expect to expend), (1) which "targets" will be built, (2) which "targets" will remain unsatisfied. Optional features: print how much extra budget is required to satisfy one more target. Both --dry-run
and the normal mode should be able to produce a report like that. The return value of the solver should probably be an immutable structure, and the "solver" should be a simple enough function to be used in a unit test
For the "counting cost" setting, use iterative approximation to the solution of the integer problem:
Note that DAG constraints correspond to inequalities
The midterm evaluation is starting now, let's decide what we want to include in the report
What's in:
What's left for the 2nd half of the term:
@sinanmohd wdyt
Running evanix
on https://github.com/ggerganov/llama.cpp takes, in the --dry-run
mode, about 20s, whereas running nix-eval-jobs
takes about 6s. Per @sinanmohd's hypothesis, this is due to querying the substituters about the cached store paths too much (does nix not maintain a negative response cache for these queries?). The performance needs to be brought down to the same order of magnitude as nix-eval-jobs
so that we can stop talking about the greedy PoC
Eventually we want to get Nix's scheduler entirely out of the picture:
(very low priority)
Instead of choosing between the whole eval to finish or disabling scheduling altogether (i.e. scheduling jobs one by one as they come), do something like like "wait X milliseconds to accumulate a batch of jobs, run the solver on this subset, schedule some builds, then wait another X milliseconds to extend the batch and re-run the solver to get a better plan"
It is OK to focus on the "complete eval first" scenario and implement batching later: our scope is to find a good way to choose a build plan, not in speeding up the eval
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.