개발일기

[AI] 데이터셋 검증을 잘 하자 + 전처리 저장/로드

Nhahan 2024. 9. 29. 21:30

 

영-한 번역 모델을 만들어보고 있는데, 데이터셋 검증을 제대로 하지 않아 시간을 많이 날렸다.

대충 봐선 몰랐는데, 데이터셋을 하나하나 보니까 번역이 이상한 데이터셋...

https://huggingface.co/datasets/msarmi9/korean-english-multitarget-ted-talks-task

 

아니면 이런건 아예 컬럼이 없고 데이터만 딸랑 존재했다. (전처리의 귀찮음)

https://huggingface.co/datasets/bongsoo/news_talk_ko_en

 

 


 

데이터셋이 GB 단위로 넘어가면 로드에 매우 오랜 시간이 걸린다.

 

# 데이터셋 저장 경로 설정
processed_train_dataset_path = os.path.join(log_dir, "tokenized_train_dataset")
processed_eval_dataset_path = os.path.join(log_dir, "tokenized_eval_dataset")

# 전처리된 데이터셋이 이미 저장되어 있는지 확인하고, 있으면 불러오기
if os.path.exists(processed_train_dataset_path) and os.path.exists(processed_eval_dataset_path):
    logging.info("Loading preprocessed datasets from disk...")
    tokenized_train_dataset = load_from_disk(processed_train_dataset_path)
    tokenized_eval_dataset = load_from_disk(processed_eval_dataset_path)
else:
    logging.info("Preprocessing datasets...")
    tokenized_train_dataset = train_dataset.map(
        preprocess_function,
        batched=True,
        remove_columns=train_dataset.column_names,
    )
    tokenized_eval_dataset = eval_dataset.map(
        preprocess_function,
        batched=True,
        remove_columns=eval_dataset.column_names,
    )

    tokenized_train_dataset.save_to_disk(processed_train_dataset_path)
    tokenized_eval_dataset.save_to_disk(processed_eval_dataset_path)

그 때 이런 식으로, 저장했다가 불러오면 혹시 재학습을 하더라도 빠르게 진행이 가능하다.