728x90 memory_management6 [PYTHON] 대규모 데이터 셔플링 시 메모리 부족을 해결하는 np.memmap 활용 방법 7가지 파이썬을 활용한 데이터 사이언스와 머신러닝 워크플로우에서 가장 흔히 마주치는 벽은 바로 '메모리 부족(OutOfMemory, OOM)'입니다. 특히 수백 GB에 달하는 데이터셋을 학습시키기 전, 데이터의 편향을 제거하기 위해 수행하는 '셔플링(Shuffling)' 단계는 모든 데이터를 RAM에 올려야 한다는 고정관념 때문에 시스템 전체를 멈추게 하기도 합니다. 본 포스팅에서는 일반적인 np.random.shuffle의 한계를 뛰어넘어, 디스크를 RAM처럼 활용하는 Memory Mapping(np.memmap) 기술을 통해 저사양 환경에서도 대규모 데이터를 효율적으로 처리하는 전문적인 해결 방법을 제시합니다.1. 왜 일반적인 셔플링은 대용량 데이터에서 실패하는가?일반적으로 사용하는 numpy.array는 .. 2026. 4. 19. [PYTHON] RNN/LSTM Hidden State 전파의 2가지 메모리 관리 방법과 해결책 7가지 순차 데이터(Sequential Data)를 다루는 딥러닝 아키텍처에서 RNN과 LSTM은 시점(Time-step)을 가로지르는 정보의 가교 역할을 합니다. 하지만 많은 엔지니어들이 시계열 모델을 설계할 때 가장 고전하는 지점은 모델의 논리가 아니라 Hidden State(은닉 상태) 전파 과정에서 발생하는 메모리 관리 이슈입니다. 특히 긴 시퀀스를 처리할 때 그래디언트가 연산 그래프를 비정상적으로 점유하여 발생하는 GPU Out-of-Memory(OOM)나 성능 저하 문제는 단순한 하드웨어 증설만으로는 해결되지 않습니다.본 포스팅에서는 2026년 최신 딥러닝 최적화 기법을 바탕으로, 은닉 상태를 유지하면서도 메모리 효율을 극대화하는 Truncated BPTT와 Stateful/Stateless 구조의 .. 2026. 4. 17. [PYTHON] 객체 복사의 2가지 메커니즘 : copy와 deepcopy의 내부 순회 방식 차이 해결 파이썬에서 가변 객체(Mutable Objects)를 다룰 때 가장 흔하게 발생하는 실수 중 하나는 '참조 복사'와 '실제 복사'를 혼동하는 것입니다. 단순히 리스트나 딕셔너리를 복사했다고 생각했지만, 원본 데이터를 수정했을 때 복사본까지 함께 변경되는 당혹스러운 경험을 해보셨을 것입니다. 본 가이드에서는 파이썬의 copy 모듈이 내부적으로 객체를 어떻게 트리 구조로 탐색하고 복제하는지, 그 기술적 깊이를 분석하여 데이터 무결성을 지키는 방법을 제시합니다.1. 객체 복사의 근본적 이유와 메모리 참조파이썬의 모든 것은 객체입니다. 변수는 객체를 담는 그릇이 아니라 객체의 메모리 주소를 가리키는 '포인터'에 가깝습니다. 따라서 b = a와 같은 할당문은 객체를 복사하는 것이 아니라 주소값만 전달합니다. 이를.. 2026. 3. 3. [PYTHON] 메모리 측정의 함정 2가지 : sys.getsizeof()와 실제 점유율 차이 해결 방법 파이썬 애플리케이션을 운영하다 보면 sys.getsizeof()로 측정한 객체 크기의 총합보다 실제 프로세스가 점유하고 있는 RSS(Resident Set Size) 메모리가 훨씬 큰 경우를 자주 목격하게 됩니다. 개발자는 "왜 데이터 크기는 100MB인데 프로세스는 500MB를 쓰고 있을까?"라는 의문에 빠지기 쉽습니다. 본 가이드에서는 파이썬의 메모리 관리 아키텍처를 심층 분석하여 측정값과 실제 점유율 사이의 차이가 발생하는 근본 원인을 밝히고, 이를 정확하게 측정하는 방법을 제시합니다.1. sys.getsizeof()의 한계와 측정 방식의 이해sys.getsizeof()는 파이썬 객체 자체의 크기(바이트 단위)를 반환하는 함수입니다. 하지만 이 함수는 '얕은 측정(Shallow measurement.. 2026. 2. 28. [PYTHON] 기가바이트급 대용량 데이터 처리 해결 : mmap 활용 방법과 일반 I/O의 3가지 차이 데이터 사이언스와 백엔드 엔지니어링 분야에서 기가바이트(GB) 혹은 테라바이트(TB) 단위의 파일을 다루는 것은 일상적인 과제가 되었습니다. 하지만 파이썬의 일반적인 read()나 readlines() 방식을 사용하여 큰 데이터를 메모리에 올리려 하면 곧바로 MemoryError를 마주하게 됩니다. 이를 우아하게 극복할 수 있는 치밀한 방법이 바로 메모리 맵 파일(Memory-mapped File, mmap)입니다. 본 글에서는 OS 레벨의 메모리 관리 기법을 파이썬에 녹여내어 성능을 극대화하는 전략을 분석합니다.1. mmap이란 무엇인가? (개념과 원리)mmap은 디스크에 있는 파일의 내용을 프로세스의 가상 메모리 주소 공간에 직접 매핑하는 기술입니다. 파일을 마치 메모리에 올라와 있는 거대한 '바이트.. 2026. 2. 28. [PYTHON] 메모리 효율 극대화의 핵심 3단계 : pymalloc의 Small Object Allocator 작동 원리 해결 방법 파이썬은 고수준 언어로서 개발자에게 편리함을 제공하지만, 내부적으로는 매우 복잡하고 정교한 메모리 관리 시스템을 가동하고 있습니다. 특히 수많은 작은 객체(Small Objects)를 빈번하게 생성하고 소멸시키는 파이썬의 특성상, 매번 OS에 시스템 콜(malloc)을 요청하는 것은 심각한 성능 저하를 야기합니다. 이를 해결하기 위해 도입된 것이 바로 pymalloc이라 불리는 전용 메모리 할당기입니다. 본 글에서는 파이썬의 성능을 결정짓는 핵심 메커니즘인 Small Object Allocator의 구조와 방법을 심도 있게 분석합니다.1. 왜 파이썬은 전용 할당기(pymalloc)를 사용하는가?일반적인 C 라이브러리의 malloc은 범용적인 목적으로 설계되어 다양한 크기의 메모리 요청을 처리합니다. 하지.. 2026. 2. 28. 이전 1 다음 728x90