[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-teddykoker--torchsort":3,"tool-teddykoker--torchsort":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 真正成长为懂上",145895,2,"2026-04-08T11:32:59",[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 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",108111,"2026-04-08T11:23:26",[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},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":54,"name":55,"github_repo":56,"description_zh":57,"stars":58,"difficulty_score":10,"last_commit_at":59,"category_tags":60,"status":17},4487,"LLMs-from-scratch","rasbt\u002FLLMs-from-scratch","LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目，旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型（LLM）。它不仅是同名技术著作的官方代码库，更提供了一套完整的实践方案，涵盖模型开发、预训练及微调的全过程。\n\n该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型，却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码，用户能够透彻掌握 Transformer 架构、注意力机制等关键原理，从而真正理解大模型是如何“思考”的。此外，项目还包含了加载大型预训练权重进行微调的代码，帮助用户将理论知识延伸至实际应用。\n\nLLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API，而是渴望探究模型构建细节的技术人员而言，这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计：将复杂的系统工程拆解为清晰的步骤，配合详细的图表与示例，让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础，还是为未来研发更大规模的模型做准备",90106,"2026-04-06T11:19:32",[35,15,13,14],{"id":62,"github_repo":63,"name":64,"description_en":65,"description_zh":66,"ai_summary_zh":66,"readme_en":67,"readme_zh":68,"quickstart_zh":69,"use_case_zh":70,"hero_image_url":71,"owner_login":72,"owner_name":73,"owner_avatar_url":74,"owner_bio":75,"owner_company":76,"owner_location":77,"owner_email":78,"owner_twitter":72,"owner_website":79,"owner_url":80,"languages":81,"stars":98,"forks":99,"last_commit_at":100,"license":101,"difficulty_score":32,"env_os":102,"env_gpu":103,"env_ram":104,"env_deps":105,"category_tags":110,"github_topics":111,"view_count":32,"oss_zip_url":116,"oss_zip_packed_at":116,"status":17,"created_at":117,"updated_at":118,"faqs":119,"releases":120},5669,"teddykoker\u002Ftorchsort","torchsort","Fast, differentiable sorting and ranking in PyTorch","torchsort 是一个专为 PyTorch 设计的高效开源库，旨在实现快速且可微分的排序与排名操作。在传统深度学习中，标准的排序和排名运算因不可导而无法直接融入神经网络的梯度反向传播过程，这限制了模型在需要优化顺序指标（如斯皮尔曼等级相关系数）场景下的应用。torchsort 通过引入正则化技术，将原本离散的排序问题转化为连续的可微近似，完美解决了这一痛点，让开发者能够直接对排序结果进行端到端的训练和优化。\n\n该工具主要面向深度学习研究人员和算法工程师，特别适用于自然语言处理、推荐系统及任何涉及序列顺序优化的任务。其核心技术亮点在于纯 PyTorch 的实现架构，并针对性能瓶颈进行了深度优化：底层的等渗回归求解器被重写为 PyTorch C++ 和 CUDA 扩展，确保了在 CPU 和 GPU 上均能高速运行。用户只需调用 `soft_sort` 或 `soft_rank` 函数，即可灵活调节正则化强度以平衡计算精度与平滑度。无论是构建新的损失函数还是评估单调性指标，torchsort 都能以简洁的接口提供强大的数学支持，是提升模型顺序感知能力的得力助手。","# Torchsort\n\n![Tests](https:\u002F\u002Fgithub.com\u002Fteddykoker\u002Ftorchsort\u002Fworkflows\u002FTests\u002Fbadge.svg)\n\nFast, differentiable sorting and ranking in PyTorch.\n\nPure PyTorch implementation of [Fast Differentiable Sorting and\nRanking](https:\u002F\u002Farxiv.org\u002Fabs\u002F2002.08871) (Blondel et al.). Much of the code is\ncopied from the original Numpy implementation at\n[google-research\u002Ffast-soft-sort](https:\u002F\u002Fgithub.com\u002Fgoogle-research\u002Ffast-soft-sort),\nwith the isotonic regression solver rewritten as a PyTorch C++ and CUDA\nextension.\n\n## Install\n\n```bash\npip install torchsort\n```\n\nTo build the CUDA extension you will need the CUDA toolchain installed. If you\nwant to build in an environment without a CUDA runtime (e.g. docker), you will\nneed to export the environment variable\n`TORCH_CUDA_ARCH_LIST=\"Pascal;Volta;Turing;Ampere\"` before installing.\n\n\u003Cdetails>\n\u003Csummary>\u003Cstrong>Conda Installation\u003C\u002Fstrong>\u003C\u002Fsummary>\nOn some systems the package my not compile with `pip` install in conda\nenvironments. If this happens you may need to:\n    \n 1. Install g++ with `conda install -c conda-forge gxx_linux-64=9.40`\n 2. Run `export CXX=\u002Fpath\u002Fto\u002Fminiconda3\u002Fenvs\u002Fenv_name\u002Fbin\u002Fx86_64-conda_cos6-linux-gnu-g++`\n 3. Run `export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:\u002Fpath\u002Fto\u002Fminiconda3\u002Flib`\n 4. `pip install --force-reinstall --no-cache-dir --no-deps torchsort`\n\nThanks to @levnikmyskin, @sachit-menon for pointing this out!\n\u003C\u002Fdetails>\n\n### Pre-built Wheels\n\nPre-built wheels are currently available on Linux for recent Python\u002FPyTorch\u002FCUDA combinations:\n\n```bash\n# torchsort version, supports >= 0.1.10\nexport TORCHSORT=0.1.10\n# PyTorch version, supports pt26, pt25, pt24, pt21, pt20, and pt113 for versions\n# 2.6, 2.5, 2.4, 2.1, 2.0, and 1.13 respectively\nexport TORCH=pt26\n# CUDA version, supports cpu, cu113, cu117, cu118, cu121, cu124, and cu126 for\n# CPU-only, CUDA 11.3, CUDA 11.7, CUDA 11.8, CUDA 12.1, CUDA 12.4, and CUDA 12.6\n# respectively\nexport CUDA=cu126\n# Python version, supports cp310, cp311, and cp312 for versions 3.10, 3.11, and\n# 3.12 respectively\nexport PYTHON=cp312\n\npip install https:\u002F\u002Fgithub.com\u002Fteddykoker\u002Ftorchsort\u002Freleases\u002Fdownload\u002Fv${TORCHSORT}\u002Ftorchsort-${TORCHSORT}+${TORCH}${CUDA}-${PYTHON}-${PYTHON}-linux_x86_64.whl\n```\n\nThanks to [siddharthab](https:\u002F\u002Fgithub.com\u002Fsiddharthab) for the help creating the build action! See the [latest release](https:\u002F\u002Fgithub.com\u002Fteddykoker\u002Ftorchsort\u002Freleases\u002Flatest) for a list of supported combinations in *Assets*.\n\n## Usage\n\n`torchsort` exposes two functions: `soft_rank` and `soft_sort`, each with\nparameters `regularization` (`\"l2\"` or `\"kl\"`) and `regularization_strength` (a\nscalar value). Each will rank\u002Fsort the last dimension of a 2-d tensor, with an\naccuracy dependent upon the regularization strength:\n\n```python\nimport torch\nimport torchsort\n\nx = torch.tensor([[8, 0, 5, 3, 2, 1, 6, 7, 9]])\n\ntorchsort.soft_sort(x, regularization_strength=1.0)\n# tensor([[0.5556, 1.5556, 2.5556, 3.5556, 4.5556, 5.5556, 6.5556, 7.5556, 8.5556]])\ntorchsort.soft_sort(x, regularization_strength=0.1)\n# tensor([[-0., 1., 2., 3., 5., 6., 7., 8., 9.]])\n\ntorchsort.soft_rank(x)\n# tensor([[8., 1., 5., 4., 3., 2., 6., 7., 9.]])\n```\n\nBoth operations are fully differentiable, on CPU or GPU:\n\n```python\nx = torch.tensor([[8., 0., 5., 3., 2., 1., 6., 7., 9.]], requires_grad=True).cuda()\ny = torchsort.soft_sort(x)\n\ntorch.autograd.grad(y[0, 0], x)\n# (tensor([[0.1111, 0.1111, 0.1111, 0.1111, 0.1111, 0.1111, 0.1111, 0.1111, 0.1111]],\n#         device='cuda:0'),)\n```\n\n## Example\n\n### Spearman's Rank Coefficient\n\n[Spearman's rank\ncoefficient](https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FSpearman%27s_rank_correlation_coefficient)\nis a very useful metric for measuring how monotonically related two variables\nare. We can use Torchsort to create a differentiable Spearman's rank coefficient\nfunction so that we can optimize a model directly for this metric:\n\n```python\nimport torch\nimport torchsort\n\ndef spearmanr(pred, target, **kw):\n    pred = torchsort.soft_rank(pred, **kw)\n    target = torchsort.soft_rank(target, **kw)\n    pred = pred - pred.mean()\n    pred = pred \u002F pred.norm()\n    target = target - target.mean()\n    target = target \u002F target.norm()\n    return (pred * target).sum()\n\npred = torch.tensor([[1., 2., 3., 4., 5.]], requires_grad=True)\ntarget = torch.tensor([[5., 6., 7., 8., 7.]])\nspearman = spearmanr(pred, target)\n# tensor(0.8321)\n\ntorch.autograd.grad(spearman, pred)\n# (tensor([[-5.5470e-02,  2.9802e-09,  5.5470e-02,  1.1094e-01, -1.1094e-01]]),)\n```\n\n## Benchmark\n\n![Benchmark](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fteddykoker_torchsort_readme_3000e7129449.png)\n\n`torchsort` and `fast_soft_sort` each operate with a time complexity of *O(n log\nn)*, each with some additional overhead when compared to the built-in\n`torch.sort`. With a batch size of 1 (see left), the Numba JIT'd forward pass of\n`fast_soft_sort` performs about on-par with the `torchsort` CPU kernel, however\nits backward pass still relies on some Python code, which greatly penalizes its\nperformance. \n\nFurthermore, the `torchsort` kernel supports batches, and yields much better\nperformance than `fast_soft_sort` as the batch size increases.\n\n![Benchmark](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fteddykoker_torchsort_readme_b448c0706f0e.png)\n\nThe `torchsort` CUDA kernel performs quite well with sequence lengths under\n~2000, and scales to extremely large batch sizes. In the future the\nCUDA kernel can likely be further optimized to achieve performance closer to that of the\nbuilt in `torch.sort`.\n\n\n## Reference\n\n```bibtex\n@inproceedings{blondel2020fast,\n  title={Fast differentiable sorting and ranking},\n  author={Blondel, Mathieu and Teboul, Olivier and Berthet, Quentin and Djolonga, Josip},\n  booktitle={International Conference on Machine Learning},\n  pages={950--959},\n  year={2020},\n  organization={PMLR}\n}\n```\n","# Torchsort\n\n![Tests](https:\u002F\u002Fgithub.com\u002Fteddykoker\u002Ftorchsort\u002Fworkflows\u002FTests\u002Fbadge.svg)\n\n在 PyTorch 中实现快速、可微分的排序和排名。\n\n这是 [Fast Differentiable Sorting and Ranking](https:\u002F\u002Farxiv.org\u002Fabs\u002F2002.08871)（Blondel 等人）的纯 PyTorch 实现。大部分代码直接复制自原始的 NumPy 实现，地址为 [google-research\u002Ffast-soft-sort](https:\u002F\u002Fgithub.com\u002Fgoogle-research\u002Ffast-soft-sort)，其中等序回归求解器被重写为 PyTorch C++ 和 CUDA 扩展。\n\n## 安装\n\n```bash\npip install torchsort\n```\n\n要构建 CUDA 扩展，您需要安装 CUDA 工具链。如果您希望在没有 CUDA 运行时的环境中（例如 Docker）进行构建，则需要在安装之前导出环境变量 `TORCH_CUDA_ARCH_LIST=\"Pascal;Volta;Turing;Ampere\"`。\n\n\u003Cdetails>\n\u003Csummary>\u003Cstrong>Conda 安装\u003C\u002Fstrong>\u003C\u002Fsummary>\n在某些系统上，使用 `pip` 在 Conda 环境中安装该包可能会编译失败。如果发生这种情况，您可能需要：\n\n1. 使用 `conda install -c conda-forge gxx_linux-64=9.40` 安装 g++。\n2. 运行 `export CXX=\u002Fpath\u002Fto\u002Fminiconda3\u002Fenvs\u002Fenv_name\u002Fbin\u002Fx86_64-conda_cos6-linux-gnu-g++`。\n3. 运行 `export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:\u002Fpath\u002Fto\u002Fminiconda3\u002Flib`。\n4. 运行 `pip install --force-reinstall --no-cache-dir --no-deps torchsort`。\n\n感谢 @levnikmyskin 和 @sachit-menon 指出这一问题！\n\u003C\u002Fdetails>\n\n### 预编译的轮子包\n\n目前，Linux 上针对近期的 Python\u002FPyTorch\u002FCUDA 组合提供了预编译的轮子包：\n\n```bash\n# torchsort 版本，支持 >= 0.1.10\nexport TORCHSORT=0.1.10\n# PyTorch 版本，分别支持 pt26、pt25、pt24、pt21、pt20 和 pt113，对应版本 2.6、2.5、2.4、2.1、2.0 和 1.13\nexport TORCH=pt26\n# CUDA 版本，支持 cpu、cu113、cu117、cu118、cu121、cu124 和 cu126，分别对应仅 CPU、CUDA 11.3、CUDA 11.7、CUDA 11.8、CUDA 12.1、CUDA 12.4 和 CUDA 12.6\nexport CUDA=cu126\n# Python 版本，支持 cp310、cp311 和 cp312，分别对应版本 3.10、3.11 和 3.12\nexport PYTHON=cp312\n\npip install https:\u002F\u002Fgithub.com\u002Fteddykoker\u002Ftorchsort\u002Freleases\u002Fdownload\u002Fv${TORCHSORT}\u002Ftorchsort-${TORCHSORT}+${TORCH}${CUDA}-${PYTHON}-${PYTHON}-linux_x86_64.whl\n```\n\n感谢 [siddharthab](https:\u002F\u002Fgithub.com\u002Fsiddharthab) 帮助创建了构建流程！请参阅 [最新发布](https:\u002F\u002Fgithub.com\u002Fteddykoker\u002Ftorchsort\u002Freleases\u002Flatest) 的 *Assets* 部分，以获取受支持组合的列表。\n\n## 使用方法\n\n`torchsort` 提供两个函数：`soft_rank` 和 `soft_sort`，每个函数都有 `regularization`（`\"l2\"` 或 `\"kl\"`）和 `regularization_strength`（标量值）两个参数。它们都会对二维张量的最后一维进行排名或排序，其准确性取决于正则化强度：\n\n```python\nimport torch\nimport torchsort\n\nx = torch.tensor([[8, 0, 5, 3, 2, 1, 6, 7, 9]])\n\ntorchsort.soft_sort(x, regularization_strength=1.0)\n# tensor([[0.5556, 1.5556, 2.5556, 3.5556, 4.5556, 5.5556, 6.5556, 7.5556, 8.5556]])\ntorchsort.soft_sort(x, regularization_strength=0.1)\n# tensor([[-0., 1., 2., 3., 5., 6., 7., 8., 9.]])\n\ntorchsort.soft_rank(x)\n# tensor([[8., 1., 5., 4., 3., 2., 6., 7., 9.]])\n```\n\n这两种操作在 CPU 或 GPU 上都是完全可微的：\n\n```python\nx = torch.tensor([[8., 0., 5., 3., 2., 1., 6., 7., 9.]], requires_grad=True).cuda()\ny = torchsort.soft_sort(x)\n\ntorch.autograd.grad(y[0, 0], x)\n# (tensor([[0.1111, 0.1111, 0.1111, 0.1111, 0.1111, 0.1111, 0.1111, 0.1111, 0.1111]],\n#         device='cuda:0'),)\n```\n\n## 示例\n\n### 斯皮尔曼等级相关系数\n\n[Spearman's rank coefficient](https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FSpearman%27s_rank_correlation_coefficient) 是一种非常有用的指标，用于衡量两个变量之间的单调相关性。我们可以使用 Torchsort 创建一个可微分的斯皮尔曼等级相关系数函数，以便直接针对该指标优化模型：\n\n```python\nimport torch\nimport torchsort\n\ndef spearmanr(pred, target, **kw):\n    pred = torchsort.soft_rank(pred, **kw)\n    target = torchsort.soft_rank(target, **kw)\n    pred = pred - pred.mean()\n    pred = pred \u002F pred.norm()\n    target = target - target.mean()\n    target = target \u002F target.norm()\n    return (pred * target).sum()\n\npred = torch.tensor([[1., 2., 3., 4., 5.]], requires_grad=True)\ntarget = torch.tensor([[5., 6., 7., 8., 7.]])\nspearman = spearmanr(pred, target)\n# tensor(0.8321)\n\ntorch.autograd.grad(spearman, pred)\n# (tensor([[-5.5470e-02,  2.9802e-09,  5.5470e-02,  1.1094e-01, -1.1094e-01]]),)\n```\n\n## 基准测试\n\n![Benchmark](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fteddykoker_torchsort_readme_3000e7129449.png)\n\n`torchsort` 和 `fast_soft_sort` 的时间复杂度均为 *O(n log n)*，但与内置的 `torch.sort` 相比，两者都有一些额外的开销。当批次大小为 1 时（见左侧），`fast_soft_sort` 的 Numba JIT 编译前向传递性能与 `torchsort` 的 CPU 内核大致相当，然而其反向传播仍然依赖于部分 Python 代码，这大大降低了其性能。\n\n此外，`torchsort` 的内核支持批量处理，并且随着批次大小的增加，其性能明显优于 `fast_soft_sort`。\n\n![Benchmark](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fteddykoker_torchsort_readme_b448c0706f0e.png)\n\n`torchsort` 的 CUDA 内核在序列长度低于 ~2000 时表现良好，并且可以扩展到非常大的批次规模。未来，CUDA 内核还有望进一步优化，以达到接近内置 `torch.sort` 的性能。\n\n## 参考文献\n\n```bibtex\n@inproceedings{blondel2020fast,\n  title={Fast differentiable sorting and ranking},\n  author={Blondel, Mathieu and Teboul, Olivier and Berthet, Quentin and Djolonga, Josip},\n  booktitle={International Conference on Machine Learning},\n  pages={950--959},\n  year={2020},\n  organization={PMLR}\n}\n```","# Torchsort 快速上手指南\n\nTorchsort 是一个基于 PyTorch 的高性能、可微分排序与排名工具库。它实现了快速可微排序算法，支持 CPU 和 GPU 加速，适用于需要优化排序指标（如 Spearman 相关系数）的深度学习场景。\n\n## 环境准备\n\n*   **操作系统**: Linux (预编译包主要支持 Linux)，Windows\u002FmacOS 需本地编译。\n*   **Python**: 推荐 3.10, 3.11 或 3.12。\n*   **PyTorch**: 支持主流版本 (1.13 - 2.6)。\n*   **CUDA (可选)**: 若需使用 GPU 加速，需安装对应的 CUDA Toolkit。\n    *   若在无 CUDA 运行时的环境（如 Docker）中构建，需设置环境变量：\n        ```bash\n        export TORCH_CUDA_ARCH_LIST=\"Pascal;Volta;Turing;Ampere\"\n        ```\n*   **编译器**: 本地编译需安装 `g++`。在 Conda 环境中若编译失败，可能需要安装 `gxx_linux-64` 并配置 `CXX` 和 `LD_LIBRARY_PATH`。\n\n## 安装步骤\n\n### 方式一：直接安装 (推荐)\n大多数情况下，直接使用 pip 安装即可自动获取预编译包或触发本地编译：\n\n```bash\npip install torchsort\n```\n\n> **国内加速建议**：如遇下载缓慢，可使用清华或阿里镜像源：\n> ```bash\n> pip install torchsort -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n> ```\n\n### 方式二：手动安装预编译 Wheel (Linux)\n如果自动安装失败，可根据你的环境组合手动下载指定版本的 Wheel 包。以下示例展示了如何构建下载链接（需替换版本号）：\n\n```bash\n# 设置版本变量 (示例：torchsort 0.1.10, PyTorch 2.6, CUDA 12.6, Python 3.12)\nexport TORCHSORT=0.1.10\nexport TORCH=pt26\nexport CUDA=cu126\nexport PYTHON=cp312\n\n# 安装指定 wheel\npip install https:\u002F\u002Fgithub.com\u002Fteddykoker\u002Ftorchsort\u002Freleases\u002Fdownload\u002Fv${TORCHSORT}\u002Ftorchsort-${TORCHSORT}+${TORCH}${CUDA}-${PYTHON}-${PYTHON}-linux_x86_64.whl\n```\n\n## 基本使用\n\nTorchsort 提供两个核心函数：`soft_sort` (软排序) 和 `soft_rank` (软排名)。它们对张量的最后一个维度进行操作，且完全支持自动求导。\n\n### 1. 基础排序与排名\n\n```python\nimport torch\nimport torchsort\n\n# 创建输入张量\nx = torch.tensor([[8, 0, 5, 3, 2, 1, 6, 7, 9]])\n\n# 软排序 (regularization_strength 越小，结果越接近真实排序)\nsorted_x = torchsort.soft_sort(x, regularization_strength=0.1)\nprint(sorted_x)\n# 输出近似为：tensor([[-0., 1., 2., 3., 5., 6., 7., 8., 9.]])\n\n# 软排名\nranked_x = torchsort.soft_rank(x)\nprint(ranked_x)\n# 输出：tensor([[8., 1., 5., 4., 3., 2., 6., 7., 9.]])\n```\n\n### 2. GPU 加速与反向传播\n\nTorchsort 原生支持 GPU 和张量梯度计算，可直接用于模型训练。\n\n```python\n# 启用 GPU 并要求梯度\nx = torch.tensor([[8., 0., 5., 3., 2., 1., 6., 7., 9.]], requires_grad=True).cuda()\n\n# 执行软排序\ny = torchsort.soft_sort(x)\n\n# 计算梯度\ngrad = torch.autograd.grad(y[0, 0], x)\nprint(grad)\n# 输出梯度张量 (device='cuda:0')\n```\n\n### 3. 实际应用示例：可微分的 Spearman 相关系数\n\n利用可微分排名特性，可以直接优化模型的排序指标。\n\n```python\ndef spearmanr(pred, target, **kw):\n    # 获取软排名\n    pred = torchsort.soft_rank(pred, **kw)\n    target = torchsort.soft_rank(target, **kw)\n    \n    # 标准化处理\n    pred = pred - pred.mean()\n    pred = pred \u002F pred.norm()\n    target = target - target.mean()\n    target = target \u002F target.norm()\n    \n    return (pred * target).sum()\n\n# 模拟预测值和目标值\npred = torch.tensor([[1., 2., 3., 4., 5.]], requires_grad=True)\ntarget = torch.tensor([[5., 6., 7., 8., 7.]])\n\n# 计算损失并反向传播\nloss = 1.0 - spearmanr(pred, target)\nloss.backward()\n```","某推荐算法团队正在训练一个排序模型，目标是让预测的商品热度排名与真实用户点击排名高度一致，因此需要直接优化斯皮尔曼等级相关系数（Spearman's Rank Coefficient）。\n\n### 没有 torchsort 时\n- **梯度断裂无法端到端训练**：传统的排序操作（如 `torch.sort`）是不可导的离散运算，导致损失函数在排序步骤处梯度为零或不存在，模型无法通过反向传播更新参数。\n- **代理指标偏差大**：开发者被迫使用均方误差（MSE）等代理损失函数来间接优化排名，但这往往导致模型在数值上准确却在相对顺序上表现糟糕，与实际业务目标错位。\n- **自定义算子开发成本高**：若强行实现可导排序，需手动编写复杂的 CUDA 内核或近似算法，不仅调试困难，且在 GPU 上的运行效率极低，严重拖慢实验迭代速度。\n\n### 使用 torchsort 后\n- **实现完全可导的排序优化**：torchsort 提供了基于快速可导排序算法的原生实现，让斯皮尔曼系数等排名指标变得完全可微，支持直接将其作为损失函数进行端到端训练。\n- **业务目标与训练目标对齐**：团队可以直接最小化预测排名与真实排名的差异，消除了代理指标的偏差，显著提升了模型在实际推荐列表中的排序准确性。\n- **高性能且易于集成**：得益于底层 C++ 和 CUDA 扩展的高效实现，torchsort 在 GPU 上能毫秒级完成大规模张量的软排序与软排名，无需额外工程开销即可无缝嵌入现有 PyTorch 流程。\n\ntorchsort 通过将不可导的排序操作转化为高效的平滑近似，打通了从“数值预测”到“顺序优化”的最后一步，让模型真正学会“排序”。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fteddykoker_torchsort_3000e712.png","teddykoker","Teddy Koker","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fteddykoker_69c7410a.jpg","PhD student at MIT","MIT","Cambridge, MA","teddy.koker@gmail.com","https:\u002F\u002Fteddykoker.com","https:\u002F\u002Fgithub.com\u002Fteddykoker",[82,86,90,94],{"name":83,"color":84,"percentage":85},"Python","#3572A5",45.1,{"name":87,"color":88,"percentage":89},"Cuda","#3A4E3A",29.8,{"name":91,"color":92,"percentage":93},"C++","#f34b7d",25,{"name":95,"color":96,"percentage":97},"Shell","#89e051",0.1,858,42,"2026-04-07T16:47:21","Apache-2.0","Linux","可选。若需构建或使用 CUDA 扩展，需要 NVIDIA GPU 及对应的 CUDA 工具链。支持的架构包括 Pascal, Volta, Turing, Ampere。预编译包支持 CUDA 11.3, 11.7, 11.8, 12.1, 12.4, 12.6。显存大小未说明。","未说明",{"notes":106,"python":107,"dependencies":108},"1. 安装 CUDA 扩展前需确保已安装 CUDA 工具链。2. 在无 CUDA 运行时的环境（如 Docker）中构建时，需设置环境变量 TORCH_CUDA_ARCH_LIST=\"Pascal;Volta;Turing;Ampere\"。3. 在 Conda 环境中若 pip 安装失败，可能需要手动安装 g++ 编译器并配置 CXX 和 LD_LIBRARY_PATH 环境变量。4. 目前预编译轮子仅适用于 Linux 系统。","3.10, 3.11, 3.12",[109],"torch",[14],[112,113,114,115],"pytorch","sort","ranking","cuda-kernel",null,"2026-03-27T02:49:30.150509","2026-04-09T05:23:54.597933",[],[121,126,131,136,141,146,151,156,161,166,170,174,178,182,186],{"id":122,"version":123,"summary_zh":124,"released_at":125},163048,"v0.1.10","## 变更内容\n* @teddykoker 在 https:\u002F\u002Fgithub.com\u002Fteddykoker\u002Ftorchsort\u002Fpull\u002F79 中添加了 CUDA 12.1 和 PyTorch 2.1 版本\n* @LouisJalouzot 在 https:\u002F\u002Fgithub.com\u002Fteddykoker\u002Ftorchsort\u002Fpull\u002F90 中添加了用于 PEP 517 构建和项目元数据的 pyproject.toml 文件\n* @teddykoker 在 https:\u002F\u002Fgithub.com\u002Fteddykoker\u002Ftorchsort\u002Fpull\u002F91 中发布了新版本\n* @teddykoker 在 https:\u002F\u002Fgithub.com\u002Fteddykoker\u002Ftorchsort\u002Fpull\u002F94 中确保了 CI 构建中的 CUDA 编译\n\n## 新贡献者\n* @LouisJalouzot 在 https:\u002F\u002Fgithub.com\u002Fteddykoker\u002Ftorchsort\u002Fpull\u002F90 中做出了首次贡献\n\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002Fteddykoker\u002Ftorchsort\u002Fcompare\u002Fv.1.9.0...v0.1.10","2025-06-09T16:59:44",{"id":127,"version":128,"summary_zh":129,"released_at":130},163049,"v0.1.9","## 变更内容\n* 由 @teddykoker 在 https:\u002F\u002Fgithub.com\u002Fteddykoker\u002Ftorchsort\u002Fpull\u002F49 中修复了在非默认 GPU 上运行时结果不正确的问题\n\n\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002Fteddykoker\u002Ftorchsort\u002Fcompare\u002Fv0.1.8...v0.1.9","2022-02-28T00:58:32",{"id":132,"version":133,"summary_zh":134,"released_at":135},163050,"v0.1.8","## 变更内容\n* 由 @teddykoker 在 https:\u002F\u002Fgithub.com\u002Fteddykoker\u002Ftorchsort\u002Fpull\u002F36 中更新了 README.md\n* 由 @teddykoker 在 https:\u002F\u002Fgithub.com\u002Fteddykoker\u002Ftorchsort\u002Fpull\u002F43 中改进了当 CUDA 扩展不可用时的错误提示信息\n\n\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002Fteddykoker\u002Ftorchsort\u002Fcompare\u002Fv0.1.7...v0.1.8","2021-12-30T19:30:18",{"id":137,"version":138,"summary_zh":139,"released_at":140},163051,"v0.1.7","添加半精度（fp16）支持。","2021-08-21T22:08:15",{"id":142,"version":143,"summary_zh":144,"released_at":145},163052,"v0.1.6","确保将 CUDA 代码添加到 PyPI 上的源码发布中。","2021-08-09T16:03:08",{"id":147,"version":148,"summary_zh":149,"released_at":150},163053,"v0.1.5","从额外参数中移除 `-arch=\"compute_50\"`（在使用 `TORCH_CUDA_ARCH_LIST` 时会影响构建）。","2021-07-12T22:56:42",{"id":152,"version":153,"summary_zh":154,"released_at":155},163054,"v0.1.4","Google Colab 安装修复。","2021-04-25T03:54:46",{"id":157,"version":158,"summary_zh":159,"released_at":160},163055,"v0.1.3","* 修复了在使用 `torchsort.soft_rank` 且 `regularization=\"kl\"` 时出现的 CUDA 内存泄漏问题。\n\n* 为 `torchsort.soft_rank` 和 `torchsort.soft_sort` 添加了用户输入正确性的验证。","2021-04-17T20:00:03",{"id":162,"version":163,"summary_zh":164,"released_at":165},163056,"v0.1.2","* 支持 Python 3.7","2021-03-25T03:57:08",{"id":167,"version":168,"summary_zh":116,"released_at":169},163057,"v0.1.1","2021-03-24T00:04:26",{"id":171,"version":172,"summary_zh":116,"released_at":173},163058,"v0.1.0","2021-03-23T02:06:31",{"id":175,"version":176,"summary_zh":116,"released_at":177},163059,"v0.0.7","2021-03-22T22:29:33",{"id":179,"version":180,"summary_zh":116,"released_at":181},163060,"v0.0.6","2021-03-22T21:34:25",{"id":183,"version":184,"summary_zh":116,"released_at":185},163061,"v0.0.5","2021-03-22T02:30:50",{"id":187,"version":188,"summary_zh":116,"released_at":189},163062,"v0.0.4","2021-03-21T22:07:07"]