lucidrains/x-transformers

A concise but complete full-attention transformer with a set of promising experimental features from various papers

x-transformers란 무엇인가요?

x-transformers는 PyTorch에서 다양한 Transformer 모델을 구축하고 실험할 수 있는 가볍고 순수 Python으로 작성된 라이브러리입니다. 단일하고 유연한 빌딩 블록(XTransformer 또는 TransformerWrapper)을 제공하며 다음과 같이 구성할 수 있습니다:

  • 인코더-디코더(원조 “Attention is All You Need” 모델과 유사)
  • 디코더 전용(GPT 스타일의 언어 모델)
  • 인코더 전용(BERT 스타일의 모델)
  • 비전 Transformer(이미지 분류 또는 이미지-텍스트 변환 작업용)

이 라이브러리는 flash-attention, 다양한 정규화 방식, 메모리 토큰, 희소/top-k 어텐션, talking-heads, GLU 피드포워드 등 연구 수준의 조정 기능을 포함하고 있으며, 단일 플래그로 활성화할 수 있습니다.


누가 사용하면 좋을까요?

  • 연구자: 상용구 코드(boiler-plate code)를 작성하지 않고 새로운 Transformer 변형을 빠르게 프로토타이핑하려는 분.
  • 실무자: 소규모에서 중규모 실험(예: 사용자 정의 언어 모델, 이미지 캡셔닝, 멀티모달 파이프라인)을 위해 작고 구성 가능한 Transformer를 찾는 분.
  • 학생: 대부분의 옵션이 간단한 인수로 노출되어 있어, 아키텍처 선택이 성능에 어떤 영향을 미치는지 배우고 싶은 분.

핵심 기능(README 설명 기준)

기능 역할 활성화 방법
Flash Attention PyTorch 2.0의 scaled_dot_product_attention을 사용하여 선형 메모리 및 더 빠른 어텐션 구현. attn_flash=True
Persistent Memory KV 일반 어텐션 이전에 학습된 키/값 슬롯 추가. attn_num_mem_kv=16
Memory Tokens 모든 레이어를 통과하는 추가 토큰을 학습(안정성 향상). num_memory_tokens=20
ScaleNorm / RMSNorm / Simple RMSNorm 수렴 속도를 높일 수 있는 대체 정규화 레이어. use_scalenorm=True, use_rmsnorm=True, use_simple_rmsnorm=True
GLU / Swish-GLU / Feed-forward without bias 정확도나 처리량을 향상시키는 것으로 입증된 피드포워드 블록 변형. ff_glu=True, ff_swish=True, ff_no_bias=True
ReLU² activation 때때로 GELU보다 뛰어난 성능을 보이는 간단한 활성화 함수. ff_relu_squared=True
Sparse / Top-k attention top-k 어텐션 점수만 유지하여 계산량 감소. attn_sparse_topk=8 (또는 attn_hard=True를 사용하여 argmax)
Talking-heads 소프트맥스 전후에 헤드를 선형적으로 혼합. attn_pre_talking_heads=True, attn_post_talking_heads=True
One-KV-head / grouped KV heads 메모리 효율적인 디코딩을 위해 키/값 헤드 수 감소. attn_one_kv_head=True 또는 attn_kv_heads=2
Dropout options 임베딩 드롭아웃, 확률적 깊이, 어텐션 드롭아웃, 피드포워드 드롭아웃. emb_dropout, layer_dropout, attn_dropout, ff_dropout

사용 예시(README 기준)

# 인코더-디코더 (seq2seq) 모델
from x_transformers import XTransformer
model = XTransformer(
    dim=512, enc_num_tokens=256, enc_depth=6, enc_heads=8,
    dec_num_tokens=256, dec_depth=6, dec_heads=8,
    tie_token_emb=True)
# GPT 스타일의 디코더 전용
from x_transformers import TransformerWrapper, Decoder
model = TransformerWrapper(
    num_tokens=20000, max_seq_len=1024,
    attn_layers=Decoder(dim=512, depth=12, heads=8))
# 이미지 분류용 비전 Transformer
from x_transformers import ViTransformerWrapper, Encoder
model = ViTransformerWrapper(
    image_size=256, patch_size=32, num_classes=1000,
    attn_layers=Encoder(dim=512, depth=6, heads=8))

설치

pip install x-transformers

요약

x-transformers는 모듈식의 연구 중심 PyTorch 라이브러리로, 몇 가지 인수만으로 고전적이고 최첨단인 Transformer 아키텍처(언어, 비전, 멀티모달)를 구축하고 최근 논문에서 제시된 다양한 어텐션 및 정규화 기법을 실험할 수 있게 해줍니다.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트