Coder Social home page Coder Social logo

ranms25 / ai-flow Goto Github PK

View Code? Open in Web Editor NEW

This project forked from flink-extended/ai-flow

0.0 0.0 0.0 56.41 MB

AI Flow is an open source framework that bridges big data and artificial intelligence.

License: Apache License 2.0

Shell 1.55% JavaScript 5.24% Python 51.69% Java 34.97% Go 0.12% CSS 0.06% Mako 0.09% Vue 5.65% Dockerfile 0.31% Less 0.31% Stylus 0.02%

ai-flow's Introduction

AIFlow

CI codecov

Introduction

AIFlow is an event-based workflow orchestration platform that allows users to programmatically author and schedule workflows with a mixture of streaming and batch tasks.

Most existing workflow orchestration platforms (e.g. Apache AirFlow, KubeFlow) schedule task executions based on the status changes of upstream task executions. While this approach works well for batch tasks that are guaranteed to end, it does not work well for streaming tasks which might run for an infinite amount of time without status changes. AIFlow is proposed to facilitate the orchestration of workflows involving streaming tasks.

For example, users might want to run a Flink streaming job continuously to assemable training data, and start a machine learning training job everytime the Flink job has processed all upstream data for the past hour. In order to schedule this workflow using non-event-based workflow orchestration platform, users need to schedule the training job periodically based on wallclock time. If there is traffic spike or upstream job failure, then the Flink job might not have processed the expected amount of upstream data by the time the TensorFlow job starts. The upstream job should either keep waiting, or fail fast, or process partial data, none of which is ideal. In comparison, AIFlow provides APIs for the Flink job to emit an event every time its event-based watermark increments by an hour, which triggers the execution of user-specified training job, without suffering the issues described above.

Learn more about AIFlow at https://ai-flow.readthedocs.io

Features

  1. Event-driven: AIFlow schedule workflow and jobs based on events. This is more efficient than status-driven scheduling and be able to schedule the workflows that contain stream jobs.

  2. Extensible: Users can easily define their own operators and executors to submit various types of tasks to different platforms.

  3. Exactly-once: AIFlow provides an event processing mechanism with exactly-once semantics, which means that your tasks will never be missed or repeated even if a failover occurs.

Articles on AIFlow

Contributing

We happily welcome contributions to AIFlow in any ways, whether reporting problems, drafting features, or contributing code changes. You can report problems to request features in the GitHub Issues. If you want to contribute code changes, please check out the contributing documentation.

Contact Us

For more information, we recommend you to join the AIFlow Community Group on the Google Groups to contact us: [email protected].

You can also join the group on the DingTalk. The number of the DingTalk group is 35876083, which group can also be joined by scanning the QR code below:

ai-flow's People

Contributors

aqua7regia avatar bgeng777 avatar gforky avatar jiangxin369 avatar jinxing64 avatar lindong28 avatar lisy09 avatar ryantd avatar stenicholas avatar sxnan avatar weizhong94 avatar wuchaochen1 avatar

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.