Hugging Face 지원

Hugging Face 지원 (Hugging Face Support)

httpfs 익스텐션은 Hugging Face 저장소에 호스팅된 데이터셋에 접근하기 위한 hf:// 프로토콜 지원을 도입했어요. 자세한 내용은 발표 블로그 글을 참고해요.

출처: 문서

본문

httpfs 익스텐션은 Hugging Face 저장소에 호스팅된 데이터셋에 접근하기 위한 hf:// 프로토콜 지원을 도입했어요. 자세한 내용은 발표 블로그 글을 참고해요.

사용법 (Usage)

Hugging Face 저장소는 다음 URL 패턴으로 쿼리할 수 있어요:

hf://datasets/⟨my_username⟩/⟨my_dataset⟩/⟨path_to_file⟩

예를 들어 CSV 파일을 읽으려면 다음 쿼리를 사용할 수 있어요:

SELECT *
FROM 'hf://datasets/datasets-examples/doc-formats-csv-1/data.csv';

여기서:

  • datasets-examples는 사용자/조직의 이름
  • doc-formats-csv-1은 데이터셋 저장소의 이름
  • data.csv는 저장소의 파일 경로

쿼리 결과는:

kind sound
dog woof
cat meow
pokemon pika
human hello

JSONL 파일을 읽으려면 다음을 실행할 수 있어요:

SELECT *
FROM 'hf://datasets/datasets-examples/doc-formats-jsonl-1/data.jsonl';

마지막으로 Parquet 파일을 읽으려면 다음 쿼리를 사용해요:

SELECT *
FROM 'hf://datasets/datasets-examples/doc-formats-parquet-1/data/train-00000-of-00001.parquet';

이 각 명령은 지정된 파일 형식에서 데이터를 읽어 구조화된 표 형식으로 표시해요. 작업 중인 파일 형식에 따라 적절한 명령을 선택하면 돼요.

로컬 테이블 만들기 (Creating a Local Table)

매 쿼리마다 원격 엔드포인트에 접근하는 것을 피하려면 CREATE TABLE ... AS 명령으로 데이터를 DuckDB 테이블에 저장할 수 있어요. 예를 들어:

CREATE TABLE data AS
    SELECT *
    FROM 'hf://datasets/datasets-examples/doc-formats-csv-1/data.csv';

그런 다음 data 테이블을 다음과 같이 쿼리하면 돼요:

SELECT *
FROM data;

여러 파일 (Multiple Files)

특정 디렉토리의 모든 파일을 쿼리하려면 glob 패턴을 사용할 수 있어요. 예를 들어:

SELECT count(*) AS count
FROM 'hf://datasets/cais/mmlu/astronomy/*.parquet';
count
173

glob 패턴을 사용하면 큰 데이터셋을 효율적으로 다루고 여러 파일에 걸쳐 포괄적인 쿼리를 수행할 수 있어 데이터 검사와 처리 작업이 단순해져요. 여기서는 천문학에서 "planet"이라는 단어를 포함한 질문을 찾는 방법을 볼 수 있어요:

SELECT count(*) AS count
FROM 'hf://datasets/cais/mmlu/astronomy/*.parquet'
WHERE question LIKE '%planet%';
count
21

버전과 리비전 (Versioning and Revisions)

Hugging Face 저장소에서 데이터셋 버전 또는 리비전은 서로 다른 데이터셋 업데이트예요. 각 버전은 특정 시점의 스냅샷이어서 변경 사항과 개선 사항을 추적할 수 있어요. git 용어로는 브랜치나 특정 커밋으로 이해할 수 있어요.

다음 URL로 서로 다른 데이터셋 버전/리비전을 쿼리할 수 있어요:

hf://datasets/⟨my_username⟩/⟨my_dataset⟩@⟨my_branch⟩/⟨path_to_file⟩

예를 들어:

SELECT *
FROM 'hf://datasets/datasets-examples/doc-formats-csv-1@~parquet/**/*.parquet';
kind sound
dog woof
cat meow
pokemon pika
human hello

위 쿼리는 ~parquet 리비전 아래의 모든 Parquet 파일을 읽어요. 이는 Hugging Face가 효율적인 스캔을 위해 모든 데이터셋의 Parquet 파일을 자동으로 생성하는 특별한 브랜치예요.

인증 (Authentication)

Hugging Face 토큰을 DuckDB Secrets Manager에 구성해 비공개 또는 게이트(gated) 데이터셋에 접근할 수 있어요. 먼저 Hugging Face 설정 – Tokens를 방문해 접근 토큰을 얻어요. 둘째, DuckDB의 Secrets Manager를 사용해 DuckDB 세션에 설정해요. DuckDB는 시크릿 관리를 위해 두 가지 제공자(provider)를 지원해요:

CONFIG

사용자는 모든 구성 정보를 CREATE SECRET 문에 전달해야 해요. CONFIG 제공자로 시크릿을 만들려면 다음 명령을 사용해요:

CREATE SECRET hf_token (
    TYPE huggingface,
    TOKEN 'your_hf_token'
);

credential_chain

자격 증명을 자동으로 가져오려고 시도해요. Hugging Face 토큰의 경우 ~/.cache/huggingface/token에서 가져오려고 해요. credential_chain 제공자로 시크릿을 만들려면 다음 명령을 사용해요:

CREATE SECRET hf_token (
    TYPE huggingface,
    PROVIDER credential_chain
);

더 알아보기 (Learn more)