如何使用 AutoTrain 微调自定义嵌入模型

社区文章 发布于 2024 年 5 月 30 日

AutoTrain 是一款强大的无代码工具,可让您轻松地在自己的数据集上训练或微调许多不同的先进模型,包括 Sentence Transformer 模型。这是一份简单的指南,帮助您开始使用 AutoTrain 微调自定义嵌入模型。

AutoTrain 中 Sentence Transformer 微调的类型

AutoTrain 支持多种类型的 Sentence Transformer 微调任务

  1. pair: 数据集包含两个句子:anchor (锚点) 和 positive (正例)。
  2. pair_class: 数据集包含两个句子:premise (前提) 和 hypothesis (假设),以及一个目标标签。
  3. pair_score: 数据集包含两个句子:sentence1 和 sentence2,以及一个目标分数。
  4. triplet: 数据集包含三个句子:anchor (锚点)、positive (正例) 和 negative (负例)。
  5. qa: 数据集包含两个句子:query (问题) 和 answer (回答)。

数据格式

AutoTrain 接受 CSV 或 JSONL 格式的数据。您也可以使用 Hugging Face Hub 上的数据集。让我们看看每个任务的数据格式。

  • pair:

    | anchor                          | positive                        |
    |---------------------------------|---------------------------------|
    | hello                           | hi                              |
    | how are you                     | I am fine                       |
    | What is your name?              | My name is Abhishek             |
    | Which is the best programming language? | Python                |
    
  • pair_class:

    | premise                         | hypothesis                      | label |
    |---------------------------------|---------------------------------|-------|
    | hello                           | hi                              | 1     |
    | how are you                     | I am fine                       | 0     |
    | What is your name?              | My name is Abhishek             | 1     |
    | Which is the best programming language? | Python                | 1     |
    
  • pair_score:

    | sentence1                       | sentence2                       | score |
    |---------------------------------|---------------------------------|-------|
    | hello                           | hi                              | 0.8   |
    | how are you                     | I am fine                       | 0.2   |
    | What is your name?              | My name is Abhishek             | 0.9   |
    | Which is the best programming language? | Python                | 0.7   |
    
  • triplet:

    | anchor                          | positive                        | negative                        |
    |---------------------------------|---------------------------------|---------------------------------|
    | hello                           | hi                              | bye                             |
    | how are you                     | I am fine                       | I am not fine                   |
    | What is your name?              | My name is Abhishek             | Whats it to you?                |
    | Which is the best programming language? | Python                | Javascript                      |
    
  • qa:

    | query                           | answer                          |
    |---------------------------------|---------------------------------|
    | hello                           | hi                              |
    | how are you                     | I am fine                       |
    | What is your name?              | My name is Abhishek             |
    | Which is the best programming language? | Python                |
    

列映射

列映射对于 AutoTrain 理解数据集中每列的角色至关重要。以下是如何为每个任务映射列:

任务 列映射
pair {"sentence1_column": "anchor", "sentence2_column": "positive"}
pair_class {"sentence1_column": "premise", "sentence2_column": "hypothesis", "target_column": "label"}
pair_score {"sentence1_column": "sentence1", "sentence2_column": "sentence2", "target_column": "score"}
triplet {"sentence1_column": "anchor", "sentence2_column": "positive", "sentence3_column": "negative"}
qa {"sentence1_column": "query", "sentence2_column": "answer"}

准确映射的技巧

  • 验证列名: 确保映射字典中使用的名称与数据集中的列名相匹配。
  • 为新数据集更新映射: 每个数据集可能需要根据其结构进行独特的映射。

通过遵循这些步骤并确保正确的数据格式和列映射,您可以有效地使用 AutoTrain 微调自定义嵌入模型。

使用 AutoTrain CLI 进行微调

一旦您设置好数据和列映射,就可以使用 AutoTrain CLI 微调您的 Sentence Transformer 模型。以下是 triplet 任务的配置示例。

配置文件 (config.yml)

创建一个包含以下内容的 config.yml 文件

task: sentence-transformers:triplet
base_model: microsoft/mpnet-base
project_name: autotrain-st-triplet
log: tensorboard
backend: local

data:
  path: sentence-transformers/all-nli
  train_split: triplet:train
  valid_split: triplet:dev
  column_mapping:
    sentence1_column: anchor
    sentence2_column: positive
    sentence3_column: negative

params:
  max_seq_length: 512
  epochs: 5
  batch_size: 8
  lr: 2e-5
  optimizer: adamw_torch
  scheduler: linear
  gradient_accumulation: 1
  mixed_precision: fp16

hub:
  username: ${HF_USERNAME}
  token: ${HF_TOKEN}
  push_to_hub: true

使用 CLI 进行微调的步骤

  1. 安装 AutoTrain-Advanced: 确保您已安装 autotrain-advanced。您可以通过 pip 安装:

    pip install autotrain-advanced
    
  2. 准备配置: 将上述 YAML 配置另存为 config.yml

  3. 运行训练: 执行以下命令开始微调过程

    autotrain --config config.yml
    

不同任务的配置

以下是 config.yml 文件在不同任务下的变化:

Pair 任务

task: sentence-transformers:pair

data:
  column_mapping:
    sentence1_column: anchor
    sentence2_column: positive

Pair Class 任务

task: sentence-transformers:pair_class

data:
  column_mapping:
    sentence1_column: premise
    sentence2_column: hypothesis
    target_column: label

Pair Score 任务

task: sentence-transformers:pair_score

data:
  column_mapping:
    sentence1_column: sentence1
    sentence2_column: sentence2
    target_column: score

QA 任务

task: sentence-transformers:qa

data:
  column_mapping:
    sentence1_column: query
    sentence2_column: answer

请注意,对于所有任务,您都需要不同类型的数据集,并且列映射将根据您数据集中可用的列名而改变。这是一个示例数据集,其中包含了上述大多数训练器类型。

通过 AutoTrain UI 在 Hugging Face Spaces 上训练

如果您想使用 AutoTrain UI 在 Hugging Face Spaces 上进行训练,您可以点击这里,附加适当的硬件并创建空间,然后选择正确的任务。最终的 UI 界面将如下所示:

image/png

点击“开始训练”将启动训练过程 :)

附:您也可以在 Google Colab 上做同样的事情!查看 GitHub 仓库以了解更多信息。

总结

通过遵循这些步骤并确保正确的数据格式和列映射,无论您是通过 Web 界面还是命令行界面,都可以有效地使用 AutoTrain 微调自定义嵌入模型。只需一个简单的配置文件,您就可以利用 AutoTrain 训练出满足您特定需求的强大 Sentence Transformer 模型。

训练愉快!

社区

注册登录 发表评论