Skip to content

atsanda/movie-surfer-api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

580748a · Jun 4, 2023

History

6 Commits
May 27, 2023
May 27, 2023
May 27, 2023
May 24, 2023
May 24, 2023
May 24, 2023
May 27, 2023
May 24, 2023
May 24, 2023
Jun 4, 2023
May 24, 2023
May 24, 2023
May 24, 2023
Jun 4, 2023
Jun 4, 2023

Repository files navigation

movie-surfer-api

REST API to get movie recommendations

Development Requirements

  • Python3.11.0
  • Pip
  • Poetry (Python Package Manager)

M.L Model Environment

MODEL_PATH=./ml/model/
MODEL_NAME=model.pkl

Update /predict

To update your machine learning model, add your load and method change here at predictor.py

Installation

python -m venv venv
source venv/bin/activate
make install

Runnning Localhost

make run

Deploy app

make deploy

Running Tests

make test

Access Swagger Documentation

http://localhost:8080/docs

Access Redocs Documentation

http://localhost:8080/redoc

Project structure

Files related to application are in the app or tests directories. Application parts are:

app
|
| # Fast-API stuff
├── api                 - web related stuff.
│   └── routes          - web routes.
├── core                - application configuration, startup events, logging.
├── models              - pydantic models for this application.
├── services            - logic that is not just crud related.
├── main-aws-lambda.py  - [Optional] FastAPI application for AWS Lambda creation and configuration.
└── main.py             - FastAPI application creation and configuration.
|
| # ML stuff
├── data             - where you persist data locally
│   ├── interim      - intermediate data that has been transformed.
│   ├── processed    - the final, canonical data sets for modeling.
│   └── raw          - the original, immutable data dump.
│
├── notebooks        - Jupyter notebooks. Naming convention is a number (for ordering),
|
├── ml               - modelling source code for use in this project.
│   ├── __init__.py  - makes ml a Python module
│   ├── pipeline.py  - scripts to orchestrate the whole pipeline
│   │
│   ├── data         - scripts to download or generate data
│   │   └── make_dataset.py
│   │
│   ├── features     - scripts to turn raw data into features for modeling
│   │   └── build_features.py
│   │
│   └── model        - scripts to train models and make predictions
│       ├── predict_model.py
│       └── train_model.py
│
└── tests            - pytest

GCP

Deploying inference service to Cloud Run

Authenticate

  1. Install gcloud cli
  2. gcloud auth login
  3. gcloud config set project <PROJECT_ID>

Enable APIs

  1. Cloud Run API
  2. Cloud Build API
  3. IAM API

Deploy to Cloud Run

  1. Run gcp-deploy.sh

Clean up

  1. Delete Cloud Run
  2. Delete Docker image in GCR

AWS

Deploying inference service to AWS Lambda

Authenticate

  1. Install awscli and sam-cli
  2. aws configure

Deploy to Lambda

  1. Run sam build
  2. Run `sam deploy --guiChange this portion for other types of models

Add the correct type hinting when completed

aws cloudformation delete-stack --stack-name <STACK_NAME_ON_CREATION>

Made by https://github.com/arthurhenrique/cookiecutter-fastapi/graphs/contributors with ❤️

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published