跳到内容

博客

2024 年路线图

Outlines 还没满一岁,但已经取得了长足的进展!在我们刚刚达到 4000 星之际,在制定下一年的路线图之前,我们想停下来感谢所有支持我们、使用并为该库做出贡献的人!

4000 stars

思考

在深入探讨详细路线图之前,请允许我分享一些想法,并解释该库的总体方向。这些想法来自于我与用户的多次互动,无论是在Twitter上还是在我们的Discord 服务器上。

Outlines 目前凭借其高效的 JSON 和正则表达式约束生成功能脱颖而出。最近还添加了一个用于语法结构化生成的用户界面(之前隐藏在仓库中)。但我们还能在此基础上做更多事情。在 2024 年,我们将继续朝着更准确、更快速的约束生成方向努力。

Outlines 还支持多种模型提供商:transformersmamballama.cppexllama2。这些集成需要大量的维护工作,我们需要对此进行简化。例如,transformers 现在支持量化模型,我们很快将弃用对 autoawqautogptq 的支持。得益于该库的重构,现在除了 mamba 之外,所有其他库都可以使用 logits processor 来实现我们的约束生成方法。我们将寻找提供状态空间模型并允许在推理期间传递 logits processor 的库。我们将使用 logits processor 与 llama.cppexllama2 进行接口交互。

我们希望将工作扩展到整个采样层,并添加新的采样方法,以使结构化生成更加准确。这意味着我们将保留现有的 transformers 集成,并围绕该库扩展我们的文本生成逻辑。

目前,使工作流可重用且易于共享是困难的。这就是为什么我们非常看好Outlines 函数。我们将继续改进其接口并添加示例。

最后,我们想添加一个 CLI 工具,名为 outlines serve。这将允许您提供一个执行通用约束生成的 API,或者提供 Outlines 函数的服务。

详细路线图

以下是未来 12 个月的详细路线图。Outlines 是一项社区共同努力的成果,我们邀请您选择其中一个主题并为该库做出贡献。我将逐步在仓库中添加相关的问题

更多示例和教程

老实说,Outlines 缺乏清晰透彻的示例。我们想改变这一点!

  • Outlines 是如何工作的?你能用它做什么?
  • 使用 Outlines 可以做哪些其他库难以或不可能做到的事情?
  • 如何执行标准的 LLM 工作流,例如思维链(Chain of Thoughts)、思维树(Tree of Thoughts)等?
  • Outlines 如何与更广泛的生态系统集成,例如 LangChain 和 LlamaIndex 等其他库?

简化集成

我们希望保留当前的集成,但降低维护成本,以便我们能专注于我们带来的价值。

  • 弃用所有过时的集成:例如,transformers 最近已集成了 autoawqautogptq。(PR)
  • 研究是否可以集成到提供通过 logit processing 函数实现状态空间模型的库;
  • 通过 logits processor 与 llama.cpp 集成;
  • 通过 logits processor 与 exllamav2 集成;

进一步推动结构化生成

我们才刚刚开始!

  • 改进现有结构化生成算法的性能;
  • 提高结构化生成算法的正确性;
  • grammars 仓库或 Outlines 的一个子模块中添加开箱即用的语法。

继续开发 Outlines 函数

函数非常棒,用起来吧!

  • 实现一个名为 outlines serve 的 CLI 工具,用于在本地提供 Outlines 函数的服务;
  • functions 仓库添加更多函数。

提供结构化生成服务

我们希望让提供结构化生成和 Outlines 函数的服务变得更容易。

  • 实现名为 outlines serve 的 Outlines 服务 CLI 工具
  • 提供执行结构化生成的本地 API 服务;
  • 提供 Outlines 函数的服务。

改进生成层

  • 使用 transformers 的私有 API 在 Transformers 类中准备生成所需的输入;
  • 支持 Beam Search 和 SMC 等方法中的模型生成序列和文本填充;
  • 通过添加新的缓存方法来体现差异化:注意力汇聚 (attention sink)、Trie 树缓存等;
  • 通过实现 SMC 来体现差异化;
  • 实现 Beam Search;
  • 添加 token 修复。

与 OpenAI 更无缝的集成

  • 为 OpenAI 和开源模型提供相同的用户界面,以便它们可以轻松互换;
  • 集成函数调用 API。

结语

此路线图受到了社区所表达的兴趣的影响。如果它未能反映您的需求,请来与我们分享您的经验