跳到内容

EvolInstructGenerator

使用 LLM 生成进化指令。

WizardLM:增强大型语言模型以遵循复杂指令

属性

  • num_instructions: 要生成的指令数量。

  • generate_answers: 是否为指令生成答案。默认为 False

  • mutation_templates: 用于生成指令的突变模板。

  • min_length: 定义生成的指令需要高于的最小长度(以字节为单位),才能被认为是有效的。默认为 512

  • max_length: 定义生成的指令需要低于的最大长度(以字节为单位),才能被认为是有效的。默认为 1024

  • seed: 为 numpy 设置的种子,以便随机选择突变方法。默认为 42

运行时参数

  • min_length: 定义生成的指令需要高于的最小长度(以字节为单位),才能被认为是有效的。

  • max_length: 定义生成的指令需要低于的最大长度(以字节为单位),才能被认为是有效的。

  • seed: 为 numpy 设置的种子,以便随机选择突变方法。

输入 & 输出列

graph TD
    subgraph Dataset
        subgraph New columns
            OCOL0[instruction]
            OCOL1[answer]
            OCOL2[instructions]
            OCOL3[model_name]
        end
    end

    subgraph EvolInstructGenerator
        StepOutput[Output Columns: instruction, answer, instructions, model_name]
    end

    StepOutput --> OCOL0
    StepOutput --> OCOL1
    StepOutput --> OCOL2
    StepOutput --> OCOL3

输出

  • instruction (str): 如果 generate_answers=False,则为生成的指令。

  • answer (str): 如果 generate_answers=True,则为生成的答案。

  • instructions (List[str]): 如果 generate_answers=True,则为生成的指令列表。

  • model_name (str): 用于生成和进化指令的 LLM 的名称。

示例

生成没有初始指令的进化指令

from distilabel.steps.tasks import EvolInstructGenerator
from distilabel.models import InferenceEndpointsLLM

# Consider this as a placeholder for your actual LLM.
evol_instruct_generator = EvolInstructGenerator(
    llm=InferenceEndpointsLLM(
        model_id="mistralai/Mistral-7B-Instruct-v0.2",
    ),
    num_instructions=2,
)

evol_instruct_generator.load()

result = next(scorer.process())
# result
# [{'instruction': 'generated instruction', 'model_name': 'test'}]

参考文献