Enabling On-Device Smartphone GPU based Training: Lessons Learned

Reading time: 7 minute
...
Featured Image

📝 Abstract

Deep Learning (DL) has shown impressive performance in many mobile applications. Most existing works have focused on reducing the computational and resource overheads of running Deep Neural Networks (DNN) inference on resource-constrained mobile devices. However, the other aspect of DNN operations, i.e. training (forward and backward passes) on smartphone GPUs, has received little attention thus far. To this end, we conduct an initial analysis to examine the feasibility of on-device training on smartphones using mobile GPUs. We first employ the open-source mobile DL framework (MNN) and its OpenCL backend for running compute kernels on GPUs. Next, we observed that training on CPUs is much faster than on GPUs and identified two possible bottlenecks related to this observation: (i) computation and (ii) memory bottlenecks. To solve the computation bottleneck, we optimize the OpenCL backend’s kernels, showing 2x improvements (40-70 GFLOPs) over CPUs (15-30 GFLOPs) on the Snapdragon 8 series processors. However, we find that the full DNN training is still much slower on GPUs than on CPUs, indicating that memory bottleneck plays a significant role in the lower performance of GPU over CPU. The data movement takes almost 91% of training time due to the low bandwidth. Lastly, based on the findings and failures during our investigation, we present limitations and practical guidelines for future directions.

💡 Analysis

Deep Learning (DL) has shown impressive performance in many mobile applications. Most existing works have focused on reducing the computational and resource overheads of running Deep Neural Networks (DNN) inference on resource-constrained mobile devices. However, the other aspect of DNN operations, i.e. training (forward and backward passes) on smartphone GPUs, has received little attention thus far. To this end, we conduct an initial analysis to examine the feasibility of on-device training on smartphones using mobile GPUs. We first employ the open-source mobile DL framework (MNN) and its OpenCL backend for running compute kernels on GPUs. Next, we observed that training on CPUs is much faster than on GPUs and identified two possible bottlenecks related to this observation: (i) computation and (ii) memory bottlenecks. To solve the computation bottleneck, we optimize the OpenCL backend’s kernels, showing 2x improvements (40-70 GFLOPs) over CPUs (15-30 GFLOPs) on the Snapdragon 8 series processors. However, we find that the full DNN training is still much slower on GPUs than on CPUs, indicating that memory bottleneck plays a significant role in the lower performance of GPU over CPU. The data movement takes almost 91% of training time due to the low bandwidth. Lastly, based on the findings and failures during our investigation, we present limitations and practical guidelines for future directions.

📄 Content

딥러닝(DL)은 최근 몇 년간 모바일 환경에서 눈에 띄는 성능 향상을 이루어 왔으며, 이미지 인식, 음성 인식, 자연어 처리와 같은 다양한 모바일 애플리케이션에 널리 적용되고 있다. 이러한 성공 뒤에는 수많은 연구가 존재하는데, 대부분의 기존 연구는 제한된 전력·연산·메모리 자원을 가진 모바일 디바이스(스마트폰, 태블릿 등)에서 딥 뉴럴 네트워크(DNN)의 추론(inference) 단계, 즉 학습이 완료된 모델을 이용해 입력 데이터를 처리하고 결과를 도출하는 과정에서 발생하는 계산량과 메모리 사용량, 전력 소모 등을 최소화하는 방법에 초점을 맞추어 왔다. 대표적인 최적화 기법으로는 모델 경량화(프루닝, 양자화), 연산 그래프 최적화, 하드웨어 가속기 활용 등이 있다.

그런데 DNN 연산에는 추론 외에도 학습(training) 단계가 존재한다는 점을 간과해서는 안 된다. 학습 단계에서는 순전파(forward pass)와 역전파(backward pass)를 반복하면서 가중치를 업데이트하는 복잡한 연산이 수행되며, 이는 일반적으로 대규모 GPU 서버나 클라우드 환경에서 이루어진다. 최근 스마트폰에 내장된 고성능 GPU가 점점 강력해지고, 모바일 환경에서도 실시간으로 모델을 미세조정하거나 개인화된 학습을 수행하고자 하는 요구가 증가함에 따라, 스마트폰 GPU를 활용한 온디바이스(on‑device) 학습 가능성에 대한 관심도 서서히 높아지고 있다. 그러나 현재까지는 스마트폰 GPU에서의 학습에 관한 체계적인 연구가 거의 이루어지지 않았으며, 실제로 얼마나 효율적으로 학습을 수행할 수 있는지에 대한 실증적인 데이터도 부족한 실정이다.

이에 우리는 스마트폰에 탑재된 모바일 GPU를 이용해 온디바이스 학습이 현실적으로 가능한지 여부를 초기 단계에서 검증하고자 **예비 분석(initial analysis)**을 수행하였다. 분석 과정은 크게 네 단계로 구성되었다. 첫 번째 단계에서는 오픈소스 모바일 딥러닝 프레임워크인 MNN(Mobile Neural Network) 을 선택하고, 이 프레임워크가 제공하는 OpenCL 백엔드 를 활용하여 GPU 상에서 연산 커널을 직접 실행할 수 있는 환경을 구축하였다. MNN은 경량화와 크로스플랫폼 지원을 목표로 설계된 프레임워크이며, OpenCL을 통해 안드로이드 기반 스마트폰의 다양한 GPU(Adreno, Mali 등)와 호환성을 확보한다는 장점이 있다.

두 번째 단계에서는 동일한 DNN 모델을 CPU와 GPU 양쪽에서 학습시켜 보면서 성능 차이 를 측정하였다. 예상과는 달리, CPU에서의 학습 속도가 GPU보다 현저히 빠른 현상이 관찰되었다. 이 현상을 설명하기 위해 우리는 두 가지 주요 병목 현상, 즉 계산 병목(computation bottleneck)메모리 병목(memory bottleneck) 을 가설로 설정하였다. 계산 병목은 GPU가 제공하는 연산 유닛을 충분히 활용하지 못해 발생하는 현상이며, 메모리 병목은 데이터 이동 및 메모리 접근 속도가 제한되어 연산 파이프라인이 충분히 채워지지 않는 상황을 의미한다.

세 번째 단계에서는 계산 병목 을 해소하기 위해 OpenCL 백엔드에 포함된 기본 커널들을 직접 분석하고, 연산 효율을 높일 수 있는 여러 최적화 기법을 적용하였다. 구체적으로는 벡터화(vectorization), 메모리 접근 패턴 재구성, 공유 메모리 활용 등을 통해 커널 내부의 연산 흐름을 재설계하였다. 최적화 결과, Snapdragon 8 시리즈(예: Snapdragon 8 Gen 1, Snapdragon 8+ Gen 2) 프로세서에 탑재된 Adreno GPU에서 CPU가 제공하는 15~30 GFLOPs(기가 부동소수점 연산 초당) 에 비해 40~70 GFLOPs 수준의 연산 성능을 달성했으며, 이는 약 2배 이상의 향상을 의미한다. 이러한 수치는 이론적인 피크 성능에 근접한 것이 아니라, 실제 애플리케이션 수준에서 측정된 실효 성능임을 강조한다.

네 번째이자 마지막 단계에서는 전체 DNN 학습 파이프라인 을 실행해 보면서 최적화된 GPU 커널이 실제 학습 시간에 미치는 영향을 평가하였다. 그 결과, GPU가 여전히 CPU보다 학습 속도가 현저히 느리다는 사실이 재확인되었다. 특히 데이터 이동에 소요되는 시간이 전체 학습 시간의 약 91% 에 달한다는 점이 눈에 띄었다. 이는 GPU와 메인 메모리 사이의 대역폭(bandwidth) 이 제한적이며, 학습 과정에서 발생하는 대규모 텐서(tensor) 복사와 메모리 초기화 작업이 병목을 일으키기 때문이다. 즉, 계산 능력 자체는 개선했음에도 불구하고, 메모리 I/O가 충분히 빠르게 처리되지 않으면 전체 성능 향상이 제한된다는 결론에 도달하였다.

이러한 일련의 실험과 분석을 통해 우리는 다음과 같은 제한점(limitations)실용적인 가이드라인(practical guidelines) 을 도출하였다.

  1. 메모리 대역폭 강화 필요

    • 현재 모바일 GPU는 연산 유닛이 강력하지만, 메인 메모리와의 데이터 전송 속도가 상대적으로 낮다. 따라서 향후 스마트폰 설계 단계에서 GPU 전용 고대역폭 메모리(예: LPDDR5X, HBM‑like 구조)와의 인터페이스를 강화하는 것이 온디바이스 학습 성능을 크게 끌어올릴 수 있다.
  2. 연산‑메모리 균형 최적화

    • 단순히 커널을 빠르게 만든다고 해서 전체 학습 속도가 개선되지 않는다. 연산과 메모리 접근을 동시에 고려한 연산‑메모리 균형(Compute‑Memory Balance) 설계가 필수적이며, 이를 위해 연산 재사용(reuse), 데이터 압축(compression), 배치 크기(batch size) 조절 등을 전략적으로 적용해야 한다.
  3. 프레임워크 수준에서의 메모리 관리

    • MNN과 같은 경량 프레임워크는 메모리 풀링(memory pooling)과 같은 기본적인 메모리 관리 기법을 제공하지만, 학습 단계에서는 그래디언트(gradient)와 파라미터(parameter) 간의 빈번한 교환이 발생한다. 따라서 프레임워크 차원에서 인‑플레이스(in‑place) 연산을 확대하고, 불필요한 텐서 복제를 최소화하는 기능을 추가하는 것이 필요하다.
  4. 하이브리드 연산 전략

    • 현재 GPU가 계산에는 강점이 있지만 메모리 병목이 심하므로, CPU와 GPU를 혼합하여 연산을 분산시키는 하이브리드 전략이 실효성을 가질 수 있다. 예를 들어, 역전파 단계의 일부 연산을 CPU에서 수행하고, 전방 패스와 일부 매트릭스 곱셈을 GPU에 맡기는 방식이다.
  5. 전용 학습 가속기 활용 검토

    • 최근 일부 스마트폰에 탑재되는 NPU(Neural Processing Unit)DSP(Digital Signal Processor) 와 같은 전용 학습 가속기는 메모리 대역폭과 연산 효율을 동시에 개선할 가능성이 있다. 따라서 향후 연구에서는 이러한 전용 가속기를 활용한 멀티‑모달 학습 파이프라인을 설계하고 비교 분석하는 것이 바람직하다.
  6. 실제 어플리케이션 시나리오 기반 평가

    • 단순히 벤치마크 모델(예: ResNet‑50, MobileNet‑V2)만을 대상으로 성능을 측정하는 것이 아니라, 사용자 개인화 모델(예: 개인 맞춤형 키보드 입력 예측, 현장 사진 기반 객체 검출)과 같은 실제 모바일 어플리케이션 시나리오에서 학습 시간을 측정하고, 사용자 경험(UX) 관점에서 허용 가능한 지연 시간을 정의하는 것이 중요하다.
  7. 전력 소비와 열 관리 고려

    • GPU를 장시간 학습에 활용하면 전력 소모가 급증하고, 디바이스 발열이 심해질 수 있다. 따라서 동적 전압·주파수 조정(DVFS), 열 스로틀링(throttling) 정책을 적절히 적용하고, 학습 작업을 배터리 상태사용자 사용 패턴에 맞춰 스케줄링하는 메커니즘을 설계해야 한다.

요약하면, 스마트폰 GPU를 이용한 온디바이스 학습은 계산 능력 측면에서는 충분히 경쟁력을 가질 수 있으나, 메모리 대역폭 및 데이터 이동 비용이 현재 가장 큰 제약 요인으로 작용한다. 따라서 향후 연구는 GPU‑CPU‑NPU 등 이기종 하드웨어 간 협업을 통한 메모리 효율성 개선, 프레임워크 수준의 메모리 관리 최적화, 그리고 실제 모바일 서비스에 적용 가능한 하이브리드 학습 전략을 중심으로 전개될 필요가 있다. 이러한 방향성을 바탕으로 우리는 모바일 환경에서 진정한 의미의 자율 학습(self‑learning)개인화된 인공지능 서비스를 구현할 수 있는 기반을 마련하고자 한다.

Start searching

Enter keywords to search articles

↑↓
ESC
⌘K Shortcut