본 후기는 2023.05.25 ~ 2023.06.15에 25연대에서 진행된 보충역 훈련소 3주과정를 토대로 작성되었습니다.

후기를 시작하기 앞서 훈련소는 연대에 따라, 중대에 따라 큰 차이가 존재할 수 있는 것 같습니다.
따라서 다양한 후기 글들을 참고하시는 것을 추천드립니다.

Read more »

DEER: Detection-agnostic End-to-End Recognizer for Scene Text Spotting

Introduction

이 논문은 NAVER Clova 팀에서 개발한 end-to-end text spotting 모델을 제안한다.
End-to-end text spotting 모델은 text detector와 recognizer로 구성되어있다.
해당 논문의 저자들은 기존 text spotting 모델들은 detector와 recognizer 사이에 다소 밀접하게 결합되어있다고 아래와 같이 주장한다.

  1. Detector에서 잘라낸 이미지는 recognizer에 입력되기 때문에 필연적으로 detector의 성능에 따라 recognizer의 성능이 결정된다.
  2. Detctor에서 crop된 영역의 localized features를 recognzier에 전달하여 detector의 종속성을 감소시킬 수 있지만 여전히 존재하는 detector의 오류 누적으로 인해 recognition 실패가 발생할 수 있다.
  3. Feature pooling과 masking은 end-to-end text spotting 모델을 학습하기 위해 bounding boxes 데이터가 여전히 필요하다.

이에 대한 자세한 설명은 발표자료의 6, 7, 8페이지에서 확인할 수 있다.

Object detection 분야에서는 end-to-end Transformer 기반 접근 방식이 발전함에 따라 이미지의 개별 객체를 엄격하게 recognize하기 위해 정확한 영역 정보, 정교한 ground truth 할당 및 feature pooling이 필요하지 않다는 것이 분명해지고 있다.
그렇기에 저자들은 detection 결과의 정확성에 대한 의존성을 완화할 수 있는 DEER (Detection-agnostic end-to-end Recognizer)를 제안한다.
DEER는 정확한 text 영역을 추출하기 위해 detector에 의존하지 않고 detector가 각 text instance에 대한 single reference point를 localize하도록 한다.
Reference point 주위의 text를 포괄적으로 recognize하는 text decoder는 text sequence를 decoding하는 동안 특정 text instance의 attending region을 결정하는 방법을 학습한다.
DEER는 기존 모델들과 다르게 detecotr의 역할이 single reference point를 localize하는 것 뿐이기 때문에 훨씬 더 다양한 검출 알고리즘과 주석을 사용할 수 있다.
이러한 접근 방식을 통해 pooling operations와 polygon-type 주석 없이 회전 및 곡선 text instance를 자연스럽게 처리할 수 있다.

Read more »

Introduction

Model serving 시 모델의 입력에 대해 출력을 산출하는 과정인 순전파 (forward propagation)는 model 내부의 layer들을 거치는데, 각 layer에는 수많은 단순 연산들이 존재한다.
이를 병렬로 수행하기 위해 CPU (Central Processing Unit)보다 병렬 계산에 이점이 있는 GPU (Grphic Processing Unit)을 많이 활용하고 있다.
하지만 아래와 같은 한계점이 존재한다.

  • 비싸다. (물리적 GPU 비용, 전력 소모, 클라우드 서비스 등 모든 측면에서)
  • 물리 코어를 가상 코어로 나눠 사용할 수 없어 자원을 낭비하기 쉽다.
  • 연산량이 적은 모델에 대해 추론할 때 CPU와 GPU 간 메모리 통신 오버헤드가 큰 경우 CPU에서 자체적 처리가 더 효율적일 수 있다.

이러한 이유들로 다양한 회사에서 GPU에 비해 저렴하지만 효율적인 ML 연산을 할 수 있는 AI 가속기들을 아래와 같이 개발하고 있다.

  • AWS Trainium, Inferentia
  • Google TPU (Tensor Processing Unit)
  • Apple ANE (Apple Neural Engine)
Read more »

Introduction

직장인 3개월 차…
대학원생 생활보다 훨씬 여유롭고 괜찮다 생각했지만 노화가 시작됐는지 체력이 약화됨을 느껴서 영양제를 섭취하기로 결정했습니다…
적절한 조합을 찾기 위해 앱 필라멘토와 지인의 자문을 활용했습니다.

Read more »

Introduction

Definition of Triton Inference Server

Triton Inference Server는 NVIDIA에서 개발한 딥 러닝 모델 인퍼런스를 위한 고성능 인퍼런스 서버입니다. Triton Inference Server는 다중 모델을 지원하며, TensorFlow, PyTorch, ONNX 등의 주요 딥 러닝 프레임워크를 모두 지원합니다.
이를 통해 사용자는 다양한 모델을 효율적으로 서빙할 수 있습니다.
Triton Inference Server는 NVIDIA TensorRT 엔진을 기반으로하며, GPU 가속을 통해 모델 추론을 빠르게 수행할 수 있습니다.
또한 Triton Inference Server는 TensorFlow Serving과 호환되는 gRPC 인터페이스를 제공하며 Triton Inference Server는 TensorFlow Serving, TorchServe와 같은 기존 인퍼런스 서버와 비교하여 성능 및 유연성 면에서 우수한 성능을 발휘합니다.
Triton Inference Server는 Kubernetes, Docker 및 NVIDIA DeepOps와 같은 오케스트레이션 툴과 통합되어 쉽게 배포할 수 있습니다.
Triton Inference Server는 성능, 확장성 및 유연성 면에서 우수한 기능을 제공하므로, 대규모 딥 러닝 모델 인퍼런스를 위한 선택적이고 강력한 도구로 자리 잡고 있습니다.

Docker Image: triton-server

Triton Inference Server 이미지는 NVIDIA에서 제공하는 Docker 이미지입니다. 이 이미지는 NVIDIA GPU 드라이버와 CUDA 라이브러리를 포함하며, 딥 러닝 인퍼런스를 실행하는 데 필요한 모든 라이브러리와 의존성을 포함합니다.
Triton Inference Server 이미지는 NGC(NVIDIA GPU Cloud)와 Docker Hub에서 제공됩니다. NGC에서는 최신 버전의 Triton Inference Server 이미지를 제공하며, TensorFlow, PyTorch, ONNX와 같은 다양한 프레임워크에서 학습된 모델을 지원합니다. 또한, TensorRT와 같은 최적화 라이브러리를 사용하여 높은 성능을 발휘합니다.
Docker Hub에서도 NVIDIA에서 공식적으로 제공하는 Triton Inference Server 이미지를 찾을 수 있습니다. Docker Hub에서는 다양한 버전의 Triton Inference Server 이미지를 제공하며, TensorFlow, PyTorch, ONNX와 같은 다양한 프레임워크를 지원합니다.
이러한 Triton Inference Server 이미지는 Kubernetes, Docker Compose와 같은 오케스트레이션 툴과 통합되어 배포 및 관리할 수 있으며, 쉽게 다양한 환경에서 실행할 수 있습니다.

이러한 Triton Inference Server를 통해 YOLOv5 모델을 Serving하고, 간략한 Client를 개발하여 Server가 잘 구동되는지 확인하는 방법을 설명하겠다.

Read more »