본문 바로가기
PyTorch

ExecuTorch란? PyTorch 모델을 엣지 디바이스에 배포하는 방법

by pnnote 2026. 9. 14.
반응형

ExecuTorch란? PyTorch 모델을 엣지 디바이스에 배포하는 방법

PyTorch로 개발한 AI 모델을 스마트폰, 카메라, 로봇, 임베디드 시스템 같은 실제 디바이스에서 효율적으로 실행하기 위한 ExecuTorch의 구조와 모델 변환 과정을 정리한다.

PyTorch로 AI 모델을 만들면 보통 Python 환경에서 모델을 학습하고 테스트한다.

하지만 실제 제품을 만들 때는 상황이 달라진다.

모델을 스마트폰 앱에 넣거나, 카메라에서 실시간으로 이미지를 분석하거나, 로봇과 임베디드 장치에서 인터넷 연결 없이 추론해야 할 수 있다.

이때 필요한 것은 모델을 학습하는 환경보다 학습이 끝난 모델을 실제 장치에서 가볍고 빠르게 실행할 수 있는 Runtime이다.

이 역할을 위해 PyTorch가 제공하는 솔루션이 ExecuTorch이다.

핵심만 먼저 보면

ExecuTorch는 PyTorch 모델을 모바일·임베디드·엣지 환경에 배포하기 위한 경량 추론 Runtime과 모델 변환 도구이다. PyTorch에서 만든 모델을 디바이스에 맞게 미리 변환하고 최적화한 뒤 실행하는 것이 핵심이다.

1. ExecuTorch란?

ExecuTorch는 PyTorch의 Edge 및 On-device Inference 솔루션이다.

모델 학습 자체를 위한 도구라기보다 이미 만들어진 PyTorch 모델을 실제 장치에서 실행하기 위한 배포 단계에 초점을 맞춘다.

전체 흐름을 단순하게 보면 다음과 같다.

PyTorch Model
      ↓
Model Export
      ↓
Hardware 최적화
      ↓
ExecuTorch Program
      ↓
Device Runtime
      ↓
On-device Inference

즉 기존 PyTorch 개발 경험을 유지하면서 실제 제품 배포까지 연결하는 역할을 한다.

2. 왜 On-device AI가 필요할까?

AI 모델을 반드시 서버에서만 실행할 필요는 없다.

모델을 사용자 장치에 직접 넣으면 다음과 같은 장점이 있다.

  • 네트워크 왕복 시간이 없어 Latency를 줄일 수 있다.
  • 인터넷 연결이 없어도 추론할 수 있다.
  • 이미지나 음성 같은 데이터를 서버로 보내지 않아도 된다.
  • 서버에서 처리해야 하는 추론 요청을 줄일 수 있다.
  • 실시간 카메라나 로봇처럼 빠른 응답이 필요한 시스템에 활용할 수 있다.

특히 카메라 영상 처리, 음성 인식, 로봇 제어처럼 빠른 반응이 중요한 환경에서는 On-device 실행의 장점이 크다.

3. ExecuTorch의 가장 큰 특징

ExecuTorch의 특징은 크게 세 가지로 정리할 수 있다.

경량 Runtime

모바일이나 임베디드 장치는 일반적인 서버보다 메모리와 저장 공간이 제한적이다.

ExecuTorch는 이런 장치에서도 사용할 수 있도록 Runtime을 가볍게 구성하는 것을 목표로 한다.

PyTorch와 연결된 개발 과정

모델 자체는 기존 PyTorch 방식으로 개발할 수 있다.

즉 새로운 프레임워크에서 모델을 처음부터 다시 만드는 것이 아니라 PyTorch 모델을 배포용 형태로 변환한다.

하드웨어 가속 Backend

CPU뿐 아니라 GPU, NPU, DSP 같은 장치별 가속기를 활용할 수 있도록 여러 Backend와 연결된다.

같은 모델이라도 실제 제품에 들어가는 하드웨어에 맞춰 실행 경로를 최적화할 수 있다.

4. ExecuTorch는 어디에서 사용할까?

ExecuTorch는 다양한 형태의 Edge 환경을 대상으로 한다.

  • Android 스마트폰과 태블릿
  • iPhone과 iPad
  • 스마트 카메라
  • 로봇과 IoT 장치
  • 산업용 Edge Device
  • 임베디드 시스템과 Microcontroller
  • Linux, Windows, macOS 기반 장치

즉 모바일과 임베디드가 대표적인 활용 영역이지만, 필요하다면 데스크톱과 노트북에서도 같은 ExecuTorch Runtime과 배포 구조를 사용할 수 있다.

중요한 것은 운영체제 자체보다 실제 제품이 사용하는 CPU·GPU·NPU 등의 하드웨어에 맞는 실행 환경을 만드는 것이다.

5. ExecuTorch 모델은 어떻게 만들어질까?

PyTorch 모델을 ExecuTorch에서 실행하기 위해서는 몇 단계의 변환 과정이 필요하다.

PyTorch nn.Module
      ↓
torch.export
      ↓
ExportedProgram
      ↓
ExecuTorch Edge 변환
      ↓
Backend Lowering
      ↓
.pte 생성
      ↓
ExecuTorch Runtime

이 과정에서 Python 프로그램 전체를 장치에서 그대로 실행하는 것이 아니라, 모델의 Tensor 연산 구조를 미리 분석해 배포용 프로그램으로 만든다.

이처럼 실행 전에 모델을 미리 변환하고 최적화하는 방식을 AOT(Ahead-of-Time) 방식이라고 한다.

6. torch.export의 역할

ExecuTorch 모델 변환의 출발점 중 하나가 torch.export이다.

일반 PyTorch의 nn.Module을 장치 독립적인 Graph 형태로 표현해 이후 컴파일과 Backend 최적화를 수행할 수 있도록 한다.

간단한 예제를 보면 다음과 같다.

import torch


class AddModel(torch.nn.Module):

    def forward(self, x, y):
        return x + y


model = AddModel().eval()

example_inputs = (
    torch.ones(1),
    torch.ones(1)
)


exported_program = torch.export.export(
    model,
    example_inputs
)

이렇게 만들어진 ExportedProgram이 ExecuTorch 변환 과정의 입력이 된다.

7. Backend란?

ExecuTorch에서 매우 중요한 개념이 Backend이다.

Backend는 모델의 연산을 특정 하드웨어나 최적화 라이브러리에서 빠르게 실행할 수 있도록 연결하는 역할을 한다.

대표적인 예는 다음과 같다.

Backend 활용 환경 예시
XNNPACK CPU 기반 추론
Core ML Apple Device
MPS Apple GPU
Vulkan GPU 기반 Edge 환경
Qualcomm 모바일 NPU / DSP
OpenVINO Intel CPU / GPU / NPU
Arm 계열 Backend Embedded / MCU

Backend 선택은 ExecuTorch 성능을 결정하는 중요한 요소이다.

단순히 모델을 변환하는 것에서 끝나는 것이 아니라 실제로 사용할 하드웨어에 맞춰 모델 연산을 배치하는 것이 중요하다.

8. XNNPACK을 이용한 기본 변환 예제

CPU 기반으로 ExecuTorch를 처음 테스트한다면 XNNPACK Backend를 이용하기 쉽다.

import torch

from executorch.exir import (
    to_edge_transform_and_lower
)

from executorch.backends.xnnpack.partition.xnnpack_partitioner import (
    XnnpackPartitioner
)


model = AddModel().eval()

inputs = (
    torch.ones(1),
    torch.ones(1)
)


exported = torch.export.export(
    model,
    inputs
)


executorch_program = (
    to_edge_transform_and_lower(
        exported,
        partitioner=[
            XnnpackPartitioner()
        ]
    )
    .to_executorch()
)


with open("model.pte", "wb") as f:

    f.write(
        executorch_program.buffer
    )

이 과정을 거치면 ExecuTorch Runtime에서 실행할 수 있는 model.pte 파일이 만들어진다.

9. .pte 파일이란?

ExecuTorch를 사용하다 보면 자주 보게 되는 파일이 .pte이다.

이 파일에는 Edge Device에서 ExecuTorch Runtime이 실행할 프로그램 정보가 들어 있다.

쉽게 생각하면

PyTorch 모델을 실제 장치에 맞게 미리 변환하고 최적화한 뒤 ExecuTorch Runtime이 읽을 수 있는 배포 파일로 만든 것이 .pte라고 생각하면 된다.

Backend별로 최적화 과정이 다르기 때문에 같은 모델이라도 대상 하드웨어에 따라 서로 다른 .pte를 만들 수 있다.

10. Backend가 지원하지 않는 연산은 어떻게 될까?

모델의 모든 연산이 특정 GPU나 NPU Backend에서 항상 지원되는 것은 아니다.

ExecuTorch는 모델 Graph에서 Backend가 처리할 수 있는 영역을 찾아 해당 Backend에 전달할 수 있다.

Model Graph
     ↓

지원되는 연산
     → Hardware Backend

지원되지 않는 연산
     → Portable CPU Runtime

따라서 실제 성능을 최적화할 때는 모델의 어느 정도가 원하는 Backend로 실제 Delegation되었는지 확인하는 것도 중요하다.

11. Quantization과 함께 사용하는 이유

Edge Device에서는 모델의 정확도뿐 아니라 크기와 메모리 사용량도 매우 중요하다.

이 때문에 ExecuTorch에서는 Quantization이 중요한 최적화 방법으로 사용된다.

예를 들어 FP32 대신 INT8이나 INT4 같은 낮은 정밀도를 사용하면 다음과 같은 효과를 기대할 수 있다.

  • 모델 파일 크기 감소
  • RAM 사용량 감소
  • Memory Bandwidth 감소
  • 지원되는 하드웨어에서 추론 속도 향상

특히 LLM처럼 모델 자체가 큰 경우에는 Quantization이 실제 장치 배포 가능성을 크게 좌우할 수 있다.

12. 어떤 종류의 모델을 실행할 수 있을까?

ExecuTorch는 단순한 이미지 분류 모델에만 사용하는 것은 아니다.

다양한 종류의 AI 모델을 실제 Edge 환경에 배포하는 데 사용할 수 있다.

  • Image Classification
  • Object Detection
  • Computer Vision 모델
  • Large Language Model
  • Speech Recognition
  • Text-to-Speech
  • Audio 모델

따라서 모바일 Vision 앱부터 On-device LLM까지 활용 범위가 넓다.

13. ExecuTorch가 특히 유용한 경우

다음과 같은 상황이라면 ExecuTorch의 장점을 활용하기 쉽다.

  • PyTorch로 개발한 모델을 실제 제품에 넣어야 한다.
  • 스마트폰에서 AI 모델을 직접 실행해야 한다.
  • 인터넷 연결 없이 추론해야 한다.
  • 카메라나 로봇에서 낮은 Latency가 필요하다.
  • 사용자 데이터를 장치 외부로 보내지 않고 처리해야 한다.
  • CPU, GPU, NPU 같은 장치별 가속을 활용해야 한다.
  • 제한된 메모리 환경에 모델을 배포해야 한다.
  • 하나의 PyTorch 개발 흐름을 여러 Edge 플랫폼으로 연결해야 한다.

14. ExecuTorch를 사용할 때 확인해야 할 것

ExecuTorch를 적용했다고 모든 모델이 자동으로 빠르게 실행되는 것은 아니다.

실제 제품에서는 다음 항목을 함께 확인하는 것이 좋다.

  • 대상 Backend가 모델의 주요 Operator를 지원하는지
  • 모델 크기가 장치 메모리에 적합한지
  • Quantization 후 정확도가 유지되는지
  • 실제 장치에서 Latency가 충분히 낮은지
  • 메모리 사용량과 전력 소비가 적절한지
  • Preprocessing과 Postprocessing 비용까지 포함했는지
중요한 점

Edge AI에서는 PC에서 측정한 모델 속도보다 실제로 제품에 들어가는 장치에서 직접 Benchmark하는 것이 가장 중요하다.

15. 전체 흐름을 한 번에 정리하면

PyTorch 모델을 ExecuTorch로 배포하는 흐름은 다음처럼 정리할 수 있다.

  1. PyTorch로 모델을 개발하고 학습한다.
  2. 실제 추론에 사용할 Example Input을 준비한다.
  3. torch.export로 모델을 Export한다.
  4. 대상 하드웨어에 맞는 Backend를 선택한다.
  5. Backend가 지원하는 연산을 Lowering한다.
  6. 필요하면 Quantization을 적용한다.
  7. .pte 형태의 실행 프로그램을 만든다.
  8. 실제 장치에서 ExecuTorch Runtime으로 추론한다.

16. 정리

ExecuTorch는 단순히 PyTorch 모델 파일의 형식을 바꾸는 도구가 아니다.

PyTorch에서 만든 AI 모델을 실제 Edge Device의 하드웨어 특성에 맞게 변환하고 효율적으로 실행하기 위한 전체 배포 환경에 가깝다.

ExecuTorch 핵심 정리
  • PyTorch의 On-device Inference 솔루션이다.
  • PyTorch 개발 경험을 실제 제품 배포까지 연결할 수 있다.
  • torch.export를 기반으로 모델 Graph를 만든다.
  • Hardware Backend를 이용해 모델 연산을 최적화한다.
  • 경량 ExecuTorch Runtime에서 모델을 실행한다.
  • CPU, GPU, NPU, DSP 등 다양한 가속기를 활용할 수 있다.
  • Quantization을 이용해 모델 크기와 실행 비용을 줄일 수 있다.
  • Mobile, Embedded를 중심으로 다양한 Edge 환경에 배포할 수 있다.

가장 중요한 흐름은 다음 하나만 기억해도 된다.

PyTorch Model
      ↓
torch.export
      ↓
Backend 최적화
      ↓
.pte
      ↓
ExecuTorch Runtime
      ↓
On-device Inference

결국 ExecuTorch의 가장 큰 의미는 PyTorch에서 개발한 모델을 서버 안에만 두지 않고 실제 사용자와 가까운 디바이스까지 가져갈 수 있게 만드는 것이다.

모바일 AI, 로봇 Vision, 스마트 카메라, Embedded AI처럼 실제 제품에서 AI 모델을 실행해야 한다면 알아두면 좋은 PyTorch 배포 기술이다.

반응형