核心概念
鉴于 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
资源相关联。DatasetIO 与
Dataset
资源相关联。VectorIO 与
VectorDB
资源相关联。评分与
ScoringFunction
资源相关联。评估与
Model
和Benchmark
资源相关联。
此外,我们允许这些资源跨多个提供者进行联邦。例如,你可能有一些 Llama 模型由 Fireworks 提供服务,而另一些则由 AWS Bedrock 提供服务。无论如何,它们都将与 Llama Stack 提供的统一推理 API 无缝协作。
注册资源
鉴于这种架构,堆栈需要知道对给定资源使用哪个提供者。这意味着在使用关联的 API 之前,你需要显式地注册资源 (包括模型)。
分发版
虽然在混合搭配提供者方面有很大的灵活性,但用户通常会使用一组特定的提供者 (硬件支持、合同义务等)。因此,我们需要为这类集合提供一个方便的简称。我们将这个简称称为 Llama Stack 分发版或 Distro。可以将其视为 Llama Stack 的特定预打包版本。以下是一些示例
远程托管分发版: 从用户角度来看,这些是最易于使用的。你只需获取这些提供者的 API 密钥,指向一个 URL,即可立即使用所有 Llama Stack API。目前,Fireworks 和 Together 提供了此类易于使用的 Llama Stack 分发版。
本地托管分发版: 你可能希望在自己的硬件上运行 Llama Stack。然而,通常你仍然需要通过外部服务使用推理功能。你可以为此目的使用 HuggingFace TGI、Fireworks、Together 等提供者。或者你可能拥有 GPU,并可以运行 vLLM 或 NVIDIA NIM 实例。如果你“只有”一台普通台式机,可以使用 Ollama 进行推理。为了方便快捷地访问这些选项,我们提供了许多此类预配置的本地托管 Distro。
设备上分发版: 为了在边缘设备 (手机或平板电脑) 上直接运行 Llama Stack,我们提供了针对 iOS 和 Android 的 Distro。