토큰 병합(ToMe)이 트랜스포머(Transformer) 및 ViT 모델을 어떻게 최적화하는지 알아보세요. FLOPs를 줄이고, 실시간 추론을 가속화하며, 생성형 AI의 속도를 높이는 방법을 확인해 보세요.
토큰 병합(ToMe)은 전방 전달 단계에서 처리되는 토큰의 수를 줄임으로써 트랜스포머 아키텍처의 성능과 효율성을 최적화하도록 설계된 최첨단 기법입니다. 원래 비전 트랜스포머(ViT) 모델의 처리 속도를 높이기 위해 개발된 ToMe는 추가적인 훈련 없이도 네트워크 내의 중복 토큰을 체계적으로 식별하고 결합하는 방식으로 작동합니다. 셀프 어텐션 메커니즘의 계산 복잡도는 토큰 수에 따라 2차적으로 증가하므로, 유사한 토큰을 병합하면 전체 부동소수점 연산(FLOPs)이 대폭 감소하여 실시간 추론 속도가 크게 향상됩니다.
ToMe는 토큰화(tokenization)와 근본적으로 다릅니다. 토큰화란 이미지나 텍스트를 개별 토큰으로 분해하는 초기 전처리 단계입니다. 토큰화가 개별 요소를 생성하는 반면, 토큰 병합(Token Merging)은 모델의 전방 실행 과정에서 동적인 다운샘플링 메커니즘으로 작용합니다.
이 알고리즘은 일반적으로 토큰의 유사성을 평가하기 위해 이분 그래프 매칭을 사용하며, 주로 어텐션 레이어 내 토큰의 키 간 코사인 유사도를 계산합니다. 시각적 또는 의미적 정보가 매우 유사한 토큰들은—주로 특징값을 평균화하여—합쳐집니다. 이를 통해 불필요한 계산 부하를 줄이면서도 필수적인 공간적 또는 문맥적 정보는 보존되므로, PyTorch 와 같은 프레임워크가 복잡한 비전 모델을 훨씬 더 빠르게 처리할 수 있게 합니다.
토큰 병합은 연산 자원이 제한된 환경에서 대규모 어텐션 기반 아키텍처를 배포하기 위한 핵심적인 최적화 전략으로 자리 잡았다.
ToMe를 전체 아키텍처에 통합하려면 어텐션 블록을 수정해야 하지만, 핵심 개념은 유사한 토큰을 찾는 데 있습니다. 다음 PyTorch 토큰 집합 간의 코사인 유사도를 계산하여 어떤 토큰을 병합 후보로 선정할지 확인하는 방법을 보여줍니다.
import torch
import torch.nn.functional as F
# Simulate a batch of 4 image patches (tokens) with 64-dimensional features
tokens = torch.randn(1, 4, 64)
# Normalize the tokens to easily compute cosine similarity via dot product
normalized_tokens = F.normalize(tokens, p=2, dim=-1)
# Compute the similarity matrix between all tokens (1 x 4 x 4)
similarity_matrix = torch.matmul(normalized_tokens, normalized_tokens.transpose(1, 2))
# Tokens with high similarity scores (close to 1.0) off the diagonal
# are prime candidates for Token Merging.
print("Similarity Matrix:", similarity_matrix)
현대적인 머신러닝 파이프라인은 정확도와 속도의 신중한 균형을 요구합니다. 맞춤형 ViT를 최적화하기 위해 토큰 병합(Token Merging)을 활용하든, YOLO26의 최첨단 효율성에 의존하든, Ultralytics 통해 이러한 복잡한 데이터 워크플로우를 관리하는 과정이 크게 간소화됩니다. 이 플랫폼은 자동화된 데이터 주석 작업, 원활한 클라우드 훈련, 그리고 다양한 엣지 컴퓨팅 하드웨어 환경에 걸친 안정적인 모델 배포를 위한 직관적인 생태계를 제공합니다. 컴퓨터 비전 이니셔티브를 확장하는 기업들은 이러한 도구를 활용하여 최첨단 모델을 안정적이고 효율적으로 실전 환경에 적용하고 있습니다.
미래의 머신러닝 여정을 시작하세요