0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

第1回 Hugging Face Hubからデータセットをダウンロードする

Posted at

Setup

使用するデータセット Lerobotという,Robot learning beginnerのためのツールで提供されているもの

condaで仮想環境を作成しpythonを起動

conda create -n hf_dataset python=3.10
conda activate hf_dataset
pip install datasets
python

Load dataset info

試しにDatasetInfoをダウンロードしてみる

>>> from datasets import load_dataset_builder
>>> ds_builder = load_dataset_builder("lerobot/pusht")
Resolving data files: 100%|██████████████████| 206/206 [00:00<00:00, 394.01it/s]
Resolving data files: 100%|████████████████| 206/206 [00:00<00:00, 33082.92it/s

infoを確認 今回のデータセットにてinfoは明記されていないらしい

>>> ds_builder.info.description
''
>>> ds_builder.info.features
{'observation.state': Sequence(feature=Value(dtype='float32', id=None), length=2, id=None), 'action': Sequence(feature=Value(dtype='float32', id=None), length=2, id=None), 'episode_index': Value(dtype='int64', id=None), 'frame_index': Value(dtype='int64', id=None), 'timestamp': Value(dtype='float32', id=None), 'next.reward': Value(dtype='float32', id=None), 'next.done': Value(dtype='bool', id=None), 'next.success': Value(dtype='bool', id=None), 'index': Value(dtype='int64', id=None), 'task_index': Value(dtype='int64', id=None)}

次にデータセットを読み込んで見る

>>> from datasets import load_dataset
>>> dataset = load_dataset("lerobot/pusht", split="train")
Resolving data files: 100%|██████████████████| 206/206 [00:00<00:00, 356.97it/s]
Resolving data files: 100%|████████████████| 206/206 [00:00<00:00, 53833.43it/s]

Split

hugging faceのデータセットには,splitという概念がある.各データが,学習(train)用なのか,検証(validation)用なのか,テスト(test)用なのかで分類(split)されている.

データセットがどのようにsplitされているのかを取得してみる

>>> from datasets import get_dataset_split_names
>>> get_dataset_split_names("lerobot/pusht")
Resolving data files: 100%|████████████████| 206/206 [00:00<00:00, 17020.46it/s]
Resolving data files: 100%|████████████████| 206/206 [00:00<00:00, 34846.81it/s]
['train']

このsplitをベースにデータセットをダウンロードすることが可能 今回はtrainのみだが,test等もある場合はsplit="test"を指定してダウンロードすることができる

dataset = load_dataset("lerobot/pusht", split="train")

trainのみをダウンロードした場合はDatasetクラスを取得する

>>> dataset
Dataset({
    features: ['observation.state', 'action', 'episode_index', 'frame_index', 'timestamp', 'next.reward', 'next.done', 'next.success', 'index', 'task_index'],
    num_rows: 25650
})

一方,すべてのsplitをダウンロードした場合は,DatasetdictであるDatasetDictクラスを取得する

>>> dataset = load_dataset("lerobot/pusht")
Resolving data files: 100%|████████████████| 206/206 [00:00<00:00, 33516.69it/s]
Resolving data files: 100%|████████████████| 206/206 [00:00<00:00, 35335.62it/s]
>>> dataset
DatasetDict({
    train: Dataset({
        features: ['observation.state', 'action', 'episode_index', 'frame_index', 'timestamp', 'next.reward', 'next.done', 'next.success', 'index', 'task_index'],
        num_rows: 25650
    })
})

Configuration

sub-datasetを含むデータセットの場合,追加の設定configurationを指定してダウンロードする必要がある.
例えば,音声を含むデータセットは言語等の設定がある場合がある
configurationは以下のように取得できる

>>> from datasets import get_dataset_config_names
>>> get_dataset_config_names("lerobot/pusht")
Resolving data files: 100%|███████████████| 206/206 [00:00<00:00, 713481.94it/s]
['default']

configurationを指定してダウンロードするときは,第2引数で指定する

>>> dataset = load_dataset("lerobot/pusht", "default", split="train")
Resolving data files: 100%|██████████████████| 206/206 [00:00<00:00, 477.46it/s]
Resolving data files: 100%|████████████████| 206/206 [00:00<00:00, 27016.03it/s]

Remote code

いくつかのデータセットでは,データセット生成時に追加のスクリプトを実行する.一応マルウェア等はチェックしてくれているようだが,このスクリプトの安全性はきちんと調査するべき.スクリプトを実行しつつダウンロードする場合は,trust_remote_code=Trueの設定が必要

lerobotのデータでは必要なかったため,一例としてTutorialのcommandを添付

>>> from datasets import get_dataset_config_names, get_dataset_split_names, load_dataset

>>> c4 = load_dataset("c4", "en", split="train", trust_remote_code=True)
>>> get_dataset_config_names("c4", trust_remote_code=True)
['en', 'realnewslike', 'en.noblocklist', 'en.noclean']
>>> get_dataset_split_names("c4", "en", trust_remote_code=True)
['train', 'validation']

以上

Link

目次

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?