All Projects → ucbrise → jarvis

ucbrise / jarvis

Licence: Apache-2.0 license
Build, configure, and track workflows with Jarvis.

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to jarvis

slock
High-performance distributed sync service and atomic DB
Stars: ✭ 50 (+257.14%)
Mutual labels:  replication
pg keeper
Simplified clustering module for PostgreSQL
Stars: ✭ 32 (+128.57%)
Mutual labels:  replication
Awesome-DataScience-Cheatsheets
Collection of cheatsheets for data science, machine learning and deep learning :).
Stars: ✭ 48 (+242.86%)
Mutual labels:  data-scientists
bftdb
Tendermint + Sqlite3 = BFT Database Replication
Stars: ✭ 35 (+150%)
Mutual labels:  replication
core
WIP - A personal life helper providing solutions and happiness
Stars: ✭ 17 (+21.43%)
Mutual labels:  jarvis
mongodb-cluster
MongoDB sharded cluster
Stars: ✭ 25 (+78.57%)
Mutual labels:  replication
cross-cluster-replication
Synchronize your data across multiple clusters for lower latencies and higher availability
Stars: ✭ 22 (+57.14%)
Mutual labels:  replication
ioBroker.jarvis
jarvis - just another remarkable vis
Stars: ✭ 129 (+821.43%)
Mutual labels:  jarvis
popcat-echo
The server-side reproduction, similar the one of https://popcat.click, improve the performance and speed.
Stars: ✭ 62 (+342.86%)
Mutual labels:  reproduction
influxdb-ha
High-availability and horizontal scalability for InfluxDB
Stars: ✭ 45 (+221.43%)
Mutual labels:  replication
J.A.R.V.I.S
Just A Rather Very Intelligent System
Stars: ✭ 36 (+157.14%)
Mutual labels:  jarvis
sql-sync
Offline replication between SQLite (clients) and MySQL (master).
Stars: ✭ 52 (+271.43%)
Mutual labels:  replication
redis-connect-dist
Real-Time Event Streaming & Change Data Capture
Stars: ✭ 21 (+50%)
Mutual labels:  replication
JARVIS
Jarvis is a simple Chatbot with a GUI capable of chatting and retrieving information and daily news from the internet for it's user using python.
Stars: ✭ 49 (+250%)
Mutual labels:  jarvis
laravel-jarvis
Achieve Your Ambition With Me .
Stars: ✭ 32 (+128.57%)
Mutual labels:  jarvis
awesome-storage
A curated list of storage open source tools. Backups, redundancy, sharing, distribution, encryption, etc.
Stars: ✭ 324 (+2214.29%)
Mutual labels:  replication
canal
redis replication canal slave
Stars: ✭ 31 (+121.43%)
Mutual labels:  replication
MySqlCdc
MySQL/MariaDB binlog replication client for .NET
Stars: ✭ 71 (+407.14%)
Mutual labels:  replication
AI
Allow me to introduce myself I am Jarvis, the virtual artificial intelligence and I'm here to assist you with a variety of tasks as best I can, 24 hours a day seven days a week.
Stars: ✭ 31 (+121.43%)
Mutual labels:  jarvis
messaging-replication
eXist-db JMS based messaging and document replication extension (JMS based)
Stars: ✭ 14 (+0%)
Mutual labels:  replication

Jarvis (has been renamed to Flor please use that repo instead)

Build, configure, and track workflows with Jarvis.

What is Jarvis?

Jarvis is a system with a declarative DSL embedded in python for managing the workflow development phase of the machine learning lifecycle. Jarvis enables data scientists to describe ML workflows as directed acyclic graphs (DAGs) of Actions and Artifacts, and to experiment with different configurations by automatically running the workflow many times, varying the configuration. To date, Jarvis serves as a build system for producing some desired artifact, and serves as a versioning system that enables tracking the evolution of artifacts across multiple runs in support of reproducibility.

How do I run it?

Clone or download this repository.

You'll need Anaconda, preferably version 4.4+

Please read this guide to set up a Python 3.6 environment inside Anaconda. Whenever you work with Jarvis, make sure the Python 3.6 environment is active.

Once the Python 3.6 environment in Anaconda is active, please run the following command (use the requirements.txt file in this repo):

pip install -r requirements.txt

Next, we will install RAY, a Jarvis dependency:

brew update
brew install cmake pkg-config automake autoconf libtool boost wget

pip install numpy funcsigs click colorama psutil redis flatbuffers cython --ignore-installed six
conda install libgcc

pip install git+https://github.com/ray-project/ray.git#subdirectory=python

Next, Add the directory containing this jarvis package (repo) to your PYTHONPATH.

For examples on how to write your own jarvis workflow, please have a look at:

examples/twitter.py -- classic example
examples/plate.py -- multi-trial example

Make sure you:

  1. Import jarvis
  2. Initialize a jarvis.Experiment
  3. set the experiment's groundClient to 'ground'.

Once you build the workflow, call pull() on the artifact you want to produce. You can find it in ~/jarvis.d/.

If you pass in a non-empty dict to pull (see lifted_twitter.py), the call will return a pandas dataframe with literals and requested artifacts for the columns, and different trials for the rows.

Note on data

The dataset used in some of our examples has migrated.

Example program

Contents of the examples/plate.py file:

import jarvis

ex = jarvis.Experiment('plate_demo')

ex.groundClient('ground')

ones = ex.literal([1, 2, 3], "ones")
ones.forEach()

tens = ex.literal([10, 100], "tens")
tens.forEach()

@jarvis.func
def multiply(x, y):
    z = x*y
    print(z)
    return z

doMultiply = ex.action(multiply, [ones, tens])
product = ex.artifact('product.txt', doMultiply)

product.pull()
product.plot()

On run produces:

10
20
30
100
200
300

Motivation

Jarvis should facilitate the development of auditable, reproducible, justifiable, and reusable data science workflows. Is the data scientist building the right thing? We want to encourage discipline and best practices in ML workflow development by making dependencies explicit, while improving the productivity of adopters by automating multiple runs of the workflow under different configurations.

Features

  • Simple and Expressive Object Model: The Jarvis object model consists only of Actions, Artifacts, and Literals. These are connected to form dataflow graphs.
  • Data-Centric Workflows: Machine learning applications have data dependencies that obscure traditional abstraction boundaries. So, the data "gets everywhere": in the models, and the applications that consume them. It makes sense to think about the data carefully and specifically. In Jarvis, data is a first-class citizen.
  • Artifact Versioning: Jarvis uses git to automatically version every Artifact (data, code, etc.) and Literal that is in a Jarvis workflow.
  • Artifact Contextualization: Jarvis uses Ground to store data about the context of Artifacts: their relationships, their lineage. Ground and git are complementary services used by Jarvis. Together, they enable experiment reproduction and replication.
  • Parallel Multi-Trial Experiments: Jarvis should enable data scientists to try more ideas quickly. For this, we need to enhance speed of execution. We leverage parallel execution systems such as Ray to execute multiple trials in parallel.
  • Visualization and Exploratory Data Analysis: To establish the fitness of data for some particular purpose, or gain valuable insights about properties of the data, Jarvis will leverage visualization techniques in an interactive environment such as Jupyter Notebook. We use visualization for its ability to give immediate feedback and guide the creative process.

License

Jarvis is licensed under the Apache v2 License.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].