Data science105 리눅스에서 파일이 너무 많은 디렉토리가 느려지는 이유와 해결책 사전 지식: 리눅스는 파일을 어떻게 관리할까?이 현상을 이해하려면 리눅스 파일 시스템의 두 가지 핵심 개념인 아이노드(Inode)와 디렉토리 엔트리(Dentry)를 알아야 합니다.디렉토리 엔트리 (Directory entry): 이름과 번호표의 짝꿍 리눅스에서는 디렉토리(폴더)도 결국 하나의 특수한 파일입니다. 달리말하면, 파일시스템이 해석하는 구조화된 엔트리들의 집합입니다. 디렉토리라는 특수한 파일 안에는 그 폴더 안에 있는 파일들의 이름'과 그 파일의 '아이노드 번호'가 1:1로 매핑된 목록(Dentry)이 텍스트처럼 쭉 적혀 있습니다. 이것도 디스크 내에 저장되어있습니다. 주의해야할 것은 dentry라는 개념이 있는데, 이건 메모리에 있는 것입니다.아이노드 (Inode): 파일의 주민등록증. 파일의.. 2026. 3. 25. SLURM 단위 (Job, Task) 이해 JOB: sbatch 명령어로 실험 1개의 단위. jobId가 부여되는 하나의 단위임. QoS, Partition 자원같은게 Job단위로 일단 크게 구성됨.Task: Job내에서 SLURM이 띄우는 프로세스의 단위. 개수는 "#SABTACH--ntask=..."으로 결정. 직접 띄우는 OS프로세스임. 즉. "ps -u [사용자명]"으로 띄우는 테스크임. slurm이 관리하는 병렬 프로세스 수임. 즉, slurm이 띄운 프로세스가 자식프로세스로 여러개 병렬로 돌리는 것은 해당되지 않음. 아래의 경우는 테스크가 Job 하나에 Task가 한 개인 상태#SBATCH --nodes=1#SBATCH --ntasks=1 # SLURM task는 1개만#SBATCH --gres=gpu:2 .. 2025. 11. 13. DCL-GAN (Dual Contrastive Loss and Attention for GANs) MotivationGAN을 이용한 경우, 여전히 분산이 큰 이미지는 진짜/가짜 이미지의 구분이 쉬운 편 (분산이 크다?= 이미지가 매우 heterogenous한 특성이 있다=다양한 요소의 이미지. 예, 교회(스테인드글라스,문,건축양식)Discriminator의 문제: 실제 데이터에 대한 학습을 간접적으로 하다보니 특징이 일반화가 안됨 (Discrimiator 입장에서는 실제 데이터 $P_{data}$을 진짜 학습하기보다는, 실제데이터 분포 $P_{data}$ 와 가짜데이터 $P_{fake}$ 사이의 차이를 구분하는데 집중하기 때문)Generator 이용시 Attention의 효과에 대한 의문: CNN기반으로 이미지를 학습할 때, 먼거리의 이미지끼리 중요도를 고려하는 Long-range depdency을.. 2025. 4. 7. Airflow 사용법 및 기본 예제 Airflow을 사용하기 앞서 꼭 알아야하는 주요 개념Apache Airflow는 워크플로우(Workflow) 자동화 및 스케줄링을 위한 오픈소스 플랫폼임. 데이터 파이프라인을 효율적으로 관리하려면 Airflow의 핵심 개념을 이해하는 것이 중요. DAG (Directed Acyclic Graph): Airflow에서 워크플로우를 정의하는 기본 단위로, DAG은 여러 개의 Task로 구성Task & Operator: DAG안에 실행되는 개별작업을 Task라고 함. Task은 airflow의 Operator라는 클레스로 정의Task depdendecies: 테스크의 실행순서를 정의Branching (조건 분기)그외 기타..Xcom (cross-communication): Task간 데이터를 공유하는 기능E.. 2025. 3. 10. Gradient accumulation (그레디언트 누적) 요약Gradient Accumulation은 GPU 메모리 한계를 극복하면서 더 큰 배치(batch) 크기로 학습한 것과 동일한 효과를 내기 위해 사용하는 기법입니다. 문제: GPU 메모리 한계로 큰 배치를 한번에 학습할 수 없는 경우 발생해결방법작은 배치에서 계산된 loss을 gradient을 누적합니다. (=.backward()만 호출하면 gradient값이 더해집니다.)정해진 횟수(gradient accumulation step)만큼 누적되었다면 optimizer로 가중키를 업데이트 합니다.최종기울기가 큰 배치에서 한번에 처리한 결과와 동일하도록 각 loss을 gradient accumulation step만큼 나눠주어 스케일링합니다. 코드 스니펫아래와 같은 코드스니펫으로 사용될 수 있습니다. 주요.. 2025. 1. 22. GitHub Actions 의존성 캐싱하기 GitHub Actions에서 Python 의존성 설치 시간을 단축하려면, 캐시(Cache)를 활용해서 이미 설치한 라이브러리를 재사용하도록 구성하는 방법이 가장 간단하고 효과적입니다. 특히 actions/cache를 이용해 pip가 내려받은 패키지를 캐싱해두면, 매번 새로 설치할 필요가 없어져 실행 시간이 크게 단축됩니다. 아래와 같이 케시 작업을 workflow내에 추가합니다. - name: Cache pip dependencies uses: actions/cache@v2 with: path: ~/.cache/pip key: ${{ runner.os }}-pip-${{ hashFiles('requirements-dev.txt') }} restore-keys: |.. 2025. 1. 17. 이전 1 2 3 4 ··· 18 다음