新しいデータセット コレクションを追加する

このガイドに従って、新しいデータセット コレクション (TFDS または独自のリポジトリのいずれか) を作成します。

概要

新しいデータセット コレクションmy_collection TFDS に追加するには、ユーザーは次のファイルを含むmy_collectionフォルダーを生成する必要があります。

my_collection/
  __init__.py
  my_collection.py # Dataset collection definition
  my_collection_test.py # (Optional) test
  description.md # (Optional) collection description (if not included in my_collection.py)
  citations.md # (Optional) collection citations (if not included in my_collection.py)

慣例として、新しいデータセット コレクションは TFDS リポジトリのtensorflow_datasets/dataset_collections/フォルダーに追加する必要があります。

データセット コレクションを作成する

すべてのデータセット コレクションは、 tfds.core.dataset_collection_builder.DatasetCollectionのサブクラスとして実装されています。

以下は、ファイルmy_collection.pyで定義されたデータセット コレクション ビルダーの最小限の例です。

import collections
from typing import Mapping
from tensorflow_datasets.core import dataset_collection_builder
from tensorflow_datasets.core import naming

class MyCollection(dataset_collection_builder.DatasetCollection):
  """Dataset collection builder my_dataset_collection."""

  @property
  def info(self) -> dataset_collection_builder.DatasetCollectionInfo:
    return dataset_collection_builder.DatasetCollectionInfo.from_cls(
        dataset_collection_class=self.__class__,
        description="my_dataset_collection description.",
        release_notes={
            "1.0.0": "Initial release",
        },
    )

  @property
  def datasets(
      self,
  ) -> Mapping[str, Mapping[str, naming.DatasetReference]]:
    return collections.OrderedDict({
        "1.0.0":
            naming.references_for({
                "dataset_1": "natural_questions/default:0.0.2",
                "dataset_2": "media_sum:1.0.0",
            }),
        "1.1.0":
            naming.references_for({
                "dataset_1": "natural_questions/longt5:0.1.0",
                "dataset_2": "media_sum:1.0.0",
                "dataset_3": "squad:3.0.0"
            })
    })

次のセクションでは、上書きする 2 つの抽象メソッドについて説明します。

info : データセット コレクションのメタデータ

infoメソッドは、コレクションのメタデータを含むdataset_collection_builder.DatasetCollectionInfoを返します。

データセット コレクション情報には、次の 4 つのフィールドが含まれます。

  • name: データセット コレクションの名前。
  • description: データセット コレクションのマークダウン形式の説明。データセット コレクションの説明を定義するには 2 つの方法があります。(1) コレクションのmy_collection.pyファイル内で直接 (複数行の) 文字列として定義する - TFDS データセットに対して既に行われているのと同様です。 (2) description.mdファイル内。このファイルはデータセット コレクション フォルダーに配置する必要があります。
  • release_notes: データセット コレクションのバージョンから対応するリリース ノートへのマッピング。
  • 引用: データセット コレクションの BibTeX 引用 (複数可) のオプション (リスト)。データセット コレクションの引用を定義するには 2 つの方法があります。(1) コレクションのmy_collection.pyファイル内で (複数行の) 文字列として直接定義します。これは TFDS データセットに対して既に行われているのと同様です。 (2) citations.bibファイル内。このファイルはデータセット コレクション フォルダーに配置する必要があります。

datasets : コレクション内のデータセットを定義します

datasetsメソッドは、コレクション内の TFDS データセットを返します。

これは、データセット コレクションの進化を説明するバージョンの辞書として定義されます。

バージョンごとに、含まれる TFDS データセットは、データセット名からnaming.DatasetReferenceまでの辞書として保存されます。例えば:

class MyCollection(dataset_collection_builder.DatasetCollection):
  ...
  @property
  def datasets(self):
    return {
        "1.0.0": {
            "yes_no":
                naming.DatasetReference(
                    dataset_name="yes_no", version="1.0.0"),
            "sst2":
                naming.DatasetReference(
                    dataset_name="glue", config="sst2", version="2.0.0"),
            "assin2":
                naming.DatasetReference(
                    dataset_name="assin2", version="1.0.0"),
        },
        ...
    }

naming.references_forメソッドは、上記と同じことをよりコンパクトに表現する方法を提供します。

class MyCollection(dataset_collection_builder.DatasetCollection):
  ...
  @property
  def datasets(self):
    return {
        "1.0.0":
            naming.references_for({
                "yes_no": "yes_no:1.0.0",
                "sst2": "glue/sst:2.0.0",
                "assin2": "assin2:1.0.0",
            }),
        ...
    }

データセットコレクションの単体テストを行う

DatasetCollectionTestBase は、データセット コレクションの基本テスト クラスです。データセット コレクションが正しく登録され、そのデータセットが TFDS に存在することを保証するための簡単なチェックが多数提供されます。

設定する唯一のクラス属性はDATASET_COLLECTION_CLASSで、テストするデータセット コレクションのクラス オブジェクトを指定します。

さらに、ユーザーは次のクラス属性を設定できます。

  • VERSION : テストの実行に使用されるデータセット コレクションのバージョン (デフォルトは最新バージョン)。
  • DATASETS_TO_TEST : TFDS 内の存在をテストするデータセットを含むリスト (デフォルトはコレクション内のすべてのデータセット)。
  • CHECK_DATASETS_VERSION : データセット コレクション内のバージョン管理されたデータセットの存在を確認するか、デフォルト バージョンを確認するか (デフォルトは true)。

データセット コレクションの最も単純な有効なテストは次のようになります。

from tensorflow_datasets.testing.dataset_collection_builder_testing import DatasetCollectionTestBase
from . import my_collection

class TestMyCollection(DatasetCollectionTestBase):
  DATASET_COLLECTION_CLASS = my_collection.MyCollection

次のコマンドを実行して、データセットのコレクションをテストします。

python my_dataset_test.py

フィードバック

私たちはデータセット作成ワークフローの改善に継続的に取り組んでいますが、問題を認識している場合にのみそれを行うことができます。データセット コレクションの作成中にどのような問題やエラーが発生しましたか?最初は混乱する部分や機能しなかった部分はありましたか?

GitHubでフィードバックを共有してください。