LongLoRA
LongLoRA 是一套专为提升大语言模型长上下文处理能力而设计的开源方案,包含核心算法 LongLoRA 及配套的长指令微调数据集 LongAlpaca。它主要解决了传统大模型在处理长篇文档、多轮对话时,因上下文窗口限制导致信息丢失或计算资源消耗过大的难题。
通过引入高效的移位短注意力机制(Shifted Short Attention)并仅对少量参数进行微调,LongLoRA 能以极低的显存成本,将模型的上下文理解长度显著扩展至 32k 甚至更长,同时保持原有的通用能力。该项目已作为口头报告论文入选 ICLR 2024,并提供了从数据生成、模型训练到流式推理的完整代码实现,支持 Llama 2、GPTNeoX 等多种主流架构,还可与 QLoRA 结合进一步降低硬件门槛。
LongLoRA 非常适合 AI 研究人员、大模型开发者以及需要处理长文本任务的技术团队使用。无论是希望低成本定制专属长文本模型的研究者,还是致力于开发文档分析、法律合同审查等长上下文应用的企业开发者,都能利用 LongLoRA 快速构建高效可靠的解决方案。
使用场景
某法律科技团队需要构建一个能直接阅读并分析长达数万字的复杂合同或判决书的智能助手,以辅助律师快速提取关键条款和风险点。
没有 LongLoRA 时
- 上下文截断严重:传统大模型受限于原生上下文窗口(如 4k 或 8k),面对长篇法律文书时被迫截断输入,导致遗漏位于文档末尾的关键免责条款或判决依据。
- 训练成本高昂:若试图通过全量微调扩展模型长度,显存占用呈平方级增长,普通显卡无法承载,必须租用昂贵的多卡集群,开发门槛极高。
- 推理速度缓慢:长序列下的注意力机制计算量巨大,导致生成回答的延迟极高,无法满足律师在会议中实时查询的需求。
- 灾难性遗忘:在强行适配长文本的过程中,模型原本擅长的通用指令遵循能力和短文本逻辑推理能力显著下降。
使用 LongLoRA 后
- 原生支持超长上下文:LongLoRA 通过移位短注意力机制,让模型在不改变架构的前提下轻松处理 32k 甚至更长的文档,完整理解整本合同逻辑。
- 高效低显存微调:利用参数高效微调技术,仅需少量显存即可在单张消费级显卡上完成长文本能力的注入,大幅降低算力预算。
- 保持推理高性能:优化后的注意力计算方式显著减少了长序列下的计算开销,确保在处理百页文档时依然能快速输出精准摘要。
- 能力无损保留:在扩展长度的同时,完美保留了基座模型原有的通用对话与逻辑推理能力,实现了“长短兼修”。
LongLoRA 以极低的算力成本打破了大模型的“长度记忆”瓶颈,让处理海量文档的智能应用得以在本地高效落地。
运行环境要求
- 未说明
- 需要 NVIDIA GPU(因依赖 flash-attn),具体显存需求取决于模型大小(7B/13B/70B)及上下文长度(最高支持 100k)
- 支持结合 QLoRA 以降低显存成本
未说明

快速开始
长上下文大模型的LongLoRA与LongAlpaca
目录
新闻
- [2024.1.17] LongLoRA 已被 ICLR 2024 接受为 口头报告。
- [2023.11.19] 我们发布了新版本的 LongAlpaca 模型,包括 LongAlpaca-7B-16k、LongAlpaca-13B-16k 和 LongAlpaca-70B-16k。这些模型是在 LongLoRA 的 SFT 下,基于 LongAlpaca-12k 数据集的一个子集进行微调的,即 LongAlpaca-16k-length。我们对 LongAlpaca-7B-16k 模型进行了 LongBench 和 L-Eval 基准测试,结果可在此处查看:链接。
- [2023.11.2] 我们已将 LongAlpaca 模型的提示方式从 alpaca 提示更新为 llama2 提示,以与其预训练模型保持一致。请参考带有 llama2 提示的 推理代码。
- [2023.10.23] 我们支持在 监督微调 中将 QLoRA 与 LongLoRA 结合使用,以进一步降低 GPU 内存占用。我们已在 LongAlpaca-7B-qlora-weights 上发布了 7B 模型的 LoRA 权重。
- [2023.10.18] 我们支持在我们的 LongAlpaca 模型上使用 StreamingLLM 进行推理。这增加了 StreamingLLM 中多轮对话的上下文长度。
- [2023.10.8] 我们发布了长指令遵循数据集,即 LongAlpaca-12k,以及 相应的模型,包括 LongAlpaca-7B、LongAlpaca-13B 和 LongAlpaca-70B。
- (之前的 sft 模型,Llama-2-13b-chat-longlora-32k-sft 和 Llama-2-70b-chat-longlora-32k-sft,已被弃用。)
- [2023.10.3] 我们新增了对 GPTNeoX 模型的支持。请参阅此 PR 了解使用方法。感谢 @naubull2 的贡献。
- [2023.9.22] 我们发布了所有微调过的 模型,其中包括 70B-32k 模型,如 LLaMA2-LongLoRA-70B-32k 和 LLaMA2-LongLoRA-7B-100k。欢迎大家查看!
- [2023.9.22] 我们发布了 论文 和这个 GitHub 仓库,其中包含了训练和评估代码。
LongLoRA:高效微调长上下文大型语言模型 [论文]
Yukang Chen,
Shengju Qian,
Haotian Tang,
Xin Lai,
Zhijian Liu,
Song Han,
Jiaya Jia
亮点
- 在 LongLoRA 方法中,提出的偏移短注意力机制易于实现,兼容 Flash-Attention,并且在推理过程中无需使用。
- 我们发布了所有模型,涵盖 7B 至 70B 不等的参数规模,上下文长度从 8k 到 100k 不等,包括 LLaMA2-LongLoRA-7B-100k、LLaMA2-LongLoRA-13B-64k 和 LLaMA2-LongLoRA-70B-32k 等。
- 我们构建了一个长上下文指令遵循数据集,即 LongAlpaca-12k。我们还发布了相应的 LongAlpaca-7B、LongAlpaca-13B 和 LongAlpaca-70B 模型。据我们所知,这是首个开源的长上下文 70B 模型。
如何贡献
- 请确保已安装 git。
- 创建您自己的项目 fork。
- 使用 git clone 并粘贴该项目的 URL,在您的本地机器上克隆该仓库。
- 仔细阅读下方的
使用要求和安装与快速指南部分。 - 提交并推送您的更改。
- 完成项目修改后,请发起一个 pull request。
使用要求
要下载和使用 预训练权重,您需要:
- 具有有效邮箱的 Hugging Face (HF) 账户。请注意,用于 HF 的邮箱也必须用于许可协议。
- 接受 Meta 的 许可及可接受使用政策
安装与快速指南
要安装并运行该应用:
- 在 GitHub 上 Fork 此仓库
- 使用
git clone命令,并粘贴该项目的 URL,将仓库克隆到本地。 - 运行以下命令:
pip install -r requirements.txt
pip install flash-attn --no-build-isolation
LongAlpaca 数据
LongAlpaca-12k 包含我们收集的 9,000 条长问答数据,以及从原始 Alpaca 数据 中采样的 3,000 条短问答数据。这样做是为了避免模型在处理短指令时性能下降的情况。我们收集的数据类型和数量如图所示。
| 数据 | 短问答 | 长问答 | 总计 | 下载 |
|---|---|---|---|---|
| LongAlpaca-12k | 3k | 9k | 12k | 链接 |
遵循原始 Alpaca 的格式,我们的长问答数据使用以下提示进行微调:
instruction:str,描述模型应执行的任务。例如,在阅读书籍章节或论文后回答问题。我们通过变化内容和问题来使指令更加多样化。output:str,即对指令的回答。
为了简化流程,我们未使用 Alpaca 格式中的 input 字段。
模型
经过监督微调的模型
| 模型 | 参数量 | 上下文长度 | 训练方式 | 链接 |
|---|---|---|---|---|
| LongAlpaca-7B | 70亿 | 32,768 | 全量微调 | 模型 |
| LongAlpaca-13B | 130亿 | 32,768 | 全量微调 | 模型 |
| LongAlpaca-70B | 700亿 | 32,768 | LoRA+ | 模型 (LoRA权重) |
通过全量微调扩展上下文长度的模型
| 模型 | 参数量 | 上下文长度 | 训练方式 | 链接 |
|---|---|---|---|---|
| Llama-2-7b-longlora-8k-ft | 70亿 | 8,192 | 全量微调 | 模型 |
| Llama-2-7b-longlora-16k-ft | 70亿 | 16,384 | 全量微调 | 模型 |
| Llama-2-7b-longlora-32k-ft | 70亿 | 32,768 | 全量微调 | 模型 |
| Llama-2-7b-longlora-100k-ft | 70亿 | 100,000 | 全量微调 | 模型 |
| Llama-2-13b-longlora-8k-ft | 130亿 | 8,192 | 全量微调 | 模型 |
| Llama-2-13b-longlora-16k-ft | 130亿 | 16,384 | 全量微调 | 模型 |
| Llama-2-13b-longlora-32k-ft | 130亿 | 32,768 | 全量微调 | 模型 |
通过改进的 LoRA 微调扩展上下文长度的模型
| 模型 | 参数量 | 上下文长度 | 训练方式 | 链接 |
|---|---|---|---|---|
| Llama-2-7b-longlora-8k | 70亿 | 8,192 | LoRA+ | LoRA 权重 |
| Llama-2-7b-longlora-16k | 70亿 | 16,384 | LoRA+ | LoRA 权重 |
| Llama-2-7b-longlora-32k | 70亿 | 32,768 | LoRA+ | LoRA 权重 |
| Llama-2-13b-longlora-8k | 130亿 | 8,192 | LoRA+ | LoRA 权重 |
| Llama-2-13b-longlora-16k | 130亿 | 16,384 | LoRA+ | LoRA 权重 |
| Llama-2-13b-longlora-32k | 130亿 | 32,768 | LoRA+ | LoRA 权重 |
| Llama-2-13b-longlora-64k | 130亿 | 65,536 | LoRA+ | LoRA 权重 |
| Llama-2-70b-longlora-32k | 700亿 | 32,768 | LoRA+ | LoRA 权重 |
| Llama-2-70b-chat-longlora-32k | 700亿 | 32,768 | LoRA+ | LoRA 权重 |
训练
预训练权重
我们使用 LLaMA2 模型作为预训练权重,并对其进行微调以支持更长的上下文窗口。请根据您的需求下载相应的权重。
| 预训练权重 |
|---|
| Llama-2-7b-hf |
| Llama-2-13b-hf |
| Llama-2-70b-hf |
| Llama-2-7b-chat-hf |
| Llama-2-13b-chat-hf |
| Llama-2-70b-chat-hf |
本项目也支持 GPTNeoX 模型作为基础架构。一些候选的预训练权重可能包括 GPT-NeoX-20B、Polyglot-ko-12.8B 等其他变体。
微调
torchrun --nproc_per_node=8 fine-tune.py \
--model_name_or_path path_to/Llama-2-7b-hf \
--bf16 True \
--output_dir path_to_saving_checkpoints \
--cache_dir path_to_cache \
--model_max_length 8192 \
--use_flash_attn True \
--low_rank_training False \
--num_train_epochs 1 \
--per_device_train_batch_size 1 \
--per_device_eval_batch_size 2 \
--gradient_accumulation_steps 8 \
--evaluation_strategy "no" \
--save_strategy "steps" \
--save_steps 1000 \
--save_total_limit 2 \
--learning_rate 2e-5 \
--weight_decay 0.0 \
--warmup_steps 20 \
--lr_scheduler_type "constant_with_warmup" \
--logging_steps 1 \
--deepspeed "ds_configs/stage2.json" \
--tf32 True \
--max_steps 1000
- 请记得将
path_to/Llama-2-7b-hf、path_to_saving_checkpoints和path_to_cache替换为您的实际路径。 - 您可以调整
model_max_length的值。 - 如果需要,您可以将
ds_configs/stage2.json替换为ds_configs/stage3.json。 - 如果您使用的是 V100 显卡或未安装 Flash Attention,请将
use_flash_attn设置为False。 - 如果您希望进行全参数微调,可以将
low_rank_training设置为False。虽然这会占用更多显存且训练速度较慢,但模型性能可能会更好。 - 训练完成后,要获取完整的模型权重:
cd path_to_saving_checkpoints && python zero_to_fp32.py . pytorch_model.bin
请注意,path_to_saving_checkpoints 可能是某个 global_step 目录,具体取决于 DeepSpeed 的版本。
有监督微调
torchrun --nproc_per_node=8 supervised-fine-tune.py \
--model_name_or_path path_to_Llama2_chat_models \
--bf16 True \
--output_dir path_to_saving_checkpoints \
--model_max_length 16384 \
--use_flash_attn True \
--data_path LongAlpaca-16k-length.json \
--low_rank_training True \
--num_train_epochs 5 \
--per_device_train_batch_size 1 \
--per_device_eval_batch_size 2 \
--gradient_accumulation_steps 8 \
--evaluation_strategy "no" \
--save_strategy "steps" \
--save_steps 98 \
--save_total_limit 2 \
--learning_rate 2e-5 \
--weight_decay 0.0 \
--warmup_steps 20 \
--lr_scheduler_type "constant_with_warmup" \
--logging_steps 1 \
--deepspeed "ds_configs/stage2.json" \
--tf32 True
- 对于已扩展上下文的微调模型,无需再进行有监督微调。可以直接使用 Llama2-chat 模型作为基础模型,因为长指令遵循数据已经足够用于 SFT。
- 我们的长指令遵循数据可在 LongAlpaca-12k.json 中找到。
- 如果您想进一步减少显存占用,可以使用
supervised-fine-tune-qlora.py来尝试 4 位量化微调。这基于 QLoRA。 - 如果在 QLoRA SFT 后保存
pytorch_model.bin时遇到问题,请参考此 issue。
获取低秩训练中的可训练权重
在低秩训练中,我们设置嵌入层和归一化层为可训练。请使用以下命令从 pytorch_model.bin 中提取可训练权重 trainable_params.bin:
python3 get_trainable_weights.py --checkpoint_path path_to_saving_checkpoints --trainable_params "embed,norm"
合并 LoRA 权重
将 pytorch_model.bin 和可训练参数 trainable_params.bin 的 LoRA 权重合并,并将结果模型以 Hugging Face 格式保存到您指定的路径:
python3 merge_lora_weights_and_save_hf_model.py \
--base_model path_to/Llama-2-7b-hf \
--peft_model path_to_saving_checkpoints \
--context_size 8192 \
--save_path path_to_saving_merged_model
例如:
python3 merge_lora_weights_and_save_hf_model.py \
--base_model /dataset/pretrained-models/Llama-2-7b-hf \
--peft_model /dataset/yukangchen/hf_models/lora-models/Llama-2-7b-longlora-8k \
--context_size 8192 \
--save_path /dataset/yukangchen/models/Llama-2-7b-longlora-8k-merged
评估
悖论验证
要在低秩设置下评估模型,请同时设置 base_model 和 peft_model。base_model 是预训练权重,而 peft_model 是保存检查点的路径,其中应包含 trainable_params.bin、adapter_model.bin 和 adapter_config.json。例如:
python3 eval.py --seq_len 8192 --context_size 8192 --batch_size 1 --base_model path_to/Llama-2-7b-hf --peft_model path_to_saving_checkpoints --data_path pg19/test.bin
或者使用多 GPU 进行评估,如下所示:
torchrun --nproc_per_node=auto eval_distributed.py --seq_len 8192 --context_size 8192 --batch_size 1 --base_model path_to/Llama-2-7b-hf --peft_model path_to_saving_checkpoints --data_path pg19/test.bin
对于完全微调后的模型,只需将 base_model 设置为保存检查点的路径,该路径应包含 pytorch_model.bin 和 config.json。此时无需指定 peft_model。
python3 eval.py --seq_len 8192 --context_size 8192 --batch_size 1 --base_model path_to_saving_checkpoints --data_path pg19/test.bin
或者使用多 GPU 进行评估,如下所示:
torchrun --nproc_per_node=auto eval_distributed.py --seq_len 8192 --context_size 8192 --batch_size 1 --base_model path_to_saving_checkpoints --data_path pg19/test.bin
请注意,
--seq_len用于设置评估时的序列长度,而--context_size则用于设置微调期间模型的上下文长度。--seq_len不应大于--context_size。我们已经使用 LLaMA 的分词器将 PG19 和 proof-pile 数据集的验证集和测试部分分别分词为
pg19/validation.bin、pg19/test.bin和proof-pile/test_sampled_data.bin。其中,proof-pile/test_sampled_data.bin包含从 proof-pile 测试集中随机抽取的 128 篇文档,每篇文档至少有 32768 个标记。我们还发布了这些文档的索引文件 proof-pile/test_sampled_ids.bin,您可以通过以下链接下载:
| 数据集 | 划分 | 链接 |
|---|---|---|
| PG19 | 验证集 | pg19/validation.bin |
| PG19 | 测试集 | pg19/test.bin |
| Proof-pile | 测试集 | proof-pile/test_sampled_data.bin |
密钥检索
我们提供了一种测试密钥检索准确性的方法。例如:
python3 passkey_retrivial.py \
--context_size 32768 \
--base_model path_to/Llama-2-7b-longlora-32k \
--max_tokens 32768 \
--interval 1000
- 请注意,
context_size是微调期间的上下文长度。 max_tokens是密钥检索评估中文档的最大长度。interval是文档长度递增的间隔,由于文档是以句子为单位增加的,因此这个数值只是一个大致的参考。
演示
本地推理
要与 LongAlpaca 模型对话,可以运行:
python3 inference.py \
--base_model path_to_model \
--question $question \
--context_size $context_length \
--max_gen_len $max_gen_len \
--flash_attn True \
--material $material_content
例如,针对一本书提出问题:
python3 inference.py \
--base_model /data/models/LongAlpaca-13B \
--question "为什么斯内普教授似乎不喜欢哈利?" \
--context_size 32768 \
--max_gen_len 512 \
--flash_attn True \
--material "materials/Harry Potter and the Philosophers Stone_section2.txt"
又如,针对一篇论文提出问题:
python3 inference.py \
--base_model /data/models/LongAlpaca-13B \
--question "这项工作的主要贡献和创新点是什么?" \
--context_size 32768 \
--max_gen_len 512 \
--flash_attn True \
--material "materials/paper1.txt"
- 请注意,如果您希望进一步减少 GPU 内存占用并尝试 4 位量化微调,可以将
inference.py替换为inference-qlora.py。这遵循 QLoRA 的方法。
在线演示
要部署您自己的演示程序,可以运行:
python3 demo.py \
--base_model path_to_model \
--context_size $context_size \
--max_gen_len $max_gen_len \
--flash_attn True
例如:
python3 demo.py \
--base_model /data/models/LongAlpaca-13B \
--context_size 32768 \
--max_gen_len 512 \
--flash_attn True
- 请注意,将
flash_attn设置为True会降低生成速度,但能显著节省 GPU 内存。
流式推理
我们支持使用 StreamingLLM 对 LongAlpaca 模型进行流式推理。这能够提升 StreamingLLM 中多轮对话的上下文长度。以下是一个示例:
python run_streaming_llama_longalpaca.py \
----enable_streaming \
--test_filepath outputs_stream.json \
--use_flash_attn True \
--recent_size 32768
- 如果遇到 OOM 问题,请适当减小
recent_size,例如设置为 8192。 test_filepath是包含推理提示的 JSON 文件。我们提供了一个示例文件 outputs_stream.json,它是 LongAlpaca-12k 的一个子集。您可以将其替换为您自己的问题。
通过 Pdf2text 生成数据
在收集数据的过程中,我们将论文和书籍从 PDF 转换为文本。转换质量对最终模型的质量有着重要影响。我们认为这一步骤并不简单。为此,我们发布了一个用于 PDF 到文本转换的工具,位于 pdf2txt 文件夹中。该工具基于 pdf2image、easyocr、ditod 和 detectron2 构建。更多详细信息请参阅 pdf2txt 文件夹中的 README.md。
示例
引用
如果您在研究中使用了本项目,请考虑引用以下内容:
@inproceedings{longlora,
author = {Yukang Chen and Shengju Qian and Haotian Tang and Xin Lai and Zhijian Liu and Song Han and Jiaya Jia},
title = {LongLoRA: 长上下文大语言模型的高效微调},
booktitle = {国际表征学习会议 (ICLR)},
year = {2024},
}
@misc{long-alpaca,
author = {Yukang Chen and Shaozuo Yu and Shengju Qian and Haotian Tang and Xin Lai and Zhijian Liu and Song Han and Jiaya Jia},
title = {Long Alpaca: 长上下文指令遵循模型},
year = {2023},
publisher = {GitHub},
journal = {GitHub 仓库},
howpublished = {\url{https://github.com/dvlab-research/LongLoRA}},
}
致谢
- 本工作以 LLaMA2 作为预训练模型。
- 本工作也可基于 GPTNeoX-HF,其架构源自 EleutherAI/GPTNeoX 的预训练模型。
- 本工作利用 DeepSpeed、peft 和 Flash-Attention2 进行加速。
- 部分评估代码参考并修改自 Landmark Attention。
- 我们使用 LongChat 进行检索评估。
- 流式推理部分参考了 StreamingLLM。
- 在监督微调中,我们将 QLoRA 与 LongLoRA 结合使用。
许可证
- LongLoRA 采用 Apache License 2.0 许可证。这意味着必须保留版权和许可证声明。
- 数据和权重采用 CC-BY-NC 4.0 许可证。它们仅允许用于研究目的,且仅限非商业用途。使用该数据集训练的模型不得用于研究以外的其他用途。
常见问题
相似工具推荐
openclaw
OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
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 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
gemini-cli
gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。
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 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器