核心概念

鉴于 Llama Stack 的面向服务理念,可能会出现一些在大型语言模型 (LLM) 领域中不完全自然的概念和工作流程,尤其如果你拥有其他框架的背景。

API

Llama Stack API 被描述为一组 REST 端点。我们目前支持以下 API

  • 推理: 运行大型语言模型 (LLM) 推理

  • 安全性: 在系统层面 (不仅仅是模型层面) 对输出应用安全策略

  • Agent: 运行带有工具使用、记忆 (RAG) 等功能的 LLM 多步 Agent 工作流程

  • DatasetIO: 与数据集和数据加载器交互

  • 评分: 评估系统的输出

  • 评估: 生成输出 (通过推理或 Agent) 并执行评分

  • VectorIO: 执行对向量存储的操作,例如添加文档、搜索和删除文档

  • 遥测: 从系统中收集遥测数据

我们正在努力添加更多 API 以完成应用程序生命周期。这些 API 将包括

  • 批量推理: 在输入数据集上运行推理

  • 批量 Agent: 在输入数据集上运行 Agent

  • 训练后处理: 微调 Llama 模型

  • 合成数据生成: 生成用于模型开发的合成数据

API 提供者

Llama Stack 的目标是构建一个生态系统,用户可以轻松地为同一个 API 替换不同的实现。这些示例包括

  • LLM 推理提供者 (例如,Fireworks, Together, AWS Bedrock, Groq, Cerebras, SambaNova, vLLM 等),

  • 向量数据库 (例如,ChromaDB, Weaviate, Qdrant, Milvus, FAISS, PGVector 等),

  • 安全提供者 (例如,Meta 的 Llama Guard, AWS Bedrock Guardrails 等)

提供者有两种类型

  • 远程: 提供者作为独立服务在 Llama Stack 代码库外部运行。Llama Stack 包含少量适配器代码。

  • 内联: 提供者在 Llama Stack 代码库内完全指定和实现。它可能是现有库的简单包装,也可能是 Llama Stack 内的完整实现。

最重要的是,Llama Stack 始终致力于为每个 API 提供至少一个完整的内联提供者,这样你就可以在本地迭代一个功能齐全的环境。

资源

其中一些 API 与一组资源相关联。以下是 API 与资源的映射关系

  • 推理评估训练后处理Model 资源相关联。

  • 安全性Shield 资源相关联。

  • 工具运行时ToolGroup 资源相关联。

  • DatasetIODataset 资源相关联。

  • VectorIOVectorDB 资源相关联。

  • 评分ScoringFunction 资源相关联。

  • 评估ModelBenchmark 资源相关联。

此外,我们允许这些资源跨多个提供者进行联邦。例如,你可能有一些 Llama 模型由 Fireworks 提供服务,而另一些则由 AWS Bedrock 提供服务。无论如何,它们都将与 Llama Stack 提供的统一推理 API 无缝协作。

注册资源

鉴于这种架构,堆栈需要知道对给定资源使用哪个提供者。这意味着在使用关联的 API 之前,你需要显式地注册资源 (包括模型)。

分发版

虽然在混合搭配提供者方面有很大的灵活性,但用户通常会使用一组特定的提供者 (硬件支持、合同义务等)。因此,我们需要为这类集合提供一个方便的简称。我们将这个简称称为 Llama Stack 分发版Distro。可以将其视为 Llama Stack 的特定预打包版本。以下是一些示例

远程托管分发版: 从用户角度来看,这些是最易于使用的。你只需获取这些提供者的 API 密钥,指向一个 URL,即可立即使用所有 Llama Stack API。目前,FireworksTogether 提供了此类易于使用的 Llama Stack 分发版。

本地托管分发版: 你可能希望在自己的硬件上运行 Llama Stack。然而,通常你仍然需要通过外部服务使用推理功能。你可以为此目的使用 HuggingFace TGI、Fireworks、Together 等提供者。或者你可能拥有 GPU,并可以运行 vLLMNVIDIA NIM 实例。如果你“只有”一台普通台式机,可以使用 Ollama 进行推理。为了方便快捷地访问这些选项,我们提供了许多此类预配置的本地托管 Distro。

设备上分发版: 为了在边缘设备 (手机或平板电脑) 上直接运行 Llama Stack,我们提供了针对 iOSAndroid 的 Distro。