如何使用 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 模型。

訓練愉快!

社群

註冊登入 發表評論

© . This site is unofficial and not affiliated with Hugging Face, Inc.