본문 바로가기

SW 개발 공부/FPGA

[Xilinx Versal AI Edge Series] AI 모델을 FPGA에 내장 시키는 방법

 

Xilinx Versal AI Edge Series를 사용하여 AI 모델을 FPGA에 내장하려면, Xilinx의 Vitis AI 툴을 활용하는 것이 가장 일반적인 방법입니다. Vitis AI는 AI 모델을 FPGA에 최적화하여 배치할 수 있게 해주는 툴킷으로, TensorFlow, PyTorch 등의 학습된 모델을 FPGA에 적합한 형태로 변환합니다.

AI 모델을 Xilinx Versal AI Edge FPGA에 올리는 과정 (가장 쉬운 예제)

1. 준비물

  • Xilinx Versal AI Edge FPGA (예: Versal AI Core 시리즈)
  • Vitis AI 툴킷 (Xilinx 공식 웹사이트에서 다운로드)
  • TensorFlow/PyTorch 모델 (이미 학습된 모델)
  • Vitis AI Docker 환경 (Vitis AI는 Docker를 사용하여 개발 환경을 설정)

2. 환경 준비

  • Vitis AI 설치: Vitis AI를 사용하려면 먼저 Vitis AI 툴킷을 설치해야 합니다. Vitis AI는 Docker 환경에서 실행되므로 Docker를 먼저 설치하고, Xilinx에서 제공하는 Docker 이미지를 사용하여 Vitis AI 환경을 설정할 수 있습니다.
# Docker 이미지 다운로드 (Vitis AI Docker 환경)
docker pull xilinx/vitis-ai:latest
  • Vitis AI Docker 실행: Docker 컨테이너에서 Vitis AI 툴킷을 실행합니다.
 

3. AI 모델 준비 (TensorFlow 예제)

이미 학습된 모델이 있어야 합니다. 예를 들어, TensorFlow로 학습된 이미지를 분류하는 모델을 사용한다고 가정합니다.

  • TensorFlow 모델을 학습하고 SavedModel 형태로 저장합니다.
  • 예시 모델:
import tensorflow as tf
from tensorflow.keras import layers, models

# 간단한 CNN 모델
model = models.Sequential([
    layers.Conv2D(32, (3, 3), activation='relu', input_shape=(224, 224, 3)),
    layers.MaxPooling2D((2, 2)),
    layers.Flatten(),
    layers.Dense(64, activation='relu'),
    layers.Dense(10, activation='softmax')
])

# 모델 컴파일 및 훈련 (여기서는 훈련 데이터가 필요)
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
model.fit(train_data, train_labels, epochs=5)

# 모델 저장
model.save('saved_model/my_model')

4. 모델 최적화 (Vitis AI)

  • Vitis AI Optimizer를 사용하여 모델을 FPGA에 적합하게 최적화합니다. 이 단계에서 Quantization (양자화)와 Pruning (가지치기)을 통해 모델의 크기를 줄이고 FPGA에서의 연산 성능을 향상시킵니다.
# Vitis AI Optimizer를 이용하여 모델 최적화
vitis_ai_optimizer --model saved_model/my_model --output_dir optimized_model

5. 모델 컴파일 (Vitis AI Compiler)

최적화된 모델을 FPGA에서 실행 가능한 형태로 컴파일합니다. 이 단계에서는 Xilinx의 AI 컴파일러가 모델을 DPU (Deep Processing Unit)에서 실행할 수 있도록 변환합니다.

# Vitis AI Compiler를 이용하여 모델을 컴파일
vitis_ai_compiler --model optimized_model --arch /path/to/arch.json --output_dir compiled_model

 

arch.json은 FPGA 아키텍처에 맞는 DPU 설정을 담고 있는 파일로, 사용 중인 Xilinx FPGA에 적합한 설정을 지정해야 합니다.

6. FPGA에 모델 배치 (Xilinx FPGA)

  • Xilinx Vitis IDEVitis AI API를 사용하여, 최종적으로 컴파일된 모델을 FPGA에 배치합니다.
  • FPGA에서 DPU를 활용하여 AI 모델을 실행합니다.
# DPU에 모델 배치 및 실행
vitis_ai_run --model compiled_model --dpu /path/to/dpu.bit

7. 테스트 및 실행

이제 FPGA에 모델이 배치되었습니다. 실제 테스트를 진행하여, 모델이 제대로 동작하는지 확인합니다. 테스트는 FPGA에서 실행되는 AI 추론을 통해 진행되며, 실시간으로 데이터를 처리합니다.

# FPGA에서 실시간 테스트 실행
./run_inference --model compiled_model --input_data /path/to/input_data

8. 결과 확인

  • FPGA에서 실행된 AI 모델의 결과를 확인합니다.
  • 결과는 분류된 이미지 또는 처리된 데이터로 반환됩니다.

'SW 개발 공부 > FPGA' 카테고리의 다른 글

[FPGA AI] 1. DPU란?  (0) 2025.02.20
FPGA 문법  (1) 2024.01.04
[FPGA]예제 분석(AXI GPIO)  (0) 2023.10.13
[FPGA]Zynq 아키텍쳐  (0) 2023.10.12