{"id":13473927,"url":"https://github.com/kubeflow-kale/kale","last_synced_at":"2025-05-15T17:06:09.393Z","repository":{"id":35094335,"uuid":"167412097","full_name":"kubeflow-kale/kale","owner":"kubeflow-kale","description":"Kubeflow’s superfood for Data Scientists","archived":false,"fork":false,"pushed_at":"2023-01-06T03:22:37.000Z","size":26785,"stargazers_count":633,"open_issues_count":128,"forks_count":126,"subscribers_count":18,"default_branch":"master","last_synced_at":"2025-04-28T20:46:20.876Z","etag":null,"topics":["jupyter-notebook","kubeflow","kubeflow-pipelines","machine-learning"],"latest_commit_sha":null,"homepage":"http://kubeflow-kale.github.io","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kubeflow-kale.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}},"created_at":"2019-01-24T17:58:44.000Z","updated_at":"2025-04-18T06:43:20.000Z","dependencies_parsed_at":"2023-01-15T13:45:23.831Z","dependency_job_id":null,"html_url":"https://github.com/kubeflow-kale/kale","commit_stats":null,"previous_names":[],"tags_count":24,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kubeflow-kale%2Fkale","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kubeflow-kale%2Fkale/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kubeflow-kale%2Fkale/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kubeflow-kale%2Fkale/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kubeflow-kale","download_url":"https://codeload.github.com/kubeflow-kale/kale/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253305062,"owners_count":21887305,"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":["jupyter-notebook","kubeflow","kubeflow-pipelines","machine-learning"],"created_at":"2024-07-31T16:01:08.089Z","updated_at":"2025-05-15T17:06:04.384Z","avatar_url":"https://github.com/kubeflow-kale.png","language":"Python","funding_links":[],"categories":["Uncategorized","Ecosystem Projects","Data Pipelines \u0026 Streaming","Python","Workflow Tools"],"sub_categories":["Uncategorized"],"readme":"\u003cp align=\"center\"\u003e\n\u003cimg alt=\"Kale Logo\" src=\"https://raw.githubusercontent.com/kubeflow-kale/kale/master/docs/imgs/kale_logo.png\" height=\"130\"\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n\u003ca href=\"#\"\u003e\n  \u003cimg alt=\"GitHub License\" src=\"https://badgen.net/github/license/kubeflow-kale/kale\"\u003e\n\u003c/a\u003e\n\u003ca target=\"_blank\" href=\"https://pypi.org/project/kubeflow-kale/\"\u003e\n    \u003cimg alt=\"PyPI Version\" src=\"https://badgen.net/pypi/v/kubeflow-kale\"\u003e\n\u003c/a\u003e\n\u003ca target=\"_blank\" href=\"https://www.npmjs.com/package/kubeflow-kale-labextension\"\u003e\n  \u003cimg alt=\"npm Version\" src=\"https://badgen.net/npm/v/kubeflow-kale-labextension\"\u003e\n\u003c/a\u003e\n\u003ca target=\"_blank\" href=\"https://github.com/kubeflow-kale/kale/actions\"\u003e\n  \u003cimg alt=\"Kale CI Workflow Status\" src=\"https://github.com/kubeflow-kale/kale/workflows/CI/badge.svg\"\u003e\n\u003c/a\u003e\n\u003c/p\u003e\n\n---\n\nKALE (Kubeflow Automated pipeLines Engine) is a project that aims at simplifying\nthe Data Science experience of deploying Kubeflow Pipelines workflows.\n\nKubeflow is a great platform for orchestrating complex workflows on top\nKubernetes and Kubeflow Pipeline provides the mean to create reusable components\nthat can be executed as part of workflows. The self-service nature of Kubeflow\nmake it extremely appealing for Data Science use, at it provides an easy access\nto advanced distributed jobs orchestration, re-usability of components, Jupyter\nNotebooks, rich UIs and more. Still, developing and maintaining Kubeflow\nworkflows can be hard for data scientists, who may not be experts in working\norchestration platforms and related SDKs. Additionally, data science often\ninvolve processes of data exploration, iterative modelling and interactive\nenvironments (mostly Jupyter notebook).\n\nKale bridges this gap by providing a simple UI to define Kubeflow Pipelines\nworkflows directly from you JupyterLab interface, without the need to change a\nsingle line of code.\n\nRead more about Kale and how it works in this Medium post:\n[Automating Jupyter Notebook Deployments to Kubeflow Pipelines with Kale](https://medium.com/kubeflow/automating-jupyter-notebook-deployments-to-kubeflow-pipelines-with-kale-a4ede38bea1f)\n\n## Getting started\n\nInstall the Kale backend from PyPI and the JupyterLab extension. You can find a\nset of curated Notebooks in the\n[examples repository](https://github.com/kubeflow-kale/examples)\n\n```bash\n# install kale\npip install kubeflow-kale\n\n# install jupyter lab\npip install \"jupyterlab\u003e=2.0.0,\u003c3.0.0\"\n\n# install the extension\njupyter labextension install kubeflow-kale-labextension\n# verify extension status\njupyter labextension list\n\n# run\njupyter lab\n```\n\n\u003cimg alt=\"Kale JupyterLab Extension\" src=\"https://raw.githubusercontent.com/kubeflow-kale/kale/master/docs/imgs/labextension.png\"/\u003e\n\nTo build images to be used as a NotebookServer in Kubeflow, refer to the\nDockerfile in the `docker` folder.\n\n### FAQ\n\nHead over to [FAQ](FAQ.md) to read about some known issues and some of the\nlimitations imposed by the Kale data marshalling model.\n\n## Resources\n\n- Kale introduction [blog post](https://medium.com/kubeflow/automating-jupyter-notebook-deployments-to-kubeflow-pipelines-with-kale-a4ede38bea1f)\n- Codelabs showcasing Kale working in MiniKF with Arrikto's [Rok](https://www.arrikto.com/):\n  - [From Notebook to Kubeflow Pipelines](https://codelabs.developers.google.com/codelabs/cloud-kubeflow-minikf-kale/#0)\n  - [From Notebook to Kubeflow Pipelines with HP Tuning](https://arrik.to/demowfhp)\n- KubeCon NA Tutorial 2019: [From Notebook to Kubeflow Pipelines: An End-to-End Data Science Workflow](https://kccncna19.sched.com/event/Uaeq/tutorial-from-notebook-to-kubeflow-pipelines-an-end-to-end-data-science-workflow-michelle-casbon-google-stefano-fioravanzo-fondazione-bruno-kessler-ilias-katsakioris-arrikto?iframe=no\u0026w=100%\u0026sidebar=yes\u0026bg=no)\n  / [video](http://youtube.com/watch?v=C9rJzTzVzvQ)\n- CNCF Webinar 2020: [From Notebook to Kubeflow Pipelines with MiniKF \u0026 Kale](https://www.cncf.io/webinars/from-notebook-to-kubeflow-pipelines-with-minikf-kale/)\n  / [video](https://www.youtube.com/watch?v=1fX9ZFWkvvs)\n- KubeCon EU Tutorial 2020: [From Notebook to Kubeflow Pipelines with HP Tuning: A Data Science Journey](https://kccnceu20.sched.com/event/ZerG/tutorial-from-notebook-to-kubeflow-pipelines-with-hp-tuning-a-data-science-journey-stefano-fioravanzo-ilias-katsakioris-arrikto)\n  / [video](https://www.youtube.com/watch?v=QK0NxhyADpM)\n\n## Contribute\n\n#### Backend\n\nCreate a new Python virtual environment with `Python \u003e= 3.6`. Then:\n\n```bash\ncd backend/\npip install -e .[dev]\n\n# run tests\npytest -x -vv\n```\n\n#### Labextension\n\nThe JupyterLab Python package comes with its own yarn wrapper, called `jlpm`.\nWhile using the previously installed venv, install JupyterLab by running:\n\n```bash\npip install \"jupyterlab\u003e=2.0.0,\u003c3.0.0\"\n```\n\nYou can then run the following to install the Kale extension:\n\n```bash\ncd labextension/\n\n# install dependencies from package.lock\njlpm install\n# build extension\njlpm run build\n\n# list installed jp extensions\njlpm labextension list\n# install Kale extension\njlpm labextension install .\n\n# for development:\n# build and watch\njlpm run watch\n\n# in another shell, run JupyterLab in watch mode\njupyter lab --no-browser --watch\n```\n\n#### Git Hooks\n\nThis repository uses\n[husky](https://github.com/typicode/husky)\nto set up git hooks.\n\nFor `husky` to function properly, you need to have `yarn` installed and in your\n`PATH`. The reason that is required is that `husky` is installed via\n`jlpm install` and `jlpm` is a `yarn` wrapper. (Similarly, if it was installed\nusing the `npm` package manager, then `npm` would have to be in `PATH`.)\n\nCurrently installed git hooks:\n\n- `pre-commit`: Run a prettier check on staged files, using\n  [pretty-quick](https://github.com/azz/pretty-quick)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkubeflow-kale%2Fkale","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkubeflow-kale%2Fkale","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkubeflow-kale%2Fkale/lists"}