paint-brush
わずか数行のコードで LLM の精度を高める方法@FrederikBussler
7,022 測定値
7,022 測定値

わずか数行のコードで LLM の精度を高める方法

Frederik Bussler5m2023/08/14
Read on Terminal Reader

長すぎる; 読むには

AI 革命は、ChatGPT のような大規模言語モデル (LLM) の出現によって変化し、データの複雑さに対する勝利を示しています。これらの LLM は、大規模なデータセット (最大 1 ペタバイト) と人間の言語の複雑な性質により、課題に直面しています。 Cleanlab のようなデータ中心のツールは、AI データ処理に革命をもたらし、データ改善プロセスを自動化し、進歩を民主化しました。現実世界のデータセットにはアノテーション エラー (7 ~ 50%) があり、トレーニングが妨げられるため、データ中心の AI が不可欠です。 OpenAI や Cleanlab などのツールはデータ品質を優先し、モデルの精度を大幅に向上させることができます。 Python のデモでは、Cleanlab がラベルの問題を検出し、データをフィルタリングし、モデルを再トレーニングすることで、精度が 63% から 66% 以上に大幅に向上する方法を紹介します。このデータ中心のアプローチは、GPT-5 のような将来の LLM に有望です。
featured image - わずか数行のコードで LLM の精度を高める方法
Frederik Bussler HackerNoon profile picture
0-item
1-item
2-item

AI 革命は何十年にもわたって起こりました。それは興奮に満ちた分野でしたが、失望や「 AI の冬」によって中断されることもよくありました。しかし最近、何かが変わりました。 ChatGPT、Claude、Bard などの大規模言語モデル (LLM) は、AI を研究室の好奇心から主流へと一気に押し上げました。


この変化は AI の勝利だけでなく、大規模で乱雑なデータの複雑さに対する勝利でもありました。ことわざにあるように、「ゴミは入ったらゴミは出る」。基礎となるデータの改善、つまり LLM の改善に重点を置いた新しいツールが登場しています。


LLM の二重の課題

「大規模言語モデル」という用語には 2 つの大きな課題が含まれています。まず、膨大な量のデータです。 GPT-4 のデータは 1 ペタバイト(100 万ギガバイト) を超えており、これには何百万もの書籍、ブログ、ソーシャル メディアの投稿、ビデオ トランスクリプトなどが含まれます。この巨大なスケールには膨大な可能性が秘められていますが、物流面での重要な考慮事項も伴います。


第二に、自然言語の複雑さです。コンテキストに依存し、曖昧で多様な言語データは、最高のアルゴリズムでも飼い慣らすのが難しい野獣です。このすべてのデータに正確にラベルを付けることは不可能であり、必然的に、最先端の LLM であっても、大量の誤ってラベルが付けられたデータに基づいてトレーニングされることになります。


これらの課題に直面する中で、新しいデータ中心のツールと方法論が登場し、AI の能力における真の飛躍を可能にしました。 Cleanlab などのソリューションは、多様なデータを収集し、品質管理を自動化し、言語を AI モデルに適した形式に処理する方法を提供し始めました。


これらのツールは、単に段階的な改善を提供するだけではありません。彼らは AI データ処理へのアプローチを根本的に再構築しました。彼らは、大規模な言語データを処理するタスクを、手動でエラーが発生しやすいプロセスから自動化された正確なプロセスに変換し、この分野を民主化し、前例のないペースでの進歩を可能にしました。


データ中心 AI が必要な理由 (Python デモ付き)

AI では、現実世界のデータセットには 7 ~ 50% の範囲のアノテーション エラーが含まれています。これらの不完全性は、トレーニングと評価を大きく妨げます。データ中心の AI は、データセット自体の品質を向上させることに重点を置いています。


たとえば、OpenAI の戦略はこの強調を示しています。「私たちは、すべての良好なデータを残すことよりも、すべての不良データをフィルタリングして取り除くことを優先しました。なぜなら、後でより多くのデータを使ってモデルを微調整して、新しいことを教えることはいつでも可能ですが、すでに学習したことをモデルに忘れさせるのははるかに難しいからです。」


ただし、データを手動でフィルタリングするアプローチは時間と費用がかかります。 Cleanlab パッケージは、今日データ中心の AI を実践するために人気のあるオープンソース フレームワークです。これにより、トレーニングされた ML モデルの出力に対してデータ品質アルゴリズムを実行して、ラベル エラー、外れ値、ドリフトなどの一般的なデータセットの問題を検出できます。


わずか数行のコードで、画像、テキスト、表形式、音声など、さまざまな種類のデータの問題を自動的に検出して特定できます。 Cleanlab パッケージを使用すると、既存のコードを変更せずに、データセットとモデルを改善する方法を決定し、ML モデルを再トレーニングして、パフォーマンスの向上を確認できます。


一方、Cleanlab Studio は、Cleanlab パッケージの単なる拡張ではありません。これは、現実世界のデータセットの問題を見つけて修正するように設計されたノーコード プラットフォームです。問題の検出にとどまらず、データのキュレーションと修正の処理をさらに進め、生データを信頼できる ML または分析に変換する困難な部分のほぼすべてを自動化します。


Cleanlab パッケージを使用して、データ中心の AI の力を実証してみましょう。


1. データの準備と微調整

まず、スタンフォード ポライトネス データセットから始めます。トレインセットとテストセットがロードされていることを確認してください。このデモでは、最初に Cleanlab を使用せずに 3 クラス分類用に Davinci LLM を微調整し、次にデータ中心で精度を向上させる方法を確認します。単純な bash コマンドを実行してモデルをトレーニングできます。


!openai api fine_tunes.create -t "train_prepared.jsonl" -v "test_prepared.jsonl" --compute_classification_metrics --classification_n_classes 3 -m davinci --suffix "baseline"


それが完了したら、 fine_tunes.resultsエンドポイントをクエリしてテストの精度を確認できます。


!openai api fine_tunes.results -i ft-9800F2gcVNzyMdTLKcMqAtJ5 > baseline.csv

`df = pd.read_csv('baseline.csv')

baseline_acc = df.iloc[-1]['分類/精度']`


63% の精度の結果が得られました。これを改善できるかどうか見てみましょう。


2. 予測クラス確率を取得する

次に、OpenAI の API を使用してエンベディングを計算し、ロジスティック回帰モデルを当てはめて、サンプル外の予測クラス確率を取得しましょう。


# Get embeddings from OpenAI. from openai.embeddings_utils import get_embedding

embedding_model = "text-similarity-davinci-001" train["embedding"] = train.prompt.apply(lambda x: get_embedding(x, engine=embedding_model)) embeddings = train["embedding"].values

# Get out-of-sample predicted class probabilities via cross-validation.

from sklearn.linear_model import LogisticRegression

model = LogisticRegression() labels = train["completion"].values pred_probs = cross_val_predict(estimator=model, X=embeddings, y=labels, cv=10, method="predict_proba")


Cleanlab は、たった 1 行のコードで、トレーニング データセット内のどのサンプルにラベルの問題があるかを推定します。


from cleanlab.filter import find_label_issues

これで、ラベルの問題があると推定される例のインデックスを取得できるようになりました。


issue_idx = find_label_issues(labels, pred_probs, return_indices_ranked_by='self_confidence') # sort indices by likelihood of label error


3. ラベルの問題をフィルタリングして再トレーニングする

これで、ラベルが誤っている可能性のあるサンプルのインデックスが自動的に抽出されたので、それらを削除して新しい分類子をトレーニングできるようになりました。


# Remove the label errors

train_cl = train.drop(issue_idx).reset_index(drop=True) format_data(train_cl, "train_cl.jsonl")


次に、より優れたデータを使用して、より堅牢な分類器をトレーニングしましょう。


!openai api fine_tunes.create -t "train_cl_prepared.jsonl" -v "test_prepared.jsonl" --compute_classification_metrics --classification_n_classes 3 -m davinci --suffix "dropped"


# Evaluate model on test data

!openai api fine_tunes.results -i ft-InhTRQGu11gIDlVJUt0LYbEx > cleanlab.csv df = pd.read_csv('cleanlab.csv') dropped_acc = df.iloc[-1]['classification/accuracy']


データセットを変更せずに自動的に改善するだけで、最先端の微調整可能なモデル (GPT-4 は微調整できないため、GPT-3) が改善され、66% 以上の精度が得られました。モデルに。


Cleanlab Studio を使用すると、間違ったラベルを完全に削除するのではなく自動的に修正することもできるため、精度がさらに向上します。 Cleanlab のガイドによると、これには最大 77% の精度が必要です。


テイクアウト

Cleanlab のようなデータ中心のツールを使用すると、データとラベルの問題を効率的に見つけて修正でき、Davinci のような LLM のパフォーマンスの大幅な向上につながります。このアプローチでは、モデル アーキテクチャやハイパーパラメーターは変更されず、トレーニング データの品質を向上させることだけに重点が置かれます。


このガイドで概説されているアプローチは、GPT-5 のような将来の高度な LLM を使用する場合でも、AI モデルの精度と堅牢性をさらに高める鍵となる可能性があります。