multi30k dataset이 다운로드관련 질문드립니다

train_data, val_data,test_data = Multi30k(data_cfg.data_root)

test_data = to_map_style_dataset(test_data)

이부분을 돌리면

TimeoutError Traceback (most recent call last)
/usr/local/lib/python3.10/dist-packages/urllib3/connection.py in _new_conn(self)
173 try:
--> 174 conn = connection.create_connection(
175 (self._dns_host, self.port), self.timeout, **extra_kw

79 frames
TimeoutError: [Errno 110] Connection timed out

During handling of the above exception, another exception occurred:

ConnectTimeoutError Traceback (most recent call last)
ConnectTimeoutError: (<urllib3.connection.HTTPConnection object at 0x7f054cf1f9a0>, 'Connection to www.quest.dcs.shef.ac.uk timed out. (connect timeout=None)')

During handling of the above exception, another exception occurred:

MaxRetryError Traceback (most recent call last)
MaxRetryError: HTTPConnectionPool(host='www.quest.dcs.shef.ac.uk', port=80): Max retries exceeded with url: /wmt16_files_mmt/mmt16_task1_test.tar.gz (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x7f054cf1f9a0>, 'Connection to www.quest.dcs.shef.ac.uk timed out. (connect timeout=None)'))

During handling of the above exception, another exception occurred:

ConnectTimeout Traceback (most recent call last)
/usr/local/lib/python3.10/dist-packages/requests/adapters.py in send(self, request, stream, timeout, verify, cert, proxies)
505 # TODO: Remove this in 3.0.0: see #2811
506 if not isinstance(e.reason, NewConnectionError):
--> 507 raise ConnectTimeout(e, request=request)
508
509 if isinstance(e.reason, ResponseError):

ConnectTimeout:
This exception is thrown by iter of HTTPReaderIterDataPipe(skip_on_error=False, source_datapipe=OnDiskCacheHolderIterDataPipe, timeout=None)
이런식으로 계속 타임아웃이 되는데 검색결과 서버가 터진것으로 보입니다... 저는 이 데이터셋을 꼭 써야하는데 해결방법이 있을까요..?

  • 아래 답변은 OpenAI의 GPT-4 모델로 자동 생성한 것으로, 정확하지 않을 수 있습니다.
  • 잘못된 답변을 보셨다면 댓글로 첨삭 지도 부탁드립니다. :sweat_smile:

안녕하세요, hyejun12123님. PyTorch를 사용하시는 데 어려움을 겪고 계신 것 같아 매우 안타깝습니다. 질문을 정리해보면, Multi30k 데이터셋을 다운로드하려고 하였으나 서버의 문제로 인해 타임아웃이 발생하고 있으며, 이를 해결하고 싶으신 것으로 이해하였습니다.

이 문제는 데이터셋을 호스팅하고 있는 서버의 문제로 보입니다. 이런 경우, 데이터셋을 다른 경로로 다운로드 받거나, 미리 다운로드 받아 놓은 데이터셋을 사용하는 방법이 있습니다.

다행히, Multi30k 데이터셋은 다른 곳에서도 호스팅되고 있습니다. 예를 들어, torchtext 라이브러리를 사용하여 Multi30k 데이터셋을 다운로드 받을 수 있습니다. 아래는 torchtext를 사용하여 Multi30k 데이터셋을 다운로드 받는 예제 코드입니다.

from torchtext.datasets import Multi30k

# 데이터셋 다운로드
train_data, valid_data, test_data = Multi30k.splits(exts=('.de', '.en'), 
                                                    fields=(SRC, TRG))

print(f"Number of training examples: {len(train_data.examples)}")
print(f"Number of validation examples: {len(valid_data.examples)}")
print(f"Number of testing examples: {len(test_data.examples)}")

위 코드에서 SRCTRG는 각각 소스 언어와 타겟 언어를 나타내는 필드(Field) 객체입니다. 이 객체들은 데이터셋을 어떻게 처리할지를 정의합니다. 필드 객체를 생성하는 방법은 아래와 같습니다.

from torchtext.data import Field

# 필드 객체 생성
SRC = Field(tokenize = tokenize_de, 
            init_token = '<sos>', 
            eos_token = '<eos>', 
            lower = True)

TRG = Field(tokenize = tokenize_en, 
            init_token = '<sos>', 
            eos_token = '<eos>', 
            lower = True)

위 코드에서 tokenize_detokenize_en는 각각 독일어와 영어를 토큰화하는 함수입니다. 이 함수들은 자신의 필요에 맞게 정의하시면 됩니다.

이 방법을 사용하면 서버의 문제로 인해 데이터셋을 다운로드 받지 못하는 문제를 해결할 수 있습니다.

더 자세한 정보는 PyTorch 공식 문서의 torchtext 관련 부분(링크)을 참조하시면 도움이 될 것입니다.

그럼에도 불구하고 문제가 해결되지 않거나, 다른 문제가 발생하면 언제든지 물어보세요. 도움이 될 수 있도록 최선을 다하겠습니다. 하지만 제가 제공한 해결책이 항상 정확하거나 완벽하다고 보장할 수는 없으니, 이 점 양해 부탁드립니다.


  • 답변이 어떠셨나요? 괜찮았다고 생각하신다면 아래 :heart:를 한 번 눌러주시길 부탁드려요!

제가 임포트한것과 같은방식이라 결과도 같을것같습니다

  • 아래 답변은 OpenAI의 GPT-3.5(ChatGPT) 모델로 자동 생성한 것으로, 정확하지 않을 수 있습니다.
  • 잘못된 답변을 보셨다면 댓글로 첨삭 지도 부탁드립니다. :sweat_smile:

안녕하세요 hyejun12123님,

Multi30k 데이터셋을 다운로드하는 중에 타임아웃 오류가 발생하는 것 같습니다. 이 오류는 서버에 연결할 수 없어서 발생하는 것으로 보입니다. 검색 결과로는 서버가 다운된 것으로 보입니다. 데이터셋을 사용해야 하는 상황이라면 다음과 같은 해결 방법을 시도해 볼 수 있습니다.

  1. 다운로드 링크 변경: Multi30k 데이터셋은 다른 곳에서도 다운로드할 수 있습니다. PyTorch 공식 튜토리얼에서도 Multi30k 데이터셋을 사용하고 있으며, 해당 튜토리얼에서 제공하는 다운로드 링크를 사용해 보세요. 아래의 링크에서 데이터셋을 다운로드할 수 있습니다.

  2. 대체 데이터셋 사용: Multi30k 데이터셋 대신 다른 유사한 이미지-문장 번역 데이터셋을 사용해 볼 수도 있습니다. 예를 들어, IWSLT 데이터셋은 비슷한 구조를 가지고 있으며, PyTorch에서도 지원하고 있습니다. 아래의 링크에서 IWSLT 데이터셋을 다운로드할 수 있습니다.

위의 두 가지 방법을 시도해 보시고, 원하는 데이터셋을 사용할 수 있도록 해보세요. 추가적인 도움이 필요하시면 언제든지 물어보세요. 감사합니다!

PyTorch 데이터 로딩 튜토리얼


  • 답변이 어떠셨나요? 괜찮았다고 생각하신다면 아래 :heart:를 한 번 눌러주시길 부탁드려요!

multi30k dataset을 직접 가져와서 해결했습니다

어떤식으로 직접 가져 오셨나요?

@yuysuk8169 님 안녕하세요!

from torchtext.datasets import Multi30k

for i, (eng, de) in enumerate(multi_train):
    if i == 5: break
    print(f"index:{i}, English: {eng}, das Deutsche: {de}")

이런 식으로 데이터셋이 잘 load 되었는지 확인하면서 txt파일이나 tar 파일로 만드는 방법이 있을 것 같습니다!

아니면, Multi30k github repository가 있으니, 직접 다운 받으셔도 될 것 같습니다.
링크는 다음과 같습니다.

감사합니다.

1개의 좋아요

좋은 정보 감사합니다