{"id":13698425,"url":"https://alibaba.github.io/pipcook/","last_synced_at":"2025-05-04T03:31:19.005Z","repository":{"id":38361163,"uuid":"226000794","full_name":"alibaba/pipcook","owner":"alibaba","description":"Machine learning platform for Web developers","archived":false,"fork":false,"pushed_at":"2025-04-25T00:24:24.000Z","size":17649,"stargazers_count":2571,"open_issues_count":112,"forks_count":209,"subscribers_count":48,"default_branch":"main","last_synced_at":"2025-04-25T15:48:22.693Z","etag":null,"topics":["js","machine-learning","pipeline","tensorflow"],"latest_commit_sha":null,"homepage":"https://alibaba.github.io/pipcook/","language":"TypeScript","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/alibaba.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2019-12-05T02:40:40.000Z","updated_at":"2025-04-09T12:11:15.000Z","dependencies_parsed_at":"2024-01-19T01:04:50.524Z","dependency_job_id":"cd3f8448-8cba-463d-8902-19eeeb813e03","html_url":"https://github.com/alibaba/pipcook","commit_stats":{"total_commits":679,"total_committers":41,"mean_commits":16.5609756097561,"dds":0.7157584683357879,"last_synced_commit":"dcac2cfdee76fa999befefbcee29f325247ef0a2"},"previous_names":[],"tags_count":1138,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alibaba%2Fpipcook","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alibaba%2Fpipcook/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alibaba%2Fpipcook/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alibaba%2Fpipcook/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alibaba","download_url":"https://codeload.github.com/alibaba/pipcook/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252283595,"owners_count":21723505,"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":["js","machine-learning","pipeline","tensorflow"],"created_at":"2024-08-02T19:00:46.158Z","updated_at":"2025-05-04T03:31:17.545Z","avatar_url":"https://github.com/alibaba.png","language":"TypeScript","funding_links":[],"categories":["Resources"],"sub_categories":["Documentations"],"readme":"\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://alibaba.github.io/pipcook/\"\u003e\n    \u003cimg alt=\"pipcook\" src=\"./docs/images/logo.png\" width=\"160\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  A JavaScript application framework for machine learning and its engineering.\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://www.npmjs.com/package/@pipcook/core\"\u003e\n    \u003cimg alt=\"npm\" src=\"https://img.shields.io/npm/v/@pipcook/core\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://www.npmjs.com/package/@pipcook/core\"\u003e\n    \u003cimg alt=\"npm\" src=\"https://img.shields.io/npm/dm/@pipcook/core\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/alibaba/pipcook\"\u003e\n    \u003cimg alt=\"GitHub repo size\" src=\"https://img.shields.io/github/repo-size/alibaba/pipcook\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://opensource.org/licenses/Apache-2.0\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/License-Apache%202.0-blue.svg\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  Documentation: \u003ca href=\"https://alibaba.github.io/pipcook/#/\"\u003eEnglish\u003c/a\u003e | \u003ca href=\"https://alibaba.github.io/pipcook/#/zh-cn/\"\u003e中文\u003c/a\u003e\n\u003c/p\u003e\n\n## Builds\n\n| Build Types | Status |\n|---------------|--------|\n| tests         | \u003ca href=\"https://github.com/alibaba/pipcook/actions?query=workflow%3Abuild\"\u003e\u003cimg src=\"https://github.com/alibaba/pipcook/workflows/build/badge.svg?branch=main\u0026event=push\"\u003e\u003c/a\u003e |\n| documentation | \u003ca href=\"https://github.com/alibaba/pipcook/actions?query=workflow%3Agh-pages\"\u003e\u003cimg src=\"https://github.com/alibaba/pipcook/workflows/gh-pages/badge.svg\"\u003e\u003c/a\u003e |\n| docker        | \u003ca href=\"https://hub.docker.com/r/pipcook/pipcook\"\u003e\u003cimg src=\"https://img.shields.io/docker/cloud/build/pipcook/pipcook\"\u003e\u003c/a\u003e |\n\n## Why Pipcook\n\nWith the mission of enabling JavaScript engineers to utilize the power of machine learning without any\nprerequisites and the vision to lead front-end technical field to the intelligention. [Pipcook][] is to become\nthe JavaScript application framework for the cross-cutting area of machine learning and front-end interaction.\n\nWe are truly to design Pipcook's API for front-end and machine learning applications, and focusing on the front-end\narea and developed from the JavaScript engineers' view. With the principle of being friendly to JavaScript, we will \npush the whole area forward with the machine learning engineering. For this reason we opened an issue about \n[machine-learning application APIs][], and look forward to you get involved.\n\n## What's Pipcook\n\nThe project provides subprojects including machine learning pipeline framework, management tools, a JavaScript runtime for machine learning, and these can be also used as building blocks in conjunction with other projects.\n\n### Principles\n\n[Pipcook][] is an open-source project guided by strong principles, aiming to be modular and flexible on user experience. It is open to the community to help set its direction.\n\n- **Modular** the project includes some of projects that have well-defined functions and APIs that work together.\n- **Swappable** the project includes enough modules to build what Pipcook has done, but its modular architecture ensures that most of the modules can be swapped by different implementations.\n\n### Audience\n\n[Pipcook][] is intended for Web engineers looking to:\n\n- learn what's machine learning.\n- train their models and serve them.\n- optimize own models for better model evaluation results, like higher accuracy for image classification.\n\n\u003e If you are in the above conditions, just try it via [installation guide](docs/INSTALL.md).\n\n### Subprojects\n\n__Pipcook Pipeline__\n\nIt's used to represent ML pipelines consisting of Pipcook scripts. This layer ensures the stability and scalability of the whole system and uses a plug-in mechanism to support rich functions including dataset, training, validations, and deployment.\n\nA Pipcook Pipeline is generally composed of lots of scripts. Through different scripts and configurations, the final output to us is an NPM package, which contains the trained model and JavaScript functions that can be used directly.\n\n\u003e Note: In Pipcook, each pipeline has only one role, which is to output the above-trained model you need. That is to say, the last stage of each pipeline must be the output of the trained model, otherwise, this Pipeline is invalid.\n\n__Pipcook Bridge to Python__\n\nFor JavaScript engineers, the most difficult part is the lack of a mature machine learning toolset in the ecosystem. In Pipcook, a module called [Boa][https://github.com/imgcook/boa], which provides access to Python packages by bridging the interface of [CPython][] using N-API.\n\nWith it, developers can use packages such as `numpy`, `scikit-learn`, `jieba`, `tensorflow`, or any other Python ecology in the Node.js runtime through JavaScript.\n\n## Quick start\n\n### Setup\n\nPrepare the following on your machine:\n\n| Installer   | Version Range |\n|-------------|---------------|\n| [Node.js][] | \u003e= 12.17 or \u003e= 14.0.0 |\n| [npm][]    | \u003e= 6.14.4       |\n\nInstall the command-line tool for managing [Pipcook][] projects:\n\n```shell\n$ npm install -g @pipcook/cli\n```\n\nThen train from anyone of those [pipelines](./example/pipelines/), we take image classification as an example:\n\n```shell\n$ pipcook train https://cdn.jsdelivr.net/gh/alibaba/pipcook@main/example/pipelines/image-classification-mobilenet.json -o ./output\n```\nThis dataset specfied by the pipeline includes 2 categories image: avatar and blurBackground.\nAfter training, we can predict the category of a image:\n\n```shell\n$ pipcook predict ./output/image-classification-mobilenet.json -s ./output/data/validation/blurBackground/71197_223__30.7_36.jpg\n✔ Origin result:[{\"id\":1,\"category\":\"blurBackground\",\"score\":0.9998120665550232}]\n```\n\nThe input is a `blurBackground` image from the validation dataset. And the model determines that its category is `blurBackground`.\n\nWant to deploy it?\n```shell\n$ pipcook serve ./output\nℹ preparing framework\nℹ preparing scripts\nℹ preparing artifact plugins\nℹ initializing framework packages\nPipcook has served at: http://localhost:9091\n```\n\nThen you can open the browser and try your image classification server.\n\n### Playground\n\nIf you are wondering what you can do in [Pipcook][] and where you can check your training logs and models, you could start from [Pipboard](https://alibaba.github.io/pipcook/#/GLOSSORY?id=pipboard):\n\n```sh\nopen https://pipboard.imgcook.com\n```\n\nYou will see a web page prompt in your browser, and there is a MNIST showcase on the home page and play around there. \n\n### Pipelines\n\nIf you want to train a model to recognize MNIST handwritten digits by yourself, you could try the examples below.\n\n| Name | Description | Open in Colab |\n| ---- | ----------- | ----- |\n| mnist-image-classification | pipeline for classific MNIST image classification problem. | N/A |\n| databinding-image-classification | pipeline example to train the image classification task which is \u003cbr/\u003eto classify [imgcook](https://www.imgcook.com/) databinding pictures. | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/alibaba/pipcook/blob/main/notebooks/pipcook_image_classification.ipynb) |\n| object-detection | pipeline example to train object detection task which is for component recognition \u003cbr/\u003eused by imgcook. | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/alibaba/pipcook/blob/main/notebooks/pipcook_object_detection.ipynb) |\n| text-bayes-classification | pipeline example to train text classification task with bayes | N/A |\n\nSee [here](./example/pipelines) for complete list, and it's easy and quick to run these examples. For example, to do a MNIST \nimage classification, just run the following to start the pipeline:\n\n```sh\n$ pipcook run https://cdn.jsdelivr.net/gh/alibaba/pipcook@main/example/pipelines/image-classification-mobilenet.json -o output\n```\n\nAfter the above pipeline is completed, you have already trained a model at the current `output/model` directory, it's a tensorflow.js model.\n\n## Developers\n\nClone this repository:\n\n```sh\n$ git clone git@github.com:alibaba/pipcook.git\n```\n\nInstall dependencies, e.g. via [npm][]:\n\n```sh\n$ npm install\n```\n\nAfter the above, now build the project:\n\n```sh\n$ npm run build\n```\n\n- Developer Documentation [English](./docs/contributing/guide-to-contributor.md) | [中文](./docs/zh-cn/contributing/guide-to-contributor.md)\n- [Project Guide](./docs/meta/PROJECT_GUIDE.md)\n\n## Community\n\n#### DingTalk\n\n\u003cimg width=\"200\" src=\"./docs/images/community_qrcode.jpg\"\u003e\n\nOr searched via the group number: 30624012.\n\n\u003e Download DingTalk (an all-in-one free communication and collaboration platform) here: [English](https://www.dingtalk.com/static/en/download) | [中文](https://page.dingtalk.com/wow/dingtalk/act/download)\n\n#### Gitter Room\n\n\u003ca href=\"https://gitter.im/alibaba/pipcook\"\u003e\n  \u003cimg src=\"https://img.shields.io/gitter/room/alibaba/pipcook?logo=pipcook\u0026style=flat-square\" /\u003e\n\u003c/a\u003e\n\n#### Who's using it\n\n\u003ca href=\"https://www.imgcook.com\"\u003e\u003cimg height=\"40\" src=\"https://img.alicdn.com/tfs/TB1lle4yQzoK1RjSZFlXXai4VXa-200-64.png\"\u003e\u003c/a\u003e\n\n## License\n\n[Apache 2.0](./LICENSE)\n\n[Pipcook]: https://github.com/alibaba/pipcook\n[lerna]: https://github.com/lerna/lerna\n[TypeScript]: https://github.com/microsoft/TypeScript\n[Node.js]: https://nodejs.org/\n[npm]: https://npmjs.com/\n[Python]: https://www.python.org/\n[CPython]: https://github.com/python/cpython\n[machine-learning application APIs]: https://github.com/alibaba/pipcook/issues/33\n[pipeline-mnist-image-classification]: example/pipelines/mnist-image-classification.json\n[pipeline-databinding-image-classification]: example/pipelines/databinding-image-classification-mobilenet.json\n[pipeline-object-detection]: example/pipelines/object-detection-yolo.json\n[pipeline-text-bayes-classification]: example/pipelines/text-classification-bayes.json\n[detectron2 installation reference]: https://github.com/facebookresearch/detectron2/blob/master/INSTALL.md\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/alibaba.github.io%2Fpipcook%2F","html_url":"https://awesome.ecosyste.ms/projects/alibaba.github.io%2Fpipcook%2F","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/alibaba.github.io%2Fpipcook%2F/lists"}