영상과 같이 잘 설정했음에도 불구하고, 저와 같은 문제가 생기시는 분들은 참고해 주세요. 원인은 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)는 안되네요 ㅋㅋㅋ
안녕하세요. 설명을 너무 잘해주셔서 Transformer에 대한 이해도가 높아졌습니다. 감사합니다. 강의 중 이해안되는 부분이 있어 질문드립니다. "Char Level GPT 만들기"강의 중 MaskedMultiheadAttention 클래스 선언 부분의 attention 객체 만드는 부분의 매개변수가 이해가 안갑니다. Class MaskedMultiheadAttention(nn.Module): def init(self, embed_dim, num_heads): ... self.attentions = nn.ModuleList([MaskedSelfAttention(attention_dim, attention_dim) for in range(num_heads)] ... 위에 attention 객체 생성할 때 입력단자로 attention_dim이 들어가게 되는데 embed_dim 이 들어가야 하는게 아닐까요? 선택사항이라고 하기에는 TrnsformerDecoderBlock 클래스 선언한 걸 보면 layer_norm1을 emed_dim으로 설정해서 그래도 맞지 않는 것 같아서요. 답변 부탁드릴게요!