CNNGPT
1.0.0
$ pip3 install -U cnngpt
import torch
from cnngpt . main import CNNLanguageModel
# Hyperparameters
vocab_size = 5000
embedding_dim = 256
num_layers = 4
kernel_size = 3
hidden_dim = 256
max_seq_len = 100
# Initialize model
model = CNNLanguageModel (
vocab_size ,
embedding_dim ,
num_layers ,
kernel_size ,
hidden_dim ,
max_seq_len ,
)
# Dummy input (batch_size=32, sequence_length=50)
x = torch . randint (
0 , vocab_size , ( 32 , 50 )
) # Random integers as token IDs
# Forward pass
logits = model ( x ) # [batch_size, seq_len, vocab_size]
# Output shape
print ( "Logits shape:" , logits . shape )
vocab_size
: 어휘의 크기(고유 토큰 수)입니다.embedding_dim
: 임베딩의 차원입니다.num_layers
: 컨벌루션 레이어 수입니다.kernel_size
: 컨볼루셔널 커널의 크기입니다.hidden_dim
: 숨겨진 표현의 차원입니다(잔차 연결의 경우 embedding_dim
과 일치해야 함).max_seq_len
: 모델이 처리할 수 있는 최대 시퀀스 길이입니다.t
의 컨벌루션이 미래 시간 단계에 의존하지 않도록 합니다.네트워크 전체에서 일관성을 유지하기 위해 텐서 형태를 신중하게 관리합니다.
[batch_size, seq_len, embedding_dim]
[batch_size, embedding_dim, seq_len]
으로 전치됨[batch_size, hidden_dim, seq_len]
[batch_size, seq_len, embedding_dim]
으로 다시 전치됨[batch_size, seq_len, vocab_size]
embedding_dim
및 hidden_dim
동일해야 합니다.LayerNorm
적용하기 전에 텐서를 [batch_size, seq_len, hidden_dim]
으로 바꿉니다.max_seq_len
보다 짧은 시퀀스를 처리할 수 있습니다. 위치 인코딩은 그에 따라 분할됩니다. 우리는 각 단계를 신중하게 수행하고 코드가 앞에서 설명한 설계 원칙과 일치하는지 확인하면서 상세한 알고리즘을 PyTorch 구현으로 성공적으로 변환했습니다. 이 CNN 기반 언어 모델은 인과 및 확장 컨볼루션, 게이트 활성화, 잔여 연결 및 레이어 정규화를 활용하여 생성 작업을 위한 텍스트 데이터를 효과적으로 모델링합니다.
모델에서 각 구성 요소와 그 역할을 이해함으로써 우리는 이 아키텍처가 언어의 로컬 및 글로벌 종속성을 모두 캡처하여 자연어 처리에서 기존 모델에 대한 강력한 대안을 제공하는 방법을 이해할 수 있습니다.