如何使用 AutoTrain 微调自定义嵌入模型
AutoTrain 是一款强大的无代码工具,可让您轻松地在自己的数据集上训练或微调许多不同的先进模型,包括 Sentence Transformer 模型。这是一份简单的指南,帮助您开始使用 AutoTrain 微调自定义嵌入模型。
AutoTrain 中 Sentence Transformer 微调的类型
AutoTrain 支持多种类型的 Sentence Transformer 微调任务
- pair: 数据集包含两个句子:anchor (锚点) 和 positive (正例)。
- pair_class: 数据集包含两个句子:premise (前提) 和 hypothesis (假设),以及一个目标标签。
- pair_score: 数据集包含两个句子:sentence1 和 sentence2,以及一个目标分数。
- triplet: 数据集包含三个句子:anchor (锚点)、positive (正例) 和 negative (负例)。
- 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 进行微调的步骤
安装 AutoTrain-Advanced: 确保您已安装
autotrain-advanced
。您可以通过 pip 安装:pip install autotrain-advanced
准备配置: 将上述 YAML 配置另存为
config.yml
。运行训练: 执行以下命令开始微调过程
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 界面将如下所示:
点击“开始训练”将启动训练过程 :)
附:您也可以在 Google Colab 上做同样的事情!查看 GitHub 仓库以了解更多信息。
总结
通过遵循这些步骤并确保正确的数据格式和列映射,无论您是通过 Web 界面还是命令行界面,都可以有效地使用 AutoTrain 微调自定义嵌入模型。只需一个简单的配置文件,您就可以利用 AutoTrain 训练出满足您特定需求的强大 Sentence Transformer 模型。
训练愉快!