Skip to content

johntharian/banana-cli

 
 

Repository files navigation

banana-cli

The goal of the Banana CLI is to bring an npm-like experience to ML development loops.

This version includes:

  • banana init to create a project with boilerplate
  • banana install to install packages from the requirements.txt
  • banana dev to run a dev server with hot-reload (beta)

Here's a demo video


This is a v0 release using SemVer; it is not stable and the interface can break at any time.

To use it

  1. Install the CLI with pip
pip3 install banana-cli
  1. Create a new project directory with
banana init my-app
cd my-app
  1. Start the dev server
python3 app.py
  1. Call your API (from a separate terminal)
curl -X POST -H "Content-Type: application/json" -d '{"prompt": "Hello I am a [MASK] model."}' http://localhost:8000/

Experimental: Hot-Reload Dev Server

You may try the interractive dev server, in beta, with

banana dev

The interactive dev server works like a react, next, or nodemon server: it selectively hot reloads components when you save changes to different parts of your app.py file.

The init() function is ran on startup and for every change to init().

The handler() function is ran on every change to handler(), without needing to wait for a long init()

Play with it:

  1. Try changing the handler, see what happens!
  2. Try changing the init, see what happens!

Experimental: Auto-compat for non-GPU machines:

  • banana dev --auto-compat=True to make your GPU code compatible with a CPU machine, by ignoring to("cuda") calls

Future Development:

  • Lock in a stable interface
  • Add the following commands
    • banana build -> verify production build
    • banana test -> unit test against local test cases
    • banana deploy -> manually deploy from CLI
    • banana deploy --canary --ttl=10 -> run a temporary deployment to Banana's cluster for on-GPU testin
  • Port to Rust. Why Rust?

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 96.0%
  • Dockerfile 3.4%
  • Shell 0.6%