Self-hosted service
apache/singa avatar
apache/singa

Apache SINGA: A C++ Distributed Training Platform With a 2020 Release Cadence

a distributed deep learning platform

3,604 stars1,262 forksC++Apache-2.0

At a glance

What is it?
SINGA is an Apache-licensed distributed deep learning system written mainly in C++, with its most recent release, 3.0.0, dated April 2020. The repository is still active, but the gap between release history and commit activity is the first thing an adopter has to weigh.
Who is it for?
SINGA fits teams that want an Apache-governed, C++-first distributed training stack they can build from source and modify, and who are comfortable working from the 3.0.0 documentation set. It is a poor fit for anyone who needs a large model zoo, frequent releases, or a support contract.
Can I use it commercially?
Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 15 days ago.
What is it written in?
Mainly C++, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on November 14, 2026, and from our analysis. They are not legal advice.

From daily snapshots

Star history

  • apache/singa3,604 ★ · -3
Star history
Repository2026-09-112026-11-14
apache/singa3.6k3.6k

-3 Stars in the last 64 days, measured from the daily GitHub snapshot. Compare with other projects

Editorial analysis

What SINGA Is Actually For

SINGA targets distributed training of deep learning models, and it is written primarily in C++. The README describes it in one line as a "Distributed deep learning system" and points to singa.apache.org for documentation. The repository carries build status badges for native Ubuntu, native macOS, and conda, plus documentation hosted on Read the Docs and a Docker image published under the apache/singa namespace on Docker Hub. Those artifacts tell you the intended path: you either build from source, install through conda, or pull the container.

The audience is narrower than the description suggests. A team already standardized on PyTorch or TensorFlow has little reason to move, because the surrounding ecosystem (pretrained checkpoints, tracing tools, serving runtimes) lives elsewhere. The plausible adopter is someone who wants a C++ core they can extend, who values the Apache Software Foundation governance model with its mailing lists and JIRA, and who is training models that need to be spread across machines rather than run on a single accelerator. The topics list on the repository contains exactly one entry, deep-learning, which is accurate but says nothing about which workloads are best supported.

The C++ Core and the Python Surface

The repository is dominated by C++, with a Python binding layered on top. That split matters because it determines where the hard problems live. The build badges distinguish a C++ code analysis grade from a Python one, and the CI matrix separates native Ubuntu, native macOS, and conda builds, which implies the C++ compilation path is the one most likely to break on an unusual toolchain. The Python side is the interface most users will touch, but it is not the implementation.

The README does not describe the internal architecture: no parameter server diagram, no explanation of how gradients are synchronized across workers, no statement about whether training is synchronous or asynchronous. The README links to the documentation site rather than inlining that detail. Anyone evaluating SINGA for a specific cluster topology has to read the docs directly, because the repository front page will not answer the question. That is a real gap for a project whose main selling point is distribution.

Getting It Running: Three Paths

The README offers three routes and no more. The Installation link at singa.apache.org/docs/installation/ is the canonical starting point. The conda build badge indicates a conda package exists, which is the shortest path if your environment already uses conda. The Docker badge points at hub.docker.com/r/apache/singa, so `docker pull apache/singa` is the container route. Native builds are covered by the Ubuntu and macOS workflows, which means the practical requirement is a working C++ toolchain plus whatever accelerator libraries the installation page specifies.

The repository also ships an examples directory, referenced from Quick Start as `examples`. That is where a new user should look first, because the README does not reproduce any training snippet inline. There are no config keys, no command-line flags, and no Python import examples in the README, so this article cannot tell you what a SINGA training script looks like. Treat the installation page and the examples directory as mandatory reading before you commit engineering time, and be aware that the examples may track master rather than the 3.0.0 tag.

The Release Gap Is the Main Risk

Release 3.0.0 is dated 2020-04-21. The release before it, 2.0.0, is dated 2019-04-07, and a 3.0.0 release candidate appeared on 2020-04-08. The last push to the default branch is dated 2026-09-02, which is years after the most recent tagged release. That combination, ongoing commits with no subsequent release, is the single most important fact for an adopter. It means the code you get from master and the code you get from the 3.0.0 tag may differ in ways that are not documented in a changelog, because there is no changelog entry after 3.0.0.

This is not the same as abandonment. Commits are landing. But a project that has not cut a release in years puts the burden of stability assessment on the user. If you build from master, you are testing unreleased code. If you build from the 3.0.0 tag, you are on a version whose dependency assumptions (CUDA version, compiler version, Python version) were formed in 2020 and may no longer match a current environment. Neither choice is obviously correct, and the documentation linked from the README is not described as versioned per release.

Where SINGA Is the Wrong Tool

If your work depends on a large catalog of pretrained models, SINGA is the wrong choice. Nothing in the README or the repository metadata suggests a model zoo of the kind that has become the default entry point for applied deep learning. You would be training from scratch or porting weights yourself.

If you need commercial support with an SLA, the Apache model gives you mailing lists ([email protected] and [email protected], both with public archives) and a JIRA instance at issues.apache.org/jira/browse/SINGA. That is a community support model. It works well when your question is interesting to a committer and poorly when you have a production incident at an inconvenient hour.

If your team is Python-only and has no appetite for C++ build tooling, the conda and Docker paths may insulate you, but any bug that requires reading the core means reading C++. And if your models fit comfortably on one GPU, the distributed machinery is overhead you are paying for without using.

The Alternative: PyTorch's Distributed Package

The closest comparison is PyTorch, specifically its torch.distributed module and the DistributedDataParallel wrapper. The difference in approach is structural rather than a matter of features. PyTorch ships distributed training as a library inside a much larger Python-first ecosystem, so the same code that trains on one device scales out with a process-group initialization and a wrapper change. SINGA is a standalone C++ system with its own build, its own runtime, and its own Python binding, so adopting it means adopting a platform rather than adding a module.

That cuts both ways. A standalone system can be simpler to reason about if you want to modify the training loop at the C++ level, and Apache governance gives you a clear path to influence the project. A library inside a dominant ecosystem gives you far more third-party code to reuse and far more people who have hit your bug before. For most teams the second consideration dominates. SINGA's case rests on the first.

Licence, Maintenance, and What to Verify

SINGA is licensed under Apache-2.0, the same licence as the Apache HTTP Server and many other ASF projects. The README reproduces the standard ASF header, which states that the work is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND. In practical terms, Apache-2.0 includes an express patent grant from contributors and permits commercial use and modification, but it also disclaims warranty and liability. This is a description of the licence text, not legal advice; if your organisation has a policy on ASF dependencies, route it through whoever owns that policy.

The maintenance cost you should budget for is the upgrade path, and here the material is thin. With no release after 3.0.0, there is no documented migration from 3.0.0 to whatever master becomes. Pinning to the 3.0.0 tag freezes you at a 2020 dependency set. Tracking master means rebuilding against a moving target with no release notes. Before adopting, verify three things: whether the installation instructions on singa.apache.org still match the toolchain you have, whether the examples directory builds against the tag you intend to use, and whether the JIRA board shows unresolved issues that touch the component you need. Those three checks will tell you more than any summary of the project's goals.

Editorial conclusion

SINGA fits teams that want an Apache-governed, C++-first distributed training stack they can build from source and modify, and who are comfortable working from the 3.0.0 documentation set. It is a poor fit for anyone who needs a large model zoo, frequent releases, or a support contract. Before committing, check the JIRA board for open blockers, read the installation page for your CUDA and compiler combination, and confirm that the examples in the repository still build against the 3.0.0 tag rather than master.

Frequently asked questions

What is Apache SINGA?

A distributed deep learning system. The repository summary calls it a distributed deep learning platform, the project site is singa.apache.org, and the documentation badge points at apache-singa.readthedocs.io. The primary language recorded for the repository is C++.

How do I install Apache SINGA?

The repository page has no install command. It links to an installation page on singa.apache.org and to an examples directory. The wheel build instructions that are in the repository describe running setup.py inside a container built from a manylinux2014 CentOS base with CUDA 10.2, for Python 3.6, 3.7 and 3.8.

What is the latest version of Apache SINGA?

3.0.0, published 2020-04-21, following a 3.0.0.rc1 on 2020-04-08 and a 2.0.0 on 2019-04-07. The three releases use three different title conventions. The last commit to the default branch is dated 2026-09-02.

Which languages does Apache SINGA cover?

The tree carries include/, src/, python/ and java/ directories, the primary language is recorded as C++, and a top-level setup.py builds a wheel for the Python side. The readme names none of these language surfaces, so nothing on the front page indicates the project is C++ at all.

Where do I report a bug in Apache SINGA?

The readme points at the Apache JIRA instance for the SINGA project rather than at GitHub issues, even though a .github directory is present. It also lists a development mailing list and a commits mailing list, both with public mbox archives.

Does Apache SINGA still carry examples?

There are two dozen example subdirectories, including cifar_distributed_cnn, cnn, cnn_ms, cpp, gan, healthcare, hfl, largedataset_cnn, malaria_cnn, mlp, model_selection, model_slicing_psql, onnx, qabot, rbm, rnn, singa_easy, singa_peft and trans, plus three whose names differ only in underscores: msmlp, ms_model_mlp and msmodel_mlp.

Official sources

  1. apache/singa on GitHub
  2. Issues
  3. License: Apache-2.0
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/apache-singa.svg)](https://hysenlabs.com/projects/apache-singa)

Star history chart for your README

markdown
[![Star history](https://hysenlabs.com/chart/apache-singa.svg)](https://hysenlabs.com/projects/apache-singa)

Was this useful?