This projects aims to build confidence in your decision automation through simulations.
- Trust your decision automation on large datasets coming from your production warehouse or synthetic.
- How to execute a large dataset (millions to billions) of automated decisions based on business rules and machine learning.
- How to apply analytics on these large decision sets to get business insights by computing KPIs and visualizing the results.
- How can we navigate with ease in a decision set to search for specific decisions?
- How to compose analytical dashboards for tour decision automation?
- How to empower champion/challenger comparisions for automated decision services?
Simulatte combines:
- a Spark based execution invoker to read a JSON request dataset and automate at scale the business decisions, and write them with their traces,
- an analytics post-processing for computing metrics, KPIs and visualizations through Python and Jupyter notebooks.
- a decision automation delegated to IBM Automation Decision Services(ADS) or IBM Operational Decision Services(ODM), 2 capabilities of the Cloud Pak for Business Automation. These 2 capabilities run an inference rule engine and ADS allows to call any ML model to bring probabilities in the decision making.
You can use Simulatte in an online mode through REST calls on microservices. Additionaly you can submit the decision invoker in a Spark batch to run in an Hadoop Spark cluster for maximum performances.
The simulation frameworks delivers a matrix of modes on the following dimensions:
- online vs offline execution
- remote REST vs embedded Java calls for the decision invocation,
- basic Java single process single threaded, or Spark local, Spark cluster for full power,
Clone the repository: By using http protocol
git clone https://github.com/DecisionsDev/simulatte.git
or ssh protocol
git clone [email protected]:DecisionsDev/simulatte.git
Move to the project directory.
cd simulatte
SimuLatte comes by default with a standalone ODM Docker container. To run simulations with IBM ADS or another ODM setup please follow the following configuration steps:
Run docker compose commands
docker compose build
Note: If you don't configure an ADS connection then you will face the following error:
ERROR [simulatte/simulation-service:latest stage-1 3/3] COPY --from=builder /builder/simulatte-online/t 0.0s
Reason is that the ADS Java libraries are missing to build simulatte. Neverthess SimuLatte is good to manage simulations through remote invocations with ODM.
docker compose up -d
At the end you should see all containers running as follows:
[+] Running 1/1
⠿ grafana Pulled 1.4s
[+] Running 7/7
⠿ Container simulatte-db Healthy 11.4s
⠿ Container prometheus Started 0.6s
⠿ Container notebooks Started 0.9s
⠿ Container simulation-service Started 12.0s
⠿ Container analytic-service Started 12.0s
⠿ Container grafana Started 1.3s
⠿ Container odm Started 0.7s
Be aware that Simulatte uses by default the following ports:
- port 3000 for grafana
- port 8080 for simulatte online
- port 8888 for Jupyter notebooks
- port 4040 for Spark jobs monitoring
- port 9060 only for ODM image use
- port 9443 only for ODM image use
- port 5432 for database
- port 9090 for Prometheus
In case these port numbers collide with existing applications you can change then in the docker-compose.yml.
The OpenAPI UI is available at http://localhost:8080/swagger-ui/index.html
To use simulatte notebooks, run the command below:
docker logs notebooks
Click on the http://127.0.0.1:8888
link printed in your console.
You see the Jupyter web page.
On the left side navigate into the work/notebooks
hierarchy.
You see ADS and ODM folders.
Select the decisioning capability ODM.
Select notebook for loanvalidation.
Run all cells.
Select the decisioning capability ADS.
Select notebook for loyalty.
Run all cells.
Congratulations you have created a decision simulation, run it, to get insights about how your logic applies to the sample dataset!
To stop all simulatte containers :
docker compose stop
- Build - No space left on device during Build
You can encounter a space limit when building the images with the message like:
Resolution: Clean up the temporary folders and unnecessary resources in your Docker installation by running:
ERROR: Could not install packages due to an OSError: [Errno 28] No space left on device: '/tmp/pip-uninstall-t79kgz4i'
docker system prune
The simulatte project is composed of the following building blocks:
- core: a core library. It contains all common material to run simulations in online and offline. It covers the default decision service invokers for ADS and ODM.
- online: online. This part comes as Docker microservices to execute decisions through a Java based container, and perform analytic post processing to produce a simulation report.
- offline: offline. This part gives a generic batch simulation runner capable to run standalone but on Hadoop Spark cluster too for maximum of scalability and performance with data residing in the lake.
benchmarks: performances