허깅페이스 허브와 DuckDB 통합을 통한 데이터셋 분석
허깅페이스는 사용자가 허깅페이스 허브에 저장된 공개 데이터셋에서 직접 SQL 쿼리를 실행할 수 있도록 DuckDB를 통합했습니다. 이 통합은 로컬로 다운로드할 필요 없이 대규모 데이터셋에 대한 빠른 분석 쿼리를 가능하게 하며, 허브의 데이터셋을 Parquet 컬럼 형식으로 자동 변환하는 기능을 활용합니다.
공개 데이터셋의 자동 Parquet 변환
허깅페이스 데이터셋 뷰어는 허브의 모든 공개 데이터셋을 자동으로 Parquet 파일로 변환합니다. Parquet은 저장, 로드, 데이터 분석에 훨씬 효율적인 컬럼 저장 형식이며, 이는 현재 Large Language Models (LLMs) 시대에 사용되는 대규모 데이터셋에 매우 중요합니다.
사용자는 데이터셋 페이지에서 'Parquet로 자동 변환됨' 버튼을 클릭하여 이러한 파일을 식별할 수 있습니다. 이러한 Parquet 파일의 특정 URL은 datasets-server의 /parquet 엔드포인트를 통해 프로그래밍 방식으로 검색할 수 있습니다.
DuckDB를 사용한 분석 쿼리
이 통합에서 DuckDB는 복잡한 분석 쿼리를 실행하는 높은 성능 때문에 데이터베이스 관리 시스템(DBMS)으로 사용됩니다. 이 설정의 핵심 기술적 기능은 오버헤드 없이 원격 Parquet 파일에 직접 SQL 쿼리를 실행할 수 있는 DuckDB의 능력입니다.
httpfs 확장을 사용하면 DuckDB는 허깅페이스 /parquet 엔드포인트가 제공하는 URL을 사용하여 원격 파일을 읽고 쓸 수 있습니다. 이는 데이터셋 뷰어가 큰 데이터셋을 더 작은 500MB 청크로 샤딩하기 때문에 특히 대규모 데이터셋에 유용하며, DuckDB는 여러 Parquet 파일에 걸쳐 동시에 쿼리를 지원합니다.
구현 예시
데이터셋을 분석하려면 사용자는 다음 단계를 따를 수 있습니다.
- Parquet URL 검색: 특정 데이터셋의 Parquet 파일 URL 목록을 얻으려면
/parquet엔드포인트에 HTTP 호출을 사용합니다. - DuckDB 초기화: 연결을 생성하고
httpfs확장을 로드하여 원격 파일 액세스를 활성화합니다. - SQL 실행: 원격 URL에 직접 표준 SQL 쿼리를 실행합니다.
import duckdb
# Example URL retrieved from the /parquet endpoint
url = "https://huggingface.co/datasets/blog_authorship_corpus/resolve/refs%2Fconvert%2Fparquet/blog_authorship_corpus/blog_authorship_corpus-train-00000-of-00002.parquet"
con = duckdb.connect()
con.execute("INSTALL httpfs;
con.execute("LOAD httpfs;
# Querying the remote Parquet file
con.sql(f"""SELECT horoscope,
count(*),
AVG(LENGTH(text)) AS avg_blog_length
FROM '{url}'
GROUP BY horoscope
ORDER BY avg_blog_length
DESC LIMIT(5)""
데이터셋 투명성에 대한 영향
허브 데이터셋에 SQL 액세스를 제공하면 연구자와 개발자가 모델을 훈련하는 데 사용되는 데이터셋의 내용을 더 잘 이해할 수 있습니다. 데이터셋 구성이 모델 품질에 직접적인 영향을 미치기 때문에 이 도구는 오픈 액세스와 데이터셋 내용에 대한 인식을 높이는 메커니즘을 제공하여, 사용자는 구조화된 쿼리를 통해 통찰력을 발견할 수 있습니다.