전체 글 12

TVM은 왜 빨랐을까? - TIR 분석

저번 포스팅에서는 TVM Metaschedule을 이용하여 Resnet50 bottleneck layer를 최적화해 보고 (CPU target, Apple Macbook M1), torch.eager, torch.compile 방법과 성능을 비교해 보았습니다. 이번 포스팅에서는 Metaschedule의 결과 IR(TIR)을 살펴 보고, 사용된 optimization들을 확인해 보겠습니다. 먼저, compiler의 최적화 전략들인 operator fusion, loop tiling에 대한 내용부터 시작하겠습니다. BackgroundMemory hierarchy Reference: geeksforgeeksOperator fusion, loop tiling은 컴퓨터의 메모리 구조와 깊은 연관이 있습니다..

projects 2026.07.01

Apache TVM을 이용한 ResNet 연산 최적화

PyTorch와 같은 프레임워크를 사용하다 보면, 간단한 수준의 코드만으로도 복잡한 모델을 정의하고 실행할 수 있습니다. 입력을 넣으면 출력이 나오고, 학습도 잘 됩니다. 하지만 문득 이런 생각이 들었습니다. 이 모델은 실제로 어떻게 계산되고 있는 걸까? 내가 작성한 파이썬 코드 아래에서는 무슨 일이 일어나고 있는 걸까? ResNet50을 예로 들면, 저는 그 아키텍처를 알고 있고 convolution과 nonlinearity layers 등을 이용해 PyTorch로 구현할 수도 있습니다. 그러나 이렇게 레고 블록을 조립하듯 연결해 둔 연산들이 실제 하드웨어 위에서 어떤 순서로 실행되고, 어떻게 메모리를 사용하며, 어떤 비용을 발생시키는지는 거의 알 수 없었습니다. 추상화 수준이 너무 높아 실제 계산을 ..

projects 2026.03.05

AI를 이용한 음악 추천, VIBE AI

안녕하세요! 오랜만에 인사드립니다. 미국 교환학생을 끝내고, 새로운 프로젝트를 시작해 소개해 보는 시간을 가지려고 합니다. 프로젝트의 이름은 Vibe AI 인데, 이번 글에서는 프로젝트를 소개하고, 어떻게 이용할 수 있는지 알아본 후, 또 실제 결과물도 공유해 보려고 합니다. Playlist for the momentVibe AI는 이름에서 알 수 있듯이, 인공지능을 이용해 Vibe를 포착하고 그에 일치하는 플레이리스트를 추천해주는 프로그램입니다. 구체적으로 말하면, 사용자의 사진을 분석해 설명하고, 그 사진에 내포된 맥락과 분위기를 포착해 그와 일치하는 음악들을 추천해 주는 것이죠. 생성된 플레이리스트는 Lo-fi, synth pop, acoustic 등 다양한 장르의 음악들을 아우르고, ene..

projects 2025.08.26

Transformer와 GPT를 비교해 봅시다

Generative Pre-trained Transformer, 즉 GPT는 특유의 범용성과 확장 가능성으로 다양한 자연어 처리 과제에서 놀라운 성과를 보여 주고 있습니다. 그 이름에서 알 수 있듯, GPT는 'Transformer' 구조에 기초하여 설계되었습니다. Transformer는 2017년, Attention Is All You Need (Vaswani et al.) 논문에서 소개된 이후 엄청난 영향력을 발휘하였는데, 그 다양한 변형들은 자연어 처리 모델뿐만 아니라 시각 모델에도 차용되며 새로운 기술의 최첨단을 만들어냈습니다. GPT는 그 혁신의 한 물결로써, 원본의 Transformer 구조를 변형하여 '생성'이라는 과제에 최적화된 형태를 찾아내었습니다. 비슷하지만 다른 Transformer와..

papers 2024.09.29

Faster R-CNN을 이용한 여드름 탐지 - Training

여드름 탐지 데이터의 전처리를 수행했던 이전 글에 이어, 이번 글에서는 object detection 모델 학습을 진행해 보려고 합니다. 두 포스팅을 분리하여 올리는 이유는, 글의 분량 문제도 있지만 Training 과정을 좀 더 상세하게 서술하고 싶다는 이유였습니다. 단순히 학습 과정을 나열하기보다, 그 과정에서 발생했던 문제점들과, 그에 대처한 이야기를 전달하고 싶었습니다. 조금 긴 글이 되겠지만, 이번 프로젝트를 진행하며 배우고 느낀 것을 최대한 담으려고 노력했습니다. 이번 글 역시 코드 위주로, data augmentation, training and validation, test 과정을 다루어 보겠습니다. 1. Data augmentation def train_aug(inputs,targets)..

projects 2023.10.18

Faster R-CNN을 이용한 여드름 탐지 - 데이터 전처리

이전 글 'Roboflow를 이용한 data annotation' 에서는 여드름 이미지 데이터를 준비하고, bounding box annotation을 작성하여 데이터셋을 준비했습니다. 하지만, 데이터셋을 준비했다고 해서 곧바로 학습을 시작할 수 있는 것은 아닙니다. 데이터를 모델이 수용할 수 있는 구조로 변화시키고, 데이터를 증강하는 등의 전처리가 필요합니다. 이번 글에서는 코드 위주로, 학습 이전의 전처리 단계들을 진행해 보겠습니다. 0. Import import numpy as np import pandas as pd from PIL import Image import torch import os import torchvision import torchvision.transforms as T imp..

projects 2023.09.30

Roboflow를 이용한 data annotation

사람의 얼굴 사진 속에서 여드름을 찾아내는 인공지능을 만들고 싶다면, 어떤 데이터가 필요할까요? 먼저, 여드름이 있는 얼굴의 이미지들이 있어야 할 것입니다. 또한, 그 안에서 여드름의 위치를 표현하는 정보가 있어야 할 것 같은데, 이는 여드름의 주위에 둘러친 직사각형, 즉 bounding box의 형태로 인공 지능에 전달될 수 있습니다. 그런데, 만약 접근 가능한 (인터넷에서 구할 수 있는) 데이터셋에 bounding box의 정보가 없다면, 아니면 어떤 측면 (lable, 원하는 object의 기준 등) 에서 우리의 기준에 맞지 않는다면, 우리는 하는 수 없이 각각의 image에 손수 bounding box들을 입력해야만 합니다. 이번 프로젝트를 진행할 때, 같은 상황이 벌어졌습니다. 그래서 bound..

projects 2023.09.13

여드름을 찾아내는 AI가 있다면

여드름은 가장 흔한 피부질환 중 하나입니다. 대부분의 사람들이 한 번씩 경험해 봤을 정도로 흔한 질환이지만, 그 질환이 환자 개인에게 미치는 영향이 작다고 할 수는 없습니다. 여드름은 외모적인 부분에서 눈에 띄는 변화를 불러오고, 몇몇 여드름은 흉터로 남아 얼굴에 회복 불가능한 자국을 남기기도 하기 때문입니다. 또한, 외모상의 변화로 인한 자신감 하락, 스트레스 등의 심리적 악영향을 끼치기도 합니다. 여드름을 효과적으로 치료하기 위해서는, 정확하고 적시적인 진단이 중요합니다. 하지만, 매번 여드름이 날 때마다 시간을 내 피부과를 방문하는 것은 매우 번거로운 일입니다. 길고 지루한 대기시간도 무척 힘들고요. 그런데 만약 집에서 스마트폰을 통해 여드름 진단이 가능하다면 어떻게 될까요? 평소에 피부과를 갈 만..

projects 2023.08.30