Hub documentation
최적화
단일 로그인(SSO) 감사 로그 스토리지 리전 비공개 데이터셋용 Data Studio 리소스 그룹(액세스 제어) 고급 컴퓨트 옵션 고급 보안 토큰 관리 서비스 계정 발행자 분석 게이팅 그룹 컬렉션 네트워크 보안 다운로드 분석 속도 제한 블로그 글
PRO 플랜 리포지토리 레포지토리 시작하기 저장소 설정 저장 용량 제한 스토리지 백엔드(Xet) 로컬 캐시 Pull Requests & Discussions 알림 컬렉션 Webhooks GitHub Actions 노트북 다음 단계 라이선스
모델 모델 허브 모델 카드 평가 결과 리더보드 데이터 게이트된 모델 모델 업로드 모델 다운로드 통합 라이브러리 모델 위젯 모델 추론 모델 다운로드 통계 모델 릴리스 체크리스트 하드웨어 로컬 앱 자주 묻는 질문 고급 주제
데이터셋 Datasets 개요 Dataset Cards 게이트된 데이터셋 데이터셋 업로드 데이터셋 업로드 (LLM용) 데이터셋 다운로드 스트리밍 데이터셋 통합 라이브러리
Spaces Argilla Daft Dask 데이터셋 Data Designer Distilabel DuckDB Embedding Atlas fenic FiftyOne Lance Pandas Polars Spark WebDataset Zephon
Data Studio Agent Traces 데이터셋 다운로드 통계 Spaces 개요 Spaces GPU 업그레이드 Spaces ZeroGPU Spaces Dev Mode Spaces 디스크 사용량 및 저장소 Spaces 사용자 지정 도메인 MCP 서버로 사용 가능한 Spaces Spaces를 에이전트 도구로 API 엔드포인트로 사용하는 Spaces Gradio Spaces Streamlit Spaces Static HTML Spaces Docker Spaces Space 임베드하기 Docker로 Spaces 실행 Spaces 구성 참조 HF로 로그인 버튼 주요 Spaces Spaces 변경 이력 고급 주제
Storage Buckets new 컨테이너 이미지 new Jobs Jobs 개요 빠른 시작 Pricing and Billing 작업 관리 구성 Docker 이미지 사용 모델 서빙 모델 학습 예제 및 튜토리얼 대규모 데이터셋 처리 Schedule Jobs Webhook 자동화 참고
에이전트 에이전트 개요 AI 에이전트를 위한 Hugging Face CLI Hugging Face MCP 서버 Hugging Face Agent Skills HF SDK를 사용하여 에이전트 구축하기 llama.cpp를 활용한 로컬 에이전트 에이전트 라이브러리 세션 추적 형식
기타 최적화
이전에서 지연 평가와 즉시 평가의 차이를 간략히 살펴보았습니다. 이 페이지에서는 지연 API를 활용하여 상당한 성능 향상을 얻을 수 있는 방법을 보여 드리겠습니다.
Lazy와 Eager
Polars는 lazy와 eager라는 두 가지 운영 모드를 지원합니다. eager API에서는 쿼리가 즉시 실행되는 반면, lazy API에서는 쿼리가 실제로 ‘필요할 때’에만 평가됩니다. 실행을 마지막 순간까지 지연시키는 것은 상당한 성능 이점을 가져올 수 있으며, 이것이 대부분의 비대화형(non-interactive) 상황에서 lazy API가 선호되는 이유입니다.
예시
이전 페이지의 예제를 사용하여 lazy API를 사용할 때의 성능 이점을 보여 드리겠습니다. 아래 코드는 archive.org의 업로드 수를 계산합니다.
Eager
import polars as pl
import datetime
df = pl.read_csv("hf://datasets/commoncrawl/statistics/tlds.csv", try_parse_dates=True)
df = df.select("suffix", "crawl", "date", "tld", "pages", "domains")
df = df.filter(
(pl.col("date") >= datetime.date(2020, 1, 1)) |
pl.col("crawl").str.contains("CC")
)
df = df.with_columns(
(pl.col("pages") / pl.col("domains")).alias("pages_per_domain")
)
df = df.group_by("tld", "date").agg(
pl.col("pages").sum(),
pl.col("domains").sum(),
)
df = df.group_by("tld").agg(
pl.col("date").unique().count().alias("number_of_scrapes"),
pl.col("domains").mean().alias("avg_number_of_domains"),
pl.col("pages").sort_by("date").pct_change().mean().alias("avg_page_growth_rate"),
).sort("avg_number_of_domains", descending=True).head(10)지연
import polars as pl
import datetime
lf = (
pl.scan_csv("hf://datasets/commoncrawl/statistics/tlds.csv", try_parse_dates=True)
.filter(
(pl.col("date") >= datetime.date(2020, 1, 1)) |
pl.col("crawl").str.contains("CC")
).with_columns(
(pl.col("pages") / pl.col("domains")).alias("pages_per_domain")
).group_by("tld", "date").agg(
pl.col("pages").sum(),
pl.col("domains").sum(),
).group_by("tld").agg(
pl.col("date").unique().count().alias("number_of_scrapes"),
pl.col("domains").mean().alias("avg_number_of_domains"),
pl.col("pages").sort_by("date").pct_change().mean().alias("avg_page_growth_rate"),
).sort("avg_number_of_domains", descending=True).head(10)
)
df = lf.collect()타이밍
…
- Eager:
1.96초 - Lazy:
410밀리초
Lazy query는 eager query보다 약 5배 빠릅니다. 그 이유는 쿼리 옵티마이저에 있습니다. 데이터셋의 collect를 마지막까지 지연시키면, Polars는 어떤 열과 행이 필요한지 추론하고 데이터를 읽을 때 가능한 한 조기에 필터를 적용할 수 있습니다. Parquet와 같이 메타데이터(예: 특정 행 그룹의 min, max)를 포함하는 파일 포맷의 경우, Polars가 필터와 메타데이터를 기반으로 데이터 전송 없이 전체 행 그룹을 건너뛸 수 있으므로 차이가 더 클 수 있습니다.