LLM-Shearing

GitHub
643 58 较难 1 次阅读 1周前MIT开发框架语言模型
AI 解读 由 AI 自动生成,仅供参考

LLM-Shearing 是一项旨在加速大语言模型预训练的创新技术,其核心成果"Sheared LLaMA"曾入选 ICLR 2024。它主要解决了从头训练高性能小型语言模型成本高昂、耗时漫长的痛点。通过结构化剪枝(Structured Pruning)算法,LLM-Shearing 能够直接从成熟的超大模型(如 Llama-2-7B)中“剪切”出更小规模的模型,并辅以持续的预训练微调。

研究表明,这种方法能以极低的计算成本获得卓越性能。例如,基于 Llama-2-7B 剪枝得到的模型,其能力可媲美从零开始训练的同类模型,但预训练成本仅为后者的 3%。该项目不仅开源了完整的剪枝与再训练代码库(基于 MosaicML Composer 构建),还直接提供了多个不同规模的高质量开源模型权重,包括基础版和指令微调版。

LLM-Shearing 非常适合 AI 研究人员、大模型开发者以及希望高效部署轻量化模型的技术团队使用。对于资源有限但需要定制化小模型的机构而言,它提供了一条极具性价比的技术路径,让获取强大且紧凑的语言模型不再受限于昂贵的算力投入。

使用场景

某初创团队希望基于 Llama-2-7B 的强大能力,快速定制一款专用于法律文档分析的 1.3B 参数小模型,以部署在资源受限的本地服务器上。

没有 LLM-Shearing 时

  • 训练成本高昂:从头预训练一个 1.3B 模型需要消耗数万 GPU 小时,预算直接超支,且耗时数月。
  • 性能差距明显:同等参数量下,从零训练的小模型在专业领域的理解力远不如大模型,难以满足法律场景的准确性要求。
  • 资源门槛过高:团队缺乏千卡集群资源,无法承担大规模预训练所需的算力和电力开销。
  • 迭代周期漫长:一旦模型效果不佳,重新调整架构或数据再训练的成本极高,导致产品上线遥遥无期。

使用 LLM-Shearing 后

  • 成本降低 97%:直接对现有的 Llama-2-7B 进行结构化剪枝并继续预训练,仅需原本 3% 的计算成本即可获得同等性能的 1.3B 模型。
  • 继承大模型能力:剪枝后的 Sheared-LLaMA 完美继承了母版模型的知识底蕴,在法律术语理解和逻辑推理上表现卓越。
  • 单机即可启动:大幅降低的算力需求使得团队利用少量消费级显卡或小型云实例即可完成微调与部署。
  • 快速验证落地:将原本数月的研发周期压缩至数天,团队能迅速根据反馈调整策略,实现产品的敏捷迭代。

LLM-Shearing 通过“剪枝 + 继续预训练”的创新路径,让中小团队也能以极低成本拥有媲美大厂的大模型衍生能力。

运行环境要求

操作系统
  • Linux
GPU

必需 NVIDIA GPU,需安装 CUDA 11.8 (cu118),依赖 Flash Attention 1.0.3.post (不支持 v2)

内存

未说明

依赖
notes该项目基于 MosaicML Composer 构建。目前仅正式支持 LLaMA/LLaMA2 模型(虽可适配 Mistral-7B 但需手动修改)。Flash Attention 2 版本暂不支持,若使用需手动修改模型文件。安装时需指定 PyTorch 的 cu118 版本。
python未说明
torch==2.0.1+cu118
torchvision==0.15.2+cu118
torchaudio==2.0.2
flash-attn==1.0.3.post
mosaicml-composer
mosaicml-streaming
LLM-Shearing hero image

快速开始

🦙 剪枝版 LLaMA:通过结构化剪枝加速语言模型预训练

🌟 ArXiv 预印本 | 博客文章

基础模型:Sheared-LLaMA-1.3B | Sheared-LLaMA-2.7B | Sheared-Pythia-160m
未进行持续预训练的剪枝模型:Sheared-LLaMA-1.3B-Pruned, Sheared-LLaMA-2.7B-Pruned
指令微调模型:Sheared-LLaMA-1.3B-ShareGPT | Sheared-LLaMA-2.7B-ShareGPT

感谢您对我们工作的关注!本项目由 Mengzhou XiaTianyu GaoZhiyuan ZengDanqi Chen 共同完成。在此,我们提供了 Sheared-LLaMA 的剪枝与持续预训练算法代码库 :) 我们发现,相较于从头开始预训练小型语言模型,对强大的基础模型进行剪枝是一种极具成本效益的方法。下图显示,在已有 Llama-2-7B 模型(使用 2T tokens 预训练)的情况下,对其进行剪枝后得到的模型性能可媲美 OpenLLaMA 模型,而其预训练成本仅为后者的 3%。

teaser

更新

  • [2023年12月19日] 更新了仓库中的 评估脚本 和剪枝日志。
  • [2023年11月22日] 我们发布了指令微调模型 Sheared-LLaMA-1.3B-ShareGPTSheared-LLaMA-2.7B-ShareGPT
  • [2023年11月19日] 我们发布了早期阶段开发的 Sheared-Pythia-160m 模型。该模型采用相同的剪枝配方和 Pile 数据集生成。
  • [2023年11月5日] 我们开源了 LLM-Shearing 的代码——很高兴看到它被应用于更多不同规模的模型。
  • [2023年10月10日] 我们发表了 Sheared-LLaMA 论文,并发布了两款 Sheared LLaMA 模型,同时在 Twitter 上进行了分享 🚀!

🔗 快速链接

简要介绍

本代码库基于 MosaicML 令人惊叹的 Composer 包,该包专为大规模语言模型预训练设计并进行了优化。整个实现,包括 剪枝 逻辑和 动态批量加载 逻辑,均以回调函数的形式实现,无需修改原生 Composer 训练器。以下是代码库中各文件夹的简要概述:

  • shearing.data: 包含示例数据和数据处理脚本。
  • shearing.datasets: 实现自定义数据集,以支持动态数据加载。
  • shearing.callbacks: 实现动态加载回调函数和剪枝回调函数。
  • shearing.models: 实现模型文件。
  • shearing.scripts: 包含运行代码的脚本。
  • shearing.utils: 包括所有实用工具函数,例如模型转换和剪枝测试。
  • train.py: 运行代码的主要入口

安装要求

步骤 1:要开始使用此仓库,您需要按照以下安装步骤操作。在继续之前,请确保已安装 PytorchFlash Attention。您可以通过以下 pip 命令完成安装:

pip install torch==2.0.1+cu118 torchvision==0.15.2+cu118 torchaudio==2.0.2 --index-url https://download.pytorch.org/whl/cu118
pip install flash-attn==1.0.3.post

请注意,目前不支持 Flash Attention 2 版本,可能需要手动修改模型文件。

步骤 2:然后安装其余所需软件包:

cd llmshearing
pip install -r requirement.txt

步骤 3:最后,以可编辑模式安装 llmshearing 包,以便在您的开发环境中使用:

pip install -e .

数据准备

有关如何使用 Mosaicml 的 Streaming 包准备数据的详细信息,请参阅 llmshearing/data

模型准备

要将 Hugging Face 转换器模型与 Composer 结合使用,您需要将模型权重转换为 Composer 所期望的密钥格式。以下是将 Hugging Face 模型 'llama2' 的权重转换为 Composer 兼容格式的示例:

# 定义 Hugging Face 模型名称和输出路径
HF_MODEL_NAME=meta-llama/Llama-2-7b-hf
OUTPUT_PATH=models/Llama-2-7b-composer/state_dict.pt

# 如果目录不存在,则创建
mkdir -p $(dirname $OUTPUT_PATH)

# 将 Hugging Face 模型转换为 Composer 密钥格式
python3 -m llmshearing.utils.composer_to_hf save_hf_to_composer $HF_MODEL_NAME $OUTPUT_PATH

此外,您可以使用以下实用函数来测试 Hugging Face 模型与转换后的 Composer 模型之间的等效性:

MODEL_SIZE=7B
python3 -m llmshearing.utils.test_composer_hf_eq $HF_MODEL_NAME $OUTPUT_PATH $MODEL_SIZE

这些函数仅适用于 LLaMA/LLaMA2 模型。不过,将其适配到其他模型(如 Mistral-7B)应该并不困难。

剪枝与继续预训练的示例脚本

对于剪枝,您可以参考位于 llmshearing/scripts/pruning.sh 的示例脚本。在该脚本中,您需要进行调整以纳入 数据配置基础训练配置剪枝配置动态批量加载配置

由于剪枝相比继续预训练的计算成本相对较高,我们会在特定步数后(通常在所有实验中为 3200 步)停止使用剪枝目标的训练。随后,我们将对剪枝后的模型进行进一步的预训练。为确保兼容性,有必要将模型的状态字典键转换为符合标准目标模型结构的形式。有关此转换的详细说明,请参阅 转换剪枝模型

完成模型转换后,您可以继续对剪枝模型进行预训练。这一过程与预训练标准模型类似。为此,您可以参考位于 llmshearing/scripts/continue_pretraining.sh 的示例脚本。在此脚本中,剪枝配置已被移除。

训练完成后,您可以使用转换脚本将 Composer 模型转换为 Transformers 模型。更多详情请参阅 将 Composer 模型转换为 Hugging Face 模型 部分。

转换剪枝模型

在使用 llmshearing/scripts/pruning.sh 完成训练后,保存的模型包含源模型的全部参数,并附带一组掩码。接下来,我们将对掩码变量采取以下操作:1) 移除掩码变量接近于 0 的子结构;2) 通过矩阵-向量乘法将掩码变量合并到模型参数中,从而得到一个更为紧凑的模型。同时,还需要重命名权重键,以便能够无缝加载到目标模型架构中,确保各层名称连续一致。

MODEL_PATH=$MODEL_DIR/latest-rank0.pt
python3 -m llmshearing.utils.post_pruning_processing prune_and_save_model $MODEL_PATH

剪枝后的模型将保存在 $(dirname $MODEL_PATH)/pruned-latest-rank0.pt 中。

将 Composer 模型转换为 Hugging Face 模型

训练完成后,如果您希望使用 Hugging Face 进行推理或微调,可以使用 llmshearing/scripts/composer_to_hf.py 脚本将您的 Composer 模型转换为 Hugging Face 模型。以下是该脚本的使用示例:

MODEL_PATH=$MODEL_DIR/latest-rank0.pt
OUTPUT_PATH=$MODEL_DIR/hf-latest_rank0
MODEL_CLASS=LlamaForCausalLM
HIDDEN_SIZE=2048
NUM_ATTENTION_HEADS=16
NUM_HIDDEN_LAYERS=24
INTERMEDIATE_SIZE=5504
MODEL_NAME=Sheared-Llama-1.3B

python3 -m llmshearing.utils.composer_to_hf save_composer_to_hf $MODEL_PATH $OUTPUT_PATH \
        model_class=${MODEL_CLASS} \
        hidden_size=${HIDDEN_SIZE} \
        num_attention_heads=${NUM_ATTENTION_HEADS} \
        num_hidden_layers=${NUM_HIDDEN_LAYERS} \
        intermediate_size=${INTERMEDIATE_SIZE} \
        num_key_value_heads=${NUM_ATTENTION_HEADS} \
        _name_or_path=${MODEL_NAME}

请注意,此处提到的参数名称是针对 Llama2 的 Hugging Face 配置设计的,在处理其他类型模型时可能会有所不同。

训练配置

本节将深入介绍如何在 YAML 配置文件中设置训练参数。这些配置涵盖多个关键方面,包括数据设置、基础训练设置、剪枝设置以及动态数据加载配置。

数据配置

  • data_local: 包含数据的本地目录。
  • eval_loader.dataset.split: 对于评估,需提供一个包含所有领域数据的组合分割名称。
  • train_loader.dataset.split: 当动态加载配置中的 dynamic=True(请参阅 动态加载部分)时,无需设置此值。然而,若 dynamic=False,则必须指定一个训练分割。

基础训练配置

基础训练配置主要遵循原始的 Composer 包。有关这些配置的详细信息,请参阅 Composer 官方文档。以下是一些需要注意的关键训练参数:

  • max_duration: 此参数定义了最大训练时长,可按步数(例如 3200ba)或轮次(例如 1ep)指定。在我们的实验中,剪枝阶段的训练时长设为 3200ba,而继续预训练阶段则设为 48000ba
  • save_interval: 此参数决定了模型状态保存的频率。我们在剪枝和继续预训练阶段均将其设置为 3200ba
  • t_warmup: 此参数指定了学习率调度器的学习率预热时长。在剪枝阶段,其值设为 320ba(占总训练时间的 10%),而在继续预训练阶段则设为 1440ba(占总训练时间的 3%)。
  • optimizer.lr: 此参数定义了主模型参数的学习率,默认值为 1e-4
  • max_seq_len: 按照 Llama 2 的训练方法,我们支持的最大序列长度为 4096。
  • device_train_microbatch_size: 此参数决定了每台设备在训练过程中的批次大小。在剪枝阶段,我们将其设置为 4,而在继续预训练阶段则提高至 16
  • global_train_batch_size: 此参数指定了训练过程中所有 GPU 上的全局批次大小。在剪枝阶段,其值设为 32,而在继续预训练阶段则增加至 256
  • autoresume: 此参数可通过将其设置为 true 来启用断点续跑功能。然而,需要注意的是,尽管我们在继续预训练阶段成功使用过此功能,但尚不能保证其在剪枝阶段的兼容性。

由于计算资源的限制,我们并未进行全面的超参数搜索,因此可能存在更优的超参数以提升性能。

剪枝配置

剪枝过程允许将源模型裁剪为特定的目标结构,脚本中包含一些关键参数,例如:

  • from_model:该参数指定源模型的大小,并与一个配置文件相对应。
  • to_model:该参数定义目标模型的大小,源模型将被剪枝以匹配目标配置。
  • optimizer.lag_lr:该参数指定在剪枝过程中用于学习掩码变量和拉格朗日乘子的学习率。默认值为 $1.0$。

剪枝相关的参数都归类在 model.l0_module 下:

  • model.l0_module.lagrangian_warmup_steps: 在初始预热阶段,剪枝率会从 0 逐步增加到期望的目标值。具体的目标值由目标模型的预定义结构决定。需要注意的是,这个值可能与学习率的预热步数不同。通常,我们会将总步数的约 20% 用于剪枝的预热过程。
  • model.l0_module.pruning_modules:默认情况下,此设置会剪枝模型的各个部分,包括头部、中间维度、隐藏维度和层。
  • model.l0_module.eval_target_model:当设置为 true 时,评估过程会针对与目标模型结构完全一致的子模型进行评估。如果设置为 false,则评估当前模型,并考虑掩码值。由于掩码可能需要一段时间才能收敛为目标模型形状,因此在训练期间我们基于当前模型形状而非目标结构进行评估。
  • model.l0_module.target_model.d_model:指定目标模型的隐藏维度。
  • model.l0_module.target_model.n_heads:指定目标模型的注意力头数。
  • model.l0_module.target_model.n_layers:指定目标模型的层数。
  • model.l0_module.target_model.intermediate_size:指定目标模型的中间维度数量。

这些参数使您可以根据具体需求配置和控制剪枝过程。

动态批量加载配置

我们在 datasets/streaming_dataset.py 中扩展了 Steaming 的 StreamingDataset,以支持动态加载数据。配置动态批量加载的参数主要定义在 DynamicLoadingCallback 中。以下大多数配置都可以在 YAML 配置文件的 callbacks.data_loading 部分中指定。以下是每个参数的说明:

  • callbacks.data_loading.dynamic:此布尔参数决定是否启用动态数据加载。当设置为 true 时,数据会从不同的领域或流中动态加载。如果设置为 false,则禁用动态数据加载。
  • callbacks.data_loading.set_names:指定用于动态数据加载的领域名称或流名称。
  • callbacks.data_loading.proportion:该参数定义每个领域或流的初始数据加载比例。所有比例之和必须等于 1,表示初始数据加载配置中各来源的相对权重。
  • callbacks.data_loading.update_type:选择在训练过程中调整数据加载比例的更新方式。有两种选项:
    • doremi:在此模式下,数据加载比例会采用指数下降的方式进行更新,类似于 Doremi 中描述的方法。这使得数据加载比例能够随时间自适应地调整。
    • constant:选择此选项后,数据加载比例在整个训练过程中保持不变。相当于禁用了动态数据加载。
  • callbacks.data_loading.target_loss:指定训练过程中的目标验证损失。该目标损失值应在训练开始前计算或预先确定。加载比例会根据模型当前损失与目标损失之间的差异进行动态调整,从而引导训练过程达到预期的性能水平。
  • eval_interval:确定训练过程中评估的频率。如果 dynamic=True,则每次评估后都会调整数据加载比例。

该代码设计仅适用于本地数据,不支持远程流式数据。此外,目前它仅支持单个工作线程的数据加载器,且不提供预取功能。在我们的测试中,这一限制并未带来额外的计算开销。

吞吐量

以下是使用 A100 80GB GPU 运行剪枝和继续预训练步骤的吞吐量。吞吐量以每秒处理的标记数来衡量。请参考 llm-foundry 的标准吞吐量。

GPU 数量 每设备吞吐量 总吞吐量
剪枝 7B 8 1844 14750
预训练 3B 16 4957 79306
预训练 1.3B 16 8684 138945

未来工作

源模型:尽管大型模型无疑功能强大,并且在不久的将来还有进一步增强的潜力,但我们认为小规模模型(参数量少于70亿)仍具有未被充分挖掘的潜力。然而,目前鲜有研究致力于提升小模型的能力,而我们的工作正是朝着这一目标迈进。这项工作的自然延伸是将代码库扩展到以下方面:

  • 更强大的基础模型,例如 Mistral-7B
  • 领域特定的语言模型,如代码生成模型,包括 CodeLlamaDeepSeek-Coder
  • 不同规模的模型。由于计算资源的限制,我们主要使用了70亿参数的模型进行实验。尚不清楚从更大规模的模型中进行剪枝是否会有更大的收益。

为了使代码库适配其他模型,一个关键步骤是确保使用掩码运行模型与运行剪枝后的模型效果等价。我们使用 llmshearing/utils/test_pruning.py 来执行此类测试,以验证模型文件中 prune_params 函数的正确性。

数据来源:请务必注意,最终模型的性能不仅取决于剪枝算法和基础模型,还取决于数据的质量。在我们的实验中,主要使用了 RedPajama v1 数据集。不过,以下是一些可以考虑纳入的额外资源:

发现错误或有疑问?

如果您对代码或论文有任何疑问,请随时发送邮件至 Mengzhou (mengzhou@princeton.edu)。如果在使用代码时遇到任何问题,或希望报告错误,您可以提交一个问题。请尽可能详细地描述问题,以便我们能够更快更好地帮助您!

引用

如果您在工作中发现本仓库有所帮助,请引用我们的论文:

@article{xia2023sheared,
  title={Sheared llama: 通过结构化剪枝加速语言模型预训练},
  author={Xia, Mengzhou and Gao, Tianyu and Zeng, Zhiyuan and Chen, Danqi},
  journal={arXiv 预印本 arXiv:2310.06694},
  year={2023}
}

常见问题

相似工具推荐

openclaw

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

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

stable-diffusion-webui

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

162.1k|★★★☆☆|6天前
开发框架图像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 真正成长为懂上

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

ComfyUI

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

108.3k|★★☆☆☆|昨天
开发框架图像Agent

gemini-cli

gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。

100.8k|★★☆☆☆|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|★★☆☆☆|5天前
插件开发框架