본문 바로가기
728x90

dataloader10

[PYTORCH] Custom collate_fn 구현 방법 및 7가지 가변 길이 시퀀스 해결 가이드 PyTorch의 DataLoader는 기본적으로 모든 데이터 샘플의 크기가 동일하다고 가정하고 이를 단순히 스택(Stack)하여 배치를 만듭니다. 하지만 자연어 처리(NLP)나 오디오 분석과 같이 가변 길이 시퀀스(Variable-length sequences)를 다룰 때는 기본 방식이 에러를 발생시킵니다. 본 가이드에서는 collate_fn을 커스텀하여 복잡한 데이터 구조를 효율적인 텐서 배치로 변환하는 전문적인 해결책을 제시합니다.1. Default Collate와 Custom Collate의 핵심 차이 및 해결 과제기본 default_collate는 리스트 형태의 샘플을 받아 torch.stack()을 호출합니다. 만약 샘플들의 shape가 하나라도 다르면 학습은 중단됩니다. 이를 해결하기 위해 개.. 2026. 3. 25.
[PYTORCH] CSV 파일을 읽어 데이터셋으로 만드는 7가지 방법과 성능 해결 가이드 대부분의 정형 데이터는 CSV(Comma-Separated Values) 포맷으로 저장되어 있습니다. 하지만 수십 GB에 달하는 거대한 CSV 파일을 단순히 리스트로 불러와 모델에 입력하면 메모리 부족(OOM) 현상이나 데이터 로딩 병목이 발생하게 됩니다. 본 가이드에서는 Pandas와 PyTorch Dataset의 결합을 통해 메모리 효율성을 극대화하고, 실제 프로덕션 환경에서 바로 사용 가능한 7가지 데이터셋 빌드 패턴을 상세히 다룹니다.1. CSV 데이터셋 로딩의 기술적 설계와 차이점 분석단순히 CSV를 읽는 것을 넘어, PyTorch 파이프라인으로 통합할 때는 Eager Loading(한꺼번에 로드)과 Lazy Loading(필요할 때 로드)의 차이를 명확히 이해해야 합니다. 데이터의 크기와 RA.. 2026. 3. 25.
[PYTORCH] WeightedRandomSampler를 이용한 불균형 데이터 처리 방법 및 7가지 실무 해결 가이드 현실 세계의 데이터는 결코 공평하지 않습니다. 암 진단 데이터셋에서 정상 데이터가 99%이고 암 데이터가 1%인 상황은 매우 흔합니다. 이러한 **클래스 불균형(Class Imbalance)** 상황에서 일반적인 무작위 샘플링을 사용하면, 모델은 단순히 다수 클래스만 맞추도록 학습되어 정작 중요한 소수 클래스를 식별하지 못하게 됩니다. PyTorch의 WeightedRandomSampler는 이러한 통계적 편향을 학습 파이프라인 레벨에서 우아하게 해결할 수 있는 강력한 도구입니다. 본 가이드에서는 가중치 계산의 수학적 원리부터 7가지 실무 시나리오별 구현 예제까지 상세히 다룹니다.1. 불균형 데이터 문제와 WeightedRandomSampler의 필요성모델 학습 시 DataLoader에서 shuffle=.. 2026. 3. 25.
[PYTHON] GraphQL과 Graphene 통합 시 발생하는 3가지 성능 병목 해결 방법과 REST 차이점 분석 현대적인 웹 API 설계에서 GraphQL은 클라이언트가 필요한 데이터만 정확히 요청할 수 있다는 점에서 혁신적인 대안으로 자리 잡았습니다. 특히 파이썬 생태계의 Graphene 라이브러리는 클래스 기반의 선언적 방식을 통해 파이썬 객체와 GraphQL 스키마를 우아하게 연결해 줍니다. 하지만 프로덕션 환경에서 Graphene을 무턱대고 사용했다가는 예기치 못한 성능 저하를 겪기 마련입니다.본 포스팅에서는 Graphene 통합 시 반드시 고려해야 할 성능 최적화 방법과 데이터 로딩 과정에서 발생하는 고질적인 문제를 해결하는 전략을 제시하며, 전통적인 REST 방식과의 결정적인 성능 차이 3가지를 심층적으로 다룹니다.1. Graphene 성능의 핵심: N+1 쿼리 문제와 원인GraphQL의 유연함은 서버 .. 2026. 2. 23.
728x90