kube-batch
arena
kube-batch | arena | |
---|---|---|
3 | 1 | |
1,057 | 705 | |
- | 0.9% | |
4.0 | 8.3 | |
12 months ago | 2 days ago | |
Go | Go | |
Apache License 2.0 | Apache License 2.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
kube-batch
-
Volcano vs Yunikorn vs Knative
tldr; Knative Batch Job provider should support the respective coscheduling and kube-batch support. We had developed an in-house one for KubeFlow, from scratch. We had added Apache Arrow support into knative-serving with the respective CloudEvents interop layer, natively (i.e. secure shmem via IPC namespace, instead of message passing on the same host). We use it as a direct replacement for Apache Arrow Ballista, and had planned researching further DataFusion compat layer. Almost any modern ETL is pretty dubious without Apache Arrow.
-
Kubernetes Was Never Designed for Batch Jobs
Another aspect of batch jobs is that we’ll often want to run distributed computations where we split our data into chunks and run a function on each chunk. One popular option is to run Spark, which is built for exactly this use case, on top of Kubernetes. And there are other options for additional software to make running distributed computations on Kubernetes easier.
-
Scaling Kubernetes to 7,500 Nodes
> That said, strain on the kube-scheduler is spiky. A new job may consist of many hundreds of pods all being created at once, then return to a relatively low rate of churn.
Last I checked, the default scheduler places Pods one at a time. It might be advantageous to use a gang/batch scheduler like kube-batch[0], Poseidon[1] or DCM[2].
[0] https://github.com/kubernetes-sigs/kube-batch
[1] https://github.com/kubernetes-sigs/poseidon
[2] https://github.com/vmware/declarative-cluster-management
arena
-
Volcano vs Yunikorn vs Knative
tldr; you should start with KubeFlow 99% of the time. The respective job scheduling workflows (including volano) can be managed with Kubeflow Arena. Vulcano is ok, but I personally prefer Nvidia's Merlin + Triton inference on top of ONNX and MS ONNX Runtime. I do like to train with GPU's on Merlin in GKE (TabularNV and HugeCTR's tbe), and run TFKeras ReLu models on CPU's with OpenVino on AWS EKS, to optimize costs a bit. I do use Kubeflow on top of TektonCD for OpenShift, while some folks do prefer Argo Workflows and Apache Airflow, in the end - it's all DAG pipelines, so doesn't really matter.
What are some alternatives?
volcano - A Cloud Native Batch System (Project under CNCF)
determined - Determined is an open-source machine learning platform that simplifies distributed training, hyperparameter tuning, experiment tracking, and resource management. Works with PyTorch and TensorFlow.
argo - Workflow Engine for Kubernetes
ML-Workspace - 🛠 All-in-one web-based IDE specialized for machine learning and data science.
mpi-operator - Kubernetes Operator for MPI-based applications (distributed training, HPC, etc.)
cromwell - Scientific workflow engine designed for simplicity & scalability. Trivially transition between one off use cases to massive scale production environments
kube-scheduler-simulator - The simulator for the Kubernetes scheduler
sidekick - High Performance HTTP Sidecar Load Balancer
sarus - OCI-compatible engine to deploy Linux containers on HPC environments.
warewulf - Warewulf is a stateless and diskless container operating system provisioning system for large clusters of bare metal and/or virtual systems.
armada - A multi-cluster batch queuing system for high-throughput workloads on Kubernetes.
descheduler - Descheduler for Kubernetes [Moved to: https://github.com/kubernetes-sigs/descheduler]