[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-sql-machine-learning--elasticdl":3,"tool-sql-machine-learning--elasticdl":61},[4,18,26,36,44,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":10,"last_commit_at":24,"category_tags":25,"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":27,"name":28,"github_repo":29,"description_zh":30,"stars":31,"difficulty_score":32,"last_commit_at":33,"category_tags":34,"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 真正成长为懂上",155373,2,"2026-04-14T11:34:08",[14,13,35],"语言模型",{"id":37,"name":38,"github_repo":39,"description_zh":40,"stars":41,"difficulty_score":32,"last_commit_at":42,"category_tags":43,"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 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",108322,"2026-04-10T11:39:34",[14,15,13],{"id":45,"name":46,"github_repo":47,"description_zh":48,"stars":49,"difficulty_score":32,"last_commit_at":50,"category_tags":51,"status":17},6121,"gemini-cli","google-gemini\u002Fgemini-cli","gemini-cli 是一款由谷歌推出的开源 AI 命令行工具，它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言，它提供了一条从输入提示词到获取模型响应的最短路径，无需切换窗口即可享受智能辅助。\n\n这款工具主要解决了开发过程中频繁上下文切换的痛点，让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用，还是执行复杂的 Git 操作，gemini-cli 都能通过自然语言指令高效处理。\n\n它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口，具备出色的逻辑推理能力；内置 Google 搜索、文件操作及 Shell 命令执行等实用工具；更独特的是，它支持 MCP（模型上下文协议），允许用户灵活扩展自定义集成，连接如图像生成等外部能力。此外，个人谷歌账号即可享受免费的额度支持，且项目基于 Apache 2.0 协议完全开源，是提升终端工作效率的理想助手。",100752,"2026-04-10T01:20:03",[52,13,15,14],"插件",{"id":54,"name":55,"github_repo":56,"description_zh":57,"stars":58,"difficulty_score":32,"last_commit_at":59,"category_tags":60,"status":17},4721,"markitdown","microsoft\u002Fmarkitdown","MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具，专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片（含 OCR）、音频（含语音转录）、HTML 乃至 YouTube 链接等多种格式的解析，能够精准提取文档中的标题、列表、表格和链接等关键结构信息。\n\n在人工智能应用日益普及的今天，大语言模型（LLM）虽擅长处理文本，却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点，它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式，成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外，它还提供了 MCP（模型上下文协议）服务器，可无缝集成到 Claude Desktop 等 LLM 应用中。\n\n这款工具特别适合开发者、数据科学家及 AI 研究人员使用，尤其是那些需要构建文档检索增强生成（RAG）系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性，但其核心优势在于为机器",93400,"2026-04-06T19:52:38",[52,14],{"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":78,"owner_twitter":77,"owner_website":79,"owner_url":80,"languages":81,"stars":113,"forks":114,"last_commit_at":115,"license":116,"difficulty_score":117,"env_os":118,"env_gpu":119,"env_ram":120,"env_deps":121,"category_tags":127,"github_topics":128,"view_count":32,"oss_zip_url":77,"oss_zip_packed_at":77,"status":17,"created_at":133,"updated_at":134,"faqs":135,"releases":165},7522,"sql-machine-learning\u002Felasticdl","elasticdl","Kubernetes-native Deep Learning Framework","ElasticDL 是一个专为 Kubernetes 环境设计的原生深度学习框架，旨在让分布式训练更加稳健高效。它主要解决了传统深度学习任务在集群中运行时面临的两大痛点：一是进程故障导致整个训练作业中断，必须依赖检查点重启；二是资源调度缺乏弹性，高优先级任务往往需要长时间等待空闲算力。\n\n通过深度集成 Kubernetes 的原生能力，ElasticDL 实现了真正的容错与弹性调度。当部分计算节点发生故障或被系统抢占时，训练任务不会崩溃，而是自动调整资源继续运行，无需保存和恢复检查点。这一特性显著提升了集群资源的利用率，让新任务能立即利用空闲算力启动，而非无限期排队。\n\n该工具非常适合拥有 Kubernetes 集群的 AI 工程师、算法研究人员及运维团队使用。无论是使用 TensorFlow（支持 Estimator 和 Keras）还是 PyTorch，用户只需通过简单的命令行即可启动分布式训练。ElasticDL 的独特之处在于其“去插件化”设计，不依赖 Kubeflow 等扩展组件，而是直接调用 Kubernetes API 管理任务生命周期，以极简的接口实现了强大的动态调度能","ElasticDL 是一个专为 Kubernetes 环境设计的原生深度学习框架，旨在让分布式训练更加稳健高效。它主要解决了传统深度学习任务在集群中运行时面临的两大痛点：一是进程故障导致整个训练作业中断，必须依赖检查点重启；二是资源调度缺乏弹性，高优先级任务往往需要长时间等待空闲算力。\n\n通过深度集成 Kubernetes 的原生能力，ElasticDL 实现了真正的容错与弹性调度。当部分计算节点发生故障或被系统抢占时，训练任务不会崩溃，而是自动调整资源继续运行，无需保存和恢复检查点。这一特性显著提升了集群资源的利用率，让新任务能立即利用空闲算力启动，而非无限期排队。\n\n该工具非常适合拥有 Kubernetes 集群的 AI 工程师、算法研究人员及运维团队使用。无论是使用 TensorFlow（支持 Estimator 和 Keras）还是 PyTorch，用户只需通过简单的命令行即可启动分布式训练。ElasticDL 的独特之处在于其“去插件化”设计，不依赖 Kubeflow 等扩展组件，而是直接调用 Kubernetes API 管理任务生命周期，以极简的接口实现了强大的动态调度能力，帮助团队在复杂的云原生环境中更轻松地构建高可用深度学习系统。","# ElasticDL: A Kubernetes-native Deep Learning Framework\n\n[![Travis-CI Build Status](https:\u002F\u002Ftravis-ci.com\u002Fsql-machine-learning\u002Felasticdl.svg?branch=develop)](https:\u002F\u002Ftravis-ci.com\u002Fsql-machine-learning\u002Felasticdl)\n[![Code Coverage](https:\u002F\u002Fcodecov.io\u002Fgh\u002Fsql-machine-learning\u002Felasticdl\u002Fbranch\u002Fdevelop\u002Fgraph\u002Fbadge.svg)](https:\u002F\u002Fcodecov.io\u002Fgh\u002Fsql-machine-learning\u002Felasticdl)\n[![License: MIT](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-MIT-blue.svg)](https:\u002F\u002Fopensource.org\u002Flicenses\u002FMIT)\n[![PyPI Status Badge](https:\u002F\u002Fbadge.fury.io\u002Fpy\u002Felasticdl-client.svg)](https:\u002F\u002Fpypi.org\u002Fproject\u002Felasticdl-client\u002F)\n\nElasticDL is a Kubernetes-native deep learning framework\nthat supports fault-tolerance and elastic scheduling.\n\n## Main Features\n\n### Elastic Scheduling and Fault-Tolerance\n\nThrough Kubernetes-native design, ElasticDL enables fault-tolerance and works\nwith the priority-based preemption of Kubernetes to achieve elastic scheduling\nfor deep learning tasks.\n\n### Support TensorFlow and PyTorch\n\n- TensorFlow Estimator.\n- TensorFlow Keras.\n- PyTorch\n\n### Minimalism Interface\n\nGiven a [model](model_zoo\u002Fmnist_functional_api\u002Fmnist_functional_api.py) defined\nwith Keras API, train the model distributedly with a command line.\n\n```bash\nelasticdl train \\\n  --image_name=elasticdl:mnist \\\n  --model_zoo=model_zoo \\\n  --model_def=mnist.mnist_functional_api.custom_model \\\n  --training_data=\u002Fdata\u002Fmnist\u002Ftrain \\\n  --job_name=test-mnist \\\n  --volume=\"host_path=\u002Fdata,mount_path=\u002Fdata\"\n```\n\n## Quick Start\n\nPlease check out our [step-by-step tutorial](docs\u002Ftutorials\u002Fget_started.md) for\nrunning ElasticDL on local laptop, on-prem cluster, or on public cloud such as\nGoogle Kubernetes Engine.\n\n[TensorFlow Estimator on MiniKube](docs\u002Ftutorials\u002Felasticdl_estimator.md)\n\n[TensorFlow Keras on MiniKube](docs\u002Ftutorials\u002Felasticdl_local.md)\n\n[PyTorch on MiniKube](docs\u002Ftutorials\u002Felasticdl_torch.md )\n\n## Background\n\nTensorFlow\u002FPyTorch has its native distributed computing feature that is\nfault-recoverable. In the case that some processes fail, the distributed\ncomputing job would fail; however, we can restart the job and recover its status\nfrom the most recent checkpoint files.\n\nElasticDL supports fault-tolerance during distributed training.\nIn the case that some processes fail, the job would\ngo on running. Therefore, ElasticDL doesn't need to save checkpoint nor recover\nfrom checkpoints.\n\nThe feature of fault-tolerance makes ElasticDL works with the priority-based\npreemption of Kubernetes to achieve elastic scheduling.  When Kubernetes kills\nsome processes of a job to free resource for new-coming jobs with higher\npriority, the current job doesn't fail but continues with less resource.\n\nElastic scheduling could significantly improve the overall utilization of a\ncluster. Suppose that a cluster has N GPUs, and a job is using one of\nthem. Without elastic scheduling, a new job claiming N GPUs would have to wait\nfor the first job to complete before starting. This pending time could be hours,\ndays, or even weeks. During this very long time, the utilization of the cluster\nis 1\u002FN. With elastic scheduling, the new job could start running immediately\nwith N-1 GPUs, and Kubernetes might increase its GPU consumption by 1 after the\nfirst job completes.  In this case, the overall utilization is 100%.\n\nThe feature of elastic scheduling of ElasticDL comes from its Kubernetes-native\ndesign -- it doesn't rely on Kubernetes extensions like Kubeflow to run\nTensorFlow\u002FPyTorch programs; instead, the master process of an ElasticDL job calls\nKubernetes API to start workers and parameter servers; it also watches events\nlike process\u002Fpod killing and reacts to such events to realize fault-tolerance.\n\nIn short, ElasticDL enhances TensorFlow\u002FPyTorch with fault-tolerance and elastic\nscheduling in the case that you have a Kubernetes cluster. We provide a tutorial\nshowing how to set up a Kubernetes cluster on Google Cloud and run ElasticDL\njobs there.  We respect TensorFlow's native distributed computing feature, which\ndoesn't require specific computing platforms like Kubernetes and allows\nTensorFlow running on any platform.\n\n## Development Guide\n\nPlease refer to [this document](elasticdl\u002FREADME.md) for development guide.\n","# ElasticDL：一个原生 Kubernetes 的深度学习框架\n\n[![Travis-CI 构建状态](https:\u002F\u002Ftravis-ci.com\u002Fsql-machine-learning\u002Felasticdl.svg?branch=develop)](https:\u002F\u002Ftravis-ci.com\u002Fsql-machine-learning\u002Felasticdl)\n[![代码覆盖率](https:\u002F\u002Fcodecov.io\u002Fgh\u002Fsql-machine-learning\u002Felasticdl\u002Fbranch\u002Fdevelop\u002Fgraph\u002Fbadge.svg)](https:\u002F\u002Fcodecov.io\u002Fgh\u002Fsql-machine-learning\u002Felasticdl)\n[![许可证：MIT](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-MIT-blue.svg)](https:\u002F\u002Fopensource.org\u002Flicenses\u002FMIT)\n[![PyPI 状态徽章](https:\u002F\u002Fbadge.fury.io\u002Fpy\u002Felasticdl-client.svg)](https:\u002F\u002Fpypi.org\u002Fproject\u002Felasticdl-client\u002F)\n\nElasticDL 是一个原生 Kubernetes 的深度学习框架，支持容错和弹性调度。\n\n## 主要特性\n\n### 弹性调度与容错\n\n通过原生 Kubernetes 的设计，ElasticDL 实现了容错能力，并结合 Kubernetes 的基于优先级的抢占机制，为深度学习任务提供弹性调度功能。\n\n### 支持 TensorFlow 和 PyTorch\n\n- TensorFlow Estimator。\n- TensorFlow Keras。\n- PyTorch\n\n### 极简接口\n\n只需使用 Keras API 定义一个 [模型](model_zoo\u002Fmnist_functional_api\u002Fmnist_functional_api.py)，即可通过命令行实现分布式训练。\n\n```bash\nelasticdl train \\\n  --image_name=elasticdl:mnist \\\n  --model_zoo=model_zoo \\\n  --model_def=mnist.mnist_functional_api.custom_model \\\n  --training_data=\u002Fdata\u002Fmnist\u002Ftrain \\\n  --job_name=test-mnist \\\n  --volume=\"host_path=\u002Fdata,mount_path=\u002Fdata\"\n```\n\n## 快速入门\n\n请参阅我们的[分步教程](docs\u002Ftutorials\u002Fget_started.md)，了解如何在本地笔记本电脑、自建集群或 Google Kubernetes Engine 等公有云上运行 ElasticDL。\n\n[TensorFlow Estimator 在 MiniKube 上](docs\u002Ftutorials\u002Felasticdl_estimator.md)\n\n[TensorFlow Keras 在 MiniKube 上](docs\u002Ftutorials\u002Felasticdl_local.md)\n\n[PyTorch 在 MiniKube 上](docs\u002Ftutorials\u002Felasticdl_torch.md)\n\n## 背景\n\nTensorFlow\u002FPyTorch 自带的分布式计算功能具有故障恢复能力。当部分进程失败时，分布式计算作业会失败；不过，我们可以重启作业，并从最近的检查点文件中恢复其状态。\n\nElasticDL 在分布式训练过程中支持容错。即使部分进程失败，作业仍将继续运行。因此，ElasticDL 无需保存检查点或从检查点恢复。\n\n这种容错特性使 ElasticDL 能够与 Kubernetes 的基于优先级的抢占机制结合，实现弹性调度。当 Kubernetes 杀死某个作业的部分进程以释放资源给更高优先级的新作业时，当前作业不会失败，而是以更少的资源继续运行。\n\n弹性调度可以显著提高集群的整体利用率。假设一个集群有 N 个 GPU，而某个作业正在使用其中一个。如果没有弹性调度，另一个申请 N 个 GPU 的新作业必须等到第一个作业完成才能开始。这段时间可能长达数小时、数天甚至数周，在此期间集群的利用率仅为 1\u002FN。而有了弹性调度，新作业可以立即使用 N-1 个 GPU 开始运行，待第一个作业完成后，Kubernetes 可能会再为其分配 1 个 GPU。在这种情况下，集群的整体利用率将达到 100%。\n\nElasticDL 的弹性调度特性源于其原生 Kubernetes 的设计——它不依赖 Kubeflow 等 Kubernetes 扩展来运行 TensorFlow\u002FPyTorch 程序。相反，ElasticDL 作业的主进程会调用 Kubernetes API 来启动工作节点和参数服务器，并监听进程\u002FPod 被杀死等事件，从而实现容错。\n\n简而言之，如果你拥有一个 Kubernetes 集群，ElasticDL 可以增强 TensorFlow\u002FPyTorch 的容错能力和弹性调度功能。我们提供了一个教程，展示如何在 Google Cloud 上搭建 Kubernetes 集群并在其中运行 ElasticDL 作业。我们尊重 TensorFlow 原生的分布式计算功能，该功能并不依赖于特定的计算平台（如 Kubernetes），允许 TensorFlow 在任何平台上运行。\n\n## 开发指南\n\n请参阅 [本文档](elasticdl\u002FREADME.md) 获取开发指南。","# ElasticDL 快速上手指南\n\nElasticDL 是一个云原生（Kubernetes-native）的深度学习框架，专为支持**容错**和**弹性调度**而设计。它允许深度学习任务在 Kubernetes 集群中根据资源优先级动态调整，无需依赖检查点（Checkpoint）即可从节点故障中恢复。\n\n## 环境准备\n\n在开始之前，请确保满足以下系统要求和前置依赖：\n\n*   **操作系统**：Linux 或 macOS（Windows 用户建议使用 WSL2 或虚拟机）。\n*   **Kubernetes 集群**：需要一个可用的 K8s 集群。\n    *   **本地开发**：推荐安装 [Minikube](https:\u002F\u002Fminikube.sigs.k8s.io\u002F) 或 [Kind](https:\u002F\u002Fkind.sigs.k8s.io\u002F)。\n    *   **云端环境**：支持 Google Kubernetes Engine (GKE)、阿里云 ACK 等主流云厂商集群。\n*   **命令行工具**：\n    *   `kubectl`：用于与 Kubernetes 集群交互。\n    *   `docker`：用于构建和推送镜像。\n*   **Python 环境**：Python 3.6+。\n*   **深度学习框架**：根据需求安装 TensorFlow 或 PyTorch（ElasticDL 客户端会处理大部分依赖，但本地调试模型定义时可能需要）。\n\n> **提示**：国内开发者若拉取 Docker 镜像或 Python 包较慢，建议配置阿里云或腾讯云的镜像加速器，并使用国内 PyPI 源（如 `pip install -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple ...`）。\n\n## 安装步骤\n\nElasticDL 主要通过 Python pip 安装客户端工具，并通过 Docker 镜像运行训练任务。\n\n1.  **安装 ElasticDL 客户端**\n\n    使用 pip 安装最新版本的客户端：\n\n    ```bash\n    pip install elasticdl-client\n    ```\n\n    *国内加速安装：*\n    ```bash\n    pip install elasticdl-client -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n    ```\n\n2.  **验证安装**\n\n    安装完成后，检查命令是否可用：\n\n    ```bash\n    elasticdl --help\n    ```\n\n3.  **准备 Docker 镜像**\n\n    ElasticDL 需要特定的 Docker 镜像来运行 Worker 和 Master。你可以从 Docker Hub 拉取官方镜像，或根据项目提供的 `Dockerfile` 自行构建。\n\n    ```bash\n    docker pull elasticdl:mnist\n    ```\n\n    *注意：如果网络受限，建议自行克隆源码并在本地构建镜像。*\n\n## 基本使用\n\nElasticDL 的核心优势在于极简的接口。只需定义好模型（支持 Keras、TensorFlow Estimator 或 PyTorch），即可通过一行命令启动分布式训练。\n\n以下是一个基于 **Keras API** 定义的 MNIST 模型进行分布式训练的示例：\n\n```bash\nelasticdl train \\\n  --image_name=elasticdl:mnist \\\n  --model_zoo=model_zoo \\\n  --model_def=mnist.mnist_functional_api.custom_model \\\n  --training_data=\u002Fdata\u002Fmnist\u002Ftrain \\\n  --job_name=test-mnist \\\n  --volume=\"host_path=\u002Fdata,mount_path=\u002Fdata\"\n```\n\n**参数说明：**\n*   `--image_name`：指定包含运行环境的 Docker 镜像名称。\n*   `--model_zoo`：包含模型定义文件的目录路径。\n*   `--model_def`：模型定义的具体入口（格式为 `目录名.文件名.类名\u002F函数名`）。\n*   `--training_data`：训练数据在容器内的挂载路径。\n*   `--job_name`：当前训练任务在 Kubernetes 中的名称。\n*   `--volume`：将宿主机的数据目录挂载到容器中，格式为 `host_path=\u003C宿主机路径>,mount_path=\u003C容器内路径>`。\n\n**运行流程：**\n执行上述命令后，ElasticDL Master 会自动调用 Kubernetes API 启动 Worker 和 Parameter Server Pod。即使部分 Pod 因资源抢占被杀死，任务也会自动继续运行，无需人工干预或重新加载检查点。\n\n更多针对 Minikube、本地集群或公有云的详细分步教程，请参考官方文档中的 [Step-by-step Tutorial](docs\u002Ftutorials\u002Fget_started.md)。","某大型电商公司的算法团队在共享 Kubernetes 集群上训练多个高优先级的推荐模型，常面临资源争抢和节点不稳定的挑战。\n\n### 没有 elasticdl 时\n- **任务频繁中断**：一旦某个 Worker 节点因硬件故障或被系统杀死，整个分布式训练作业立即失败，必须人工重启。\n- **资源利用率低下**：高优先级新任务到来时，必须等待低优先级任务完全释放所有 GPU 后才能启动，导致昂贵算力长时间闲置。\n- **检查点开销巨大**：为防止数据丢失，需频繁保存大规模模型检查点，占用大量存储 I\u002FO 并拖慢训练速度。\n- **运维负担重**：开发人员需编写复杂的脚本监控 Pod 状态并处理断点续训逻辑，分散了模型优化的精力。\n\n### 使用 elasticdl 后\n- **故障自动自愈**：当部分 Worker 被 Kubernetes 驱逐或宕机时，elasticdl 能自动感知并动态调整剩余资源继续训练，作业无需重启。\n- **实现弹性调度**：新的高优先级任务可立即抢占部分 GPU 启动，原任务自动降级运行，待资源释放后自动扩容，集群利用率接近 100%。\n- **免除检查点依赖**：得益于原生容错机制，不再需要频繁保存和加载检查点，显著减少了存储压力并提升了有效训练时长。\n- **极简部署体验**：仅需一条命令行即可启动支持弹性的分布式训练，底层复杂的 K8s API 交互与状态管理由 elasticdl 自动完成。\n\nelasticdl 通过云原生架构将不稳定的共享集群转化为高可用、高吞吐的深度学习生产环境，彻底解决了资源碎片化与训练稳定性的矛盾。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fsql-machine-learning_elasticdl_5cbac5f7.png","sql-machine-learning","SQLFlow","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fsql-machine-learning_5188c405.png","We are hiring at San Francisco Bay Area, Hangzhou, Shanghai, Beijing",null,"sqlflow.org@gmail.com","https:\u002F\u002Fsqlflow.org","https:\u002F\u002Fgithub.com\u002Fsql-machine-learning",[82,86,90,94,98,102,106,109],{"name":83,"color":84,"percentage":85},"Python","#3572A5",89.4,{"name":87,"color":88,"percentage":89},"Go","#00ADD8",8,{"name":91,"color":92,"percentage":93},"Shell","#89e051",1.8,{"name":95,"color":96,"percentage":97},"Dockerfile","#384d54",0.3,{"name":99,"color":100,"percentage":101},"C++","#f34b7d",0.2,{"name":103,"color":104,"percentage":105},"Makefile","#427819",0.1,{"name":107,"color":108,"percentage":105},"C","#555555",{"name":110,"color":111,"percentage":112},"HTML","#e34c26",0,745,116,"2026-04-02T08:37:54","MIT",4,"Linux, macOS","未说明（支持弹性调度，可在有 GPU 的 Kubernetes 集群中运行，具体型号和显存取决于用户集群配置）","未说明",{"notes":122,"python":120,"dependencies":123},"该工具是 Kubernetes 原生的深度学习框架，必须依赖 Kubernetes 集群环境（如本地 MiniKube、自建集群或公有云 GKE 等）才能运行。它不支持在非 Kubernetes 环境下直接运行分布式训练任务。支持 TensorFlow (Estimator\u002FKeras) 和 PyTorch 框架。具备容错和弹性调度功能，无需手动保存或恢复检查点。",[124,125,126],"Kubernetes","TensorFlow","PyTorch",[14],[129,130,131,132],"kubernetes","deep-learning","tensorflow","distributed-systems","2026-03-27T02:49:30.150509","2026-04-15T06:15:49.648085",[136,141,146,150,155,160],{"id":137,"question_zh":138,"answer_zh":139,"source_url":140},33727,"ElasticDL 示例中的数据存储在哪里？为什么之前的示例无法运行？","由于 PR #475 的变更，数据不再包含在容器内部。之前的示例因此无法运行。用户需要配置外部存储（如 NFS）并在 YAML 文件中更新相关配置。维护者计划更新示例 YAML 文件和相关文档以反映此变更，建议不要将特定的 NFS 配置写入通用文档，因为那是特定环境的配置。","https:\u002F\u002Fgithub.com\u002Fsql-machine-learning\u002Felasticdl\u002Fissues\u002F486",{"id":142,"question_zh":143,"answer_zh":144,"source_url":145},33728,"ElasticDL 与 TorchElastic 在弹性调度机制上有什么区别？","TorchElastic 基于 AllReduce 策略，启动时需指定进程数范围，任何进程可加入或脱离。当进程数量变化时，所有进程需重新协商并建立新作业，从 checkpoint 恢复模型。在 Kubernetes 优先级抢占环境下，若进程频繁变化会导致反复停止和重启，效率较低；若剩余进程少于下限，作业会失败且不支持 ParameterServer 架构。相比之下，ElasticDL 通过 Master 进程控制动态数据分片和分发，利用 TensorFlow eager execution 和 Kubernetes API，能在资源不足时启动，资源释放时自动扩容，无需完全重启作业，更适合参数服务器架构和提升集群利用率。","https:\u002F\u002Fgithub.com\u002Fsql-machine-learning\u002Felasticdl\u002Fissues\u002F2022",{"id":147,"question_zh":148,"answer_zh":149,"source_url":145},33729,"如何使用 Horovod 将 TensorFlow 非分布式训练扩展为基于 AllReduce 的分布式训练？","Horovod 支持 TensorFlow 1.x 和 2.x，只需两步：\n1. 在第一批次中，通过广播（broadcast）使所有 worker 拥有相同的模型。\n2. 在训练过程中，每个 worker 在使用 TensorFlow 优化器应用梯度之前，先获取 AllReduce 后的梯度。\n具体代码实现：\n- TensorFlow 1.x: 包装优化器 `opt = hvd.DistributedOptimizer(opt)`\n- TensorFlow 2.x: 包装 tape `tape = hvd.DistributedGradientTape(tape)`",{"id":151,"question_zh":152,"answer_zh":153,"source_url":154},33730,"统一 SQLFlow 模型库时，自定义模型需要满足哪些要求？","为了统一 SQLFlow 和 ElasticDL 的模型库实现，自定义模型需满足以下要求：\n1. 初始化模型时支持 `feature_columns` 参数。\n2. 提供默认的 `eval_metrics_fn`，使其在编写自定义模型定义时不是必填项。\n3. 损失函数 `loss(output, labels)` 的参数顺序应与 Keras 损失函数（如 `keras.losses.mean_squared_error(y_true, y_pred)`）保持一致，以便兼容 `kerasmodel.compile`。\n4. 当从 MaxCompute (ODPS) 读取数据时，目前仍需 `dataset_fn`，但未来计划由 ElasticDL 内部自动生成该函数，并通过 `--data_reader_params` 或 `--envs` 指定特征列和标签列名称。目前优先支持 Keras Subclass API。","https:\u002F\u002Fgithub.com\u002Fsql-machine-learning\u002Felasticdl\u002Fissues\u002F1476",{"id":156,"question_zh":157,"answer_zh":158,"source_url":159},33731,"SQLFlow 支持哪些常用的数据转换（Data Transform）函数？","SQLFlow 计划支持以下常用数据转换函数：\n- NORMALIZE(x): 将输入缩放到 [0, 1] 范围。\n- STANDARDIZE(x): 将输入标准化为 z-score（减去均值除以标准差）。\n- BUCKETIZE(x, num_buckets, boundaries): 使用阈值将数值特征转换为类别 ID。\n- HASH_BUCKET(x, hash_bucket_size): 通过哈希将输入映射到有限数量的桶中。\n- VOCABULARIZE(x): 通过查找词汇表将输入映射为整数 ID。\n- EMBEDDING(x, dimension): 将输入映射为嵌入向量。\n- CROSS(x1, x2, ...): 对特征进行笛卡尔积后哈希。\n- CONCAT(x1, x2, ...): 连接多个表示类别 ID 的张量。\n用户可以在 COLUMN 子句中显式指定桶边界或桶数量；若未指定，系统可根据桶数量推断边界（等频或等距）。","https:\u002F\u002Fgithub.com\u002Fsql-machine-learning\u002Felasticdl\u002Fissues\u002F1664",{"id":161,"question_zh":162,"answer_zh":163,"source_url":164},33732,"如何配置 ElasticDL 进行性能测试？","进行 ElasticDL 性能测试时，可参考以下配置（使用 P100 GPU）：\n- Master 资源请求：`cpu=4,memory=15048Mi,ephemeral-storage=7000Mi`\n- Worker 资源请求：`cpu=4,memory=12048Mi,ephemeral-storage=7000Mi,gpu=1`\n- 挂载卷：`claim_name=glusterfs-csi-pv,mount_path=\u002Ftestdata`\n- 批次大小 (`minibatch_size`): 128\n- 每任务记录数 (`records_per_task`): 4096\n- Worker 数量 (`num_workers`): 1\n- 等待梯度数 (`grads_to_wait`): 1\n测试主要测量总训练时间、梯度计算时间、GetModel 时间和 ReportGradient 时间。","https:\u002F\u002Fgithub.com\u002Fsql-machine-learning\u002Felasticdl\u002Fissues\u002F705",[166,171],{"id":167,"version":168,"summary_zh":169,"released_at":170},263575,"v0.2.0-rc2","- 重构 elasticdl 主包和 elasticdl_client 之间的公共模块。\n- 为 ElasticDL 命令参数添加更多默认值。用户可以使用更简短的命令提交 ElasticDL 作业。\n- BUGFIX：在使用不同基础镜像构建时，可能会找不到 elasticdl_ps。","2020-07-11T07:09:53",{"id":172,"version":173,"summary_zh":174,"released_at":175},263576,"v0.2.0-rc1","在 https:\u002F\u002Fpypi.org 上发布三个 pip 包：\n- elasticdl：https:\u002F\u002Fpypi.org\u002Fproject\u002Felasticdl\u002F\n- elasticdl_client：https:\u002F\u002Fpypi.org\u002Fproject\u002Felasticdl-client\u002F\n- elasticdl_preprocessing：https:\u002F\u002Fpypi.org\u002Fproject\u002Felasticdl-preprocessing\u002F","2020-07-03T00:42:47"]