묻고 답해요
167만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결구현하며 배우는 Transformer
Embedding 모델 fine tuning 관련 질문
강사님 안녕하세요? 10년전 쯤 파이썬 머신러닝 완벽가이드, CNN 완벽가이드를 수강하고 많은 도움을 받았는데, Transformer 강의를 내셨길래 반가운 마음으로 바로 구매했습니다 ㅎㅎ 회사에서 RAG 를 종종 구현하고 있는데.. 예시로 들어주신 BERT 모델은 RAG 구현 중 리트리버에 해당한다고 이해하면 될지요? 그리고 BERT 모델을 fine tuning 하고자 한다면 pre trained 모델의 tokenizer 와 model 둘 다 불러온 후, tokenizer 의 vocab 에 mapping 되어 있는 token 들을 ids 토시하나 틀리지 않고 있는 그대로 사용하되, 사내 내부 용어만 이후 ids 에 추가해서 사용하고, model 에 몇 개의 추가 layer 를 쌓아서 fine tuning 한다면, 처음부터 학습시키는 것보다 좀 더 효율/효과적인 방안이 될 수 있을지.... 도 궁금합니다. RAG 를 구현하다보면, 외부에서 사전학습된 모델이 사내 문서의 특수한 약어나 내부 고유기술 용어를 인지하지 못해서 필요한 문서들을 못 물어 오는 경우를 가끔 보고 있어서.... 생성을 위한 LLM 모델이야 요즘 너무 첨단을 향해 가고 있는데, 리트리버 에 대한 최적화는 회사나 도메인 별로 필요한 것이 아닐까... 생각하고 있었습니다만, 제가 이해한 개념이 맞을지 문의 드려 봅니다.
-
미해결구현하며 배우는 Transformer
코드에 오타가 있는 것 같습니다
안녕하세요, 강사님 강의 열심히 잘 듣고 있습니다.visionTransformer생성 부분에서,제가 잘못 이해하였는 것일 수 있으나, class VisionTransformer(nn.Module): def init(self, img_size, patch_size, num_layers, num_heads, embed_dim, mlp_dim, attention_dropout, dropout, num_classes=1000): super().__init__() #Patch Embedding 모듈, class token, position embedding 파라미터 생성. self.patch_embedding = PatchEmbedding(img_size=img_size, in_channels=3, patch_size=patch_size, embed_dim=embed_dim) self.class_token = nn.Parameter(torch.zeros(1, 1, embed_dim)) seq_length = (img_size // patch_size) ** 2 self.pos_embed = nn.Parameter(torch.empty(1, seq_length+1, embed_dim).normal_(std=0.02)) #Encoder 생성. self.encoder = Encoder(num_layers=num_layers, num_heads=num_heads, embed_dim=embed_dim, mlp_dim=mlp_dim, attention_dropout=attention_dropout, dropout=dropout) #최종 classification Linear Layer 생성 self.head = nn.Linear(embed_dim, num_classes) def get_patch_class_pos_embedding(self, input_tensor): patched_tensor = self.patch_embedding(input_tensor) batch_size = patched_tensor.shape[0] # batch_size 만큼 class token을 증식하고 patch embedding 된 patched_tensor의 맨 앞에 concat batch_class_token = self.class_token.expand(batch_size, -1, -1) patch_class_embed = torch.cat([batch_class_token, patched_tensor], dim=1) # position embedding을 더함. patch_class_pos_embed = patch_class_embed + self.pos_embed return patch_class_embed마지막 return 부분이 patch_class_embed가 아닌 patch_class_pos_embed로 수정되어야 할 것 같습니다. 파라미터 사이즈에는 영향이 없으나 버그가 발생할 수 있을 것 같아 이렇게 글 남깁니다. 항상 좋은 강의 감사드립니다. 혹시나 의도하신 것이라면 제가 잘못 이해한 것이니 바로 잡아주시길 바랍니다. 감사합니다.
-
미해결구현하며 배우는 Transformer
코드 오타가 있는것 같습니다.
torch.manual_seed(123) HIDDEN_SIZE = 256 NUM_HEADS = 4 DEC_Q_SEQ_LEN = 10 ENC_K_SEQ_LEN = 20 BATCH_SIZE = 2 dec_tokenizer = BertTokenizerFast.from_pretrained("klue/bert-base") dec_sentences = ["안녕하세요 여러분", "이것은 긴 문장입니다"] dec_input_ids, dec_pad_mask = get_input_ids_mask(dec_tokenizer, sentences, max_length=DEC_Q_SEQ_LEN)sentences --> dec_sentencestransformer_decoder.ipynb 사소한 것이이지만.. 좋은 강의 감사드립니다. 새해 복 많이 받으세요...
-
미해결구현하며 배우는 Transformer
트랜스포머 모델 구조에서 Encode-Decoder Attenttion에 대해서
안녕하세요.. 다시 또 궁금한 것이 생겼습니다.트랜스포머의 각 인코더 블럭의 출력이 디코더 블럭의 Encode-Decoder Attention 으로 들어가게 되는 것인가요? 아니면 인코더 블럭의 마지막 블럭의 출럭이 디코더 블럭의 최종 블럭으로 들어가는 것인가요?
-
미해결구현하며 배우는 Transformer
트랜스포머 구조에서 블럭갯수에 대해서
안녕하세요.. 트랜스포머 구조에서 Encoder 블럭의 갯수와 Decoder 블럭의 갯수가 동일해야 하는 것인가요? 아니면 Encoder -Decoder Attention 부분만 갯수를 맞추어 유지되면 되는 것인지 궁금합니다.
-
미해결구현하며 배우는 Transformer
RNN에서 출력 y에대해서..
안녕하세요.. RNN모델 설명에서, 궁금한 것이 있습니다. y_i = h_i 가 되는 것인가요?
-
미해결구현하며 배우는 Transformer
embedding 값 시각화 해보기에서
안녕하세요..16강 임베딩 값 시각화 해보기에서 궁금한 것이 있습니다.버트 토크나이저와 모델을 다운로드 받을 때 다음과 같은 오류가 났는데..2026-01-12 20:46:39.930539: E external/local_xla/xla/stream_executor/cuda/cuda_fft.cc:477] Unable to register cuFFT factory: Attempting to register factory for plugin cuFFT when one has already been registered WARNING: All log messages before absl::InitializeLog() is called are written to STDERR E0000 00:00:1768250800.289278 47 cuda_dnn.cc:8310] Unable to register cuDNN factory: Attempting to register factory for plugin cuDNN when one has already been registered E0000 00:00:1768250800.409734 47 cuda_blas.cc:1418] Unable to register cuBLAS factory: Attempting to register factory for plugin cuBLAS when one has already been registered --------------------------------------------------------------------------- AttributeError Traceback (most recent call last) AttributeError: 'MessageFactory' object has no attribute 'GetPrototype'--------------------------------------------------------------------------- AttributeError Traceback (most recent call last) AttributeError: 'MessageFactory' object has no attribute 'GetPrototype'--------------------------------------------------------------------------- AttributeError Traceback (most recent call last) AttributeError: 'MessageFactory' object has no attribute 'GetPrototype'--------------------------------------------------------------------------- AttributeError Traceback (most recent call last) AttributeError: 'MessageFactory' object has no attribute 'GetPrototype'--------------------------------------------------------------------------- AttributeError Traceback (most recent call last) AttributeError: 'MessageFactory' object has no attribute 'GetPrototype'오류는 나더라도 토크나이저와 모델은 다운로드 받은 것 같더라구요.. Embedding(30522, 768, padding_idx=0) torch.Size([30522, 768])가 출력으로 나왔으니..별 문제가 없는 것인가요? AttributeError가 계속난 것이 신경이 쓰여서요.. 강사님이 실행한 영상에서는 나타나지 않는 오류여서.확인 부탁드립니다.
-
해결됨구현하며 배우는 Transformer
length_penalty 부분이 없는 것 같습니다.
130강 끝날 즈음에 다음 섹션이 아니라 length_penalty에 대한 설명을 해주신다고 하셨는데 없는 것 같습니다!
-
미해결구현하며 배우는 Transformer
멀티 헤드 셀프 어텐션에서 Wq, Wk, Wv의 구조 관련 질문
후반부 슬라이드 그림에 Wq, Wk, Wv 하나로 계산이 되어 헤드별로 나누어진다는 표현같이 보이는데, 오해의 소지가 있는것 같습니다. 만약 Wq, Wk, Wv가 멀티 헤드의 각각의 Wq, Wk, Wv가 concat된 것을 의미한다면 틀린것은 아니지만 그건 구현의 편의 문제이고 적어도 이 슬라이드에서는 Q, K, V가 하나의 Wq, Wk, Wv에서 계산이 되어 나누어진다는것은 혼란을 줄것 같습니다.
-
미해결구현하며 배우는 Transformer
MLM, NSP 구현 여부
안녕하세요 강사님.BERT 학습 파트와 관련하여 궁금한 점이 있어 질문드립니다. 현재 IMDB 데이터를 활용한 긍/부정 분류 학습 과정만 구현되어 있는 것으로 보이는데, 혹시 MLM이나 NSP를 통한 BERT의 초기 pre-training 과정은 포함되어 있지 않은 것인지 궁금합니다.제가 혹시 놓친 부분이 있다면 죄송합니다. 확인 부탁드립니다. 감사합니다.
-
미해결구현하며 배우는 Transformer
bert encoding input_ids.size(1)에 대하여
안녕하세요 강사님.BERT 관련 강의를 매우 유익하게 듣고 있습니다. Embedding 파트를 학습하던 중 궁금한 점이 생겨 질문드립니다.BERTEmbeddings 클래스 구현에서 초기화 시 max_len이 주어지는데, forward 단계에서는 input_ids.size(1)을 사용해 position embedding의 인덱스를 다시 정의하는 과정이 있습니다. 제가 이해한 바로는 이후 tokenizer에서 설정한 max_length와 실제 입력 길이가 달라질 수 있기 때문에 이러한 처리가 필요한 것으로 보였습니다. 혹시 강사님께서 강의 시 빠른 실행을 위해 tokenizer의 max_length를 모델의 max_len과 다르게 설정하셨기 때문에 해당 코드를 넣으신 것인지 궁금합니다. 일반적인 학습 환경에서는 tokenizer의 max_length와 모델의 max_len을 동일하게 맞추는 것이 자연스러울 것 같은데, 혹시 제가 놓친 부분이 있다면 설명해주시면 감사하겠습니다.
-
미해결구현하며 배우는 Transformer
트랜스포머 학습 강의
안녕하세요, 강사님.강의 잘 듣고 있습니다. 한 가지 궁금한 점이 있는데요, 트랜스포머 Seq2Seq 모델은 구현까지만 되어 있고 학습 과정에 대한 강의는 없는 것 같습니다. 혹시 BERT나 MarianMT 모델의 학습만 포함되어 있는 것인지 여쭤보고 싶습니다. 감사합니다.
-
미해결구현하며 배우는 Transformer
Q, K, V 초기 임베딩
안녕하십니까, 강사님.트랜스포머에 대한 세심하고 깊이 있는 강의를 준비해주셔서 감사합니다. 강의 정말 유익하게 잘 듣고 있습니다. Self-Attention의 learnable parameter 단계로 넘어가면서 몇 가지 궁금한 점이 생겨 질문드립니다.초기 token embedding은 어떤 방식으로 설정되는 것인가요?Query, Key, Value를 구하기 위해 초기 token embedding에 (3, 3) 형태의 nn.Linear를 곱하여 각각 (6, 3)으로 변환하는 과정의 의미가 궁금합니다.기존 token embedding을 그대로 사용하지 않고 이렇게 변환하는 이유가 무엇인지 알고 싶습니다.조금 더 구체적으로는, 이렇게 선형 변환을 적용하면 기존 임베딩의 의미가 무시되거나 손실되는 것은 아닌지 의문이 있습니다.