전체 글 99

코드에서 배치 처리가 효율성을 가져오는 이유

배경pdf-rag를 제작할때, 많은 장수의 pdf를 처리하고 저장해야 했는데 for문으로 한장씩 처리해 속도가 느렸다.더 빠른 방법이 없을까 고민하다 batch 처리에 대해 알게 됐고, 무지하게 빨라져 그 이유가 궁금해 찾아봤다.내 코드에서 배치 처리가 빨랐던 이유1. I/O 효율성 - 디스크 접근 및 파일 처리 최적화파일을 한 번에 작은 단위로 나누어 처리하는 대신, 여러 페이지를 한꺼번에 배치로 처리함으로써 디스크 I/O 작업을 최적화할 수 있습니다. 디스크 접근은 일반적으로 매우 비용이 많이 드는 작업입니다. 파일을 여러 번 나누어 읽고 쓰면, 각 I/O 작업마다 디스크의 시작 및 탐색(Seek) 시간과 파일 시스템 오버헤드가 발생합니다.디스크 접근 시간: 디스크에서 데이터를 읽고 쓰는 시간은 랜덤..

병렬 처리 몇 가지와 사용처

조사하게된 배경https://makenow90.tistory.com/66병렬 처리의 세 가지 주요 개념: 비동기 처리, 멀티스레드, 멀티코어병렬 처리는 작업의 특성에 따라 적합한 방식이 다릅니다. I/O 병렬 처리는 주로 입출력 대기 시간이 많은 작업에서, 멀티스레드는 경량 작업이나 I/O 바운드 작업에서, 그리고 멀티코어는 CPU 집약적인 작업에서 각각 효율적입니다. 여기에서는 각 방식의 특징과, 적절한 코드 예시를 설명하겠습니다.1. 비동기 처리 비동기 처리란, 작업이 완료될 때까지 기다리지 않고 다른 작업을 계속 진행하는 방식을 의미합니다.이는 I/O 작업, 네트워크 요청, 파일 읽기/쓰기 등 대기 시간이 발생하는 작업에서 효율적으로 사용됩니다.Python에서는 asyncio, aiohttp, **..

GPU 작동원리

작업 순서작업 분할 및 할당데이터 로드 및 준비병렬 연산 수행캐시 시스템 활용특화 유닛 활용결과 통합 및 출력상호작용과 피드백 루프각 작업 설명1. 작업 분할 및 할당명령 디코딩:CPU는 복잡한 고수준 명령어를 해석하고, 이를 GPU가 처리할 수 있는 작은 작업 단위로 분할하는 과정을 수행합니다. 이 과정은 CPU가 전체 작업을 여러 개의 간단한 연산으로 나누어, 병렬 처리가 가능한 형태로 만드는 것입니다. 이렇게 분할된 작업 단위는 GPU의 대규모 병렬 처리 능력을 최대한 활용할 수 있도록 설계됩니다.커널 런칭:분할된 작은 작업 단위들은 "커널(Kernel)"이라고 불립니다. 커널은 GPU에서 실행될 수 있는 프로그램의 가장 작은 단위로, 특정 연산을 수행하도록 설계됩니다. CPU는 이러한 커널들을 G..