Hugging Face Dataloader

‍이세현·2024년 1월 31일
1

Hugging Face

기계 학습 및 자연어 처리와 관련된 다양한 오픈 소스 도구와 라이브러리를 제공한다.

Data Loader

Hugging Face의 'datasets' 라이브러리로 학습에 사용될 데이터셋을 생성할 수 있다.
다음은 데이터셋을 정의하는 파이썬 클래스 Loader_Class이다. datasets.GeneratorBasedBuilder 클래스를 상속하여 데이터셋을 생성하는 데 필요한 기능들을 구현한다.

import datasets
import pandas as pd
from datasets import load_dataset
import torch

_VERSION = datasets.Version("1.1.1")
METADATA_PATH = "/home/train.jsonl"
_DEFAULT_CONFIG = datasets.BuilderConfig(name="default", version=_VERSION)

class Loader_Class(datasets.GeneratorBasedBuilder):
    BUILDER_CONFIGS = [_DEFAULT_CONFIG]
    DEFAULT_CONFIG_NAME = "default"

    def _info(self):
        return datasets.DatasetInfo(
            description="temp",
            features=datasets.Features(
                {
                    "input_data": datasets.features.Sequence(datasets.features.Value("float32")),
                    "output_data": datasets.features.Value("float32"),
                }
            ),
        )

    def _split_generators(self, dl_manager=None):
        return [
            datasets.SplitGenerator(
                name=datasets.Split.TRAIN,
                gen_kwargs={'data_list': METADATA_PATH}
            ),
        ]

    def _generate_examples(self, data_list):
        data_list = pd.read_json(data_list, lines=True)
        
        for idx, data in data_list.iterrows():
            input_data = data["input_data"]
            output_color = data["output_data"]

            yield idx, {
                "input_data": torch.flatten(torch.tensor(input_data, dtype=torch.float32)),
                "output_data": torch.tensor(output_data, dtype=torch.float32),
            }
    

Loader_Class라는 클래스(Loader_Class.py)는 반드시 Loader_Class라는 폴더에 포함되어 있어야 한다.

Loader 사용

dataset = load_dataset(path="/home/Loader_Class", split="train")
dataset.set_format(type="torch", columns=["input_data", "output_data"], dtype=torch.float32)

dataset의 version을 확인해보면 위에서 설정한대로 "1.1.1"이 출력된다.

print(f"version: {dataset.version}")
version: 1.1.1
profile
Hi, there 👋

0개의 댓글

관련 채용 정보