what-if-tool

GitHub
998 183 简单 2 次阅读 4天前Apache-2.0插件开发框架
AI 解读 由 AI 自动生成,仅供参考

What-If Tool 是一款由 Google PAIR 团队开发的可视化交互工具,旨在帮助用户轻松探索和理解“黑盒”机器学习模型(包括分类和回归任务)。它解决了传统模型分析中依赖代码、难以直观洞察模型行为及公平性问题的痛点。通过图形界面,用户无需编写任何代码,即可对大量数据样本进行推理测试,直观查看预测结果分布,并手动或编程修改样本特征,实时观察模型输出的变化,从而深入探究模型决策逻辑。

该工具特别适合机器学习开发者、数据科学家及研究人员使用,同时也为希望向非技术利益相关者展示模型行为的团队提供了便利。其独特亮点在于支持在 TensorBoard、Jupyter Notebook 或 Google Colab 中无缝集成,不仅能分析 TensorFlow Estimator 模型,还能连接云端 AI Platform 托管的模型甚至自定义预测函数。此外,它还内置了强大的子集分析功能,可辅助检测模型在不同数据群体中的性能差异与潜在偏见,让模型调试与公平性评估变得更加简单高效。

使用场景

某金融科技团队正在优化一个基于人口普查数据预测用户年收入是否超过 5 万美元的黑盒分类模型,急需排查模型是否存在性别或种族歧视。

没有 what-if-tool 时

  • 开发人员必须编写大量 Python 代码来手动切片数据集,才能单独分析特定群体(如“亚裔女性”)的预测准确率,效率极低。
  • 难以直观发现不公平现象,往往需要反复运行脚本并绘制静态图表,才能偶然察觉到模型对某些敏感特征的过度依赖。
  • 无法实时验证假设,若想测试“如果将用户的学历从高中改为本科,预测结果会如何变化”,必须修改数据源并重新触发整个推理流程,耗时漫长。
  • 模型决策逻辑如同黑盒,业务方难以理解为何某个具体样本被判定为低收入,缺乏可解释性导致信任度不足。

使用 what-if-tool 后

  • 团队成员直接在 Jupyter Notebook 的可视化界面中点击筛选,即可瞬间查看不同人口统计学子集的性能指标和公平性对比,无需编写额外代码。
  • 通过内置的性能与公平性分析视图,系统自动高亮显示模型在特定群体上的偏差,让歧视问题一目了然。
  • 支持手动编辑单个样本特征(如滑动条调整年龄、下拉菜单更改职业),并能即时看到模型输出的变化,快速验证“反事实”假设。
  • 提供直观的归因分析,清晰展示每个特征对具体预测结果的贡献度,帮助非技术人员轻松理解模型的决策依据。

what-if-tool 将原本需要数天代码调试的模型诊断工作,转化为几分钟内的交互式探索,极大地提升了机器学习模型的可解释性与公平性审查效率。

运行环境要求

GPU

未说明

内存

未说明

依赖
notes该工具主要作为 TensorBoard 插件、Jupyter 扩展或 Colab 笔记本运行。核心依赖为 TensorFlow 生态系统。若在本地构建演示需安装 Bazel。模型服务通常通过 TensorFlow Serving (gRPC 接口,默认端口 8500) 提供,也可使用自定义 Python 预测函数。支持直接加载 CSV 文件或 TFRecord (tf.Example/SequenceExample) 格式数据。文档未明确指定具体的操作系统、GPU、内存或 Python 版本要求,通常取决于所安装的 TensorFlow 和 TensorBoard 版本的系统需求。
python未说明
TensorFlow
TensorBoard
Jupyter Notebook
Google Colab
TensorFlow Serving
Bazel
what-if-tool hero image

快速开始

假设分析工具

假设分析工具截图

假设分析工具(WIT)提供了一个易于使用的界面,用于深入理解黑盒分类或回归机器学习模型。通过该插件,您可以对大量示例进行推理,并以多种方式立即可视化结果。此外,还可以手动或通过编程方式编辑示例,然后重新输入模型以查看更改的效果。它还包含用于在数据集的子集上评估模型性能和公平性的工具。

该工具的目的是为用户提供一种简单、直观且强大的方式,通过可视化界面在不编写任何代码的情况下,对一组数据上的训练好的机器学习模型进行探索和实验。

该工具可以通过 TensorBoard 访问,也可以作为 Jupyter 或 Colab 笔记本中的扩展使用。

我不想阅读这份文档,可以直接体验演示吗?

请访问 假设分析工具官网的演示部分,那里提供了大量的网页版和 Colab 演示。

要自行构建网页版演示:

  • UCI Census 数据集薪资预测二分类器
    • 数据集:UCI Census
    • 任务:根据人口普查信息预测个人收入是否超过 5 万美元
    • 从代码构建并运行演示: bazel run wit_dashboard/demo:demoserver 然后访问 http://localhost:6006/wit-dashboard/demo.html
  • 图像微笑检测二分类器
    • 数据集:CelebA
    • 任务:预测图像中的人是否在微笑
    • 从代码构建并运行演示: bazel run wit_dashboard/demo:imagedemoserver 然后访问 http://localhost:6006/wit-dashboard/image_demo.html
  • Iris 数据集多分类器
    • 数据集:UCI Iris
    • 任务:根据花朵的四维测量值,预测花朵属于三种鸢尾花类别中的哪一类
    • 从代码构建并运行演示: bazel run wit_dashboard/demo:irisdemoserver 然后访问 http://localhost:6006/wit-dashboard/iris_demo.html
  • UCI Census 数据集年龄预测回归模型
    • 数据集:UCI Census
    • 任务:根据人口普查信息预测个人年龄
    • 从代码构建并运行演示: bazel run wit_dashboard/demo:agedemoserver 然后访问 http://localhost:6006/wit-dashboard/age_demo.html
    • 该演示模型除了预测之外,还会返回归因值(通过使用普通梯度),以展示该工具如何显示预测的归因值。

在 Jupyter 或 Colab 笔记本中使用它需要什么?

您可以在 Jupyter 或 Colab 笔记本中直接使用假设分析工具来分析以 TensorFlow Example 或 SequenceExample 协议缓冲区(数据点)为输入的 TensorFlow Estimator 分类或回归模型。

此外,假设分析工具还可以分析由 AI Platform Prediction 托管的分类或回归模型,这些模型接受 TensorFlow Example 协议缓冲区、SequenceExample 协议缓冲区或原始 JSON 对象作为输入。

您还可以将假设分析工具与自定义预测函数一起使用,该函数接收 TensorFlow 示例并生成预测。在这种模式下,只要您的自定义函数的输入和输出规范正确,就可以加载任何模型(包括不使用 Example 协议缓冲区作为输入的非 TensorFlow 模型)。

无论是 AI Platform 模型还是自定义预测函数,假设分析工具都可以显示并利用每个输入特征相对于每项预测的归因值。有关更多信息,请参阅下面关于归因值的部分。

如果您想从数据集训练一个机器学习模型,并探索该数据集和模型,可以参考 Colab 中的 What_If_Tool_Notebook_Usage.ipynb 笔记本,该笔记本从 CSV 文件开始,将数据转换为 tf.Example 协议缓冲区,训练一个分类器,然后使用假设分析工具展示分类器在该数据上的表现。

在 TensorBoard 中使用它需要哪些内容?

关于如何在 TensorBoard 中使用该工具的完整指南,包括预训练模型和测试数据集,可以在 TensorBoard 官网的 What-If 工具页面 上找到。

要在 TensorBoard 中使用该工具,只需提供以下信息:

  • 模型服务器的主机名和端口,该服务器需使用 TensorFlow Serving 提供服务。模型可以使用 TensorFlow Serving 的分类、回归或预测 API。
    • 关于如何使用 Estimator API 创建保存模型,并使其能够与适当的 TensorFlow Serving 分类或回归 API 配合使用的说明,可在 保存模型文档 和这篇实用教程中找到。 使用这些 API 的模型是最容易与 What-If 工具配合使用的,因为除了设置模型类型外,无需在工具中进行额外配置。
    • 如果模型使用预测 API,则输入必须是序列化的 tf.Exampletf.SequenceExample 协议缓冲区消息,且输出应符合以下要求:
      • 对于分类模型,输出必须包含一个二维浮点张量,其中为每个推断示例列出所有可能类别索引对应的概率值。
      • 对于回归模型,输出必须包含一个浮点张量,其中为每个推断示例提供单个回归分数。
    • What-If 工具通过 gRPC API 而不是 RESTful API 查询已部署的模型。有关这两种 API 的更多信息,请参阅 TensorFlow Serving 的 Docker 文档。Docker 镜像默认使用 8500 端口提供 gRPC API,因此如果采用 Docker 方式部署,那么在 What-If 工具中指定的端口应为 8500。
    • 或者,您也可以不查询由 TensorFlow Serving 托管的模型,而是通过 --whatif-use-unsafe-custom-prediction 运行时参数向工具提供自定义的 Python 预测函数,具体说明见下文。
  • 用于执行推理的 tf.Exampletf.SequenceExample 格式的 TFRecord 文件,以及从该文件中加载的示例数量。
    • 最多可处理数万个示例。具体数量取决于每个示例的大小(特征数量及特征值的大小)。
    • 该文件必须位于启动 TensorBoard 时提供的日志目录中。此外,您还可以通过 -whatif-data-dir=PATH 运行时参数指定其他目录,以允许从该目录加载文件。
  • 指明模型是回归模型、二分类模型还是多分类模型。
  • 可选的分类模型标签词汇表文件。该文件将模型预测返回的类别索引映射为类别标签。文本文件每行对应一个标签,按模型返回的类别索引顺序排列,从索引 0 开始。
    • 如果提供了此文件,仪表板将显示分类模型的预测标签;否则,将显示预测的类别索引。

或者,您也可以直接使用 What-If 工具从 CSV 文件中探索数据集。详情请参阅下一节。

上述信息可以在设置对话框中提供,该对话框会在打开此工具时自动弹出,也可通过工具右上角的设置图标按钮访问。此外,这些信息也可以直接通过 URL 参数传递。通过控件更改设置会自动更新 URL,以便与其他用户共享,使他们能够在 What-If 工具中查看相同的数据。

我只有数据集,在 TensorBoard 中能做什么?从哪里开始?

如果您只想使用 TensorBoard 中的 What-If 工具探索 CSV 文件中的信息,只需将示例路径设置为该文件(扩展名为 .csv),并将推理地址和模型名称字段留空即可。CSV 文件的第一行必须包含列名。此后每一行代表数据集中的一条记录,其值对应第一行定义的各列。对于某一特征的多个取值,各值之间用竖线字符 (|) 分隔。

为了充分利用该工具对模型的理解功能,您的数据集可以包含来自机器学习模型的输出列。例如,如果您的文件中有一列名为 predictions__probabilities,其值是以竖线分隔的概率分数列表(介于 0 和 1 之间),则工具会将其视为分类模型的输出概率。如果您的文件中有一列名为 predictions 的数值列,则工具会将其视为回归模型的输出。通过这种方式,该工具可用于分析任何数据集,以及针对该数据集离线运行的任何模型结果。请注意,在此模式下,示例不可编辑,因为当示例发生变化时无法获取新的推理结果。

它能做什么?

有关该工具功能的详细信息,包括引导式操作指南,可在 What-If Tool 官网 上找到。以下是其主要功能的简要概述:

  • 可视化 TensorFlow Example 协议缓冲区数据集。

    • 主面板使用 Facets Dive 展示数据集,其中样本可按数据集中的任意特征进行组织、切片、定位或着色。
      • 样本也可按其推理结果进行组织。
        • 对于分类模型,这包括推断标签、推断标签的置信度以及推理是否正确。
        • 对于回归模型,这包括推断分数及推理误差(包括绝对误差或平方误差)。
    • 在侧边栏中可以详细查看选定的样本,显示该样本所有特征的特征值。
    • 对于在名为“image/encoded”的字节型特征中包含编码图像的样本,Facets Dive 会生成该图像的缩略图以直观展示,而完整尺寸的图像则会在侧边栏中针对选定样本显示。
    • 使用 Facets Overview,可以在侧边栏中查看所有已加载样本的汇总统计信息。
  • 可视化推理结果

    • 默认情况下,主面板中的样本会根据其推理结果着色。
    • 主面板中的样本可以组织成混淆矩阵和其他自定义布局,以按多种不同特征分面展示推理结果,或按推理结果分面/定位,从而创建一维和二维直方图及散点图的小多图。
    • 对于选定的样本,侧边栏会显示详细的推理结果(例如预测类别及其置信度分数)。
    • 如果模型除了预测之外还返回了归因值,则会为每个选定样本显示这些归因值,并且这些归因值可用于控制自定义布局,以及作为切分数据集的维度,以便进行性能分析。
  • 探索反事实样本

    • 对于分类模型,对于任何选定的样本,只需单击一下即可将其与最相似但被分类为不同类别的样本进行比较。
    • 相似性是基于所有已加载样本中特征值的分布来计算的,可以使用 L1 或 L2 距离来衡量。
      • 特征之间的距离会进行归一化处理:
        • 对于数值特征,使用各样本之间特征值之差除以所有样本特征值的标准差。
        • 对于分类特征,如果两个样本的特征值相同,则距离为 0;否则,距离即为所有样本中任意两个样本在该特征上取相同值的概率。
    • 在笔记本模式下,该工具还允许您使用 WitConfigBuilder 中的 set_custom_distance_fn 设置自定义距离函数,用以计算最近的反事实样本。与自定义 predict_fn 的情况类似,自定义距离函数可以是任何 Python 函数。
  • 在浏览器中编辑选定的样本并重新运行推理,可视化推理结果的变化。

    • 查看自动生成的部分依赖图,这些图表会针对每个特征展示当该特征取不同的有效值时推理结果的变化情况。
    • 在侧边栏中编辑、添加或删除任意特征或特征值,并对编辑后的数据点重新运行推理。系统会显示该数据点在编辑和重新推理过程中的推理值历史记录。
    • 对于包含编码图像的样本,您可以上传自己的图像并重新运行推理。
    • 克隆现有样本以进行编辑或比较。
    • 撤销对已编辑样本的更改。
  • 比较两个模型在同一输入数据上的推理结果。

    • 如果在设置过程中向该工具提供两个模型,它将使用提供的数据对这两个模型分别运行推理,然后您可以利用上述所有功能比较两个模型的推理结果。
  • 如果使用二分类模型且您的样本包含描述真实标签的特征,您可以执行以下操作:

    • 在侧边栏中查看 ROC 曲线和数值混淆矩阵,包括在当前阳性分类阈值下您的模型所处的曲线上对应点。
    • 查看按数据集子集划分的独立 ROC 曲线和数值混淆矩阵,这些子集可根据数据集中的任意特征进行切片(例如按性别划分)。
    • 手动调整阳性分类阈值(或多个阈值,如果按某个特征切分数据集),并立即查看推理结果、ROC 曲线位置和混淆矩阵的变化。
    • 根据假阳性和假阴性的成本权衡,以及公平性指标(如机会均等或人口统计学平等)的要求,一键设置阳性分类阈值。
  • 如果使用多分类模型且您的样本包含描述真实标签的特征,您可以执行以下操作:

    • 在侧边栏中查看所有分类和所有类别的混淆矩阵。
    • 查看按数据集子集划分的独立混淆矩阵,这些子集可根据数据集中的任意特征进行切片。
  • 如果使用回归模型且您的样本包含描述真实标签的特征,您可以执行以下操作:

    • 查看整个数据集的平均误差、平均绝对误差和平均平方误差。
    • 查看按数据集子集划分的这些平均误差计算结果,这些子集可根据数据集中的任意特征进行切片。

适用于哪些人群?

我们设想 WIT 对各类用户都非常有用。

  • 机器学习研究人员和模型开发者——研究您的数据集和模型,探索推理结果。通过操作数据和模型来获得洞察,例如调试异常结果或研究机器学习的公平性问题。
  • 非技术利益相关者——了解模型在特定数据集上的表现。尝试使用您自己的数据进行体验。
  • 普通用户——通过交互式地玩转数据集和模型来学习机器学习知识。

笔记本模式详情

示例笔记本所示,创建 WitWidget 对象是使“What-If 工具”在输出单元格中显示的关键步骤。WitWidget 对象以一个 WitConfigBuilder 对象作为构造函数参数。WitConfigBuilder 对象指定了“What-If 工具”将使用的数据和模型信息。

WitConfigBuilder 对象以一组 tf.Exampletf.SequenceExample 协议缓冲区作为构造函数参数。这些协议缓冲区将在工具中显示,并用于推断指定的模型。

工具用于推理的模型可以通过多种方式指定:

  • 作为通过 set_estimator_and_feature_spec 方法提供的 TensorFlow Estimator 对象。在这种情况下,推理将在笔记本内部使用提供的 Estimator 完成。
  • 作为通过 set_ai_platform_model 方法指定的由 AI Platform Prediction 托管的模型。
  • 作为通过 set_custom_predict_fn 方法提供的自定义预测函数。在这种情况下,WIT 将直接调用该函数进行推理。
  • 作为由 TensorFlow Serving 提供服务的模型端点,通过 set_inference_addressset_model_name 方法指定。在这种情况下,推理将在指定的模型服务器上进行。例如,要查询在主机 “localhost” 的 8888 端口上运行、名为 “my_model” 的模型,您可以在构建器上设置:builder.set_inference_address('localhost:8888').set_model_name('my_model')

请参阅 WitConfigBuilder 的文档,了解您可以提供的所有选项,包括如何指定其他模型类型(默认为二分类)以及如何指定一个可选的第二个模型与第一个模型进行比较。

“What-If 工具”如何利用特征归因值和其他预测时信息?

特征归因值是针对机器学习模型每个输入特征的数值,用于指示该特征值对模型预测的影响程度。获取机器学习模型预测结果的特征归因值有多种方法,包括 SHAP集成梯度SmoothGrad 等。

它们可以作为一种强大的分析手段,帮助我们理解模型对特定输入值的反应,而不仅仅是像部分依赖图那样简单地研究单个特征值变化对模型预测的影响。一些归因技术需要访问模型内部结构,例如基于梯度的方法;而另一些则可以应用于黑盒模型。无论哪种情况,“What-If 工具”都可以在标准模型预测结果之外,可视化归因方法的结果。

有两种方法可以使用“What-If 工具”来可视化归因值。如果您已将启用了可解释性功能的模型部署到 Cloud AI Platform,并通过标准的 set_ai_platform_model 方法将其提供给工具,则工具会自动生成并可视化归因值,无需额外设置。如果您希望查看其他模型设置下的归因值,可以通过使用自定义预测函数来实现。

正如 WitConfigBuilderset_custom_predict_fn 文档所述,此方法必须返回一个与传入示例数量相同大小的列表,其中每个列表条目代表对应示例的预测时信息。对于没有归因信息的标准模型,列表条目通常只是一个数字(回归模型)或一个类概率列表(分类模型)。

然而,如果存在归因或其他预测时信息,则列表条目可以改为一个字典,其中 predictions 键下包含标准模型的预测输出,attributions 键下包含归因信息,其他补充信息则放在各自的描述性键下。归因及其他补充信息的具体格式可在上述代码文档中找到。

如果向“What-If 工具”提供了归因值,它们可以以多种方式使用。首先,在“数据点编辑器”选项卡中选择某个数据点时,归因值会显示在每个特征值旁边,且特征可以按归因强度而非字母顺序排列。此外,特征值还会根据其归因值进行着色,以便快速直观地判断归因强度。

除了显示所选数据点的归因值外,每个特征的归因值还可以像数据点的其他特征一样在工具中使用。它们可以在数据点可视化控件中被选中,用于创建自定义散点图和直方图。例如,您可以创建一个散点图,展示两个不同特征的归因值之间的关系,并根据模型的预测结果对数据点进行着色。它们也可以在“性能”选项卡中用作切片依据,以比较不同切片的性能统计。例如,您可以快速比较模型在某特征低归因数据点上的整体表现,与该特征高归因数据点上的表现。

自定义预测函数返回的任何其他补充信息也会在工具中以字典键名命名的特征形式出现。它们同样可以用于驱动自定义可视化,或作为分析模型整体性能时的切片维度。

当编辑某个数据点并使用“运行推理”按钮重新通过模型进行推理时,归因值和其他补充信息会在工具中重新计算并更新。

有关从自定义预测函数返回归因值的示例(本例使用 SHAP 库获取归因值),请参阅WIT COMPAS with SHAP 笔记本

如何在 Jupyter Notebook 中启用它?

首先,通过以下命令安装并启用适用于 Jupyter 的 WIT:

pip install witwidget
jupyter nbextension install --py --symlink --sys-prefix witwidget
jupyter nbextension enable --py --sys-prefix witwidget

然后,按照 What_If_Tool_Notebook_Usage.ipynb 笔记本 底部所示的方式使用。

如何在 Colab Notebook 中启用它?

通过运行包含以下内容的单元格,将该小部件安装到笔记本内核的运行环境中:

!pip install witwidget

之后,同样按照 What_If_Tool_Notebook_Usage.ipynb 笔记本 底部所示的方式使用。

如何在 JupyterLab 或 Cloud AI Platform Notebook 中启用它?

WIT 已在 JupyterLab 1.x、2.x 和 3.x 版本中进行了测试。

要为 JupyterLab 3.x 安装并启用 WIT,请运行包含以下内容的单元格:

!pip install witwidget
!jupyter labextension install wit-widget
!jupyter labextension install @jupyter-widgets/jupyterlab-manager

请注意,您可能需要根据自己的 JupyterLab 版本,在 https://www.npmjs.com/package/@jupyter-widgets/jupyterlab-manager 上指定正确的 @jupyter-widgets/jupyterlab-manager 版本。

此外,根据您的笔记本设置,您可能还需要运行 !sudo jupyter labextension ... 命令。

安装完成后,WIT 的使用方式与其他笔记本环境中的安装方法相同。

是否可以在 TensorBoard 中使用自定义预测函数?

可以。您可以通过定义一个名为 custom_predict_fn 的 Python 函数来实现,该函数接受两个参数:待进行推理的示例列表,以及包含模型查询相关信息的服务包对象。函数应返回一个结果列表,每个提供的示例对应一个条目。对于回归模型,结果仅为一个数字;而对于分类模型,则返回一个数字列表,表示每个可能类别的得分。

以下是一个仅返回随机结果的最小示例:

import random

# 函数名“custom_predict_fn”必须完全一致。
def custom_predict_fn(examples, serving_bundle):
  # 示例是 TFRecord 对象的列表,每个对象包含每个数据点的特征。
  # serving_bundle 是一个字典,包含传递给工具的配置信息,例如服务器地址、模型名称、模型版本等。

  number_of_examples = len(examples)
  results = []
  for _ in range(number_of_examples):
    score = random.random()
    results.append([score, 1 - score]) # 用于二分类
    # results.append(score) # 用于回归
  return results

将此函数定义在一个保存到磁盘的文件中。以本示例为例,假设文件保存为 /tmp/my_custom_predict_function.py。然后,使用 tensorboard --whatif-use-unsafe-custom-prediction /tmp/my_custom_predict_function.py 启动 TensorBoard 服务器,并在 What-If 工具的设置对话框中完成数据和模型的配置后,该函数便会自动调用。需要注意的是,“unsafe” 表示该函数未经过沙箱隔离,因此请确保您的函数不会执行任何破坏性操作,例如意外删除实验数据。

我如何参与开发?

请查看开发指南

WIT 的最新动态有哪些?

请参阅发布说明

版本历史

v1.8.12021/10/12
v1.8.02021/01/19
v1.7.02020/06/26

常见问题

相似工具推荐

openclaw

OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你

349.3k|★★★☆☆|2天前
Agent开发框架图像

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|3天前
开发框架图像Agent

everything-claude-code

everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上

144.7k|★★☆☆☆|今天
开发框架Agent语言模型

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

107.9k|★★☆☆☆|2天前
开发框架图像Agent

markitdown

MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。 在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。 这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器

93.4k|★★☆☆☆|昨天
插件开发框架

LLMs-from-scratch

LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目,旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型(LLM)。它不仅是同名技术著作的官方代码库,更提供了一套完整的实践方案,涵盖模型开发、预训练及微调的全过程。 该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型,却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码,用户能够透彻掌握 Transformer 架构、注意力机制等关键原理,从而真正理解大模型是如何“思考”的。此外,项目还包含了加载大型预训练权重进行微调的代码,帮助用户将理论知识延伸至实际应用。 LLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API,而是渴望探究模型构建细节的技术人员而言,这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计:将复杂的系统工程拆解为清晰的步骤,配合详细的图表与示例,让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础,还是为未来研发更大规模的模型做准备

90.1k|★★★☆☆|2天前
语言模型图像Agent