一行のコードでHuggingfaceのデータセットを対話的に探索する
「Huggingfaceのデータセットを対話的に探索するための一行のコード」
ハギング フェイス データセットライブラリは、70,000以上の公開データセットにアクセスするだけでなく、カスタムデータセットのための非常に便利なデータ準備パイプラインも提供しています。
Renumics Spotlightを使用すると、データ内の重要なクラスターを特定するためのインタラクティブな可視化を作成することができます。SpotlightはHugging Faceデータセット内のデータセマンティクスを理解しているため、たった1行のコードで始めることができます:
import datasetsfrom renumics import spotlightds = datasets.load_dataset('speech_commands', 'v0.01', split='validation')spotlight.show(ds)
Spotlightを使用すると、予測や埋め込みなどのモデル結果を活用して、データセグメントやモデルの失敗モードに対するより深い理解を得ることができます:
- パンプキンスパイスの時系列分析’ (Pampukin Supaisu no Jikeiretsu Bunseki)
- ICAと現実のカクテルパーティの問題
- あなたのRAGベースのLLMシステムの成功を測る方法
ds_results = datasets.load_dataset('renumics/speech_commands-ast-finetuned-results', 'v0.01', split='validation')ds = datasets.concatenate_datasets([ds, ds_results], axis=1)spotlight.show(ds, dtype={'embedding': spotlight.Embedding}, layout=spotlight.layouts.debug_classification(embedding='embedding', inspect={'audio': spotlight.dtypes.audio_dtype}))
データの検査はほとんどのML開発段階で非常に重要なタスクですが、非常に時間がかかる場合もあります。
「データの手動検査は、機械学習におけるあらゆる活動の中でも最も価値の高い割合を持っています。」- Greg Brockman
Spotlightは、カスタムデータ検査ワークフローの設定と維持、および検査するための関連データサンプルとクラスターの検索をよりスケーラブルにするのに役立ちます。次のセクションでは、Hugging Faceデータセットを基にしたいくつかの例を紹介します。
Spotlight 🤝 Hugging Faceデータセット
データセットライブラリには、MLデータセットとの作業に最適なツールとしてのいくつかの機能があります。これは、共通のArrowテーブルにタブラーデータ(メタデータ、ラベルなど)と非構造化データ(画像、音声など)を格納することができます。データセットはまた、特徴(画像、音声など)および追加のタスク固有のメタデータを通じて重要なデータセマンティクスを説明します。
Spotlightは、データセットライブラリの上で直接動作します。これは、データの可視化と検査のためにデータセットをコピーまたは前処理する必要がないことを意味します。Spotlightはタブラーデータをメモリに読み込んで効率的なクライアントサイドのデータ分析を可能にします。メモリを多く消費する非構造化データサンプル(音声、画像、ビデオなど)は需要に応じて遅延読み込みされます。ほとんどの場合、データ型とラベルのマッピングはデータセットから直接推論されます。以下では、たった1行のコードでCIFAR-100データセットを可視化しています:
ds = datasets.load_dataset('cifar100', split='test')spotlight.show(ds)
データ型が曖昧または指定されていない場合、Spotlight APIを使用して手動で割り当てることもできます:
label_mapping = dict(zip(ds.features['fine_label'].names, range(len(ds.features['fine_label'].names))))spotlight.show(ds, dtype={'img': spotlight.Image, 'fine_label': spotlight.dtypes.CategoryDType(categories=label_mapping)})
データ検査にモデルの結果を活用する
生の非構造化データセットを探索すると、ほとんど洞察が得られません。予測や埋め込みなどのモデル結果を活用することで、重要なデータサンプルやクラスターを明らかにすることができます。Spotlightには、モデル結果を特に活用するためのいくつかの可視化オプション(類似性マップ、混同行列など)があります。
予測結果を直接Hugging Faceデータセットに保存することをお勧めします。これにより、データセットライブラリのバッチ処理能力を活用するだけでなく、ラベルマッピングも保持できます。
私たちは、transformersライブラリを使用して、CIFAR-100画像分類問題での埋め込みや予測を計算することができます。以下のコマンドを使用してライブラリをインストールします:
<!–pip install renumics-spotlight datasets transformers[torch]
今、豊富さを計算できます:
import torchimport transformersdevice = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")model_name = "Ahmed9275/Vit-Cifar100"processor = transformers.ViTImageProcessor.from_pretrained(model_name)cls_model = transformers.ViTForImageClassification.from_pretrained(model_name).to(device)fe_model = transformers.ViTModel.from_pretrained(model_name).to(device)def infer(batch): images = [image.convert("RGB") for image in batch] inputs = processor(images=images, return_tensors="pt").to(device) with torch.no_grad(): outputs = cls_model(**inputs) probs = torch.nn.functional.softmax(outputs.logits, dim=-1).cpu().numpy() embeddings = fe_model(**inputs).last_hidden_state[:, 0].cpu().numpy() preds = probs.argmax(axis=-1) return {"prediction": preds, "embedding": embeddings}features = datasets.Features({**ds.features, "prediction": ds.features["fine_label"], "embedding": datasets.Sequence(feature=datasets.Value("float32"), length=768)})ds_enriched = ds.map(infer, input_columns="img", batched=True, batch_size=2, features=features)
完全な推論実行を行いたくない場合、代わりにCIFAR-100の事前計算モデルの結果をダウンロードして、このチュートリアルに従うこともできます:
ds_results = datasets.load_dataset('renumics/spotlight-cifar100-enrichment', split='test')ds_enriched = datasets.concatenate_datasets([ds, ds_results], axis=1)
結果を使用して、Spotlightで関連するデータサンプルとクラスタをインタラクティブに探索することができます:
layout = spotlight.layouts.debug_classification(label='fine_label', embedding='embedding', inspect={'img': spotlight.dtypes.image_dtype})spotlight.show(ds_enriched, dtype={'embedding': spotlight.Embedding}, layout=layout)
データ検査ワークフローのカスタマイズ
ビジュアライゼーションレイアウトは、GUIでインタラクティブに変更、保存、ロードすることができます: 異なるウィジェットタイプや設定を選択することができます。Inspectorウィジェットでは、テキスト、画像、音声、ビデオ、時系列データを含むマルチモーダルデータサンプルを表現することができます。
Python APIを介してレイアウトを定義することもできます。このオプションは、EDA、モデルデバッグ、モデル監視のタスクを含む、カスタムのデータ検査とキュレーションワークフローの構築に特に便利です。
データの問題ウィジェットと組み合わせることで、既存のスクリプト(データ品質チェックやモデル監視など)の結果をスケーラブルなデータ検査ワークフローに統合する素晴らしい方法をPython APIは提供しています。
Hugging FaceハブでSpotlightを使用する
Spotlightは、ローカルのNLP、音声、CV、マルチモーダルデータセットでも直接使用することができます。Hugging Faceハブでデータセットやモデルの結果をショーケースする場合、Hugging Faceスペースを使用してSpotlightの視覚化を起動することができます。
既にハブには、多くの人気のあるNLP、音声、CVデータセットの例のスペースが用意されています。これらのスペースのいずれかを複製し、HF_DATASET
変数でデータセットを指定するだけで、自分のデータセットを表示することができます。
オプションで、モデルの結果やスプリット、サブセット、データセットのリビジョンなどの他の構成オプションを選択することができます。
次は何ですか?
Spotlightを使用すると、Hugging Faceのデータセットでインタラクティブな可視化を作成し、データの充実度を活用して重要なクラスタを特定することができます。このブログでは、音声ML例とコンピュータビジョン例の両方を見てきました。
Spotlightを直接使用して、NLP、音声、CV、マルチモーダルデータセットを探索し、キュレーションすることができます:
- Spotlightのインストール: pip install renumics-spotlight
- ドキュメンテーションを参照するか、Githubで問題を開く。
- Discord上でSpotlightコミュニティに参加する。
- TwitterのTwitterおよびLinkedInでフォローしてください。
We will continue to update VoAGI; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles