{"id":25636150,"url":"https://github.com/sb-ai-lab/Stalactite","last_synced_at":"2026-06-19T16:30:16.590Z","repository":{"id":267580921,"uuid":"722027210","full_name":"sb-ai-lab/Stalactite","owner":"sb-ai-lab","description":"Stalactite is the framework implementing the vertical federated learning paradigm.","archived":false,"fork":false,"pushed_at":"2024-12-11T06:26:50.000Z","size":1976,"stargazers_count":31,"open_issues_count":1,"forks_count":0,"subscribers_count":4,"default_branch":"main","last_synced_at":"2024-12-11T07:26:47.454Z","etag":null,"topics":["federated-learning","vertical-federated-learning"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sb-ai-lab.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2023-11-22T09:31:23.000Z","updated_at":"2024-12-03T10:47:49.000Z","dependencies_parsed_at":"2024-12-11T07:27:04.363Z","dependency_job_id":"3634cb33-a518-4411-a3b2-28510cab9b53","html_url":"https://github.com/sb-ai-lab/Stalactite","commit_stats":null,"previous_names":["sb-ai-lab/stalactite"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sb-ai-lab%2FStalactite","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sb-ai-lab%2FStalactite/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sb-ai-lab%2FStalactite/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sb-ai-lab%2FStalactite/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sb-ai-lab","download_url":"https://codeload.github.com/sb-ai-lab/Stalactite/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240250363,"owners_count":19771780,"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":["federated-learning","vertical-federated-learning"],"created_at":"2025-02-23T00:02:08.107Z","updated_at":"2026-06-19T16:30:16.453Z","avatar_url":"https://github.com/sb-ai-lab.png","language":"Python","funding_links":[],"categories":["Frameworks and Libraries with VFL support"],"sub_categories":["VFL metrics / feature importance estimation"],"readme":"# Stalactite VFL\n___\n\n_Stalactite_ is the framework implementing the vertical federated learning paradigm. \n\n### Requirements\n- Python 3.9+\n- Docker (for the distributed and local multiprocess VFL experiments) и docker-compose\n- [Poetry](https://python-poetry.org/docs/#installing-with-pipx) \n\n## Installation\n0. Check that your system has Docker and Poetry\n```bash\ndocker --version\npoetry --version\n```\n1. Prepare poetry configuration and install Stalactite:\n```bash\npoetry config virtualenvs.in-project true # Create the virtualenv inside the project’s root directory.\n# You can configure poetry using official docs: https://python-poetry.org/docs/configuration/\n# If you use CPU, install torch and torchvision by running\npoetry run pip install torch~=2.1 torchvision~=0.16 --index-url https://download.pytorch.org/whl/cpu\n# Otherwise, to use GPU:\npoetry run pip install torch~=2.1 torchvision~=0.16 --index-url https://download.pytorch.org/whl/cu121\n# Install phe library\npoetry run pip install phe==1.5.0\npoetry install # Install stalactite and dependencies\npoetry shell # Start a new shell and activate the virtual environment\n```\n2. Check if the Stalactite CLI is working by running:\n```bash\nstalactite --help\n\n#Usage: stalactite [OPTIONS] COMMAND [ARGS]...\n#\n#  Main stalactite CLI command group.\n#\n#Options:\n#  --help  Show this message and exit.\n#\n#Commands:\n#  local          Local experiments (multi-process / single process) mode...\n#  master         Distributed VFL master management command group.\n#  member         Distributed VFL member management command group.\n#  predict\n#  prerequisites  Prerequisites management command group.\n#  report         Experimental report command group.\n#  test           Local tests (multi-process / single process) mode...\n```\n\n## Examples \nYou can run tests or check out the examples to see whether everything is working (`examples/vfl`)\n In the examples folder there are examples of how to launch the VFL experiments locally (for the debug)\nor in a distributed fashion.\nFor all the experiments to access the data, you should add the path to folder containing the\ndata into the config file field: ``\n\nLocal (single process multiple threads) experiments examples:\n- `examples/vfl/local/linreg_mnist_local.py` launches the local linear regression example on MNIST dataset.\nThe YAML file for this experiment `examples/configs/linreg-mnist-local.yml` configures main common and data \nparameters required for the launch. \n- `examples/vfl/local/linreg_mnist_seq_local.py` launches the local linear regression example on MNIST dataset with \nsequential updates on members. The configuration for this experiment is in \n`examples/configs/linreg-mnist-seq-local.yml` is basically same to the previous example, except for the \n`common.is_consequently=True`.\n- The `examples/vfl/local/logreg_sbol_smm_local.py`, launching the multilabel classification with \nlogistic regression on SBOL and SMM datasets.\n\nDistributed (single host multiple processes (containers)) example:\n- `examples/vfl/distributed/multiprocess/logreg_sbol_smm_multiprocess` example demonstrates the launch of the local multiprocess \nstalactite CLI usage for running all the agents (master and members) containers on a single-host. \nIt runs the same logistic regression example of SBOL and SMM. If you do not want \nto start prerequisites (or use them) while checking out the example, just disable the usage of the Prometheus or MlFLow by\nchanging configuration files fields to: `master.run_mlflow: False`, `master.run_prometheus: False`\n\nDistributed (multiple host) example:\n- `examples/vfl/distributed/multihost/logreg_sbol_smm_multihost/` contains shell script for launching VFL agents to run \nlogistic regression on SBOL and SMM while all the agents are on different hosts. To launch it again uses the \nstalactite CLI and configuration file, which must be copied to each host (and changed accordingly).\nThe instructions for the distributed multi-host experiment are shown in `examples/vfl/distributed/README.md`\n  \n### Arbitered example with no features on master\n- distributed config: `examples/configs/arbitered-logreg-sbol-smm-multiprocess-no-features-master.yml`,\n- local config: `examples/configs/arbitered-logreg-sbol-smm-local-no-features-master.yml`\nLaunches the multilabel logistic regression with master, arbiter and member on Sbol dataset. In the experiment, the\nmember holds all the features, and master is responsible for labels.\nTo launch the experiment:\n1) Create the empty folder `./multilabel_sber_samplemaster_no_labels_parts2` in the same folder \nwith Sbol dataset parquet files\n2) Adjust the configuration files' paths and hosts, following the instructions on\n[how to adjust the configuration file](https://github.com/sb-ai-lab/vfl-benchmark/blob/main/docs/tutorials/configuration_file_tutorial.rst) \n3) Run the experiment\n- locally\n```bash\nstalactite local \\\n--single-process start \\\n--config-path examples/configs/arbitered-logreg-sbol-smm-local-no-features-master.yml\n```\n- or by using multi-process / distributed mode:\n```bash\nstalactite local --multi-process stop\nstalactite local \\\n--multi-process start \\\n--config-path examples/configs/arbitered-logreg-sbol-smm-multiprocess-no-features-master.yml\n```\n\n\n\n## Prerequisites start and Stalactite CLI usage\nTo run the experiment and check the metrics, first, you should launch the prerequisites (Prometheus and MlFlow).\n\u003e **It is important to launch the prerequisites on the same host, where the distributed master will be running**\n\n```bash\nstalactite prerequisites start -d --config-path path/to/the/experiment-config.yml\n# You can omit the `-d` option to attach the prerequisites to the current terminal\n```\n\nTo run the experiments check the `stalactite/main` documentation or type `stalactite \u003ccommand\u003e --help`. You can also \nrefer to the examples in the `Examples` section of the current README.\n\n## Note\nIf you want to use GPU, follow the `Installation 1.` and install correct versions of `torch` and `torchvision` in your \nenvironment and set the `docker.use_gpu=True` variable in an experimental config. ","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsb-ai-lab%2FStalactite","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsb-ai-lab%2FStalactite","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsb-ai-lab%2FStalactite/lists"}