Distilabel简明教程

Distilabel 是一个用于合成数据和 AI 反馈的框架,适用于需要基于经过验证的研究论文的快速、可靠和可扩展的管道的工程师。

1、为什么要使用 distilabel?

Distilabel 可用于为各种项目生成合成数据和 AI 反馈,包括传统的预测性 NLP(分类、提取等)或生成和大型语言模型场景(指令跟踪、对话生成、判断等)。Distilabel 的编程方法允许你构建可扩展的数据生成和 AI 反馈管道。distilabel 的目标是通过基于经过验证的研究方法快速生成高质量、多样化的数据集,以生成和判断 AI 反馈,从而加速你的 AI 开发。

  • 通过数据质量提高你的 AI 输出质量

计算成本高昂,输出质量很重要。我们帮助你专注于数据质量,从而同时解决这两个问题的根本原因。Distilabel 可帮助你合成和判断数据,让你将宝贵的时间用于实现和保持合成数据的高质量标准。

  • 控制你的数据和模型

拥有用于微调你自己的 LLM 的数据并不容易,但 distilabel 可以帮助你入门。我们使用一个统一的 API 集成来自任何 LLM 提供商的 AI 反馈。

通过快速迭代正确的数据和模型来提高效率

使用最新研究论文综合和判断数据,同时确保灵活性、可扩展性和容错性。这样你就可以专注于改进数据和训练模型。

2、Distilabel快速入门

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

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

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

除此之外,管道设计为模块化和灵活的。你可以轻松地向管道添加新步骤、任务或 LLM,也可以轻松修改或删除它们。

2.1 快速安装

可以使用以下命令从 PyPI 安装带有 hf-inference-endpoints extra 包的最新版本:

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

2.2 定义管道

在本指南中,我们将引导你完成创建使用 InferenceEndpointsLLM 类生成文本的简单管道的过程。管道将通过步骤 LoadDataFromHub 从 Hugging Face Hub 加载包含名为 prompt 的列的数据集,然后使用 InferenceEndpointsLLM 类使用 TextGeneration 任务根据数据集生成文本。

你可以在 Hugging Face Model Hub 中检查可用的模型并按推理状态进行筛选。

from distilabel.llms import InferenceEndpointsLLM
from distilabel.pipeline import Pipeline
from distilabel.steps import LoadDataFromHub
from distilabel.steps.tasks import TextGeneration

with Pipeline(  # 
    name="simple-text-generation-pipeline",
    description="A simple text generation pipeline",
) as pipeline:  # 
    load_dataset = LoadDataFromHub(  # 
        output_mappings={"prompt": "instruction"},
    )

    text_generation = TextGeneration(  # 
        llm=InferenceEndpointsLLM(
            model_id="meta-llama/Meta-Llama-3.1-8B-Instruct",
            tokenizer_id="meta-llama/Meta-Llama-3.1-8B-Instruct",
        ),  # 
    )

    load_dataset >> text_generation  # 

if __name__ == "__main__":
    distiset = pipeline.run(  # 
        parameters={
            load_dataset.name: {
                "repo_id": "distilabel-internal-testing/instruction-dataset-mini",
                "split": "test",
            },
            text_generation.name: {
                "llm": {
                    "generation_kwargs": {
                        "temperature": 0.7,
                        "max_new_tokens": 512,
                    }
                }
            },
        },
    )
    distiset.push_to_hub(repo_id="distilabel-example")  #

3、Distilabel安装说明

你至少需要 Python 3.9 或更高版本,最高可达 Python 3.12,因为对后者的支持仍在进行中。

要从 PyPI 安装最新版本的软件包,可以使用以下命令:

pip install distilabel --upgrade

或者,你可能还想从源代码(即最新未发布的版本)安装它,可以使用以下命令:

pip install "distilabel @ git+https://github.com/argilla-io/distilabel.git@develop" --upgrade
注意:我们从开发安装,因为这是我们用来收集所有功能、错误修复和改进的分支,这些将是下一个版本的一部分。如果你想从特定分支安装,可以将开发替换为分支名称。

3.1 附加功能

此外,作为 distilabel 的一部分,还提供了一些额外的依赖项,主要是为了增加对我们支持的一些 LLM 集成的支持。以下是可用附加功能的列表:

3.2 支持的大模型

  • anthropic:用于通过 AnthropicLLM 集成使用 Anthropic API 中可用的模型。
  • argilla:用于将生成的数据集导出到 Argilla。
  • cohere:用于通过 CohereLLM 集成使用 Cohere 中可用的模型。
  • groq:用于通过 GroqLLM 集成使用 groq Python 客户端在 Groq 中可用的模型。
  • hf-inference-endpoints:用于通过 InferenceEndpointsLLM 集成使用 Hugging Face 推理端点。
  • hf-transformers:用于通过 TransformersLLM 集成使用 transformers 包中可用的模型。
  • litellm:用于通过 LiteLLM 集成使用 LiteLLM 调用使用 OpenAI 格式的任何 LLM。
  • llama-cpp:用于通过 LlamaCppLLM 集成使用 llama-cpp-python Python 绑定 llama.cpp。
  • mistralai:用于通过 MistralAILLM 集成使用 Mistral AI API 中可用的模型。
  • ollama:用于通过 OllamaLLM 集成使用 Ollama 及其可用模型。
  • openai:用于通过 OpenAILLM 集成使用 OpenAI API 模型,或基于 OpenAI 并依赖于其客户端的其他集成,如 AnyscaleLLM、AzureOpenAILLM 和 TogetherLLM。
  • vertexai:用于通过 VertexAILLM 集成使用 Google Vertex AI 专有模型。
  • vllm:用于通过 vLLM 集成使用 vllm 服务引擎。
  • sentence-transformers:用于使用 sentence-transformers 生成句子嵌入。

3.3 数据处理

  • ray:用于使用 Ray 扩展和分发管道。
  • faiss-cpu 和 faiss-gpu:用于使用 faiss 生成句子嵌入。
  • minhash:用于使用 minhash 通过 datasketch 和 nltk 进行重复检测。
  • text-clustering:用于使用 UMAP 和 Scikit-learn 进行文本聚类。

3.4 结构化生成

  • outlines:用于使用带有大纲的结构化 LLM 生成。
  • tutor:用于使用带有 Instructor 的结构化 LLM 生成。

3.5 建议/注意事项

mistralai 依赖项需要 Python 3.9 或更高版本,因此如果要使用 distilabel.llms.MistralLLM 实现,则需要使用 Python 3.9 或更高版本。

在某些情况下,例如 transformersvllm,如果你使用 GPU 加速器,建议安装 flash-attn,因为它会加快推理过程,但安装需要单独进行,因为它不包含在 distilabel 依赖项中。

pip install flash-attn --no-build-isolation

此外,如果你愿意使用 llama-cpp-python 集成来运行本地 LLM,请注意,安装过程可能会根据你使用的操作系统而变得有点棘手,因此我们建议你阅读其文档中的安装部分


原文链接:Synthesize data for AI and add feedback on the fly!

BimAnt翻译整理,转载请标明出处