diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml
index 0ae92ae..e03205c 100644
--- a/.github/workflows/codeql-analysis.yml
+++ b/.github/workflows/codeql-analysis.yml
@@ -1,4 +1,4 @@
-name: "Analyse withCodeQL"
+name: analyse with CodeQL
on:
push:
diff --git a/.vscode/settings.json b/.vscode/settings.json
index 99a8cc7..8f43709 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -2,6 +2,7 @@
"cSpell.words": [
"alru",
"Analyse",
+ "AndrĂ¡s",
"basereload",
"boto",
"botocore",
@@ -75,5 +76,6 @@
"python.linting.pylintEnabled": false,
"python.linting.mypyEnabled": true,
"python.testing.unittestEnabled": false,
- "python.testing.pytestEnabled": true
+ "python.testing.pytestEnabled": true,
+ "editor.wordWrap": "on"
}
diff --git a/README.md b/README.md
index 1672bd4..e0d26c8 100644
--- a/README.md
+++ b/README.md
@@ -1,15 +1,19 @@
-#  GreatAI
-
-[](https://sonar.scoutinscience.com/dashboard?id=great-ai)
-[](https://sonar.scoutinscience.com/dashboard?id=great-ai)
-[](https://github.com/schmelczer/great-ai/actions/workflows/test.yml)
+#
GreatAI
+> Easily transform your prototype AI code into production-ready software.
+
[](https://badge.fury.io/py/great-ai)
[](https://pepy.tech/project/great-ai)

+[](https://github.com/schmelczer/great-ai/actions/workflows/test.yml)
+[](https://sonar.scoutinscience.com/dashboard?id=great-ai)
+[](https://sonar.scoutinscience.com/dashboard?id=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. GreatAI helps fixing this by allowing you to easily transform your prototype AI code into production-ready software.
-GreatAI helps you easily transform your prototype AI code into production-ready software.
[Check out the full documentation here](https://great-ai.scoutinscience.com).
+## Example
+
```sh
pip install great-ai
```
@@ -34,7 +38,7 @@ That's it. Your GreatAI service is ready for production use. Many of the [SE4ML

-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:
+GreatAI fits between the prototype and deployment phases of your 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
@@ -48,16 +52,16 @@ There are other, existing solutions aiming to facilitate this phase. [Amazon Sag
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.
+## Learn more
+
+[Check out the documentation](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
```
-## Learn more
-
-[Check out the documentation](https://great-ai.scoutinscience.com).
-
## Contribute
Contributions are welcome.
@@ -67,12 +71,18 @@ Contributions are welcome.
```sh
python3 -m venv --copies .env
source .env/bin/activate
-python3 -m pip install flit
-python3 -m flit install --symlink --deps=all
+pip install flit
+flit install --symlink --deps=all
+```
+
+### Run tests
+
+```sh
+pytest --doctest-modules --asyncio-mode=strict
```
### Serve documentation
```sh
-mkdocs serve --dirtyreload
+mkdocs serve
```
diff --git a/docs/index.md b/docs/index.md
index 7939208..dd70e37 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -3,13 +3,12 @@
-[](https://sonar.scoutinscience.com/dashboard?id=great-ai)
-[](https://sonar.scoutinscience.com/dashboard?id=great-ai)
-[](https://github.com/schmelczer/great-ai/actions/workflows/test.yml)
[](https://badge.fury.io/py/great-ai)
[](https://pepy.tech/project/great-ai)

-
+[](https://github.com/schmelczer/great-ai/actions/workflows/test.yml)
+[](https://sonar.scoutinscience.com/dashboard?id=great-ai)
+[](https://sonar.scoutinscience.com/dashboard?id=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==.
@@ -32,7 +31,7 @@ Applying AI is becoming increasingly easier but many case studies have shown tha
- [x] Input validation
- [x] Sensible cache-policy
- [x] Seamless support for both synchronous and `async` inference methods
-- [x] Easy integration with other remote GreatAI instances
+- [x] Easy integration with remote GreatAI instances
- [x] Built-in parallelisation (with support for multiprocessing, async, and mixed modes) for batch processing
- [x] Well-tested utilities for common NLP tasks (cleaning, language-tagging, sentence-segmentation, etc.)
- [x] A simple, unified configuration interface
@@ -41,6 +40,11 @@ Applying AI is becoming increasingly easier but many case studies have shown tha
- [x] Docker support for deployment
- [x] Deployable Jupyter Notebooks
- [x] Dashboard for high-level overview and analysing traces
+
+## Roadmap
+
+- [ ] Prometheus & Grafana integration
+- [ ] Well-tested feature extraction code for non-NLP data
- [ ] Support for direct file input
- [ ] Support for PostgreSQL
@@ -66,7 +70,7 @@ def hello_world(name: str) -> str: #(2)
2. [Typing functions](https://docs.python.org/3/library/typing.html){ target=_blank } is recommended in general, however, not required for GreatAI to work.
??? note
- In practice, `hello_world` could be an inference function of some AI/ML application. But it could also just wrap a black-box solution of some SaaS. Either ways, it is imperative to have continuos oversight of the services you provide and data you process.
+ In practice, `hello_world` could be an inference function of some AI/ML application. But it could also just wrap a black-box solution of some SaaS. Either ways, it is [imperative to have continuos oversight](https://digital-strategy.ec.europa.eu/en/library/ethics-guidelines-trustworthy-ai){ target=_blank } of the services you provide and data you process especially in the context of AI/ML applications.
```sh title="terminal"
great-ai hello-world.py
@@ -98,18 +102,20 @@ GreatAI fits between the prototype and deployment phases of your (or your organi
There are other, existing solutions aiming to facilitate this phase. [Amazon SageMaker](https://aws.amazon.com/sagemaker){ target=_blank } and [Seldon Core](https://www.seldon.io/solutions/open-source-projects/core){ target=_blank } provide the most comprehensive suite of features. If you have the opportunity use those, do that because they're great.
-However, research indicates 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){ target=_blank }, and thus, can meaningfully improve your deployment without requiring prohibitively large effort.
+However, research indicates 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){ target=_blank }, and thus, can meaningfully improve your deployment without requiring prohibitively large effort.
-