テキストラベラーを訓練する
8320 ワード
この記事はチュートリアルシリーズの一部ですtxtai , AI動力セマンティック検索プラットフォーム
The Hugging Face Model Hub 多くのタスクを扱うことができるモデルの広い範囲を持っています.これらのモデルがうまく動作する間、タスク固有のデータを持つモデルを微調整するときに、最も良いパフォーマンスがしばしば見つかる.
抱擁する顔number of full-featured examples トレーニングタスク固有のモデルを支援するためにご利用いただけます.コマンドラインからモデルを構築するときは、これらのスクリプトを開始するのに最適な方法です.
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)]]
Reference
この問題について(テキストラベラーを訓練する), 我々は、より多くの情報をここで見つけました
https://dev.to/neuml/train-a-text-labeler-4cnk
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
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)]]
Reference
この問題について(テキストラベラーを訓練する), 我々は、より多くの情報をここで見つけました
https://dev.to/neuml/train-a-text-labeler-4cnk
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
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)]]
Reference
この問題について(テキストラベラーを訓練する), 我々は、より多くの情報をここで見つけました
https://dev.to/neuml/train-a-text-labeler-4cnk
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
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)]]
Reference
この問題について(テキストラベラーを訓練する), 我々は、より多くの情報をここで見つけました https://dev.to/neuml/train-a-text-labeler-4cnkテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol