연속 배치 추론의 비동기화 처리 성능 최적화
연속 배치 추론 과정에서 CPU와 GPU의 작업을 비동기화하여 추론 성능을 향상하는 방안을 제시합니다. 소프트웨어적 조정만으로 GPU 유휴 시간을 줄여 하드웨어 활용도를 극대화합니다.
주장연속 배치 처리에서 중앙처리장치(CPU)와 그래픽처리장치(GPU)의 작업을 분리하는 비동기화 방식은 추론 성능을 비약적으로 향상합니다. 기존 동기식 방식은 두 장치가 서로의 작업을 기다리며 유휴 시간을 발생시켜 비효율을 초래합니다.
팩트인퍼런스 엔드포인트에서 H200 GPU를 사용할 경우 시간당 약 5달러의 비용이 발생합니다. 이를 하루 동안 운영하면 120달러의 비용이 소모되므로 GPU 활용도를 극대화하는 전략이 필요합니다.
교차검증연속 배치 처리는 패딩을 최소화하여 GPU 활용도를 높이지만, CPU와 GPU가 순차적으로 작동하는 동기식 구조의 한계는 극복하지 못합니다. 이로 인해 전체 런타임의 약 25%가 유휴 시간으로 낭비됩니다.
팩트8B 모델을 사용하여 8K 토큰을 생성하는 실험에서 전체 생성 시간 300.6초 중 24%인 약 72초가 GPU가 CPU를 기다리는 유휴 시간으로 측정되었습니다. 비동기화를 통해 이 오버헤드를 제거하면 이론적으로 약 24%의 속도 향상을 얻습니다.
주장비동기 배치를 구현하려면 CPU가 다음 배치를 준비하는 동안 GPU가 현재 배치를 계산하도록 병렬화해야 합니다. 이를 위해 쿠다(CUDA) 스트림을 활용하여 CPU와 GPU의 작업을 독립적인 큐에서 실행합니다.
팩트쿠다 스트림은 GPU 작업의 순서를 정의하는 큐로, 동일한 스트림 내의 작업은 순차적으로 실행되지만 서로 다른 스트림의 작업은 병렬로 실행 가능합니다. 이를 통해 CPU는 GPU 작업 완료를 기다리지 않고 다음 작업을 지시합니다.
교차검증파이토치(PyTorch)의 기본 스트림은 동기화 속성을 지녀 모든 작업이 완료될 때까지 CPU를 대기하게 만듭니다. 따라서 비동기 처리를 위해서는 기본 스트림이 아닌 비기본 스트림을 명시적으로 사용하여 CPU 제어권을 즉시 회수해야 합니다.
팩트비기본 스트림을 사용하면 커널 실행이나 비차단 메모리 복사 명령을 내린 후 CPU가 즉시 다음 작업을 수행합니다. 이는 GPU가 백그라운드에서 연산을 수행하는 동안 CPU가 다음 배치 준비를 마칠 수 있게 합니다.
주장비동기 배치는 하드웨어 변경 없이 소프트웨어적인 조정만으로도 추론 효율을 개선하는 강력한 방법입니다. 이는 트랜스포머 라이브러리의 연속 배치 처리 구현 과정에서 핵심적인 성능 최적화 전략으로 활용됩니다.
출처허깅페이스의 공식 기술 블로그 'Unlocking asynchronicity in continuous batching'을 교차 검증했습니다.
본 기사는 전문가의 분석과 공개 자료를 기반으로 AI가 작성 후 다른 AI의 검증을 거쳐 작성됐으며 정보의 정확성과 완전성을 보장하지 않습니다. 기사 내용은 특정 투자·의사결정의 권유가 아니며, Wittgenhaus는 이를 근거로 한 행위의 결과에 책임을 지지 않습니다.