대용량 데이터 편집, 학습 관련

모델 학습 전 대용량 데이터 확인


1. 텍스트 파일 읽기 
1) UltraEdit 
장점 : 열단위 편집 가능, 대용량(10G이상) 문서 편집, 무료, 코드 자동정렬 (Json 등 모든 형식) 

2. linux 편집 
head : 문서 앞 5줄 미리보기  tail : 끝 5줄
cat ./aaa | wc -l : 실행 결과의 줄 수 세기, cat 결과의 줄 수를 wc로 셈




모델 학습시에, 데이터 용량이 커 메모리가 부족할 때


1. 필요한 컬럼만 추출

컬럼에 해당되는 메모리만 할당
df_2col = pd.read_csv(csv , usecols=["county", "cases"])
df_2col.info(verbose=False, memory_usage="deep")


2. 데이터 타입 변경


1) int64 --> int16등으로 내려 저장

df_2col = pd.read_csv(csv , usecols=["county", "cases"], dtype={"cased": "int16"}
df["cases"].memory_usage(index=False, deep=True)

2) Nan값을 지워버리고 저장

parse_series = df.astype("Sparse[str]")

Nan값이 포함된 경우 빈공간으로 변경한다. 링크

3. chunking


for chunk in pd.read_csv(csv, chunksize=100):
result[max_case_county] = max_case

데이터를 읽을 때, 쪼개서 읽는 방식이다. 링크

모델 학습 시킬 때, 배치마다 청킹을 쓸 수도 있다.
iterator를 받아서 필요한 데이터가 들어올 때 인덱싱을 하는 것이다. 
Pytorch를 예를 들면

import torch from torch.utils import data import pandas as pd

class MyDataset(data.Dataset):
def __init__(self, chunksize, nb_samples):
self.chunksize = chunksize
        self.len = nb_samples / self.chunksize

def __getitem__(self, index):
        pd.read_csv(..., skiprows=index*chunksize, chunksize=chunksize).

로 배치마다 파일을 읽어서 메모리를 관리할 수 있다.


https://towardsdatascience.com/what-to-do-when-your-data-is-too-big-for-your-memory-65c84c600585
https://discuss.pytorch.org/t/how-to-use-dataset-larger-than-memory/37785
https://discuss.pytorch.org/t/data-processing-as-a-batch-way/14154

댓글

가장 많이 본 글