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.
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
- stress test the server using
Ultra bonus points:
- you use gRPC over HTTP/REST
- you use something other than python (but not C++, Javascript FFS)
- create a github repository
- create a file called
trainer.py
which can be accessed via CLI to train an LLM (protip: take a look atpython-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
trykarpathy/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: usepydantic
for models) - A
curl
command to call the model and get response - an ipython notebook that contains steps to run this
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 onhuggingface
) - 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: usepydantic
for models) - A
curl
command to call the model and get response - an ipython notebook that contains the steps to run this
Bonus points:
- if your code can be shipped effectively (protip:
pip install xxx
)
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.
- generate a dataset
- create a file called
trainer.py
that takes in the dataset and training arguments via CLI (protip: usewanb
) - 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
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 aGame
class that plays the game forn
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: usewanb
) - 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: seexargs
orparallel
)
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.
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 >
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 >
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.