跳到内容

Open In Colab

快速入门

Distilabel 提供了构建可扩展且可靠的合成数据生成和 AI 反馈管道所需的所有工具。管道用于生成数据、评估模型、操作数据或任何其他通用任务。它们由不同的组件组成:步骤 (Steps)、任务 (Tasks) 和 LLM,这些组件以有向无环图 (DAG) 的形式链接在一起。

  • 步骤 (Steps):这些是管道的构建块。常规步骤用于基本执行,例如加载数据、应用一些转换或任何其他通用任务。
  • 任务 (Tasks):这些是依赖于 LLM 和提示来执行生成任务的步骤。例如,它们可以用于生成数据、评估模型或操作数据。
  • LLM:这些是执行任务的模型。它们可以是本地模型或远程模型,以及开源模型或商业模型。

管道被设计为可扩展和可靠的。它们可以以分布式方式执行,并且可以被缓存和恢复。这在处理大型数据集或当您想确保管道可重现时非常有用。

除此之外,管道被设计为模块化和灵活的。您可以轻松地向管道添加新的步骤、任务或 LLM,并且还可以轻松地修改或删除它们。以下是生成偏好数据集的管道的示例架构

安装

要从 PyPI 安装包含 hf-inference-endpoints 扩展的最新版本包,您可以使用以下命令

pip install distilabel[hf-inference-endpoints] --upgrade

使用通用管道

要为 ML 任务使用通用管道,您可以使用 InstructionResponsePipeline 类。此类是一个通用管道,可用于为监督微调任务生成数据。它使用 InferenceEndpointsLLM 类根据输入数据和模型生成数据。

from distilabel.pipeline import InstructionResponsePipeline

pipeline = InstructionResponsePipeline()
dataset = pipeline.run()

InstructionResponsePipeline 类将使用模型 meta-llama/Meta-Llama-3.1-8B-InstructInferenceEndpointsLLM 类来根据系统提示生成数据。输出数据将是一个包含列 instructionresponse 的数据集。该类使用通用系统提示,但您可以通过将 system_prompt 参数传递给该类来自定义它。

注意

我们正在积极构建更多用于不同任务的管道。如果您有任何建议或请求,请告诉我们!我们目前正在开发用于分类、直接偏好优化和信息检索任务的管道。

定义自定义管道

在本指南中,我们将引导您完成创建简单管道的过程,该管道使用 InferenceEndpointsLLM 类来生成文本。管道 将处理直接使用 Hugging Face datasets 库加载的数据集,并使用 InferenceEndpointsLLM 类,通过 TextGeneration 任务生成文本。

您可以在 Hugging Face 模型中心 中查看可用模型,并按 Inference status 筛选。

from datasets import load_dataset

from distilabel.models import InferenceEndpointsLLM
from distilabel.pipeline import Pipeline
from distilabel.steps.tasks import TextGeneration

with Pipeline() as pipeline: # (1)
    TextGeneration( # (2)
        llm=InferenceEndpointsLLM(
            model_id="meta-llama/Meta-Llama-3.1-8B-Instruct",
            generation_kwargs={"temperature": 0.7, "max_new_tokens": 512},
        ),
    )

if __name__ == "__main__":
    dataset = load_dataset("distilabel-internal-testing/instructions", split="test") # (3)
    distiset = pipeline.run(dataset=dataset)
    distiset.push_to_hub(repo_id="distilabel-example") # (4)
  1. 我们使用其上下文管理器定义 管道。在上下文管理器中定义的任何 步骤 (Step) 子类都将自动添加到管道中。
  2. 我们定义一个 TextGeneration 任务,该任务使用模型为 Meta-Llama-3.1-8B-Instruct 的 InferenceEndpointsLLM 类。生成参数直接在 LLM 配置中设置,温度为 0.7,最大新 token 数为 512。
  3. 我们直接使用 Hugging Face datasets 库从存储库 "distilabel-internal-testing/instructions" 加载数据集,使用 "test" 拆分。
  4. 可选地,我们可以将生成的 Distiset 推送到 Hugging Face Hub 存储库 distilabel-example。这将允许您与他人共享生成的数据集并在其他管道中使用它。