Aby uruchomić projekt należy wykonać polecenie:
./start_app.bash
Aplikacja składa się z nastepujących komponentów:
-
Aplikacja do zarządzania
Wykorzystany jest biblioteka Streamlit. Aplikacja pozwala na:- Wygenerowanie nowego zestawu danych i ich przygotowane (proces ETL)
- Wytrenowanie modelu
- Sprawdzenie, czy występuje data drift
- Wypromowanie danego modelu na środowisko produkcyjne - aplikacja dla endusera - promowanie oznacza, że trzeba zrestartować docker-compose
Aplikacja jest dostępna pod adresem
localhost:8501
Cały backend oparty jest o Kedro. Aplikacja służy tylko uruchomienia odpowiednich procesów (pipelines) kedro. -
Aplikacja do predykcji
dostępna pod adresemlocalhost:4040
Po redeploymencie modelu konieczny jest restart kontenera -
Preometheus
System do monitorowania systemu. Jest dostępny pod adesemlocalhost:9090
-
MLFlow Dostępny pod adresem
localhost:5000
-
Cadvisor
Aplikacja do monitorowania Dockera. Wystawia metryki dla Prometheusa
- Migracja z Kedro do Airflow
Airflow zapewni bardziej stabilne środowisko pracy i możliwość wykonywania poszczególnych pipelinów warunkowo - Przeniesienie rejestru modeli z Kedro/MLFlow do zewnętrzego serwisu
Pozwoli lepiej wersjonować model - Przeniesienie aplikacji do chmury:
- Elastyczne skalowanie zasobów: AWS umożliwia dostosowanie zasobów obliczeniowych do wymagań naszego modelu. Można zwiększyć lub zmniejszyć moc obliczeniową w zależności od obciążenia - usługa AWS Auto Scaling
- Wykorzystanie usług zarządzanych: AWS oferuje usługi, które ułatwiają implementację i zarządzanie modelem uczenia maszynowego. Np Amazon SageMaker dostarcza platformę do tworzenia, trenowania i wdrażania modeli, a AWS Step Functions ułatwia tworzenie i zarządzanie workflow, dzięki temu ponosimy mniejsze koszty za pracę programistów, którzy korzystają a nie budują rozwiązanie od 0.
- Przechowywanie danych: AWS zapewnia usługę Amazon S3 (Simple Storage Service), gdzie można ustawić częstotliwość dostępu do danych, oznacza to, że im dostęp jest rzadszy tym koszt jest niższy.
- Wybór odpowiednich instancji w zależności od potrzeb. Jeżeli wiemy jakie będą potrzeby można skorzystać z rezerwacji lub opcji AWS Spot co znacząco wpływa na ostateczny rachunek.