Datasets documentation

ビルドとロード

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v4.8.4).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

ビルドとロード

ほぼすべての深層学習ワークフローはデータセットの読み込みから始まるため、これは最も重要なステップの一つです。🤗 Datasets を使用すると、NLP タスクの開始に役立つ 900 以上のデータセットが利用できます。最初の一歩を踏み出すには、load_dataset() を呼び出すだけです。この関数は、使用するすべてのデータセットを構築して読み込むため、あらゆる意味で真の主力機能です。

ELI5: load_dataset

まずは、5歳児にもわかるような基本的な説明から始めましょう。

データセットは、以下を含むディレクトリです:

  • 汎用形式(JSON、CSV、Parquet、テキストなど)のデータファイル
  • データセットに関するドキュメントと、データセットのタグや設定を定義するためのYAMLヘッダーを含む、README.md という名前のデータセットカード

load_dataset() 関数は、要求されたデータセットをローカルまたは Hugging Face Hub から取得します。 Hub は、すべての Hugging Face データセットとモデルが保存される中央リポジトリです。

データセットにデータファイルのみが含まれている場合、load_dataset()は拡張子(json、csv、parquet、tsfile、txt など)からデータファイルの読み込み方法を自動的に推測します。 内部では、🤗 Datasetsはデータファイルの形式に基づいて適切なDatasetBuilderを使用します。🤗 Datasetsには、データファイルの形式ごとに1つのビルダーが存在します:

Shareセクションを読んで、データセットの共有方法について詳しく学びましょう。

🤗 Datasets は元の URL からデータセットファイルをダウンロードし、データセットを生成して、ドライブ上の Arrow テーブルとしてキャッシュします。 以前にデータセットをダウンロードしたことがある場合、🤗 Datasets はキャッシュから読み込むため、再度ダウンロードする手間を省くことができます。

データセットの構築方法について高レベルな理解を得たところで、ここではその仕組みの詳細な部分に目を向けましょう。

データセットの構築

データセットを初めて読み込むと、🤗 Datasets は生データファイルを受け取り、行と型付きの列からなるテーブルに構築します。データセットの構築を担当する主なクラスは2つあり、BuilderConfigとDatasetBuilderです。

BuilderConfig

BuilderConfigはDatasetBuilderの設定クラスです。BuilderConfigには、データセットに関する以下の基本的な属性が含まれます。

属性説明
nameデータセットの短い名前。
versionDatasetのバージョン識別子。
data_dirデータファイルを含むローカルフォルダへのパスを保存します。
data_filesローカルデータファイルへのパスを保存します。
descriptionデータセットの説明

クラスラベルなどの追加属性をデータセットに追加したい場合は、ベースのBuilderConfigクラスをサブクラス化できます。BuilderConfigクラスまたはそのサブクラスの属性を設定するには、2つの方法があります。

  • datasetsのDatasetBuilder.BUILDER_CONFIGS()属性に、BuilderConfigクラス(またはそのサブクラス)のインスタンスのリストを定義済みとして提供します。

  • load_dataset()を呼び出すと、メソッド固有でないキーワード引数は、BuilderConfigクラスの関連する属性を設定するために使用されます。これにより、特定の構成が選択されている場合、事前に定義された属性が上書きされます。

DatasetBuilder.BUILDER_CONFIG_CLASSを、BuilderConfigの任意のカスタムサブクラスに設定することもできます。

DatasetBuilder

DatasetBuilder は、BuilderConfig 内のすべての属性にアクセスして、実際のデータセットを構築します。

DatasetBuilderには、主に3つのメソッドがあります:

  1. DatasetBuilder._info() は、データセットの属性を定義する役割を担っています。dataset.info を呼び出すと、🤗 Datasets はここに保存されている情報が返されます。同様に、Features もここで指定されます。Features はデータセットの骨格のようなもので、各カラムの名前と型を提供します。

  2. DatasetBuilder._split_generator は、要求されたデータファイルをダウンロードまたは取得し、スプリットに整理して、生成プロセスのための特定の引数を定義します。このメソッドには、ファイルをダウンロードするか、ローカルファイルシステムから取得する DownloadManager が含まれています。DownloadManager 内には、元のデータファイルへの URL の辞書を受け取り、要求されたファイルをダウンロードする DownloadManager.download_and_extract() メソッドがあります。受け入れられる入力には、単一の URL またはパス、または URL またはパスのリスト/辞書が含まれます。TAR、GZIP、ZIP アーカイブなどの圧縮ファイル形式は、自動的に展開されます。

    ファイルのダウンロードが完了すると、SplitGenerator がそれらをスプリットに整理します。SplitGenerator にはスプリットの名前と、DatasetBuilder._generate_examples メソッドに渡されるすべてのキーワード引数が含まれます。キーワード引数はスプリットごとに固有のものであり、通常は各スプリットに対するデータファイルのローカルパスを少なくとも含みます。

  3. DatasetBuilder._generate_examples は、スプリット用のデータファイルを読み込み、解析します。その後、DatasetBuilder._info() の features で指定された形式に従って、データセットの例を生成します。DatasetBuilder._generate_examples の入力値は、実際には最後のメソッドのキーワード引数で提供された filepath です。

    データセットはPythonのジェネレーターによって生成され、すべてのデータをメモリに読み込みません。そのため、ジェネレーターは大きなデータセットを処理できます。ただし、生成されたサンプルがディスク上のデータセットファイルに書き出される(フラッシュされる)前に、ArrowWriterバッファに格納されます。つまり、生成されたサンプルはバッチ単位で書き出されます。データセットのサンプルが大量のメモリを消費する(画像や動画など)場合は、DatasetBuilderのDEFAULT_WRITER_BATCH_SIZE属性に低い値を指定してください。200 MBを超えるサイズは避けることをお勧めします。

整合性の維持

データセットが完全であることを保証するために、load_dataset() はダウンロードされたファイルに対して一連のテストを実行し、すべてが揃っていることを確認します。これにより、要求したデータセットが想定どおりに生成されない場合に、予期せぬ問題に遭遇することがなくなります。load_dataset() は以下を検証します:

  • 生成されたDatasetDictのスプリット数。
  • 生成されたDatasetDictの各分割におけるサンプル数。
  • ダウンロードされたファイルのリスト。
  • ダウンロードされたファイルのSHA256チェックサム(デフォルトでは無効)。

データセットが検証に合格しない場合、データセットの作成者がデータファイルに変更を加えた可能性が高いです。

この場合、データセットが変更されたことを示すエラーが発生します。 エラーを無視するには、load_dataset()でverification_mode="no_checks"を指定する必要があります。 検証エラーに遭遇した場合は、対応するデータセットの「Community」タブでディスカッションやプルリクエストを作成して、そのデータセットの整合性チェックが更新されるようご協力ください。

セキュリティ

Hub上のデータセットリポジトリはマルウェアのスキャン対象です。詳細はこちらをご覧ください。

Update on GitHub