Monday, July 19, 2021

Serving ML Model with Docker, RabbitMQ, FastAPI and Nginx

In this tutorial I explain how to serve ML model using such tools as Docker, RabbitMQ, FastAPI and Nginx. The solution is based on our open-source product Katana ML Skipper (or just Skipper). It allows running ML workflow using a group of microservices. It is not limited to ML, you can run any workload using Skipper and plugin your own services. You can reach out to me if you got any questions.


Wednesday, July 14, 2021

TensorFlow Decision Forests Example

With TensorFlow Decision Forests we can handle structured data without much preprocessing. There is no need to normalize numeric values, one-hot encode categorical values, or set magic values to replace missing data. I give it a try and run this new feature of TensorFlow in this video. The demo is based on the Titanic dataset taken from Kaggle.


Monday, June 28, 2021

FastAPI Background Tasks for Non-Blocking Endpoints

With FastAPI it is super easy to implement a non-blocking endpoint. This is useful when the endpoint calls logic, which should be executed asynchronously and you don't need to wait for the result, but want to return a response immediately. For example - a service that does logging. We don't want to wait until the log will be written but return the response instantly.


Monday, June 21, 2021

Publishing Your Python Library on PyPI

I explain how to publish Python library on PyPI with Poetry. I believe this video will be useful to all Python developers, who are looking at how to create Python library and publish it. I share my experience and explain why I spent the entire day debugging the issue with library dependencies.


Monday, June 7, 2021

ML Pipeline End-to-End Solution

Are you interested to learn how to build and run a complete ML pipeline - Web API, data processing, model training, and prediction services? In this video, I explain how the end-to-end solution works using our open-source product Skipper.


Monday, May 31, 2021

FastAPI Endpoint Type with Pydantic

Pydantic library helps to define structured and clear types for FastAPI endpoints. In this video I explain how to define Pydantic type with nested list structure, I show how it works with a live demo. You will get to know how to convert input data into JSON structure. Enjoy!


Monday, May 24, 2021

Event-Driven Microservice with RabbitMQ and FastAPI

Event-driven microservices architecture brings scalability and better application structure. In this video, I show a demo based on Web API implementation with FastAPI, Celery. The event is sent to a group of microservices through RabbitMQ broker. Services communicate with each other through RabbitMQ. Model training service calls data service to fetch and prepare data for training.


Monday, May 17, 2021

Web API with FastAPI, RabbitMQ and Celery

With Web API you can create access to microservice functionality. In this video, I explain how to create scalable Web API with FastAPI, Celery and RabbitMQ. Celery is responsible to execute async Web API requests and RabbitMQ enables the communication between Web API and microservices.


Monday, May 10, 2021

Celery Distributed Task Queue Display with Flower UI

I explain how you can visualize Celery distributed task queue with Flower UI. This is useful when monitoring asynchronous tasks.


Wednesday, May 5, 2021

Celery Distributed Task Queue with FastAPI for Machine Learning

This sample app demonstrates how to implement Celery distributed task queues on top of RabbitMQ broker for Machine Learning model training and data processing. We are using TensorFlow in this example to train the model. API request comes through FastAPI and it is being processed asynchronously by Celery. There is a separate API endpoint to check task status. Multiple requests can be initiated and processed at the same time in parallel. Celery tasks can be monitored using Flower monitoring tool.


Monday, April 26, 2021

RabbitMQ RPC with FastAPI

I explain sample app with FastAPI endpoint. RabbitMQ is used as a postman to deliver and return message between endpoint API and backend. Backend code could run on different microservice. Multiple backends can be started for scalability.


Monday, April 19, 2021

Oracle Developer Tools Review

I walk through Oracle Developer Tools and giving my honest opinion about the past, present, and future of Oracle products for developers.


Monday, April 12, 2021

What I Hate About Machine Learning

I describe what I hate most about Machine Learning. Hopefully, this video will not scare you, but on the opposite, it will inspire you to start with Machine Learning.


Sunday, April 4, 2021

What I Love About Machine Learning

I describe what I love most about Machine Learning. Hopefully, this will inspire you to jump into the exciting field of ML.


Sunday, March 28, 2021

My Machine Learning Experience

I talk about my own Machine Learning experience and why I decided to convert to ML from enterprise software development with Oracle tools.


Sunday, March 14, 2021

FastAPI and Oracle DB Client in Docker

I describe how to dockerize Oracle DB Client with FastAPI and Uvicorn. The end result - you will be able to connect to Oracle Cloud DB and expose REST services through FastAPI in Python.


Sunday, March 7, 2021

TensorFlow.js Blueprint App Step by Step

I describe how to prepare data that comes from API into TensorFlow.js Dataset structure, how to shuffle, normalize, one-hot-encode, and batch the data. Next, I go on model training and explain why fitDataset is recommended way to train a neural network in TensorFlow.js. At last, I show how to do inference and print the results. This app is built with React, but the same code can be reused with any JS toolkit/framework.


Saturday, February 27, 2021

Rabbit MQ with Docker for Microservices

Rabbit MQ message broker helps to implement event-driven architecture for microservices. Instead of tight coupling multiple services, we can send and subscribe to events. In this video, I explain how to dockerize Rabbit MQ and provide a simple, but complete example of communication through Rabbit MQ.


Saturday, February 20, 2021

React and TensorFlow.js

I explain how to create React app with Yarn and how to integrate TensorFlow.js into that app. A simple model is trained with TensorFlow.js to give you a good starting point. I also show how to run the predict function and read the output.


Saturday, February 13, 2021

ML Microservice Client with Python and gRPC

In this video, I continue to talk about microservices for ML. I explain how to implement a direct call from the training service to fetch data and run training with model evaluation.


Saturday, February 6, 2021

ML Microservice with Python and gRPC

I explain how to implement microservice in Python for Machine Learning code. In this example, data processing is done with Pandas, Numpy, and Scikit-Learn libraries. Communication is implemented through gRPC, I explain how to send Numpy array through gRPC.


Sunday, January 31, 2021

FastAPI with Oracle Cloud DB, building APIs with Python

Learn by example about how to connect to Oracle Cloud DB from FastAPI without any third-party libraries. Connection to DB is optimized with connection pooling.


Saturday, January 16, 2021

Connect to Oracle Cloud DB from Python

A quick explanation of how to connect to Oracle Autonomous Cloud Database (Always Free instance) from Python script.