From 44e5b66e2d3d955577ebd4131fe8e7327b425171 Mon Sep 17 00:00:00 2001 From: Andras Schmelczer Date: Mon, 11 Jul 2022 17:27:45 +0200 Subject: [PATCH] Update readme --- README.md | 69 +++++++++++++++++++++++++++++++-------------------- docs/index.md | 9 ++++--- 2 files changed, 47 insertions(+), 31 deletions(-) diff --git a/README.md b/README.md index e273b6e..1672bd4 100644 --- a/README.md +++ b/README.md @@ -1,33 +1,21 @@ # ![logo](docs/media/favicon.ico) GreatAI - > GreatAI helps you easily transform your prototype AI code into production-ready software. - [![Sonar line coverage](https://sonar.scoutinscience.com/api/project_badges/measure?project=great-ai&metric=coverage)](https://sonar.scoutinscience.com/dashboard?id=great-ai) -[![Sonar technical debt](https://sonar.scoutinscience.com/api/project_badges/measure?project=great-ai&metric=sqale_index)](https://sonar.scoutinscience.com/dashboard?id=great-ai) [![Sonar LoC](https://sonar.scoutinscience.com/api/project_badges/measure?project=great-ai&metric=ncloc)](https://sonar.scoutinscience.com/dashboard?id=great-ai) [![Test](https://github.com/schmelczer/great-ai/actions/workflows/test.yml/badge.svg)](https://github.com/schmelczer/great-ai/actions/workflows/test.yml) -[![Publish on PyPI](https://github.com/schmelczer/great-ai/actions/workflows/publish.yaml/badge.svg)](https://github.com/schmelczer/great-ai/actions/workflows/publish.yaml) -[![Publish on DockerHub](https://github.com/schmelczer/great-ai/actions/workflows/docker.yaml/badge.svg)](https://github.com/schmelczer/great-ai/actions/workflows/docker.yaml) +[![PyPI version](https://badge.fury.io/py/great-ai.svg)](https://badge.fury.io/py/great-ai) [![Downloads](https://pepy.tech/badge/great-ai/month)](https://pepy.tech/project/great-ai) +![Docker Pulls](https://img.shields.io/docker/pulls/schmelczera/great-ai) -[Check out the documentation here](https://great-ai.scoutinscience.com/). - - -## Find `great-ai` on [DockerHub](https://hub.docker.com/repository/docker/schmelczera/great-ai) - -```sh -docker run -p6060:6060 schmelczera/great-ai -``` - -Find the dashboard at [http://localhost:6060](http://localhost:6060/dashboard/). - - -## Find `great-ai` on [PyPI](https://pypi.org/project/great-ai/) +GreatAI helps you easily transform your prototype AI code into production-ready software. +[Check out the full documentation here](https://great-ai.scoutinscience.com). ```sh pip install great-ai ``` +> Create a new file called `main.py` + ```python from great_ai import GreatAI @@ -35,19 +23,46 @@ from great_ai import GreatAI def hello_world(name: str) -> str: return f"Hello {name}!" ``` -> Create a new file called `main.py` -Deploy by executing `great-ai main.py` -> Or: `great_ai main.py` +Start it by executing `great-ai main.py`, find the dashboard at [http://localhost:6060](http://localhost:6060/dashboard). -> Or: `python3 -m great_ai main.py` +![dashboard](/docs/media/hello-world-dashboard.png) -Find the dashboard at [http://localhost:6060](http://localhost:6060/dashboard/). +That's it. Your GreatAI service is ready for production use. Many of the [SE4ML best-practices](https://se-ml.github.io) are configured and implemented automatically (of course, these can be customised as well). -### Contribute +## Why is this GREAT? +![scope of GreatAI](docs/media/scope-simple.drawio.svg) -#### Install +GreatAI fits between the prototype and deployment phases of your (or your organisation's) AI development lifecycle. This is highlighted with blue in the diagram. Here, a number of best practices can be automatically implemented aiming to achieve the following attributes: + +- **G**eneral: use any Python library without restriction +- **R**obust: have error-handling and well-tested utilities out-of-the-box +- **E**nd-to-end: utilise end-to-end feedback as a built-in, first-class concept +- **A**utomated: focus only on what actually requires your attention +- **T**rustworthy: deploy models that you and society can confidently trust + +## Why GreatAI? + +There are other, existing solutions aiming to facilitate this phase. [Amazon SageMaker](https://aws.amazon.com/sagemaker) and [Seldon Core](https://www.seldon.io/solutions/open-source-projects/core) provide the most comprehensive suite of features. If you have the opportunity use those, do that because they're great. + +However, [research indicates](https://great-ai.scoutinscience.com) that professionals rarely use them. This may be due to their inherent setup and operating complexity. **GreatAI is designed to be as simple to use as possible.** Its clear, high-level API and sensible default configuration makes it extremely easy to start using. Despite its relative simplicity over Seldon Core, it still implements many of the [SE4ML best-practices](https://se-ml.github.io), and thus, can meaningfully improve your deployment without requiring prohibitively large effort. + +## Find `great-ai` on [DockerHub](https://hub.docker.com/repository/docker/schmelczera/great-ai) + +```sh +docker run -p6060:6060 schmelczera/great-ai +``` + +## Learn more + +[Check out the documentation](https://great-ai.scoutinscience.com). + +## Contribute + +Contributions are welcome. + +### Install for development ```sh python3 -m venv --copies .env @@ -56,8 +71,8 @@ python3 -m pip install flit python3 -m flit install --symlink --deps=all ``` -#### Documentation +### Serve documentation ```sh mkdocs serve --dirtyreload -``` \ No newline at end of file +``` diff --git a/docs/index.md b/docs/index.md index 9db1204..c772489 100644 --- a/docs/index.md +++ b/docs/index.md @@ -4,12 +4,12 @@ [![Sonar line coverage](https://sonar.scoutinscience.com/api/project_badges/measure?project=great-ai&metric=coverage)](https://sonar.scoutinscience.com/dashboard?id=great-ai) -[![Sonar technical debt](https://sonar.scoutinscience.com/api/project_badges/measure?project=great-ai&metric=sqale_index)](https://sonar.scoutinscience.com/dashboard?id=great-ai) [![Sonar LoC](https://sonar.scoutinscience.com/api/project_badges/measure?project=great-ai&metric=ncloc)](https://sonar.scoutinscience.com/dashboard?id=great-ai) [![Test](https://github.com/schmelczer/great-ai/actions/workflows/test.yml/badge.svg)](https://github.com/schmelczer/great-ai/actions/workflows/test.yml) -[![Publish on PyPI](https://github.com/schmelczer/great-ai/actions/workflows/publish.yaml/badge.svg)](https://github.com/schmelczer/great-ai/actions/workflows/publish.yaml) -[![Publish on DockerHub](https://github.com/schmelczer/great-ai/actions/workflows/docker.yaml/badge.svg)](https://github.com/schmelczer/great-ai/actions/workflows/docker.yaml) +[![PyPI version](https://badge.fury.io/py/great-ai.svg)](https://badge.fury.io/py/great-ai) [![Downloads](https://pepy.tech/badge/great-ai/month)](https://pepy.tech/project/great-ai) +![Docker Pulls](https://img.shields.io/docker/pulls/schmelczera/great-ai) + Applying AI is becoming increasingly easier but many case studies have shown that these applications are often deployed poorly. This may lead to suboptimal performance and to introducing [unintended biases](https://en.wikipedia.org/wiki/Weapons_of_Math_Destruction){ target=_blank }. GreatAI helps fixing this by allowing you to ==easily transform your prototype AI code into production-ready software==. @@ -42,6 +42,7 @@ Applying AI is becoming increasingly easier but many case studies have shown tha - [x] Deployable Jupyter Notebooks - [x] Dashboard for high-level overview and analysing traces - [ ] Support for direct file input +- [ ] Support for PostgreSQL ## Hello world @@ -85,7 +86,7 @@ great-ai hello-world.py ![scope of GreatAI](media/scope-simple.drawio.svg) -GreatAI fits between the prototype and deployment phase of your (or your organisation's) AI development lifecycle. This is highlighted with blue in the diagram. Here, a number of best practices can be automatically implemented aiming to achieve the following attributes: +GreatAI fits between the prototype and deployment phases of your (or your organisation's) AI development lifecycle. This is highlighted with blue in the diagram. Here, a number of best practices can be automatically implemented aiming to achieve the following attributes: - **G**eneral: use any Python library without restriction - **R**obust: have error-handling and well-tested utilities out-of-the-box