23.06.15
DEVOTEE를 활성화 시키면
지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.
버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.
| 컨텐츠 유형 | 제목 | 저장일 | 삭제 |
|---|
본인인증 로그인에 실패하였습니다.
회원이 아니시거나 본인인증 등록이
완료되지 않은 사용자입니다.
일반적인 데이터 ML 프로젝트에서 최적화 노력(실행 시간과 메모리)은 보통 알고리즘 측면에 집중됩니다.
하지만 I/O 관련 작업을 최적화함으로써도 상당한 개선을 경험할 수 있습니다.
데이터 저장에 가장 일반적인 옵션은 CSV이지만, 이는 시간과 저장 효율이 매우 낮습니다.
개선하는 방법에 대해 알아보겠습니다.
CSV 외에도 DataFrame을 저장할 수 있는 다양한 다른 옵션이 있습니다.
따라서 데이터 파이프라인을 최적화하기 위해 다음 매개변수에 대한 성능을 비교하는 것이 유용할 수 있습니다:
디스크에서 차지하는 공간
읽기 및 쓰기 실행 시간
이 실험을 위해, 다음과 같은 가상의 데이터를 생성했습니다:
100만 행
20개의 열
사례 1: 숫자 열만 포함된 경우.
사례 2: 숫자 열 10개와 문자열 열 10개가 포함된 경우.
테스트는 단일 노드에서 했습니다.
다음 시각 자료는 각 형식에 저장된 경우 DataFrame(사례 1 및 사례 2)의 메모리 사용량을 나타냅니다:
위에서 언급한 바와 같이:
두 경우 모두 CSV는 DataFrame을 저장하기에 가장 최적의 형식이 아닙니다.
숫자 데이터의 경우, Parquet는 CSV보다 2배 이상 적은 공간을 차지합니다.
숫자 데이터의 경우, Feather도 유망합니다.
혼합 열의 경우, JSON을 제외한 모든 형식이 거의 동일한 공간을 차지합니다.
다음으로, 아래 자료는 DataFrame을 해당 형식으로 저장하는 데 걸리는 실행 시간을 나타냅니다:
위에서 언급한 바와 같이:
숫자 열만 있을 경우, DataFrame을 pickle로 저장하는 것이 CSV보다 훨씬 빠릅니다. 하지만 혼합 열이 있는 경우 실행 시간이 크게 증가합니다.
Feather는 두 경우 모두 가장 적은 실행 시간을 가지므로 명확한 승자입니다. 또한, 앞서 언급한 저장 결과에서도 Feather 형식이 가장 유망한 형식 중 하나였습니다.
여기서 Parquet 형식도 유망합니다.
마지막으로, 아래 시각 자료는 해당 형식으로 저장된 DataFrame을 메모리에서 로드하는 데 걸리는 실행 시간을 나타냅니다:
위에서 언급한 바와 같이:
숫자 열이 있는 경우 Pickle, Feather, Parquet의 읽기 시간이 가장 짧습니다.
하지만 혼합 열이 있는 경우 Parquet의 읽기 시간이 크게 증가합니다.
Feather는 두 경우 모두 실행 시간이 짧아 가장 유망한 형식으로 보입니다.
CSV는 최적의 선택이 아닙니다.
Excel에서 열거나 지속적으로 데이터를 추가해야 할 때만 사용하세요.
CSV는 데이터 유형 정보를 보존하지 못합니다.
Pickle은 데이터 유형을 보존하지만, 혼합 열의 경우 실행 시간이 나빠집니다.
또한, Python 전용입니다.
Feather는 약간 더 많은 메모리를 사용하지만, 실행 시간이 빠릅니다.
Parquet는 숫자 데이터에 적합하고, 저장 공간 활용이 우수합니다.
CSV의 문제를 인식하고, 상황에 맞는 최적의 형식을 선택하는 것이 성능 개선에 도움이 될 것 같습니다.
DEVOTEE를 활성화 시키면
지금 작성한 댓글에 AI가 댓글을 달아줍니다.