Skip to content

Instantly share code, notes, and snippets.

@yashbonde
Last active September 27, 2023 08:31
Show Gist options
  • Save yashbonde/cc98bd1d1a62690cf9d5b49242fe98d0 to your computer and use it in GitHub Desktop.
Save yashbonde/cc98bd1d1a62690cf9d5b49242fe98d0 to your computer and use it in GitHub Desktop.

NimbleBox Apprenticeship Open Challenges

Hi there, thank you for your interest in NimbleBox.

We built ChatNBX and ChainFury

We are looking for talented coders who sit at the intersection of ML and SDE. There are three positions:

  • ML Engineer: Systems level thinker, eats servers for lunch
  • ML Researcher: Model whisperer, any model, anytime, any where
  • Front-End engineer: UI Wizard, 'nuff said

Initial internship will be for 2 months and can be extended if required.

We start with first introductory call, and discuss a task. Which has to be completed in 4 days.

Challenges: ML Engineer

Bonus points:

  • if the filepath can be a GitHub gist (eg. this gist)
  • if everything can be run via single shell file
  • if LLM can give coherent reply
  • a file test.py that can:
    • stress test the server using multithreading
    • provide a CLI for using the model fast

Ultra bonus points:

  • you use gRPC over HTTP/REST
  • you use something other than python (but not C++, Javascript FFS)

Train a language model and serve it over a FastAPI.

  • create a github repository
  • create a file called trainer.py which can be accessed via CLI to train an LLM (protip: take a look at python-fire). It should take in following arguments:
    • fp the file to finetune the model on
    • some training arguments as well (protip: don't use huggingface try karpathy/minGPT)
    • the result of this should be the model weights saved in some location
  • create a file called server.py that serves the LLM over a HTTP/REST over some APIs (protip: use pydantic for models)
  • A curl command to call the model and get response
  • an ipython notebook that contains steps to run this

Fine tune a Stable Diffusion model and serve it

This is very similar to the above task.

  • create a github repo
  • create a trainer.py file that takes in arguments like file path --fp and some other training arguments and fintunes a stable diffusion model (protip: check it out on huggingface)
  • the result of the training should be a model weight file
  • create a file called server.py that serves the Model over a HTTP/REST over some APIs (protip: use pydantic for models)
  • A curl command to call the model and get response
  • an ipython notebook that contains the steps to run this

Challenges: ML Researcher

Bonus points:

  • if your code can be shipped effectively (protip: pip install xxx)

Implement and train a Transformer to solve XOR

XOR parity: 1 0 0 1 1 0 -> 0

  • create a github repo
  • create a file called generate_ds.py that:
    • generate a dataset D1 of random 100,000 binary strings of length 50
    • generate a dataset D2 of random 100,000 binary strings, where the length of each string is independently and randomly chosen between 1 and 50.
  • create a file called trainer.py that takes in the dataset and training arguments via CLI (protip: use wanb)
  • an ipython notebook that contains the steps to run this and play with the model

Bonus points:

  • a script called hp.py that can perform a grid search for the mode

Learn Conway's Game of Life

Life as is also known is a simple cellular automata program. Train a Conv-net that can predict the next state given the current state over a 64 x 64 grid.

  • create a github repo
  • create a file called generate_ds.py with a Game class that plays the game for n steps and is idempotent (protip: take random seed value as input)
  • create a file called trainer.py that takes in the dataset and training arguments via CLI (protip: use wanb)
  • an ipython notebook that contains the steps to run this and play with the model

Bonus points:

  • generate_ds.py can utilise the entire power of machine using parallism (protip: see xargs or parallel)

Challenges: Front-end Engineer

UI Wizard, 'nuff said

You are going to make an OP chat application:

  • Create a Github repository
  • Implement a chat UI where users can send and receive messages in real-time (Use ChatNBX APIs πŸ€–πŸ”)
  • The UI should have a list of chat messages, an input field to type messages, and a send button
  • Messages should be displayed with the conversation name, timestamp, and content πŸ“…β°πŸ“œ
  • The data does not need to be persistent, use local storage if you want πŸ“¦πŸ’Ύ
  • The app should look beautiful: go barbie on this πŸ§žβ€β™€οΈπŸ’–

Requirement:

  • Next.js + Tailwind CSS
  • The application should be accessible publicly (try Vercel or Netlify)
  • Remember to include clear instructions on how to set up and run the project, as well as any additional details or requirements you may have.
  • The app should handle chat with real-time streaming (similar to ChatGPT / ChatNBX) πŸŒπŸ“‘

Bonus points:

  • If you do not use anything other than the above two (eg. don't use Material UI) 🚫
  • UI is responsive and works well on different screen sizes πŸ“±πŸ’»
  • If you do not use langchain βŒπŸ”—
  • Can use chat history as context

Ultra bonus points:

  • If the app uses a state management library like Redux πŸ”„
  • If you implement unit tests or end-to-end tests for the application βœ…πŸ§ͺ
  • Chatbot can tell when it does not have enough information to solve the problem
  • If you can do all with persistence (try supabase) 😈

Ultimately, you are going to make chatbots more intuitive by answering questions in unique ways.

Weather App

When a user asks a question, if asking for weather, the response should be a beautiful card with the answer.

  • Use a weather API of your choice to fetch weather data based on the user's input ☁️🌦️🌑️
  • Display the current temperature, weather condition, and other relevant weather information for the searched location 🌑️🌀️🌧️
  • Implement additional features like displaying a forecast or weather in nearby locations πŸŒ₯οΈπŸŒπŸ“

Sample Chat:

[USER] How is the weather in Wales today?
[CHAT] < card with all the information >
[USER] And how is it in London?
[CHAT] < card with all the information >

# Bonus Points: notice that I did not tell location explicitly
[USER] What about the nearbby areas?
[CHAT] < card with all the information >

News Aggregator App

Create an app that aggregates news articles from various sources and displays them in a user-friendly way. Here are some key features to consider:

  • Fetch news data from different news APIs (e.g., News API, Hacker News API, Reddit API) πŸ“₯πŸ“°
  • Display news articles with relevant information such as headline, source, publication date, and a brief summary πŸ—žοΈπŸ“…πŸ“
  • Add features like categorizing news articles based on topics (e.g., technology, sports, entertainment) or allowing users to bookmark/save articles for later reading πŸ—‚οΈπŸ“‘

Sample Chat:

[USER] What is some recent news about Tata Sons?
[CHAT] < card with all the information >
[USER] What's going on in Delhi today?
[CHAT] < card with all the information >

# Bonus Points: notice that I did not tell location explicitly
[USER] Something specific about a new mughlai restaurant opening up?
[CHAT] < card with all the information >

Task Manager App

Create a task manager app that helps users stay organized and manage their tasks efficiently. Here are some key features to consider:

  • Allow users to create, update, and delete tasks via chat interface only πŸ“ŒβœοΈπŸ—‘οΈ
  • Task can contain links and notes and updates as a thread
  • Add due date and reminder functionality to ensure users never miss important deadlines β°πŸ“…
  • Include task filtering and sorting options to help users find specific tasks quickly πŸ§ΉπŸ”

Sample Chat:

[USER] What does my day look like?
[CHAT] < card with all the information > ... Andrew 6:00 PM
[USER] Let's reschedule the meeting with Andrew to 7:30 evening.
[CHAT] < card with all the information >

# Bonus Point: notice that I did not tell meeting explicitly
[USER] Make that meeting optional, I am not in the mood for it.
[CHAT] < card with all the information >

# Ultra Bonus Point: bot fights back if unclear
[USER] Do one thing, shift the meeting with Bo Jack to 9:00
[CHAT] < card with all the information > ... There are 2 different Bo Jack
[USER] Bo Jack Horseman, that one
[CHAT] < card with all the information >

Good luck with the assignment! If you have any further questions, feel free to reach out for any queries.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment