{"id":13856768,"url":"https://github.com/developmentseed/ml-enabler","last_synced_at":"2025-06-23T21:41:12.839Z","repository":{"id":37108530,"uuid":"292303442","full_name":"developmentseed/ml-enabler","owner":"developmentseed","description":"ML Enabler - machine learning interaction tools in the browser","archived":false,"fork":false,"pushed_at":"2023-03-15T08:08:51.000Z","size":13482,"stargazers_count":30,"open_issues_count":36,"forks_count":3,"subscribers_count":4,"default_branch":"master","last_synced_at":"2024-11-22T14:38:05.391Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-2-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/developmentseed.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-09-02T14:17:28.000Z","updated_at":"2023-07-05T08:02:38.000Z","dependencies_parsed_at":"2024-11-22T14:44:07.275Z","dependency_job_id":null,"html_url":"https://github.com/developmentseed/ml-enabler","commit_stats":null,"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/developmentseed/ml-enabler","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/developmentseed%2Fml-enabler","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/developmentseed%2Fml-enabler/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/developmentseed%2Fml-enabler/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/developmentseed%2Fml-enabler/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/developmentseed","download_url":"https://codeload.github.com/developmentseed/ml-enabler/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/developmentseed%2Fml-enabler/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261561251,"owners_count":23177559,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-05T03:01:12.513Z","updated_at":"2025-06-23T21:41:12.809Z","avatar_url":"https://github.com/developmentseed.png","language":"JavaScript","readme":"\u003ch1 align=center\u003eML Enabler (MLE) v3\u003c/h1\u003e\n\n\u003cp align=center\u003eFrictonless model storage, inferencing \u0026 discovery\u003c/p\u003e\n\n## Background\n\nMachine Learning has proven to be very successful to make mapping fast with high quality. With a diverse set of models and tools, it is hard to integrate them to existing tools like Tasking Manager and iD. ML Enabler (MLE) is a service that provides better integration during model development as well integrating model inferences to mapping tools.\n\nMLE was initially developed by Development Seed in partnership with Humanitarian OpenStreetMap Team.\n\n## Features of MLE\n\n### Model Registry\n\nMLE serves as a registry of public and private machine learning models. It can track models from disparate organizations all in one place and take advantage of all of them.\n\n### On-Demand Prediction\n\nMLE makes it easy to spin up AWS infrastructure to run your model along with all necessary resources. MLE UI allows you to upload new models \u0026 generate and preview predictions, all you need is a TMS end point and an AOI.\n\n### Classification, Detection \u0026 Segmentation model support\n\nMLE supports all three categories of CV problems i.e classification, detection \u0026 segmentation.\n\n### Feedback loop\n\nMLE supports a feedback loop about predictions from within the interface. Users can tag a tile as valid or invalid. Predictions tagged as valid switch to green, predictions tagged as invalid switch to white, and predictions that haven’t been manually validated stay red.\nMLE can then convert these validated predictions back into labelled training data matched up with imagery to allow users to easily re-train a new model with the validated model predictions.\n\n## Current Limitations\n\n### Infrastructure\n\nMLE uses AWS CloudFormation and is tightly integrated with AWS infrastructure at the moment. MLE currenlty doesn't support any other public or private cloud.\n\n### Framework\n\nMLE supports TFv2 models PyTorch Segmentation models for large scale inferencing.\n\n### Continuous Learning\n\nMLE's feedback loop can track metrics on model predictions verified by Human mappers. There is no active learning pipeline in place today to automatically retrain the models.\n\nTo know more about MLE, please read our blogs [ML Enabler — completing the Machine Learning pipeline for mapping](https://medium.com/devseed/ml-enabler-completing-the-machine-learning-pipeline-for-mapping-3aae94fa9e94) and [On-demand machine learning predictions for mapping tools](https://developmentseed.org/blog/2020-08-05-on-demand-machine-learning-predictions-for-mapping-tools)\n\n\n## API\n\nThe API uses the following terms:\n* **Model** --\nA model is a machine learning model. With ml-enabler, we use the [TFService](https://www.tensorflow.org/tfx/tutorials/serving/rest_simple) convention of publishing models. This allows to spin up containers of the model for prediction and query the data for storage. For an example of a complete implementation, see Development Seed's [looking-glass](https://github.com/developmentseed/looking-glass-pub/). ml-enabler-api can store data from several versions of the same model.\n\n* **Prediction** --\nA prediction is a set of results from an ML Model for a bounding box (region) and at a specific tile level.\n\n* **Prediction tiles** --\nPrediction tiles are the results of the prediction. The tiles are indexed using quadkeys for easy spatial search.\n\n## Deploying\n\nThe CloudFormation template is designed to be AWS Account agnostic and will create all necessary resources with\nthe exception of an SSL certificate (leave blank to disable https) and initial ECS images.\n\n### Deploy Tools\n\nThe cloudformation template is designed to be deployed with [cfn-config](https://github.com/mapbox/cfn-config),\nor a cfn-config compatible client.  [OpenAddresses/Deploy](https://github.com/openaddresses/deploy) is a compatible\nclient with a bunch of extra nice features.\n\n### Paramaters\n\nThe following parameters have special considerations you should be aware of.\n\n#### ContainerCpu \u0026 Container Memory\n\nThese values must be compatible with Fargate. See [Task CPU Limitations](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-cpu-memory-error.html)\nfor compatible values.\n\n#### SSLCertificateIdentifier\n\nThe name of the SSL Cert as managed by AWS to use with the HTTPS ELB.\nThis value can be left blank to disable all HTTPS Load Balancing\n\n## Using this API\n\nSee [API.md](/API.md)\n\n## Development Setup\n\nTODO: Update\n### Using Docker\n1. Copy `example.env` to `ml_enabler.env`\n1. Run `docker-compose build`\n2. Run `docker-compose up`\n\n### Manual\n\n1. Prerequisite\n  - Install @openaddresses/deploy \u0026 yarn. This will make `deploy` \u0026 `yarn` command available globally\n    ```npm install -g @openaddresses/deploy yarn```\n  - [Install aws-cli](https://aws.amazon.com/cli/) \u0026 create user-access keys\n  - Add `$(MAPBOX_TOKEN)` environment variable from your [mapbox account](https://account.mapbox.com/)\n  - Install `jq` from [here](https://stedolan.github.io/jq/download/)\n\n2. Clone ml-enabler \u0026 install node-modules (*TODO: Replace these with scripts in the future*)\n  ```\n    gh repo clone developmentseed/ml-enabler\n    cd ml-enabler/api \u0026\u0026 npm install \u0026\u0026 npx knex migrate:latest\n    cd web \u0026\u0026 yarn install\n    cd ../..\n  ```\n3. Clone a stacks database into local database for development\n  ```\n    ./clone prod\n  ```\n4. Authenticate the `deploy` cli to make any changes to the underlying AWS Infrastructure\n  \u003e Note: `profile name` should match with the AWS credentials file located at ~/.aws/credentials\n  ```\n    deploy init\n    $(deploy env)\n  ```\n5. Run the API \u0026 web UI\n  ```\n    cd api \u0026\u0026 npm run dev\n    cd web \u0026\u0026 npm run dev\n  ```\n","funding_links":[],"categories":["Python"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevelopmentseed%2Fml-enabler","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdevelopmentseed%2Fml-enabler","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevelopmentseed%2Fml-enabler/lists"}