본문 바로가기

👩‍💻 도비는 공부중/💼 하계연구연수생(2023)

[hdf5] 대용량 데이터 처리

  • h5py + HDF5Mtrix
  • data generator library

 

csv 파일로 처리하다가 어쩌구

>> 메모리 부족으로 생기는 오류 같아요..

>> 대용량 데이터를 처리하는 방법에 대해 알아봅시다!

>> hdf5


 

1. tensorflow version

 


 

2. Import

import h5py
from tensorflow.keras.utils import HDF5Matrix

 


 

3. Create h5py data

 

data = pd.read_csv('data')

# 구조 생성시 데이터 불러와 넣어주는 작업 필요
# 데이터 나눠서 부르고 인덱스로 구분지어 입력 가능

f = h5py.File('path', 'w')

"""
데이터 저장 위한 구조 생성
keyword: 데이터 구조 접근 | data size: row, col | dtype
""" 

X = f.create_dataset('x', (10000000, 22), dtye='float32')
Y = f.create_dataset('y', (10000000, 1), dtype='float32')

# 데이터 입력하기
X[:] = data.iloc[:, 1:]	# f['x'] = data.iloc[:, 1:]
Y[:] = data.iloc[:, 0]  # f['y'] = data.iloc[:, 0]

# 나누어 입력하는 방법
# X[1:50 = data.iloc[1:50. 1:]

f.close()

 

 

4. Training

# load path

tx = HDF5Matrix('h5py path' 'keyword')
ty = HDF5Matrix('h5py path' 'keyword')

# batch 만큼의 데이터만 실제 메모리에 올려 학습에 사용
# batch 사이즈 잘 조절 > 메모리 에러에서 자유!!

# pytorch
model = Model() # 딥러닝 모델 생성
for e in range(1, 100):
	for j in range(int(len(data/5000))):
    	# ...
        model.forward(tx[j*5000: (j+1)*5000], ty[j*5000:(j+1)*5000])
        # ...

대용량 csv 파일을 hdf5 파일로 저장

 

scaler.pkl

test.hdf5

train.hdf5

val.hdf5

 

hdf5 viewer 설치 후 확인 가능

더보기

pickle: 파이썬 객체를 직렬화 |  역직렬화 하는 기능 제공

> 객체를 파일에 저장하거나 읽어올 때 사용한다

 

ex_

data = { ... }

# 객체를 pkl 파일로 저장
with open('data.pkl', 'wb') as file:
	pickle.dump(data, file)
    
# pkl 파일에서 객체 불러오기
with open('data.pkl', 'rb') as file:
	loaded_data = pickle.load(file)

 

 


  • window - nvidia-smi 지속 출력 방법
  • 그냥 궁금한거: mac에서는? [blog]
  •