본문 바로가기

카테고리 없음

Hugging Face 소개 및 Hugging Face에서 원하는 데이터 세트 다운로드하는 방법 (ImageNet 1시간 만에 다운로드하기)

 본 게시글은 필자의 개인 경험을 토대로 작성된 것으로, 잘못된 정보를 포함하고 있을 수 있습니다. ※

 

※ 허깅 페이스(Hugging Face) 개요 ※

  허깅 페이스(Hugging Face)는 머신러닝(기계 학습)을 사용해 다양한 애플리케이션을 개발하기 위한 다양한 도구를 제공하는 서비스이다. 사실 현재 딥러닝을 공부하고 연구하는 사람이라면 굉장히 많이 들어보았을 것이라고 생각하며, 이미 사용해 본 사람도 많을 것이라고 생각한다. 다음과 같이 [Sign Up] 버튼을 눌러 회원가입할 수 있다.

 

  ▶ 허깅 페이스(Hugging Face) 웹 사이트: https://huggingface.co/

 

Hugging Face – The AI community building the future.

The AI community building the future. Build, train and deploy state of the art models powered by the reference open source in machine learning.

huggingface.co

 


  이러한 허깅 페이스(Hugging Face)에서는 기계 학습을 위해 필요한 (1) 데이터 세트, (2) 학습된 모델, (3) 학습 소스 코드를 제공한다. 더불어 AWS, Microsoft, Google, Facebook (Meta) 등의 굉장히 많은 대규모 기업이 Hugging Face에 다양한 모델을 배포하여, 누구나 손쉽게 이러한 모델을 사용할 수 있도록 해놓고 있는 상태다.

 

※ 허깅 페이스 간단히 사용해보기 ※

  허깅 페이스에서는 이미 학습된 모델 혹은 자신의 모델을 간단히 Hugging Face 추론(Inference) API를 사용하여 사용해 볼 수 있다. 예를 들어 distilbert-base-uncased라는 모델에 간단히 자신이 넣고자 하는 원하는 텍스트(text) 내용을 삽입하여, 빈 칸에 대한 추론 결과를 확인할 수 있다.

 

 

  텍스트 추론 뿐만 아니라 이미지 분류(image classification)과 같은 다양한 작업을 수행하는 것도 가능하다. 실제로 Hugging Face 웹 사이트에 방문하여, 웹 사이트에서 다양한 모델에 대하여 간단히 추론을 해볼 수도 있다. 필자는 다음과 같이 [Image Classification] 버튼을 클릭하여 확인해 보았다.

 

 

  원하는 이미지를 직접 업로드하여 분류 결과를 확인하는 것 또한 가능하다.

 

 

 

※ 허깅 페이스(Hugging Face) 회원가입 및 로그인 ※

  Hugging Face에서 데이터 세트를 다운로드 받거나 모델을 사용해보기 위해서는 기본적으로 회원가입 및 로그인 과정이 필요하다. 다음과 같이 이메일 주소 및 비밀번호를 입력하여 회원가입을 진행할 수 있다.

 

 

  다음과 같이 프로필(profile) 정보를 기입하여 회원가입을 완료할 수 있다.

 

 

참고로 이메일 인증까지 진행한 뒤에야 Hugging Face를 온전히 사용할 수 있다.

 


※ Hugging Face 토큰 발급 및 Python 로그인 방법 ※

  상당수의 데이터 세트 및 모델의 경우, 누구나 곧 바로 사용할 수 있다기보다는 회원가입 및 로그인 이후에 특정한 사용자 계정의 권한으로 접근할 수 있다. 이를 위해 토근(token)이 필요하다. 따라서 [Settings] 페이지로 이동한 뒤에, [Access Tokens] 페이지에 접속하여 [New token] 버튼을 클릭한다.

 

 

  필자는 다음과 같이 읽기(read) 권한으로 간단히 토큰을 하나 받았다.

 

 

※ 허깅 페이스(Hugging Face)에서 원하는 데이터 세트 다운로드: ImageNet 데이터 세트 다운로드 해보기 ※

  필자는 ImageNet 1k 데이터 세트를 허깅 페이스를 통해 다운로드하였다. 기본적으로 ImageNet 1k 데이터 세트의 경우 딥러닝 및 기계 학습 논문에서 자주 등장하는 데이터 세트이다. 전체 이미지 개수는 120만 장 정도이며, 전체 클래스 개수는 1,000개이고, 데이터 크기는 약 150 GB 정도에 육박한다.

 

  그럼에도 불구하고, Hugging Face를 사용하면 거의 1시간 내외의 시간에 이 ImageNet 1k 데이터 세트를 다운로드 할 수 있다. 예전에는 연구용 토렌트(Torrent)와 같은 것을 이용하여 몇 일에 걸쳐서 ImageNet 데이터 세트를 다운로드하곤 하였는데, 허깅 페이스를 이용하니 1시간이면 다운로드가 완료되는 것을 확인할 수 있었다.

 

 

  다음과 같이 [Use in dataset library] 버튼을 눌러 해당 데이터 세트를 사용할 수 있는 Python 코드를 확인할 수 있다.

 

 

  참고로 ImageNet 1,000 classes 데이터 세트(120만 장)의 경우, 일반적으로 연구 목적으로 활용되는 데이터 세트라는 점에서 기본적인 약관 동의가 필요하다. 실제로 약관 동의를 하지 않으면, Python 코드 상으로도 다운로드를 진행할 수 없으므로, 꼭 다음과 같이 약관 동의를 진행해주도록 하자.

  약관에 동의하고 나면, 웹 사이트 내에서 다음과 같이 해당 데이터 세트의 일부 내용을 확인할 수 있다. 필자의 경우 "학습 데이터 세트(train dataset)"으로 설정한 뒤에, 데이터 세트를 확인할 수 있었다. 물론 미리보기(preview) 정도이기 때문에, 전체 이미지에 접근하기 위해서는 전체 데이터 세트 다운로드 과정이 필요하다.

 

 

  다음과 같이 데이터 세트 미리보기(preview)가 가능했다.

 

 

※ Hugging Face에서 원하는 데이터 세트 다운로드하기 ※

  이제 실질적으로 아래와 같은 코드로 데이터 세트를 다운로드할 수 있다. 참고로 load_dataset 기능이 동작하지 않는다면, 아래와 같이 dataset 라이브러리를 먼저 설치하자.

 

pip install datasets


  참고로 ImageNet-1k 데이터 세트의 경우 Python 개발 환경상에서 먼저 Hugging Face 로그인(login)을 진행해야 한다. 따라서 huggingface_hub를 설치하는 것도 필요하다.

pip install --upgrade huggingface_hub


  이제 Python 개발 환경에서 Hugging Face Hub를 사용하기 위해서는 다음과 같은 코드를 사용할 수 있다. 토큰은 문자열 형태로 입력한다.

 

from huggingface_hub.hf_api import HfFolder

HfFolder.save_token({자신의 Access Token})

 

  이후에 실질적으로 다운로드를 위한 코드는 다음과 같다.

from datasets import load_dataset

# If the dataset is gated/private, make sure you have run huggingface-cli login
dataset = load_dataset("imagenet-1k")

 

  실행해 본 결과, 매우 빠르게 다운로드가 진행되는 것을 확인할 수 있었다. 다운로드는 (1) 학습용(training), (2) 검증용(validation), (3) 테스트용(test)으로 나누어져 세 파트에 대한 다운로드가 진행된다. 이 중에서 학습용(training)에 대해서만 100GB가 넘어가는 것을 확인할 수 있다.

 

 

  아무튼 Hugging Face를 사용하면, 100GB가 넘는 데이터 세트인 ImageNet 1k 데이터 세트를 빠르고 손쉽게 다운로드할 수 있었다. 하지만, 기본적으로 데이터 세트의 크기가 크다 보니까, 앞서 말했듯이 3개의 파트에 걸쳐서 다운로드가 진행되는 것처럼 보였다.

 

  학습용(training) 데이터 세트를 다운로드하는 과정에서만 5번에 걸쳐서 각각 30GB 정도로 다운로드가 진행(총 150GB)되는 것처럼 보였다. 아무튼 전체 다운로드 과정을 캡처한 것은 다음과 같다. 필자의 GPU 서버에서는 약 1시간 만에 다운로드가 완료되었다. 정말 편리하다고 느꼈다. 아래 그림은 학습용 데이터 세트를 다운로드하는 과정을 보인다.

 

 

  아래 그림은 (1) 학습용(training), (2) 검증용(validation), (3) 테스트용(test) 세 파트에 대한 다운로드가 완료된 이후에 각각 spliting이 진행되는 모습을 보여준다.

 

 

  최종적으로 ImageNet 1,000 classes에 대한 데이터 세트 다운로드가 완료되면 다음과 같다. 한 번 다운로드를 하고 나면, 나중에 다시 다운로드할 필요 없이 간단히 본인의 GPU 서버에서 즉시 불러와 사용할 수 있다.