모델 다운로드 통계
모델 다운로드 통계 (Models Download Stats)
모델의 다운로드 수를 세는 것은 단순한 작업이 아니에요. 단일 모델 저장소에 여러 파일이 포함될 수 있고, 샤딩된 모델의 여러 가중치 파일이나 라이브러리별 다른 형식(GGUF, PyTorch, TensorFlow 등)이 있을 수 있기 때문이죠. Hub는 다운로드 중복 집계(예: 모델 한 번 다운로드를 여러 번으로 세는 것)를 피하기 위해 다운로드 집계에 사용되는 일련의 쿼리 파일을 사용합니다.
출처: 문서
본문
모델 다운로드는 어떻게 집계되나요? (How are downloads counted for models?)
모델의 다운로드 수를 집계하는 것은 쉬운 작업이 아니에요. 단일 모델 저장소에는 여러 파일이 포함될 수 있고, 여러 가중치 파일(예: 샤딩된 모델)과 라이브러리별 다른 형식(GGUF, PyTorch, TensorFlow 등)이 있을 수 있기 때문이죠. 다운로드 중복 집계(예: 모델 한 번 다운로드를 여러 번으로 세는 것)를 피하기 위해 Hub는 다운로드 집계에 사용하는 쿼리 파일 세트를 사용합니다. 사용자로부터 정보가 전송되거나 추가 호출이 이루어지지 않아요. 집계는 Hub가 다운로드를 위해 파일을 제공할 때 서버 측에서 수행됩니다.
이 파일들에 대한 모든 HTTP 요청(GET 및 HEAD 포함)은 다운로드로 집계됩니다. 기본적으로 라이브러리가 지정되지 않으면 Hub는 config.json을 기본 쿼리 파일로 사용해요. 그렇지 않으면 쿼리 파일은 각 라이브러리에 따라 달라지며, Hub는 pytorch_model.bin 또는 adapter_config.json 같은 파일을 조사할 수 있어요.
각 라이브러리의 쿼리 파일은 무엇인가요? (Which are the query files for different libraries?)
기본적으로 Hub는 config.json, config.yaml, hyperparams.yaml, params.json, meta.yaml을 봅니다. 일부 라이브러리는 자신만의 필터를 지정해(countDownloads 지정) 이 기본값을 재정의해요. 이러한 재정의를 정의하는 코드는 오픈소스입니다. 예를 들어 nemo 라이브러리의 경우 .nemo 확장자를 가진 모든 파일이 다운로드 집계에 사용됩니다.
내 라이브러리용 쿼리 파일을 추가할 수 있나요? (Can I add my query files for my library?)
네, 여기에서 Pull Request를 열면 됩니다. VFIMamba의 다운로드 메트릭을 추가하는 최소 예시가 있어요. 자세한 내용은 통합 가이드를 확인하세요.
GGUF 파일은 어떻게 처리되나요? (How are GGUF files handled?)
GGUF 파일은 자체 완결적이라 단일 라이브러리에 묶이지 않으므로, 모든 GGUF 파일이 다운로드로 집계됩니다. 사용자가 전체 저장소를 클론하는 경우 이것은 다운로드를 중복 집계하게 되지만, 대부분의 사용자와 인터페이스는 주어진 저장소에 대해 단일 GGUF 파일을 다운로드해요.
diffusers는 어떻게 처리되나요? (How is diffusers handled?)
diffusers 라이브러리는 엣지 케이스로, 내부 코드베이스에 필터가 구성되어 있어요. 이 필터는 diffusers 태그가 붙은 저장소가 라이브러리를 통해 로드된 파일과, 사용자가 최상위 safetensors를 수동으로 다운로드해야 하는 UI를 통한 파일을 모두 집계하도록 합니다.
filter: [
{
bool: {
/// Include documents that match at least one of the following rules
should: [
/// Downloaded from diffusers lib
{
term: { path: "model_index.json" },
},
/// Downloaded from diffusers lib through modular pipelines
{
term: { path: "modular_model_index.json" },
},
/// Direct downloads (LoRa, Auto1111 and others)
/// Filter out nested safetensors and pickle weights to avoid double counting downloads from the diffusers lib
{
regexp: { path: "[^/]*\\.safetensors" },
},
{
regexp: { path: "[^/]*\\.ckpt" },
},
{
regexp: { path: "[^/]*\\.bin" },
},
],
minimum_should_match: 1,
},
},
]
}
모델에 대한 더 세분화된 다운로드 데이터가 필요하다면? (What if I need more granular download data for my models?)
더 세분화된 다운로드 데이터가 필요하다면, 예를 들어:
config.json과 모델 가중치를 구분하거나,- CI/CD 파이프라인의 다운로드를 제외하거나,
- 사용자를 중복 제거하거나(즉, 고유 다운로더 수 집계),
한다면 Publisher Analytics, 특히 granular logs 기능이 내 조직이 게시한 모든 모델과 데이터셋에 대한 익명화된 요청 수준 액세스 로그를 제공할 수 있어요.
대부분의 조직이 자신만의 커스텀 규칙을 적용하기를 원하므로 이 로그는 raw 로그로 제공됩니다.
더 알아보기 (Learn more)
Hub는 다운로드 집계를 위해 라이브러리별 쿼리 파일(config.json, pytorch_model.bin 등)을 서버 측에서 참조해 중복 집계를 피해요. 커스텀 라이브러리는 model-libraries.ts의 countDownloads 필터로 쿼리 파일을 재정의할 수 있고, 더 상세한 데이터가 필요하면 Publisher Analytics의 granular logs를 활용할 수 있습니다.