본문으로 건너뛰기
최종 수정: 에

Hugging Face 데이터 분석

Hugging Face는 사용자가 머신 러닝 모델, 데이터셋 및 기타 리소스를 저장하고 공유하며 함께 개발할 수 있는 인기 있는 중앙 집중형 플랫폼입니다. Hugging Face Dataset 리포지토리에는 CSV, Parquet, JSONL 등 다양한 형식의 데이터 파일이 포함될 수 있습니다.

Doris는 HTTP Table Valued Function을 통해 SQL로 Hugging Face 데이터셋의 데이터에 직접 접근하고 분석할 수 있습니다.

노트

이 기능은 버전 4.0.2부터 지원됩니다.

기능​

기능설명
접근 프로토콜HTTP 프로토콜로 Hugging Face Dataset에 접근
타입 추론자동 타입 추론 지원
지원 파일 형식CSV, JSON, Parquet, ORC
데이터 작업CREATE TABLE AS SELECT 및 INSERT INTO ... SELECT 지원

매개변수는 File Table Valued Function과 동일합니다.

URI 구문​

Hugging Face 데이터셋에 접근하기 위한 URI 형식은 다음과 같습니다.

hf://datasets/<owner>/<repo>[@<branch>]/<path>
구성 요소설명필수 여부
owner데이터셋 소유자예
repo데이터셋 리포지토리 이름예
branch브랜치 이름, 기본값은 main아니요
path파일 경로, 와일드카드 지원예

와일드카드 설명:

와일드카드설명예시
*단일 디렉터리 수준에서 임의의 문자와 일치*/*.parquet는 첫 번째 수준의 하위 디렉터리에 있는 모든 Parquet 파일과 일치
**여러 디렉터리 수준에 걸쳐 재귀적으로 일치**/*.parquet는 모든 수준의 Parquet 파일과 일치
[...]문자 집합에 있는 임의의 단일 문자와 일치test-0000[0-9].parquet는 test-00000부터 test-00009까지 일치

활용 사례​

사례 1: 빠른 데이터 쿼리​

파일을 다운로드하지 않고 SQL로 Hugging Face의 공개 데이터셋을 직접 쿼리합니다.

예시: fka/awesome-chatgpt-prompts 리포지토리의 CSV 데이터를 쿼리합니다.

SELECT COUNT(*) FROM
HTTP(
"uri" = "hf://datasets/fka/awesome-chatgpt-prompts/blob/main/prompts.csv",
"format" = "csv"
);

해당 데이터 파일: https://huggingface.co/datasets/fka/awesome-chatgpt-prompts/blob/main/prompts.csv

예시: 와일드카드로 여러 파일을 지정하여 stanfordnlp/imdb 리포지토리의 Parquet 파일을 쿼리합니다.

SELECT * FROM
HTTP(
"uri" = "hf://datasets/stanfordnlp/imdb@main/*/*.parquet",
"format" = "parquet"
) ORDER BY text LIMIT 1;

해당 데이터 파일: https://huggingface.co/datasets/stanfordnlp/imdb/blob/main/plain_text/test-00000-of-00001.parquet

사례 2: 로컬 테이블로 데이터 가져오기​

이후 분석에 사용할 수 있도록 Hugging Face 데이터셋을 Doris 테이블로 가져옵니다.

방법 1: CREATE TABLE AS SELECT로 새 테이블을 만들고 데이터를 가져옵니다.

CREATE TABLE hf_table AS
SELECT * FROM
HTTP(
"uri" = "hf://datasets/stanfordnlp/imdb@script/dataset_infos.json",
"format" = "json"
);

해당 데이터 파일: https://huggingface.co/datasets/stanfordnlp/imdb/blob/script/dataset_infos.json

방법 2: INSERT INTO ... SELECT로 기존 테이블에 데이터를 삽입합니다.

INSERT INTO hf_table
SELECT * FROM
HTTP(
"uri" = "hf://datasets/stanfordnlp/imdb@main/**/test-00000-of-0000[1].parquet",
"format" = "parquet"
) ORDER BY text LIMIT 1;

해당 데이터 파일: https://huggingface.co/datasets/stanfordnlp/imdb/blob/main/plain_text/test-00000-of-00001.parquet

사례 3: 비공개 데이터셋 접근​

접근 권한이 필요한 데이터셋의 경우 요청에 Token 인증을 추가해야 합니다.

절차:

  1. Hugging Face 계정에 로그인하고 Access Token을 발급받습니다. Access Token은 hf_로 시작합니다.
  2. SQL에서 http.header.Authorization 속성으로 Token을 전달합니다.

예시:

SELECT * FROM
HTTP(
"uri" = "hf://datasets/gaia-benchmark/GAIA/blob/main/2023/validation/metadata.level1.parquet",
"format" = "parquet",
"http.header.Authorization" = "Bearer hf_MWYzOJJoZEymb..."
) LIMIT 1\G