Creating a Movie Recommender

After fighting the errors for over 12 hours, I decided to submit a bug. :sweat:

2 Likes

Apologies, I was not able to attend the last call, are there any action items that we can get started on?

No worries @edwinq! Here’s a summary of what we did:

  1. We created the fast-recsys org on GitHub to store everything we work on. I can add you to the org as well if you give me your GitHub username.

  2. We created skeleton repositories for the UI (using VueJS) and the backend API server (using FastAPI).

  3. We also started looking into NVIDIA Merlin since it has really cool tools for feature engineering (NVTabular), training (HugeCTR) and even an inference server (Triton). However, we pretty much hit a roadblack with installing the required dependencies when trying out the examples and @bhutanisanyam1 created the GitHub issue he mentions above.

We’re currently experimenting with two approaches:

  1. Creating an API server to serve the model trained using fastai.

  2. Use the NVIDIA Merlin ecosystem to train and deploy the recommendation system.

Here’s a few things we can start doing:

  1. Create a web UI that a user can use to rate movies they have already watched (some inspiration: Book Recommender: Collaborative Filtering, Shiny | Kaggle) and view recommendations.

  2. Convert the contents of this blog post into Python files and create REST API endpoints that we can use from the UI.

  3. The maintainers of NVTabular have responded to the issue that Sanyam created. We can try to set up an environment with the required dependencies like they recommend and try to run the example notebooks (they already have notebooks that use the MovieLens25 dataset that we also plan to use :slightly_smiling_face:)

Apart from this, I don’t think we have any other planned/concrete action items. We’re just planning to learn and figuring things out as we go!

We’ve planned to meet again at the same time this Saturday as well (Calendar invite). We’d love to see you there if you can make it. :slight_smile:

2 Likes

that sounds awesome @ravimashru . My github username is halloffame0793, that would be great if you could add me to the org. And yes I am planning on attending on Saturday.

1 Like

hey @ravimashru, I’m developing a Fashion Recommender System, I have created object detection models using yolov4, done image classification using FastiAI, I don’t know how to make a web app and create an API of it. i would love to join , it is my need though, kindly add me to your project.i want to learn.

1 Like

Hey @talha_darrxscale… welcome the community!

I just read your project description and it looks very interesting! I see you plan to use VueJS for your UI and Django for your backend so there is some similarity there.

Please feel free to join us in our next call (Calendar invite). We’d be delighted if anything we do turns out to be useful for your project. :slightly_smiling_face:

2 Likes

Thanks for your invitation hope it would help me .

1 Like

Here’s a summary of what we did today

NVTabular and Merlin

Ran the first two example notebooks on movielens without any errors by replacing cuDF with pandas.

Installed PyTorch from pip instead of conda to get most of the third notebook to run. The last cell (actually training the model) fails with the following error:

RuntimeError: merge_sort: failed to synchronize: cudaErrorIllegalAddress: an illegal memory access was encountered

This needs to be looked into further.

Frontend

The VueJS frontend was set up using tailwind and vuetify.

Backend

Data from the MovieLens25 dataset was added to the repository.

A few more backend APIs were created - to fetch random movies for the user to rate.

Action item for @ravimashru: create endpoint to fetch details of a single movie from the OMDB API.

2 Likes

Ahh, I was just getting ready to join but must have gotten the timezones mixed up :frowning : (
Great work though!

Ah… If I had a dollar for everytime I got the timezone for a meeting wrong I’d give Jeff Bezos a real run for his money. :smiley:

Hopefully we’ll catch you next saturday. :slight_smile:

Until then we’ll be working on this asynchronously. Feel free to reach out to me if you want to try out anything and have any questions.

FYI: Since we’ve got quite a few people interested in this topic, I’ve created a Discord channel to allow us to have more free-flowing conversations without spamming this thread. Feel free to join if you’re interested: mashruravi's server.

I will update this thread from time to time, especially after any calls/coding sessions. :slight_smile:

1 Like

@ravimashru We really want to create our discourse as the goto place for such discussions.

Is there any feature you find missing on discourse? I can look into integrations or even upgrading our plan if it helps :slight_smile:

1 Like

@edwinq and I were just talking about having more frequent day-to-day conversations on Discord so that we don’t spam this thread.

But keeping all discussions in one place makes sense as well. We’ll continue using this thread for all communication. :+1:

1 Like

This isn’t spamming at all!

Please feel free to chat here as much as you like :smiley: We’re honored to be a part of your project! :pray:

1 Like

This sounds great; I recommend FastAPI and/or Streamlit for the super easiest way to spin up an app to serve recs

2 Likes

can you give an overview FastAPI and Strealmit together…

Yea sure;

I used fastApi to wrap the model and handle db access. I then call to the api with stream lit to handle all the ui interaction. I think these days I might try gradio though. The more I look at it the more I like it

2 Likes

This is cool. I assume anything that allows a Python runtime would do for hosting the model + FastAPI wrapper. Do you have any “favorite” services (e.g. Heroku) for this?

1 Like

Totally reasonable; I’ve used docker containers on AWS personally, but I see little danger in trying Heroku (from my relatively basic experience with it).

1 Like

I think I tried deploying a fastai model wrapped with FastAPI on Heroku once but fastai and its dependencies are so HUGE that they exceeded the space allowed on the free tier :smiley:

It would be nice to have an “inference” version of fastai - something lightweight with minimal dependencies to use in web apps. Maybe something like this exists and I just don’t know about it. :thinking:

1 Like