안녕하세요. 해당 강의를 잘 수강하며 많은 도움을 받고 있습니다. 하지만 현재 마지막 54강 양자화의 끝판왕, 터보퀀트 (예정) 부분으로 인해 진도율 100%을 달성할 수 없어 수료증을 받지 못하고 있는 상황입니다. (54강을 클릭해도 수업자료도 없고 아무것도 없어서 그런지 54강 수료가 안되고, 이로 인해 진도율 100% 달성 및 섹션 11퀴즈 풀이도 안되는 상황입니다.) 혹시 54강 강의는 업로드할 예정이 있으신지 궁금하여 글을 남깁니다!
안녕하세요. 데이터 결합 후 아래 코드에서 result_df = result_df.dropna( subset=['10년 기대 인플레이션율', '장단기 금리차'], how='any' ) 전체 지표가 아니라 '10년 기대 인플레이션율' , '장단기 금리차' 두 컬럼만 기준으로 결측 행을 제거한 이유가 궁금합니다. 이후 ffill() 로 나머지 결측값을 채우는 구조인 것으로 이해했는데, 이 두 지표의 데이터 시작 시점에 맞춰 전체 학습 구간을 설정하기 위한 것인지, 아니면 모델링상 반드시 포함되어야 하는 핵심 변수라서 별도로 처리한 것인지 궁금합니다. 감사합니다.
안녕하세요. 좋은 강의 감사합니다. 예측의 요인들을 넣고 빼는 과정에서 궁금한게 있어 질문드립니다. 강의 예시에서 QQQ 혹은 S&P 500 ETF 등의 인덱스 연동 ETF를 주로 예로 사용하였습니다. 이 때, 동일한 경제지표를 제외하는 예시를 보여주셨는데, 실제 QQQ의 경우는 나스닥 100을 추종하고 있으며 S&P 500(SPY)의 경우에는 S&P 500 지수를 추종하고 있습니다. 그렇다면, 해당 두 ETF를 제거하는 것 이외에 동일한 추종 지수도 제외해야 예측에서의 유효성이 더 높은 것 아닐까요?
영상과 같이 잘 설정했음에도 불구하고, 저와 같은 문제가 생기시는 분들은 참고해 주세요. 원인은 Windows Docker Desktop 환경에서 자동으로 처리되어야 할 host.docker.internal 을 extra_hosts: host.docker.internal:host-gateway 로 강제로 덮어쓴 것 입니다. 그 결과 OpenWebUI 컨테이너가 Windows 호스트의 FastAPI 8080 서버가 아니라 172.17.0.1:8080 으로 접속했고, 해당 위치에는 요청을 받을 서버가 없어 Connection refused 가 발생했습니다. 에러 로그: Cannot connect to host host.docker.internal:8080 Connect call failed ('172.17.0.1', 8080) OpenWebUI는 host.docker.internal:8080 에 접속하려 했는데, 컨테이너 내부에서 그 IP를 172.17.0.1 로 해석됐고, 결국 172.17.0.1:8080 으로 접속하다가 실패했습니다. 문제의 원인은 `docker-compose.yaml 에 있었습니다. extra_hosts: - "host.docker.internal:host-gateway" extra_hosts 는 컨테이너 내부의 /etc/hosts 에 hostname/IP 매핑을 추가하는 Compose 설정입니다. Docker Compose 문서에서도 extra_hosts 는 컨테이너의 hosts 파일에 hostname 매핑을 추가하는 기능이라고 설명합니다. [ 참고 ] 실제로 도커 데몬 내부에 /etc/hosts 를 보면 아래와 같은 결과를 볼 수 있습니다. 해결 방안은 아래와 같이 extra_hosts 설정을 주석 처리하시면 됩니다.
안녕하세요 선생님. 강의 잘 듣고 있습니다. Runpod 옵션에 대해서 최신 사항을 갱신해야 될 것 같아요ㅠㅠ 만들어진 지 얼마 안된 강의임에도 불구하고 현재 Runpod 에서 CUDA versions 12.8 기준으로 선택할 수 있는 GPU 선택지가 거의 없습니다.. 이유는 모르겠으나 RTX 4090, 5090 으로 생성 하려고 해도 아래와 같은 경고문만 뜨네요. 하는 수 없이 RTX PRO 6000 WK 으로 선택해서 진행 중입니다. 어제는 RTX 5080 이 선택 가능하길래, 이걸로 진행했다가 오늘 아침에 다시 restart하니까 에러가 뜨더라고요.. ps. torch.OutOfMemoryError: CUDA out of memory. Tried to allocate 394.00 MiB. GPU 0 has a total capacity of 15.48 GiB of which 367.06 MiB is free. Including non-PyTorch memory, this process has 15.11 GiB memory in use. Of the allocated memory 14.24 GiB is allocated by PyTorch, and 501.88 MiB is reserved by PyTorch but unallocated. If reserved but unallocated memory is large try setting PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True to avoid fragmentation. See documentation for Memory Management (https://pytorch.org/docs/stable/notes/cuda.html#environment-variables) 선생님 말씀대로 24GB 이상으로 골라야 하니,RTX 5080(16 GB VRAM)는 안되네요 ㅋㅋㅋ
강사님 안녕하세요? 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 모델이야 요즘 너무 첨단을 향해 가고 있는데, 리트리버 에 대한 최적화는 회사나 도메인 별로 필요한 것이 아닐까... 생각하고 있었습니다만, 제가 이해한 개념이 맞을지 문의 드려 봅니다.
안녕하세요, 강사님 강의 열심히 잘 듣고 있습니다. 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로 수정되어야 할 것 같습니다. 파라미터 사이즈에는 영향이 없으나 버그가 발생할 수 있을 것 같아 이렇게 글 남깁니다. 항상 좋은 강의 감사드립니다. 혹시나 의도하신 것이라면 제가 잘못 이해한 것이니 바로 잡아주시길 바랍니다. 감사합니다.
바흐다나우 어텐션에서 모든 입력 토큰을 참조하는 이유 와 그로인한 바흐다나우 어텐션 장점이 무엇인지 궁금해요! 찍어주신 강의에서는 아래와 같이 정리해볼 수 있었는데요, 어떤 장점이 있는지 궁금해서 질문드립니다! - 방법 : 출력 토큰을 생성할 때, 모든 입력 토큰을 참조하고, 입력 토큰별로 중요도를 기록한다. - 단점 : 토큰양이 많아질 수록 저장공간 문제가 발생한다. - 단점으로 인한 제약 : 입력 텍스트 길이에 제한이 발생한다. 좋은 강의 감사합니다.