テキストラベラーを訓練する



この記事はチュートリアルシリーズの一部ですtxtai , AI動力セマンティック検索プラットフォーム
The Hugging Face Model Hub 多くのタスクを扱うことができるモデルの広い範囲を持っています.これらのモデルがうまく動作する間、タスク固有のデータを持つモデルを微調整するときに、最も良いパフォーマンスがしばしば見つかる.
抱擁する顔number of full-featured examples トレーニングタスク固有のモデルを支援するためにご利用いただけます.コマンドラインからモデルを構築するときは、これらのスクリプトを開始するのに最適な方法です.
Txtaiは、トランスフォームトレーナーのフレームワークを使用して、新しいモデルを訓練するために使用できるトレーニングパイプラインを提供します.トレーニングパイプラインは次のようにサポートしています.
  • 出力ディレクトリを必要としない過渡モデルの構築
  • Hugging顔データセット、PandasデータグラムとDictsのリストからのロードトレーニングデータ
  • すべての接着タスクを含むテキストシーケンス分類タスク
  • すべてのトレーニング引数
  • このモデルでは、Txtaiを使用して新しいモデルを訓練/微調整する方法の例を示します.

    依存関係のインストール


    インストールtxtai すべての依存関係.
    pip install txtai
    

    模型を作る


    それを正しくしましょう!以下の例では、SST 2データセットを持つ小さなバートモデルを微調整します.
    トレーナーのパイプラインは基本的に任意のテキスト分類/回帰モデル(ローカルおよび/またはHFハブから)を微調整する1つのライナーです.
    from datasets import load_dataset
    
    from txtai.pipeline import HFTrainer
    
    trainer = HFTrainer()
    
    # Hugging Face dataset
    ds = load_dataset("glue", "sst2")
    model, tokenizer = trainer("google/bert_uncased_L-2_H-128_A-2", ds["train"], columns=("sentence", "label"))
    
    デフォルトのトレーナーのパイプライン機能は、任意のログ、チェックポイントやモデルをディスクに格納されません.トレーナーは、永続的なモデルを有効にする標準的なTrainingTagsのいずれかを取ることができます.
    次のセクションでは、新しく構築したモデルを使用してラベルのパイプラインを作成し、モデルをSST 2バリデーションセットに対して実行します.
    from txtai.pipeline import Labels
    
    labels = Labels((model, tokenizer), dynamic=False)
    
    # Determine accuracy on validation set
    results = [row["label"] == labels(row["sentence"])[0][0] for row in ds["validation"]]
    sum(results) / len(ds["validation"])
    
    0.8268348623853211
    
    82.68 %の精度-小さなバートモデルに悪い.

    リストでモデルを訓練する


    前述のように、トレーナーパイプラインは顔データセット、パンダのデータグラムとDictsのリストを抱き締めます.以下の例では、リストを使用してモデルを訓練します.
    data = [{"text": "This is a test sentence", "label": 0}, {"text": "This is not a test", "label": 1}]
    
    model, tokenizer = trainer("google/bert_uncased_L-2_H-128_A-2", data)
    

    データクラフトでモデルを訓練する


    次のセクションでは、Pandas DataFrameに格納されているデータを使用して新しいモデルを構築します.
    import pandas as pd
    
    df = pd.DataFrame(data)
    
    model, tokenizer = trainer("google/bert_uncased_L-2_H-128_A-2", data)
    

    回帰モデルを訓練する


    以前のモデルは分類課題であった.以下のモデルは文類似度モデルを0対(1)(0)と1(類似)の間の1対1文の回帰出力を訓練する.
    ds = load_dataset("glue", "stsb")
    model, tokenizer = trainer("google/bert_uncased_L-2_H-128_A-2", ds["train"], columns=("sentence1", "sentence2", "label"))
    
    labels = Labels((model, tokenizer), dynamic=False)
    labels([("Sailing to the arctic", "Dogs and cats don't get along"), 
            ("Walking down the road", "Walking down the street")])
    
    [[(0, 0.5648878216743469)], [(0, 0.97544926404953)]]