[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-kubeflow--kale":3,"tool-kubeflow--kale":61},[4,18,28,37,45,53],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":17},4358,"openclaw","openclaw\u002Fopenclaw","OpenClaw 是一款专为个人打造的本地化 AI 助手，旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚，能够直接接入你日常使用的各类通讯渠道，包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息，OpenClaw 都能即时响应，甚至支持在 macOS、iOS 和 Android 设备上进行语音交互，并提供实时的画布渲染功能供你操控。\n\n这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地，用户无需依赖云端服务即可享受快速、私密的智能辅助，真正实现了“你的数据，你做主”。其独特的技术亮点在于强大的网关架构，将控制平面与核心助手分离，确保跨平台通信的流畅性与扩展性。\n\nOpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者，以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力（支持 macOS、Linux 及 Windows WSL2），即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你",349277,3,"2026-04-06T06:32:30",[13,14,15,16],"Agent","开发框架","图像","数据工具","ready",{"id":19,"name":20,"github_repo":21,"description_zh":22,"stars":23,"difficulty_score":24,"last_commit_at":25,"category_tags":26,"status":17},9989,"n8n","n8n-io\u002Fn8n","n8n 是一款面向技术团队的公平代码（fair-code）工作流自动化平台，旨在让用户在享受低代码快速构建便利的同时，保留编写自定义代码的灵活性。它主要解决了传统自动化工具要么过于封闭难以扩展、要么完全依赖手写代码效率低下的痛点，帮助用户轻松连接 400 多种应用与服务，实现复杂业务流程的自动化。\n\nn8n 特别适合开发者、工程师以及具备一定技术背景的业务人员使用。其核心亮点在于“按需编码”：既可以通过直观的可视化界面拖拽节点搭建流程，也能随时插入 JavaScript 或 Python 代码、调用 npm 包来处理复杂逻辑。此外，n8n 原生集成了基于 LangChain 的 AI 能力，支持用户利用自有数据和模型构建智能体工作流。在部署方面，n8n 提供极高的自由度，支持完全自托管以保障数据隐私和控制权，也提供云端服务选项。凭借活跃的社区生态和数百个现成模板，n8n 让构建强大且可控的自动化系统变得简单高效。",184740,2,"2026-04-19T23:22:26",[16,14,13,15,27],"插件",{"id":29,"name":30,"github_repo":31,"description_zh":32,"stars":33,"difficulty_score":10,"last_commit_at":34,"category_tags":35,"status":17},10095,"AutoGPT","Significant-Gravitas\u002FAutoGPT","AutoGPT 是一个旨在让每个人都能轻松使用和构建 AI 的强大平台，核心功能是帮助用户创建、部署和管理能够自动执行复杂任务的连续型 AI 智能体。它解决了传统 AI 应用中需要频繁人工干预、难以自动化长流程工作的痛点，让用户只需设定目标，AI 即可自主规划步骤、调用工具并持续运行直至完成任务。\n\n无论是开发者、研究人员，还是希望提升工作效率的普通用户，都能从 AutoGPT 中受益。开发者可利用其低代码界面快速定制专属智能体；研究人员能基于开源架构探索多智能体协作机制；而非技术背景用户也可直接选用预置的智能体模板，立即投入实际工作场景。\n\nAutoGPT 的技术亮点在于其模块化“积木式”工作流设计——用户通过连接功能块即可构建复杂逻辑，每个块负责单一动作，灵活且易于调试。同时，平台支持本地自托管与云端部署两种模式，兼顾数据隐私与使用便捷性。配合完善的文档和一键安装脚本，即使是初次接触的用户也能在几分钟内启动自己的第一个 AI 智能体。AutoGPT 正致力于降低 AI 应用门槛，让人人都能成为 AI 的创造者与受益者。",183572,"2026-04-20T04:47:55",[13,36,27,14,15],"语言模型",{"id":38,"name":39,"github_repo":40,"description_zh":41,"stars":42,"difficulty_score":10,"last_commit_at":43,"category_tags":44,"status":17},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,"2026-04-05T11:01:52",[14,15,13],{"id":46,"name":47,"github_repo":48,"description_zh":49,"stars":50,"difficulty_score":24,"last_commit_at":51,"category_tags":52,"status":17},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",161147,"2026-04-19T23:31:47",[14,13,36],{"id":54,"name":55,"github_repo":56,"description_zh":57,"stars":58,"difficulty_score":24,"last_commit_at":59,"category_tags":60,"status":17},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",109154,"2026-04-18T11:18:24",[14,15,13],{"id":62,"github_repo":63,"name":64,"description_en":65,"description_zh":66,"ai_summary_zh":67,"readme_en":68,"readme_zh":69,"quickstart_zh":70,"use_case_zh":71,"hero_image_url":72,"owner_login":73,"owner_name":74,"owner_avatar_url":75,"owner_bio":76,"owner_company":77,"owner_location":77,"owner_email":77,"owner_twitter":77,"owner_website":78,"owner_url":79,"languages":80,"stars":116,"forks":117,"last_commit_at":118,"license":119,"difficulty_score":120,"env_os":121,"env_gpu":122,"env_ram":123,"env_deps":124,"category_tags":132,"github_topics":133,"view_count":24,"oss_zip_url":77,"oss_zip_packed_at":77,"status":17,"created_at":137,"updated_at":138,"faqs":139,"releases":171},10065,"kubeflow\u002Fkale","kale","Kubeflow’s superfood for Data Scientists","Kale（Kubeflow Automated pipeLines Engine）是专为数据科学家打造的 Kubeflow 增强工具，旨在简化机器学习工作流的部署过程。它就像数据科学领域的“超级食物”，让复杂的流程编排变得轻松可口。\n\n在 Kubernetes 上运行 Kubeflow 虽然功能强大，但直接使用其 SDK 编写和维护流水线对许多专注于模型探索的研究人员来说门槛较高。Kale 完美解决了这一痛点：它允许用户直接在熟悉的 JupyterLab 界面中，通过简单的图形化操作将笔记本代码转化为可复用的 Kubeflow 流水线，全程无需修改任何一行代码。这不仅保留了数据探索的交互性，还实现了从实验到生产部署的无缝衔接。\n\nKale 特别适合需要在交互式环境中进行迭代建模的数据科学家和研究人员，尤其是那些希望利用 Kubernetes 的强大算力，却不希望深陷复杂编排系统细节的用户。其核心亮点在于“零代码转换”能力，自动识别笔记本中的代码块并将其封装为流水线步骤，极大地降低了分布式任务 orchestration 的技术壁垒。目前项目已重启开发并致力于全面兼容最新的 Kubefl","Kale（Kubeflow Automated pipeLines Engine）是专为数据科学家打造的 Kubeflow 增强工具，旨在简化机器学习工作流的部署过程。它就像数据科学领域的“超级食物”，让复杂的流程编排变得轻松可口。\n\n在 Kubernetes 上运行 Kubeflow 虽然功能强大，但直接使用其 SDK 编写和维护流水线对许多专注于模型探索的研究人员来说门槛较高。Kale 完美解决了这一痛点：它允许用户直接在熟悉的 JupyterLab 界面中，通过简单的图形化操作将笔记本代码转化为可复用的 Kubeflow 流水线，全程无需修改任何一行代码。这不仅保留了数据探索的交互性，还实现了从实验到生产部署的无缝衔接。\n\nKale 特别适合需要在交互式环境中进行迭代建模的数据科学家和研究人员，尤其是那些希望利用 Kubernetes 的强大算力，却不希望深陷复杂编排系统细节的用户。其核心亮点在于“零代码转换”能力，自动识别笔记本中的代码块并将其封装为流水线步骤，极大地降低了分布式任务 orchestration 的技术壁垒。目前项目已重启开发并致力于全面兼容最新的 Kubeflow Pipelines v2 版本，为社区带来更现代化的自动化体验。","\u003Cp align=\"center\">\n\u003Cimg alt=\"Kale Logo\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fkubeflow_kale_readme_dec104128fa6.png\" height=\"130\">\n\u003C\u002Fp>\n\u003Cp align=\"center\">\n\u003Ca href=\"#\">\n  \u003Cimg alt=\"GitHub License\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fkubeflow_kale_readme_fe6ee98d7afb.png\">\n\u003C\u002Fa>\n\u003Ca target=\"_blank\" href=\"https:\u002F\u002Fpypi.org\u002Fproject\u002Fkubeflow-kale\u002F\">\n    \u003Cimg alt=\"PyPI Version\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fkubeflow_kale_readme_cb068e70fa19.png\">\n\u003C\u002Fa>\n\u003Ca target=\"_blank\" href=\"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002Fjupyterlab-kubeflow-kale\">\n  \u003Cimg alt=\"npm Version\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fkubeflow_kale_readme_29f371107bc5.png\">\n\u003C\u002Fa>\n\u003Ca target=\"_blank\" href=\"https:\u002F\u002Fgithub.com\u002Fkubeflow\u002Fkale\u002Factions\">\n  \u003Cimg alt=\"Kale CI Workflow Status\" src=\"https:\u002F\u002Fgithub.com\u002Fkubeflow\u002Fkale\u002Fworkflows\u002FCI\u002Fbadge.svg\">\n\u003C\u002Fa>\n\u003C\u002Fp>\n\n---\n\n> [!NOTE]\n> ## Project Status Update 🚀\n>\n> After several years of inactivity, we’re excited to announce that Kale development has restarted! 🎉\n> Kale was widely appreciated by the community back in the day, and our current goal is to re-establish a solid baseline by updating all components to the latest versions and ensuring full compatibility with the most recent Kubeflow releases.\n>\n> See all details in the [**Road to 2.0 issue**](https:\u002F\u002Fgithub.com\u002Fkubeflow-kale\u002Fkale\u002Fissues\u002F457)\n\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 of\nKubernetes, and Kubeflow Pipelines provide the means to create reusable components\nthat can be executed as part of workflows. The self-service nature of Kubeflow\nmakes 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 your JupyterLab interface, without the need to change a\nsingle line of code.\n\nSee the `Kale v2.0 Demo` video at the bottom of the `README` for more details.\n\nRead more about Kale and how it works in this Medium post:\n[Automating Jupyter Notebook Deployments to Kubeflow Pipelines with Kale](https:\u002F\u002Fmedium.com\u002Fkubeflow\u002Fautomating-jupyter-notebook-deployments-to-kubeflow-pipelines-with-kale-a4ede38bea1f)\n\n## Getting started\n\n### Requirements\n\n- **Python 3.11+**\n- **Kubeflow Pipelines v2.16.0+**\n     - The `securityContext` field in the Kubernetes executor config is not recognized by older KFP servers (`kfp[kubernetes] \u003C 2.16.0`), causing pipeline submission to fail.\n     - Install KFP as recommended in the official [Kubeflow Pipelines Installation](https:\u002F\u002Fwww.kubeflow.org\u002Fdocs\u002Fcomponents\u002Fpipelines\u002Foperator-guides\u002Finstallation\u002F) documentation (make sure to set `PIPELINE_VERSION=2.16.0` or later)\n     - If you are upgrading from an earlier version, make sure you have `kfp[kubernetes]>=2.16.0` in your dependencies along with `kfp>=2.0.0`\n- A Kubernetes cluster (`minikube`, `kind`, or any K8s cluster)\n\n### Installation\n\n> [!IMPORTANT]\n> **Kale v2.0 is not yet released on PyPI.** Until then, install from source:\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fkubeflow-kale\u002Fkale.git\ncd kale\nmake dev      # Set up development environment\nmake jupyter  # Start JupyterLab\n```\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md) for detailed setup instructions.\n\nOnce v2.0 is released, you'll be able to install from PyPI:\n\n```bash\npip install \"jupyterlab>=4.0.0\" kubeflow-kale[jupyter]\njupyter lab\n```\n\n### Verify installation\n\n1. **Start your Kubernetes cluster and KFP:**\n   ```bash\n   minikube start\n   kubectl port-forward -n kubeflow svc\u002Fml-pipeline-ui 8080:80\n   ```\n\n2. **Test the CLI:**\n   ```bash\n   kale --nb examples\u002Fbase\u002Fcandies_sharing.ipynb --kfp_host http:\u002F\u002F127.0.0.1:8080 --run_pipeline\n   ```\n   This generates a pipeline in `.kale\u002F` and submits it to KFP.\n\n3. **Test the JupyterLab extension:**\n   - Open JupyterLab (`make jupyter` or `jupyter lab`)\n   - Open a notebook from `examples\u002Fbase\u002F`\n   - Click the Kale icon in the left panel\n   - Enable the Kale panel with the toggle\n\n\u003Cimg alt=\"Kale JupyterLab Extension\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fkubeflow_kale_readme_8b752f18af0c.png\"\u002F>\n\n## Docker (Local Testing)\n\nYou can test Kale in a Kubeflow-like notebook environment using Docker. The image\nis based on the official Kubeflow notebook image (`jupyter-scipy`) with Kale\npre-installed.\n\n```bash\nmake docker-build   # Build wheels + Docker image\nmake docker-run     # Start JupyterLab on http:\u002F\u002Flocalhost:8889\n```\n\nTo connect to a KFP cluster, run these in separate terminals:\n\n```bash\n# Terminal 1: Serve the dev wheel (so compiled pipelines can install Kale)\nmake kfp-serve\n\n# Terminal 2: Port-forward the KFP API\nkubectl port-forward -n kubeflow svc\u002Fml-pipeline 8080:8888\n\n# Terminal 3: Start the container\nmake docker-run\n```\n\n`make docker-run` automatically configures:\n- **KFP API** via `host.docker.internal` (works on macOS, Windows, and Linux)\n- **KFP UI links** pointing to `localhost:8080` (so pipeline links open in your browser)\n- **Wheel server** connectivity for compiled pipelines\n\n## Cell Types\n\nKale uses special cell types (tags) to organize your notebook into pipeline components. You can assign these types to cells using the Kale JupyterLab extension or by adding tags directly in the notebook metadata.\n\n### Cell Types Reference\n\n| Cell Type | Status | Description |\n|-----------|--------|-------------|\n| **Imports** | ✅ Works | The code in this cell will be pre-pended to every step of the pipeline. Used for all import statements. **All imports must be placed in cells tagged as `imports`.** Importing libraries (pandas, tensorflow, etc.) in other cell types will cause pipeline execution errors. |\n| **Functions** | ✅ Works |The code in this cell will be pre-pended to every step of the pipeline, after **imports**. Used for function and class definitions only.  **Do not include** top-level executable statements |\n| **Pipeline Parameters** | ✅ Works | Define variables that will become pipeline parameters. If more than one Pipeline Parameters cell exists, and a parameter is defined in each cell, only the final value will be taken.|\n| **Pipeline Metrics** | ✅ Works | Print scalar metrics and transform it into pipeline metrics. |\n| **Step** | ✅ Works | Regular pipeline steps with custom names. This is the default cell type for your data processing and ML logic. Each step can have dependencies on other steps. Steps can also define their own image and GPU requirements. |\n| **Skip Cell** | ✅ Works | Cells marked as skip will be excluded from the pipeline. Useful for exploratory code or debugging that shouldn't be part of the production pipeline. |\n\n### Important Guidelines\n\n> [!WARNING]\n> **Imports outside `Imports` cells won't be detected for automatic dependency installation, which causes ImportError at runtime if the package isn't pre-installed in the container image.**\n\n\n**Best Practices:**\n- Place all imports at the beginning of your notebook in cells tagged as `Imports`\n- Keep function definitions pure - no side effects (modifying global variables or mutable parameters), prints, or imports\n- Use `pipeline-parameters` for values you might want to tune between runs\n- Use `skip` cells for exploratory analysis that shouldn't be in the pipeline\n\n### Example\n\nCheck out the example notebooks at `examples\u002F` to see cell types in action.\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:\u002F\u002Fmedium.com\u002Fkubeflow\u002Fautomating-jupyter-notebook-deployments-to-kubeflow-pipelines-with-kale-a4ede38bea1f)\n- KubeCon NA Tutorial 2019: [From Notebook to Kubeflow Pipelines: An End-to-End Data Science Workflow](https:\u002F\u002Fkccncna19.sched.com\u002Fevent\u002FUaeq\u002Ftutorial-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&w=100%&sidebar=yes&bg=no)\n  \u002F [video](http:\u002F\u002Fyoutube.com\u002Fwatch?v=C9rJzTzVzvQ)\n- KubeCon EU Tutorial 2020: [From Notebook to Kubeflow Pipelines with HP Tuning: A Data Science Journey](https:\u002F\u002Fkccnceu20.sched.com\u002Fevent\u002FZerG\u002Ftutorial-from-notebook-to-kubeflow-pipelines-with-hp-tuning-a-data-science-journey-stefano-fioravanzo-ilias-katsakioris-arrikto)\n  \u002F [video](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=QK0NxhyADpM)\n\n## Contribute\n\n```bash\nmake dev      # Set up development environment\nmake test     # Run all tests\nmake jupyter  # Start JupyterLab\n```\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md) for detailed development instructions, including:\n- Available make commands\n- Testing with KFP clusters\n- Building release artifacts\n- Live reload setup\n\n#### Kale v2.0 Demo\nWatch the KubeFlow Kale Demo - Introduction video below.\n\n[![Demo](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fkubeflow_kale_readme_ee6ee1edc8c0.jpg)](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=UGLJuqJqJYY)\n","\u003Cp align=\"center\">\n\u003Cimg alt=\"Kale Logo\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fkubeflow_kale_readme_dec104128fa6.png\" height=\"130\">\n\u003C\u002Fp>\n\u003Cp align=\"center\">\n\u003Ca href=\"#\">\n  \u003Cimg alt=\"GitHub License\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fkubeflow_kale_readme_fe6ee98d7afb.png\">\n\u003C\u002Fa>\n\u003Ca target=\"_blank\" href=\"https:\u002F\u002Fpypi.org\u002Fproject\u002Fkubeflow-kale\u002F\">\n    \u003Cimg alt=\"PyPI Version\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fkubeflow_kale_readme_cb068e70fa19.png\">\n\u003C\u002Fa>\n\u003Ca target=\"_blank\" href=\"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002Fjupyterlab-kubeflow-kale\">\n  \u003Cimg alt=\"npm Version\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fkubeflow_kale_readme_29f371107bc5.png\">\n\u003C\u002Fa>\n\u003Ca target=\"_blank\" href=\"https:\u002F\u002Fgithub.com\u002Fkubeflow\u002Fkale\u002Factions\">\n  \u003Cimg alt=\"Kale CI Workflow Status\" src=\"https:\u002F\u002Fgithub.com\u002Fkubeflow\u002Fkale\u002Fworkflows\u002FCI\u002Fbadge.svg\">\n\u003C\u002Fa>\n\u003C\u002Fp>\n\n---\n\n> [!NOTE]\n> ## 项目状态更新 🚀\n>\n> 经过数年暂停后，我们很高兴地宣布 Kale 的开发已重新启动！🎉\n> 当年，Kale 曾广受社区好评。如今，我们的目标是通过将所有组件更新至最新版本，并确保与最新 Kubeflow 发布版本完全兼容，重新建立一个稳固的基础。\n>\n> 更多详情请参阅 [**迈向 2.0 版本的议题**](https:\u002F\u002Fgithub.com\u002Fkubeflow-kale\u002Fkale\u002Fissues\u002F457)\n\n\n\n\nKALE（Kubeflow 自动化流水线引擎）是一个旨在简化数据科学人员部署 Kubeflow Pipelines 工作流体验的项目。\nKubeflow 是一个优秀的平台，用于在 Kubernetes 上编排复杂的流程；而 Kubeflow Pipelines 则提供了创建可重用组件的方法，这些组件可以作为工作流的一部分执行。Kubeflow 的自助服务特性使其对数据科学领域极具吸引力，因为它能够轻松访问高级分布式作业编排、组件复用、Jupyter Notebook、丰富的用户界面等功能。然而，对于可能不熟悉编排平台及相关 SDK 的数据科学家来说，开发和维护 Kubeflow 工作流仍然颇具挑战性。此外，数据科学通常涉及数据探索、迭代建模以及交互式环境（主要是 Jupyter Notebook）等环节。\nKale 通过提供一个简单的 UI，使用户可以直接从 JupyterLab 界面定义 Kubeflow Pipelines 工作流，而无需修改任何代码行，从而弥合了这一差距。\n\n更多详细信息，请参阅 `README` 底部的 `Kale v2.0 演示` 视频。\n有关 Kale 及其工作原理的更多信息，请阅读这篇 Medium 文章：\n[使用 Kale 将 Jupyter Notebook 部署自动化到 Kubeflow Pipelines](https:\u002F\u002Fmedium.com\u002Fkubeflow\u002Fautomating-jupyter-notebook-deployments-to-kubeflow-pipelines-with-kale-a4ede38bea1f)\n\n## 开始使用\n\n### 要求\n\n- **Python 3.11+**\n- **Kubeflow Pipelines v2.16.0+**\n     - 较旧的 KFP 服务器（`kfp[kubernetes] \u003C 2.16.0`）无法识别 Kubernetes 执行器配置中的 `securityContext` 字段，这会导致流水线提交失败。\n     - 按照官方 [Kubeflow Pipelines 安装文档](https:\u002F\u002Fwww.kubeflow.org\u002Fdocs\u002Fcomponents\u002Fpipelines\u002Foperator-guides\u002Finstallation\u002F) 中的建议安装 KFP（请确保设置 `PIPELINE_VERSION=2.16.0` 或更高版本）。\n     - 如果您是从早期版本升级而来，请确保您的依赖项中包含 `kfp[kubernetes]>=2.16.0` 和 `kfp>=2.0.0`。\n- 一个 Kubernetes 集群（`minikube`、`kind` 或任何 K8s 集群）\n\n### 安装\n\n> [!IMPORTANT]\n> **Kale v2.0 尚未发布到 PyPI。** 在此之前，请从源代码安装：\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fkubeflow-kale\u002Fkale.git\ncd kale\nmake dev      # 设置开发环境\nmake jupyter  # 启动 JupyterLab\n```\n\n详细的设置说明请参阅 [CONTRIBUTING.md](CONTRIBUTING.md)。\n待 v2.0 发布后，您即可通过 PyPI 安装：\n\n```bash\npip install \"jupyterlab>=4.0.0\" kubeflow-kale[jupyter]\njupyter lab\n```\n\n### 验证安装\n\n1. **启动您的 Kubernetes 集群和 KFP：**\n   ```bash\n   minikube start\n   kubectl port-forward -n kubeflow svc\u002Fml-pipeline-ui 8080:80\n   ```\n\n2. **测试命令行工具：**\n   ```bash\n   kale --nb examples\u002Fbase\u002Fcandies_sharing.ipynb --kfp_host http:\u002F\u002F127.0.0.1:8080 --run_pipeline\n   ```\n   这将生成一个 `.kale\u002F` 目录下的流水线文件，并将其提交到 KFP。\n\n3. **测试 JupyterLab 扩展：**\n   - 打开 JupyterLab（运行 `make jupyter` 或 `jupyter lab`）\n   - 打开 `examples\u002Fbase\u002F` 中的一个笔记本\n   - 点击左侧面板中的 Kale 图标\n   - 使用切换按钮启用 Kale 面板\n\n\u003Cimg alt=\"Kale JupyterLab 扩展\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fkubeflow_kale_readme_8b752f18af0c.png\"\u002F>\n\n## Docker（本地测试）\n\n您可以通过 Docker 在类似 Kubeflow 的 Notebook 环境中测试 Kale。该镜像基于官方的 Kubeflow Notebook 镜像（`jupyter-scipy`），并预先安装了 Kale。\n\n```bash\nmake docker-build   # 构建 wheel 文件 + Docker 镜像\nmake docker-run     # 在 http:\u002F\u002Flocalhost:8889 启动 JupyterLab\n```\n\n要连接到 KFP 集群，请在不同的终端中分别运行以下命令：\n\n```bash\n# 终端 1：提供开发版 wheel 文件服务（以便编译后的流水线可以安装 Kale）\nmake kfp-serve\n\n# 终端 2：转发 KFP API 端口\nkubectl port-forward -n kubeflow svc\u002Fml-pipeline 8080:8888\n\n# 终端 3：启动容器\nmake docker-run\n```\n\n`make docker-run` 会自动配置：\n- **KFP API** 通过 `host.docker.internal` 访问（适用于 macOS、Windows 和 Linux）\n- **KFP UI 链接** 指向 `localhost:8080`（以便流水线链接能在浏览器中打开）\n- **Wheel 服务器** 连通性，方便编译后的流水线安装\n\n## 单元格类型\n\nKale 使用特殊的单元格类型（标签）来将您的笔记本组织成流水线组件。您可以使用 Kale 的 JupyterLab 扩展，或直接在笔记本元数据中添加标签，为单元格分配这些类型。\n\n### 细胞类型参考\n\n| 细胞类型 | 状态 | 描述 |\n|-----------|--------|-------------|\n| **导入** | ✅ 正常工作 | 该细胞中的代码将在流水线的每一步之前插入。用于所有导入语句。**所有导入必须放在标记为 `imports` 的细胞中。** 在其他类型的细胞中导入库（pandas、tensorflow 等）会导致流水线执行错误。 |\n| **函数** | ✅ 正常工作 | 该细胞中的代码将在 **imports** 之后，插入到流水线的每一步之前。仅用于函数和类的定义。**请勿包含** 顶级可执行语句 |\n| **流水线参数** | ✅ 正常工作 | 定义将成为流水线参数的变量。如果存在多个流水线参数细胞，并且每个细胞都定义了一个参数，则仅采用最终值。|\n| **流水线指标** | ✅ 正常工作 | 打印标量指标并将其转换为流水线指标。 |\n| **步骤** | ✅ 正常工作 | 具有自定义名称的常规流水线步骤。这是您数据处理和机器学习逻辑的默认细胞类型。每个步骤可以依赖于其他步骤。步骤也可以定义自己的镜像和 GPU 要求。 |\n| **跳过细胞** | ✅ 正常工作 | 标记为跳过的细胞将被排除在流水线之外。适用于探索性代码或调试，这些内容不应成为生产流水线的一部分。 |\n\n### 重要指南\n\n> [!WARNING]\n> **不在 `Imports` 细胞中的导入将不会被检测以进行自动依赖项安装，这会导致运行时出现 ImportError，如果容器镜像中未预先安装该包。**\n\n\n**最佳实践：**\n- 将所有导入放在笔记本的开头，并置于标记为 `Imports` 的细胞中\n- 保持函数定义的纯粹性——无副作用（修改全局变量或可变参数）、打印或导入\n- 使用 `pipeline-parameters` 来存储您可能希望在不同运行之间调整的值\n- 使用 `skip` 细胞来进行不应包含在流水线中的探索性分析\n\n### 示例\n\n请查看 `examples\u002F` 中的示例笔记本，以了解细胞类型的实际应用。\n\n## 常见问题解答\n\n请前往 [FAQ](FAQ.md) 阅读一些已知问题以及 Kale 数据编排模型所施加的一些限制。\n\n## 资源\n\n- Kale 介绍博客文章：[从笔记本到 Kubeflow 流水线：端到端数据科学工作流](https:\u002F\u002Fkccncna19.sched.com\u002Fevent\u002FUaeq\u002Ftutorial-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&w=100%&sidebar=yes&bg=no)\n  \u002F [视频](http:\u002F\u002Fyoutube.com\u002Fwatch?v=C9rJzTzVzvQ)\n- KubeCon NA 2019 教程：[从笔记本到 Kubeflow 流水线：端到端数据科学工作流](https:\u002F\u002Fkccncna19.sched.com\u002Fevent\u002FUaeq\u002Ftutorial-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&w=100%&sidebar=yes&bg=no)\n  \u002F [视频](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=QK0NxhyADpM)\n\n- KubeCon EU 2020 教程：[从笔记本到 Kubeflow 流水线并结合超参数调优：数据科学之旅](https:\u002F\u002Fkccnceu20.sched.com\u002Fevent\u002FZerG\u002Ftutorial-from-notebook-to-kubeflow-pipelines-with-hp-tuning-a-data-science-journey-stefano-fioravanzo-ilias-katsakioris-arrikto)\n  \u002F [视频](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=QK0NxhyADpM)\n\n## 贡献\n\n```bash\nmake dev      # 设置开发环境\nmake test     # 运行所有测试\nmake jupyter  # 启动 JupyterLab\n```\n\n请参阅 [CONTRIBUTING.md](CONTRIBUTING.md)，获取详细的开发说明，包括：\n- 可用的 make 命令\n- 使用 KFP 集群进行测试\n- 构建发布工件\n- 实时重载设置\n\n#### Kale v2.0 演示\n观看下方 Kubeflow Kale 演示——入门视频。\n\n[![演示](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fkubeflow_kale_readme_ee6ee1edc8c0.jpg)](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=UGLJuqJqJYY)","# Kale 快速上手指南\n\nKale (Kubeflow Automated pipeLines Engine) 是一个旨在简化数据科学家部署 Kubeflow Pipelines 工作流体验的开源工具。它允许你直接在 JupyterLab 界面中定义工作流，无需编写额外的编排代码。\n\n> **注意**：Kale v2.0 目前尚未发布到 PyPI，以下指南基于源码安装方式（开发版）。\n\n## 1. 环境准备\n\n在开始之前，请确保你的环境满足以下要求：\n\n*   **Python**: 版本 3.11 或更高\n*   **Kubernetes 集群**: 本地测试推荐使用 `minikube` 或 `kind`，也可使用任意 K8s 集群\n*   **Kubeflow Pipelines (KFP)**: 版本 v2.16.0 或更高\n    *   *重要*：旧版本 KFP 服务器无法识别 executor config 中的 `securityContext` 字段，会导致提交失败。\n    *   请确保安装 `kfp[kubernetes]>=2.16.0` 和 `kfp>=2.0.0`。\n*   **构建工具**: 需要安装 `make` 和 `git`\n\n## 2. 安装步骤\n\n由于 v2.0 暂未发布，需从源代码克隆并设置开发环境。\n\n### 第一步：克隆源码并设置环境\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fkubeflow-kale\u002Fkale.git\ncd kale\nmake dev      # 设置开发环境（安装依赖）\n```\n\n### 第二步：启动 JupyterLab\n\n```bash\nmake jupyter  # 启动集成了 Kale 插件的 JupyterLab\n```\n\n> 如果后续 v2.0 正式发布，你将可以通过 pip 直接安装：\n> `pip install \"jupyterlab>=4.0.0\" kubeflow-kale[jupyter]`\n\n## 3. 基本使用\n\n### 场景 A：通过命令行快速测试\n\n如果你已有一个运行中的 KFP 集群，可以使用示例 Notebook 快速验证安装。\n\n1.  **启动集群并端口转发**（以 minikube 为例）：\n    ```bash\n    minikube start\n    kubectl port-forward -n kubeflow svc\u002Fml-pipeline-ui 8080:80\n    ```\n\n2.  **运行 CLI 命令**：\n    该命令会将示例 Notebook 转换为 Pipeline 并提交到 KFP。\n    ```bash\n    kale --nb examples\u002Fbase\u002Fcandies_sharing.ipynb --kfp_host http:\u002F\u002F127.0.0.1:8080 --run_pipeline\n    ```\n    生成的 Pipeline 文件将保存在 `.kale\u002F` 目录下。\n\n### 场景 B：在 JupyterLab 中可视化构建\n\n这是 Kale 的核心用法，无需编写额外代码即可将 Notebook 转换为 Pipeline。\n\n1.  **打开 Notebook**：\n    在启动的 JupyterLab 中，打开 `examples\u002Fbase\u002F` 目录下的任意 Notebook（如 `candies_sharing.ipynb`）。\n\n2.  **启用 Kale 面板**：\n    点击左侧边栏的 **Kale 图标**，并通过开关启用面板。\n\n3.  **标记单元格类型 (Cell Types)**：\n    Kale 通过给代码单元格打标签（Tags）来区分 Pipeline 的不同部分。选中单元格，在右侧属性面板或 Kale 面板中设置以下类型：\n\n    | 单元格类型 | 用途说明 | 最佳实践 |\n    | :--- | :--- | :--- |\n    | **Imports** | 存放所有 `import` 语句 | **必须**将所有库导入放在此类单元格中，否则可能导致运行时错误。 |\n    | **Functions** | 存放函数和类定义 | 仅包含定义，不要包含执行逻辑或打印语句。 |\n    | **Pipeline Parameters** | 定义超参数或变量 | 用于在不同运行之间调整数值。 |\n    | **Step** | 核心业务逻辑 | 默认类型。包含数据处理和模型训练代码。每个 Step 可独立配置依赖、镜像或 GPU。 |\n    | **Skip Cell** | 跳过执行 | 用于探索性代码或调试，不会包含在最终 Pipeline 中。 |\n\n4.  **编译与运行**：\n    在 Kale 面板中点击 **Compile** 生成 Pipeline 预览，确认无误后点击 **Run** 直接提交到 Kubeflow Pipelines。\n\n### 本地 Docker 测试（可选）\n\n如果你没有现成的 KFP 环境，可以使用 Docker 模拟完整流程：\n\n```bash\n# 构建包含 Kale 的 Docker 镜像\nmake docker-build\n\n# 启动容器 (JupyterLab 运行在 http:\u002F\u002Flocalhost:8889)\nmake docker-run\n```\n\n*注：若需连接外部 KFP 集群，需在额外终端运行 `make kfp-serve` 和 `kubectl port-forward`。*","某电商公司的数据科学团队正在基于 Jupyter Notebook 迭代开发一个用户流失预测模型，并需要将其部署为可重复执行的自动化流程。\n\n### 没有 kale 时\n- **代码重构负担重**：数据科学家必须手动将探索性的 Notebook 代码拆解为独立的 Python 脚本，并重新编写大量样板代码以适配 Kubeflow Pipelines SDK。\n- **运维门槛高**：团队成员需深入学习 Kubernetes 配置和管道编排逻辑，非专家往往因环境配置错误导致部署失败。\n- **迭代效率低下**：每次调整模型参数或特征工程逻辑后，都需重复“修改代码 - 重新打包 - 上传管道”的繁琐过程，严重拖慢实验节奏。\n- **协作断层明显**：交互式探索环境与生产级管道之间存在巨大鸿沟，导致模型从实验到上线的周期长达数周。\n\n### 使用 kale 后\n- **零代码迁移**：直接在 JupyterLab 界面中通过注释标记代码块，kale 自动将 Notebook 转换为标准的 Kubeflow 管道，无需改动原有逻辑。\n- **自助式部署**：提供直观的 UI 配置资源限额和依赖关系，数据科学家无需精通 K8s 即可一键提交复杂的工作流。\n- **敏捷迭代闭环**：修改 Notebook 后立即重新生成管道版本，将原本数小时的部署工作缩短至分钟级，大幅提升实验频率。\n- **无缝衔接生产**：消除了探索环境与生产环境的差异，确保模型在开发阶段的行为与线上运行完全一致，加速价值交付。\n\nkale 的核心价值在于让数据科学家专注于算法创新，而非被复杂的工程化部署流程所束缚。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fkubeflow_kale_dec10412.png","kubeflow","Kubeflow","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fkubeflow_2a631e53.png","Kubeflow is an open, community driven project to make it easy to deploy and manage an ML stack on Kubernetes",null,"https:\u002F\u002Fkubeflow.org","https:\u002F\u002Fgithub.com\u002Fkubeflow",[81,85,89,92,96,100,104,108,112],{"name":82,"color":83,"percentage":84},"Python","#3572A5",57.6,{"name":86,"color":87,"percentage":88},"TypeScript","#3178c6",36,{"name":90,"color":91,"percentage":24},"CSS","#663399",{"name":93,"color":94,"percentage":95},"Makefile","#427819",1.7,{"name":97,"color":98,"percentage":99},"JavaScript","#f1e05a",1.1,{"name":101,"color":102,"percentage":103},"Jinja","#a52a22",0.9,{"name":105,"color":106,"percentage":107},"Jupyter Notebook","#DA5B0B",0.3,{"name":109,"color":110,"percentage":111},"Shell","#89e051",0.2,{"name":113,"color":114,"percentage":115},"Dockerfile","#384d54",0.1,683,156,"2026-04-18T13:00:25","Apache-2.0",5,"Linux, macOS, Windows","非必需（步骤单元格可自定义 GPU 需求）","未说明",{"notes":125,"python":126,"dependencies":127},"需要 Kubernetes 集群（如 minikube, kind）和 Kubeflow Pipelines v2.16.0+ 环境。Kale v2.0 尚未发布到 PyPI，目前需从源码安装。所有导入语句必须放在标记为'imports'的单元格中，否则会导致运行时错误。支持通过 Docker 进行本地测试。","3.11+",[128,129,130,131],"kubeflow-kale","jupyterlab>=4.0.0","kfp[kubernetes]>=2.16.0","kfp>=2.0.0",[14,16],[73,134,135,136],"kubeflow-pipelines","jupyter-notebook","machine-learning","2026-03-27T02:49:30.150509","2026-04-20T16:47:47.179354",[140,145,149,153,158,163,167],{"id":141,"question_zh":142,"answer_zh":143,"source_url":144},45221,"使用 KFP 1.0 SDK 编译 Notebook 时出现 'Argo-incompatible workflow' 或 JSON 解析错误怎么办？","这通常是因为环境中安装的 Argo 版本与 KFP 编译器不兼容。KFP 编译器会在环境变量 PATH 中找到 `argo` 二进制文件时执行 `argo lint`。解决方法是安装 KFP 团队支持的 Argo 版本（通常是 2.4.3）。请检查您的 Argo 版本并将其调整为兼容版本。","https:\u002F\u002Fgithub.com\u002Fkubeflow\u002Fkale\u002Fissues\u002F234",{"id":146,"question_zh":147,"answer_zh":148,"source_url":144},45222,"运行工作流时出现 'kale module not found' 错误是什么原因？","这是因为您使用了通用的 Python 镜像作为基础镜像，但工作流的步骤中调用了 `kale` 模块。如果基础镜像中没有安装 kale，步骤将无法运行。请确保使用包含 kale 依赖的基础镜像，或者在自定义 Dockerfile 中显式安装 kale 模块。",{"id":150,"question_zh":151,"answer_zh":152,"source_url":144},45223,"在使用 Tekton 后端开发 Kubeflow Pipeline 时，关于文件输出路径有什么最佳实践？","在 Tekton 后端中，工件和参数输出文件会被挂载到卷路径然后推送到 S3。不建议将卷挂载在容器的根目录 (\u002F) 上，因为这会覆盖容器路径中的所有文件（包括系统文件和二进制文件）。Tekton 编译器已禁止将输出文件放在根目录。建议将输出文件放在根目录下的一个新目录中以避免此问题。",{"id":154,"question_zh":155,"answer_zh":156,"source_url":157},45224,"如何在 GKE 上正确安装 Kale 以避免 PVC 绑定失败或扩展版本过旧的问题？","请确保使用特定的镜像标签和分支。推荐使用 `gcr.io\u002Farrikto-public\u002Ftensorflow-1.14.0-notebook-cpu:kubecon-workshop` 镜像。该镜像基于特定的 Kubeflow 镜像，并预装了 Rok、最新版的 KFP 以及来自 `kubecon-workshop` 分支的 Kale 和 Kale JupyterLab 扩展。安装后请运行 `jupyter lab` 而不是 `jupyter notebook`。如果自行构建，请确保从 `kubecon-workshop` 分支安装 kale 包和扩展，而不是 master 分支。","https:\u002F\u002Fgithub.com\u002Fkubeflow\u002Fkale\u002Fissues\u002F18",{"id":159,"question_zh":160,"answer_zh":161,"source_url":162},45225,"在本地 Kubernetes 集群部署 Kale 时遇到 'compile_notebook() got an unexpected keyword argument' RPC 错误如何解决？","这通常是由于 Kale 后端版本与前端扩展版本不匹配导致的。如果您是通过 Dockerfile 手动安装，请确保后端代码（通过 setup.py 安装）和前端扩展（jupyter labextension）的版本一致。有时需要重新构建镜像以确保所有组件同步更新到兼容版本。","https:\u002F\u002Fgithub.com\u002Fkubeflow\u002Fkale\u002Fissues\u002F204",{"id":164,"question_zh":165,"answer_zh":166,"source_url":162},45226,"在多用户环境中使用 Kale 时遇到权限错误或命名空间为空（Namespace is empty）的问题怎么处理？","单用户部署通常依赖命名空间为 `kubeflow`。如果使用其他命名空间（如 `anonymous` 或 `test`），会导致权限问题或无法列出实验。建议在单用户模式下重新部署 Kubeflow，并在提示创建命名空间时确保设置为 `kubeflow`。如果需要支持多用户，建议部署带有 DEX 认证的 Kubeflow，这样可以正确管理不同用户的命名空间和权限。此外，可能需要调整 ServiceRoleBinding 配置以授予必要的 RBAC 权限。",{"id":168,"question_zh":169,"answer_zh":170,"source_url":144},45227,"Kale 支持 Python 3.8 吗？如果遇到 ml-metadata 相关错误怎么办？","ml-metadata 从 0.24 版本开始支持 Python 3.8。如果您遇到相关兼容性错误，请确保安装了正确版本的 ml-metadata。维护者建议如果当前发布版本尚未完全支持，可以尝试从 `master` 分支安装 Kale 以获取最新的兼容性修复。",[172,177,182,187,192,197,202,207,212,217],{"id":173,"version":174,"summary_zh":175,"released_at":176},360085,"v2.0.0rc1","## 变更内容\n* 构建(依赖项)：由 @dependabot[bot] 在 https:\u002F\u002Fgithub.com\u002Fkubeflow\u002Fkale\u002Fpull\u002F705 中将 pyasn1 从 0.6.2 升级至 0.6.3\n* 由 @github-actions[bot] 在 https:\u002F\u002Fgithub.com\u002Fkubeflow\u002Fkale\u002Fpull\u002F717 中将开发版本升级至 2.0.0a6\n* @CodeVishal-17 在 https:\u002F\u002Fgithub.com\u002Fkubeflow\u002Fkale\u002Fpull\u002F696 中改进了当 KFP 服务器不支持 securityContext 时的错误提示信息\n* 构建(依赖项)：由 @dependabot[bot] 在 https:\u002F\u002Fgithub.com\u002Fkubeflow\u002Fkale\u002Fpull\u002F690 中将 tornado 从 6.5.4 升级至 6.5.5\n* 构建(依赖项)：由 @dependabot[bot] 在 https:\u002F\u002Fgithub.com\u002Fkubeflow\u002Fkale\u002Fpull\u002F679 中将 \u002Flabextension\u002Fui-tests 目录下的 tar 从 7.5.10 升级至 7.5.11\n* 修复(后端)：由 @ai-naymul 在 https:\u002F\u002Fgithub.com\u002Fkubeflow\u002Fkale\u002Fpull\u002F678 中使用 JSON 格式进行 xgboost 模型的序列化\n* 构建(依赖项)：由 @dependabot[bot] 在 https:\u002F\u002Fgithub.com\u002Fkubeflow\u002Fkale\u002Fpull\u002F728 中将 requests 从 2.32.5 升级至 2.33.0\n* 构建(ci)：由 @ederign 在 https:\u002F\u002Fgithub.com\u002Fkubeflow\u002Fkale\u002Fpull\u002F725 中将 GitHub Actions 锁定到特定的提交 SHA\n* 构建(依赖项)：由 @dependabot[bot] 在 https:\u002F\u002Fgithub.com\u002Fkubeflow\u002Fkale\u002Fpull\u002F732 中将 \u002Flabextension\u002Fui-tests 目录下的 brace-expansion 从 5.0.3 升级至 5.0.5\n* 功能(前端)：由 @alikhere 在 https:\u002F\u002Fgithub.com\u002Fkubeflow\u002Fkale\u002Fpull\u002F685 中在 JupyterLab 中添加 Kale 设置，默认启用，并在编译\u002F运行时自动保存选项\n* @jesuino 在 https:\u002F\u002Fgithub.com\u002Fkubeflow\u002Fkale\u002Fpull\u002F730 中提出，当前步骤之后定义的步骤不应显示为可能的依赖项\n* 修复：当表单验证出错时禁用部署按钮，并显示友好的错误提示信息，由 @Ya-shh 在 https:\u002F\u002Fgithub.com\u002Fkubeflow\u002Fkale\u002Fpull\u002F608 中完成\n* 构建(依赖项)：由 @dependabot[bot] 在 https:\u002F\u002Fgithub.com\u002Fkubeflow\u002Fkale\u002Fpull\u002F724 中将 \u002Flabextension\u002Fui-tests 目录下的 picomatch 从 2.3.1 升级至 2.3.2\n* 构建(依赖项)：由 @dependabot[bot] 在 https:\u002F\u002Fgithub.com\u002Fkubeflow\u002Fkale\u002Fpull\u002F734 中将 cryptography 从 46.0.5 升级至 46.0.6\n* 由 @hmtosi 发布 v2.0.0rc1 版本，在 https:\u002F\u002Fgithub.com\u002Fkubeflow\u002Fkale\u002Fpull\u002F740 中\n\n## 新贡献者\n* @github-actions[bot] 在 https:\u002F\u002Fgithub.com\u002Fkubeflow\u002Fkale\u002Fpull\u002F717 中做出了首次贡献\n\n**完整变更日志**：https:\u002F\u002Fgithub.com\u002Fkubeflow\u002Fkale\u002Fcompare\u002Fv2.0.0a5...v2.0.0rc1","2026-04-02T21:05:31",{"id":178,"version":179,"summary_zh":180,"released_at":181},360086,"v2.0.0a5","## 变更内容\n* 功能：在 Kale 中添加 KFP 状态图标，由 @Ya-shh 在 https:\u002F\u002Fgithub.com\u002Fkubeflow\u002Fkale\u002Fpull\u002F645 中实现。\n* 修复（labextension）：为 onPanelRemove 添加检查，防止 deploys[index] 不存在的情况，由 @alikhere 在 https:\u002F\u002Fgithub.com\u002Fkubeflow\u002Fkale\u002Fpull\u002F666 中实现。\n* 修复（前端）：将流水线元数据更改持久化到笔记本文件中，由 @ai-naymul 在 https:\u002F\u002Fgithub.com\u002Fkubeflow\u002Fkale\u002Fpull\u002F642 中实现。\n* 为自动版本号提升的 PR 添加 DCO 签署，由 @ederign 在 https:\u002F\u002Fgithub.com\u002Fkubeflow\u002Fkale\u002Fpull\u002F692 中实现。\n* 将开发版本升级至 2.0.0a5，由 @ederign 在 https:\u002F\u002Fgithub.com\u002Fkubeflow\u002Fkale\u002Fpull\u002F693 中完成。\n* 修复（后端）：在 read_json_from_file 中关闭文件句柄，由 @ai-naymul 在 https:\u002F\u002Fgithub.com\u002Fkubeflow\u002Fkale\u002Fpull\u002F658 中实现。\n* 问题 686：将 kfp 文档更新至 2.16.0 版本，由 @hmtosi 在 https:\u002F\u002Fgithub.com\u002Fkubeflow\u002Fkale\u002Fpull\u002F694 中完成。\n* 升级端到端测试，由 @ada333 在 https:\u002F\u002Fgithub.com\u002Fkubeflow\u002Fkale\u002Fpull\u002F689 中实现。\n* 问题 636：实现 UI 测试，由 @hmtosi 在 https:\u002F\u002Fgithub.com\u002Fkubeflow\u002Fkale\u002Fpull\u002F660 中完成。\n* 移除自动保存功能，并在笔记本处于运行或编译状态时提示用户保存，由 @jesuino 在 https:\u002F\u002Fgithub.com\u002Fkubeflow\u002Fkale\u002Fpull\u002F707 中实现。\n* 移除过时的 UI 元数据方法，由 @jesuino 在 https:\u002F\u002Fgithub.com\u002Fkubeflow\u002Fkale\u002Fpull\u002F695 中完成。\n* 问题 683：移除已弃用的代码，由 @hmtosi 在 https:\u002F\u002Fgithub.com\u002Fkubeflow\u002Fkale\u002Fpull\u002F716 中完成。\n\n\n**完整变更日志**：https:\u002F\u002Fgithub.com\u002Fkubeflow\u002Fkale\u002Fcompare\u002Fv2.0.0a4...v2.0.0a5","2026-03-19T22:06:28",{"id":183,"version":184,"summary_zh":185,"released_at":186},360087,"v2.0.0a4","## 变更内容\n* 后端：由 @StefanoFioravanzo 在 https:\u002F\u002Fgithub.com\u002Fkubeflow\u002Fkale\u002Fpull\u002F203 中对 Kale 使用的模板变量名进行混淆处理。\n* labextension：由 @elikatsis 在 https:\u002F\u002Fgithub.com\u002Fkubeflow\u002Fkale\u002Fpull\u002F208 中修复 runGlobalCells() 方法。\n* 构建（依赖项）：由 @dependabot[bot] 在 https:\u002F\u002Fgithub.com\u002Fkubeflow\u002Fkale\u002Fpull\u002F201 中将 \u002Flabextension 下的 node-fetch 从 2.6.0 升级至 2.6.1。\n* 示例：由 @dpoulopoulos 在 https:\u002F\u002Fgithub.com\u002Fkubeflow\u002Fkale\u002Fpull\u002F205 中修复小型犬种数据集问题。\n* marshal：由 @dpoulopoulos 在 https:\u002F\u002Fgithub.com\u002Fkubeflow\u002Fkale\u002Fpull\u002F218 中在加载模型时将 compile 参数设置为 False。\n* 更改为 ml_metadata 0.24.0，由 @davidspek 在 https:\u002F\u002Fgithub.com\u002Fkubeflow\u002Fkale\u002Fpull\u002F211 中完成。\n* 后端\u002Fmlmd：由 @elikatsis 在 https:\u002F\u002Fgithub.com\u002Fkubeflow\u002Fkale\u002Fpull\u002F221 中修复查找祖先逻辑的问题。\n* 将 Kale 后端重构为组件，由 @StefanoFioravanzo 在 https:\u002F\u002Fgithub.com\u002Fkubeflow\u002Fkale\u002Fpull\u002F194 中完成。\n* 修复 UI（labextension 和可视化）链接，使其包含命名空间查询参数，由 @elikatsis 在 https:\u002F\u002Fgithub.com\u002Fkubeflow\u002Fkale\u002Fpull\u002F224 中完成。\n* 后端：将 Katib 实验与 KFP 运行关联起来，由 @elikatsis 在 https:\u002F\u002Fgithub.com\u002Fkubeflow\u002Fkale\u002Fpull\u002F223 中完成。\n* marshal：由 @StefanoFioravanzo 在 https:\u002F\u002Fgithub.com\u002Fkubeflow\u002Fkale\u002Fpull\u002F228 中将 TF 模型保存到带有版本号的文件夹中。\n* rpc\u002Fkatib：由 @StefanoFioravanzo 在 https:\u002F\u002Fgithub.com\u002Fkubeflow\u002Fkale\u002Fpull\u002F227 中更新 Trials 镜像。\n* 后端：由 @StefanoFioravanzo 在 https:\u002F\u002Fgithub.com\u002Fkubeflow\u002Fkale\u002Fpull\u002F230 中改进容器名称的检测。\n* 后端：由 @StefanoFioravanzo 在 https:\u002F\u002Fgithub.com\u002Fkubeflow\u002Fkale\u002Fpull\u002F231 中从路径获取 PVC。\n* 由 @StefanoFioravanzo 在 https:\u002F\u002Fgithub.com\u002Fkubeflow\u002Fkale\u002Fpull\u002F229 中改进 Rokutils 工具。\n* 后端：由 @StefanoFioravanzo 在 https:\u002F\u002Fgithub.com\u002Fkubeflow\u002Fkale\u002Fpull\u002F232 中获取当前活动笔记本的名称。\n* marshal：由 @StefanoFioravanzo 在 https:\u002F\u002Fgithub.com\u002Fkubeflow\u002Fkale\u002Fpull\u002F236 中限制 Keras 后端支持的类型。\n* marshal：由 @dpoulopoulos 在 https:\u002F\u002Fgithub.com\u002Fkubeflow\u002Fkale\u002Fpull\u002F238 中在加载模型时将 compile 参数设置为 False。\n* 后端\u002Fmlmd：由 @elikatsis 在 https:\u002F\u002Fgithub.com\u002Fkubeflow\u002Fkale\u002Fpull\u002F240 中将 KFP 运行 ID 格式化为 URI。\n* 后端：由 @elikatsis 在 https:\u002F\u002Fgithub.com\u002Fkubeflow\u002Fkale\u002Fpull\u002F239 中用 Katib 详细信息标注与实验对应的流程。\n* 示例：由 @dpoulopoulos 在 https:\u002F\u002Fgithub.com\u002Fkubeflow\u002Fkale\u002Fpull\u002F235 中添加 OpenVaccine 示例。\n* 后端：由 @StefanoFioravanzo 在 https:\u002F\u002Fgithub.com\u002Fkubeflow\u002Fkale\u002Fpull\u002F241 中引入 k8sutils 工具。\n* 后端：由 @elikatsis 在 https:\u002F\u002Fgithub.com\u002Fkubeflow\u002Fkale\u002Fpull\u002F242 中更新 Katib 实验镜像。\n* 示例：由 @StefanoFioravanzo 在 https:\u002F\u002Fgithub.com\u002Fkubeflow\u002Fkale\u002Fpull\u002F243 中从数组中获取验证损失。\n* labextension：由 @elikatsis 在 https:\u002F\u002Fgithub.com\u002Fkubeflow\u002Fkale\u002Fpull\u002F245 中支持在不同位置部署 Katib。\n* 杂项：由 @elikatsis 在 https:\u002F\u002Fgithub.com\u002Fkubeflow\u002Fkale\u002Fpull\u002F247 中更新与文档相关的文件。\n* labextension：由 @elikatsis 在 https:\u002F\u002Fgithub.com\u002Fkubeflow\u002Fkale\u002Fpull\u002F249 中修复引用当前状态时的 setState() 调用问题。\n* 最小","2026-03-12T20:51:28",{"id":188,"version":189,"summary_zh":190,"released_at":191},360088,"v0.7.0","新功能：\n\n* 引入 SDK，支持从 Python 模块中以编程方式创建流水线 (#326)\n* 处理流水线版本 (#330)\n* 使用 SDK 创建 KFP 工件 (#333)\n* 同时支持 v1alpha3 和 v1beta1 版本的 Katib (#336)\n\n重要修复与改进：\n\n* 检测 Docker 镜像的 SHA 而不是标签 (#328)\n* 升级 MLMD 版本 (#335)\n* 多项工具函数优化 (#337)\n* 改进 InferenceService 对缺失字段的处理 (#343)","2021-05-19T12:53:14",{"id":193,"version":194,"summary_zh":195,"released_at":196},360089,"v0.6.1","## 修复：\n\n- 使用 pip >= 20.3 进行安装不再导致失败 (#277)\n- Dockerfile 现在可以按预期工作 (#280)","2021-01-28T12:28:37",{"id":198,"version":199,"summary_zh":200,"released_at":201},360090,"v0.6.0","新功能：\n\n- 使用单个 API 服务 KFServing 模型 #256\n- 新的 OpenVaccine 示例 #235\n- 新的 XGBoost 序列化后端 #252\n- 为 PVC 指定存储类和访问模式 #255\n\n显著修复与改进：\n\n- 重构 marshal 包 #254\n- 修复 labextension 中的状态管理问题 #249\n- 修复模板中潜在的名称冲突 #203\n- 对示例进行多项改进 #205\n- 修复 labextension 侧边栏宽度问题 #257\n- 序列化相关改进 #218、#228、#236、#238、#243、#268","2020-12-10T15:39:41",{"id":203,"version":204,"summary_zh":205,"released_at":206},360091,"v0.5.1","本次小版本更新主要聚焦于缺陷修复和整体用户体验的提升。\n\n值得关注的改进包括：\n\n- 更完善的日志报告\n- 优化的 Katib 作业监控功能\n- 放宽 KFP 的依赖要求，以支持更新版本\n- 新增 DogBreed 示例，支持 TensorFlow 2.x","2020-09-11T11:25:14",{"id":208,"version":209,"summary_zh":210,"released_at":211},360092,"v0.5.0","新功能：\n\n- 从 JupyterLab 中运行超参数调优实验\n- Jupyter 的富输出将在 KFP 仪表板中显示\n- 流水线参数和流水线指标\n- 在 GPU 上运行流水线步骤\n- 重新设计的单元格标签 UI 和应用主题\n\n改进与错误修复：\n\n- 更好的数据传递检测\n- 更快的 UI 渲染\n- 更完善的笔记本验证——在出现错误时尽早失败\n- 更多错误修复和用户体验改进","2020-06-15T11:42:38",{"id":213,"version":214,"summary_zh":215,"released_at":216},360093,"v0.4.0","本次发布包含了在 2019 年北美 KubeCon 大会上 Kale 工作坊上展示的代码，并进行了一些额外的错误修复和性能优化。","2020-04-14T08:18:49",{"id":218,"version":219,"summary_zh":220,"released_at":221},360094,"v.0.1.2","本版本包含将 Jupyter Notebook 转换为 Kubeflow Pipelines 部署所需的工具链。\n\n该版本提供了四个主要模块：\n\n- **nbparser**：Notebook 解析模块；标记语言；代码图生成\n- **static_analysis**：对代码块执行静态分析，以检测数据依赖关系\n- **marshal**：提供用于序列化和反序列化任意类型对象的函数，并配备动态分派机制\n- **codegen**：基于 _nbparser_ 模块生成的代码图，使用模板生成 KFP Python 代码\n\n#### Flask 服务器\n\n**api** 模块提供了一个简单的 Flask 应用程序，暴露 `\u002Fkale` API，该 API 接受原始格式的 Jupyter Notebook，并调用 Kale 核心模块来创建 KFP 部署。\n\n#### JupyterLab 扩展\n\n`kale-toolbar-runner` 在 Jupyter Notebook 的工具栏中提供了一个部署按钮。单击该按钮后，Jupyter 会向 `localhost:5000\u002Fkale` 发送一个 POST 请求，其中包含当前活动的原始 Notebook。","2019-05-13T09:02:04"]