Giter Club home page Giter Club logo

chariots's People

Contributors

aredier avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

nikneural

chariots's Issues

add ChariotsConfig

It would be great to have a named tuple with all the configuration in order to pass to all the different Server and Clients

nodes should be able to output multiple branches

it should be possible to write something in the likes of

pipe = Pipeline(
    [
        DataLoadingNode( ..., output_nodes="loaded_data"),
        Node(train_test_split, input_nodes=["loaded_data"], output_nodes=["train_data", "test_data"]),
       ...
    ]
)

this will allow to fit some common machine learning workflows (train/test split, x/y split, ...) and many more

client should be complete

all the endpoints in the backend should have a mapping to the client (no curl/request should ever be required to use chariots.

data set type representing a DataFrame ?

should we build a data type that represents sort of a DataFrame with fields in order for ops to know which fields they are dealing with.
Would be useful once #10 is implemented

  • look for possible rust crates
  • decide implementation

restructure module structure

the idea would be to have a new, more usable structure with max one level:

chariots

  • Chariots
  • Client
  • Pipeline
  • Node
  • base
    • BaseNode
    • BaseOp
    • BasePipelineCallBack
    • BaseOpCallback
    • BaseRunner
    • BaseSaver
    • BaseMlOp
  • ops
    • LoadableOp
  • errors
    • ...
  • runners
    • Sequentialrunner
  • savers
    • FileSaver
  • sklearn
    • SkLearnSupervised
    • SKUnsupervised
  • cli
    • ...

the idea is to have a structure that is different from the

add required ancestors

today an op just assumes that a certain op was made upstream in the pipeline. We need to find a way for an op to be relatively agnostic to its ancestor and still remain reliable (eg: A/B testing)

new dostring type

choose between numpy and google style doctrsings rather than rst:

  • decide the type of docstrings
  • use napoleon for the doc generation
  • refacto all existing docstrings

hackability

be able to inject in the framework:

  • before pipeline is called
  • after pipeline is called
  • in between every op of the Pipeline
    These first three could later be bundled in a reusable callback
  • before a specific op is called
  • after a specific op is called

pre commit hooks

Have pre commit hooks for:

  • single quotes only
  • pytest
  • linting
  • run on all files

test the documentation

we should test all the code snipets in the doc work, both for the docstrings and for the rst files

the version fields stay the same between instances of the class

it seems that because the versioned fields become real python objects instead of their underlying class, their behavior changes. this is not the desired seemless integration of versioning in the ops that is our objective.

Steps to reproduce:

from chariots.core.ops import BaseOp
from chariots.core.versioning import VersionField
from chariots.core.versioning import VersionType


class VersionedOp(BaseOp):
    name = "fake_op"
    versioned_field = VersionField(VersionType.MAJOR, default_value=2)

    def _main():
        pass


op = VersionedOp()
op.versioned_field = 3
op2 = VersionedOp()
op2.versioned_field

this outputs 3 the value instead of 2 (the default factory value)

create graphql metadata api

It has become aparrent that storing metadata on each op and pipeline is key. I should do this sooner rather than latter

be able to see server errors in the client

errors that occur in the server do not transmit to the server instead we get this generic errors:

ValueError: the execution of the pipeline failed, see _deployment logs for traceback

which doesn't help and is running on my nerves.

easy local execution of pipelines

today to execute a Pipeline locally (in a notebook for instance) you still need to setup an OpStore and a Runner. This should be hidden during prototyping stage and left do deal with during deployment (the only actual work needed to go from one to the other)

gym pytorch RL integration

the aim of this is to create a tutorial to show how to implement a RL pipeline with chariots using Gym environments and pytorch. The aim is also to implement all necessary changes in chariots to make this process streamlined

  • Gym integration
  • pytorch support
  • control flow in chariots (abiltiy to create training loops and early stoping procedure will be central to implement RL environments)

keras Ops

we need ops to support keras NN building, and potentially compositing

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.