Mixins 및 직렬화 메서드
믹스인
huggingface_hub 라이브러리는 객체의 부모 클래스로 사용할 수 있는 다양한 믹신을 제공하여, 간단한 업로드 및 다운로드 기능을 지원합니다. Hub에 ML 프레임워크를 통합하는 방법은 통합 가이드를 참고하세요.
일반
클래스 huggingface_hub.ModelHubMixin
< source >( *args**kwargs )
매개변수
- repo_url (
str, 선택 사항) — 라이브러리 저장소의 URL입니다. 모델 카드 생성에 사용됩니다. - paper_url (
str, 선택 사항) — 라이브러리 논문의 URL입니다. 모델 카드 생성에 사용됩니다. - docs_url (
str, 선택 사항) — 라이브러리 문서의 URL입니다. 모델 카드 생성에 사용됩니다. - model_card_template (
str, 선택 사항) — 모델 카드 템플릿입니다. 모델 카드를 생성하는 데 사용됩니다. 기본값은 범용 템플릿입니다. - language (
str또는list[str], 선택 사항) — 라이브러리가 지원하는 언어. 모델 카드 생성에 사용됩니다. - library_name (
str, 선택 사항) — ModelHubMixin을 통합하는 라이브러리의 이름입니다. 모델 카드 생성에 사용됩니다. - license (
str, 선택 사항) — ModelHubMixin을 통합하는 라이브러시의 라이선스입니다. 모델 카드 생성에 사용됩니다. 예: “apache-2.0” - license_name (
str, 선택 사항) — ModelHubMixin을 통합하는 라이브러리의 이름입니다. 모델 카드 생성에 사용됩니다.license가other로 설정된 경우에만 사용됩니다. 예: “coqui-public-model-license”. - license_link (
str, 선택 사항) — ModelHubMixin을 통합하는 라이브러리의 라이선스에 대한 URL입니다. 모델 카드 생성에 사용됩니다.license가other로 설정되고license_name이 설정된 경우에만 사용됩니다. 예: ”https://coqui.ai/cpml”. - pipeline_tag (
str, 선택 사항) — 파이프라인의 태그입니다. 모델 카드 생성에 사용됩니다. 예: “text-classification”. - tags (
list[str], 선택 사항) — 모델 카드에 추가할 태그입니다. 모델 카드를 생성하는 데 사용됩니다. 예: [“computer-vision”] - coders (
dict[Type, tuple[Callable, Callable]], 선택 사항) — 사용자 정의 유형과 해당 인코더/디코더를 담은 사전입니다. 기본적으로 jsonable하지 않은 인수를 인코딩/디코딩하는 데 사용됩니다. 예를 들어 dataclasses, argparse.Namespace, OmegaConf 등이 있습니다.
Hub에 어떤 기계 학습 프레임워크든 통합할 수 있는 범용 믹스인입니다.
프레임워크를 통합하려면 모델 클래스가 이 클래스를 상속해야 합니다. 모델 저장/로드를 위한 사용자 정의 로직은 _from_pretrained와 _save_pretrained에서 재정의해야 합니다. PyTorchModelHubMixin은 Hub와의 mixin 통합의 좋은 예시입니다. 자세한 지침은 통합 가이드를 확인하세요.
ModelHubMixin을 상속할 때 클래스 수준의 속성을 정의할 수 있습니다. 이러한 속성은 __init__에 전달되는 것이 아니라 클래스 정의 자체에 전달됩니다. 이는 ModelHubMixin을 통합하는 라이브러리에 대한 메타데이터를 정의하는 데 유용합니다.
라이브러리에 믹신을 통합하는 방법에 대한 자세한 내용은 통합 가이드를 참고하세요.
예:
>>> from huggingface_hub import ModelHubMixin
# Inherit from ModelHubMixin
>>> class MyCustomModel(
... ModelHubMixin,
... library_name="my-library",
... tags=["computer-vision"],
... repo_url="https://github.com/huggingface/my-cool-library",
... paper_url="https://arxiv.org/abs/2304.12244",
... docs_url="https://huggingface.co/docs/my-cool-library",
... # ^ optional metadata to generate model card
... ):
... def __init__(self, size: int = 512, device: str = "cpu"):
... # define how to initialize your model
... super().__init__()
... ...
...
... def _save_pretrained(self, save_directory: Path) -> None:
... # define how to serialize your model
... ...
...
... @classmethod
... def from_pretrained(
... cls: type[T],
... pretrained_model_name_or_path: Union[str, Path],
... *,
... force_download: bool = False,
... token: Optional[Union[str, bool]] = None,
... cache_dir: Optional[Union[str, Path]] = None,
... local_files_only: bool = False,
... revision: Optional[str] = None,
... **model_kwargs,
... ) -> T:
... # define how to deserialize your model
... ...
>>> model = MyCustomModel(size=256, device="gpu")
# Save model weights to local directory
>>> model.save_pretrained("my-awesome-model")
# Push model weights to the Hub
>>> model.push_to_hub("my-awesome-model")
# Download and initialize weights from the Hub
>>> reloaded_model = MyCustomModel.from_pretrained("username/my-awesome-model")
>>> reloaded_model.size
256
# Model card has been correctly populated
>>> from huggingface_hub import ModelCard
>>> card = ModelCard.load("username/my-awesome-model")
>>> card.data.tags
["x-custom-tag", "pytorch_model_hub_mixin", "model_hub_mixin"]
>>> card.data.library_name
"my-library"_save_pretrained
< source >( save_directory: Path )
서브클래스에서 이 메서드를 오버라이드하여 모델을 저장하는 방식을 정의합니다. 상세한 지침은 통합 가이드를 참고하세요.
_from_pretrained
< source >( model_id: strrevision: str | Nonecache_dir: str | pathlib.Path | Noneforce_download: boollocal_files_only: booltoken: str | bool | None**model_kwargs )
매개변수
- model_id (
str) — Huggingface Hub에서 로드할 모델의 ID (예:bigscience/bloom). - revision (
str, 선택 사항) — Hub의 모델 리비전입니다. 브랜치 이름, git 태그 또는 커밋 ID일 수 있습니다. 기본값은main브랜치의 최신 커밋입니다. - force_download (
bool, 선택 사항, 기본값False) — Hub에서 모델 가중치 및 구성 파일을 (재)다운로드를 강제하여 기존 캐시를 무시할지 여부입니다. - token (
str또는bool, 선택 사항) — 원격 파일에 대한 HTTP bearer 인증으로 사용할 토큰입니다. 기본적으로hf auth login실행 시 캐시된 토큰을 사용합니다. - cache_dir (
str,Path, 선택 사항) — 캐시된 파일이 저장되는 폴더의 경로입니다. - local_files_only (
bool, 선택 사항, 기본값False) —True인 경우, 파일을 다운로드하지 않고 로컬 캐시 파일이 존재하면 해당 파일의 경로를 반환합니다. - model_kwargs — _from_pretrained() 메서드에 함께 전달되는 추가 키워드 인자.
이 메서드를 서브클래스에서 재정의하여 사전 학습된 모델에서 모델을 로드하는 방식을 정의하십시오.
모델을 로드하기 전에 Hub에서 파일을 다운로드하려면 hf_hub_download() 또는 snapshot_download()를 사용하세요. 입력으로 받는 대부분의 인수는 이 두 메서드에 직접 전달할 수 있습니다. 필요할 경우 “model_kwargs”를 사용하여 이 메서드에 추가 인수를 전달할 수 있습니다. 예를 들어 PyTorchModelHubMixin._from_pretrained()는 모델이 로드될 장치를 설정하기 위해 map_location 파라미터를 입력으로 받습니다.
자세한 지침은 통합 가이드를 확인하세요.
from_pretrained
< source >( pretrained_model_name_or_path: str | pathlib.Pathforce_download: bool = Falsetoken: str | bool | None = Nonecache_dir: str | pathlib.Path | None = Nonelocal_files_only: bool = Falserevision: str | None = None**model_kwargs )
매개변수
- pretrained_model_name_or_path (
str,Path) —- Hub에 호스팅된 모델의
model_id(문자열), 예:bigscience/bloom. save_pretrained를 사용하여 모델 가중치를 저장한directory의 경로, 예:../path/to/my_model_directory/.
- Hub에 호스팅된 모델의
- revision (
str, 선택 사항) — Hub의 모델 리비전입니다. 브랜치 이름, git 태그 또는 커밋 ID일 수 있습니다. 기본값은main브랜치의 최신 커밋입니다. - force_download (
bool, 선택 사항, 기본값False) — Hub에서 모델 가중치 및 구성 파일을 (재)다운로드를 강제하여 기존 캐시를 무시할지 여부입니다. - token (
str또는bool, 선택 사항) — 원격 파일에 대한 HTTP bearer 인증으로 사용할 토큰입니다. 기본적으로hf auth login실행 시 캐시된 토큰을 사용합니다. - cache_dir (
str,Path, 선택 사항) — 캐시된 파일이 저장되는 폴더의 경로입니다. - local_files_only (
bool, 선택 사항, 기본값False) —True인 경우, 파일을 다운로드하지 않고 로컬 캐시 파일이 존재하면 해당 파일의 경로를 반환합니다. - model_kwargs (
dict, 선택 사항) — 초기화 시 모델에 전달할 추가 kwargs입니다.
Huggingface Hub에서 모델을 다운로드하고 인스턴스를 생성합니다.
push_to_hub
< source >( repo_id: strconfig: dict | huggingface_hub.hub_mixin.DataclassInstance | None = Nonecommit_message: str = 'Push model using huggingface_hub.'private: bool | None = Nonetoken: str | None = Nonebranch: str | None = Nonecreate_pr: bool | None = Noneallow_patterns: list[str] | str | None = Noneignore_patterns: list[str] | str | None = Nonedelete_patterns: list[str] | str | None = Nonemodel_card_kwargs: dict[str, typing.Any] | None = None )
매개변수
- repo_id (
str) — 푸시할 저장소의 ID(예:"username/my-model"). - config (
dict또는DataclassInstance, 선택 사항) — 키/값 사전 또는 dataclass 인스턴스로 지정된 모델 구성입니다. - commit_message (
str, 선택 사항) — 푸시할 때 커밋할 메시지입니다. - private (
bool, 선택 사항) — 생성할 저장소가 비공개여야 하는지 여부입니다.None(기본값)인 경우, 조직의 기본 설정이 비공가가 아니라면 저장소는 공개됩니다. - token (
str, 선택 사항) — 원격 파일에 대한 HTTP bearer 인증으로 사용할 토큰입니다. 기본적으로hf auth login실행 시 캐시된 토큰을 사용합니다. - branch (
str, 선택 사항) — 모델을 푸시할 git branch입니다. 기본값은"main"입니다. - create_pr (
boolean, 선택) — 해당 커밋을 포함하여branch에서 Pull Request를 생성할지 여부입니다. 기본값은False입니다. - allow_patterns (
list[str]또는str, 선택 사항) — 지정된 경우, 하나 이상의 패턴과 일치하는 파일만 push됩니다. - ignore_patterns (
list[str]또는str, 선택 사항) — 제공된 경우, 해당 패턴 중 하나와 일치하는 파일은 push되지 않습니다. - delete_patterns (
list[str]또는str, 선택 사항) — 제공된 경우, 해당 패턴 중 하나와 일치하는 원격 파일이 저장소에서 삭제됩니다. - model_card_kwargs (
dict[str, Any], 선택) — 모델 카드 템플릿에 전달하여 모델 카드를 커스터마이징하기 위한 추가 인자.
모델 체크포인트를 Hub에 업로드합니다.
allow_patterns와 ignore_patterns를 사용하여 허브에 업로드할 파일을 정확하게 필터링합니다. delete_patterns를 사용하여 동일한 커밋에서 기존 원격 파일을 삭제합니다. 자세한 내용은 upload_folder() 참고 문서를 참조하세요.
save_pretrained
< source >( save_directory: str | pathlib.Pathconfig: dict | huggingface_hub.hub_mixin.DataclassInstance | None = Nonerepo_id: str | None = Nonepush_to_hub: bool = Falsemodel_card_kwargs: dict[str, typing.Any] | None = None**push_to_hub_kwargs ) → str or None
매개변수
- save_directory (
str또는Path) — 모델 가중치와 구성이 저장될 디렉터리의 경로입니다. - config (
dict또는DataclassInstance, 선택 사항) — 키/값 사전 또는 dataclass 인스턴스로 지정된 모델 구성입니다. - push_to_hub (
bool, 선택 사항, 기본값False) — 모델을 저장한 후 Huggingface Hub에 푸시할지 여부. - repo_id (
str, 선택 사항) — Hub의 저장소 ID입니다.push_to_hub=True인 경우에만 사용됩니다. 값을 제공하지 않으면 폴더 이름이 기본값으로 사용됩니다. - model_card_kwargs (
dict[str, Any], 선택) — 모델 카드 템플릿에 전달하여 모델 카드를 커스터마이징하기 위한 추가 인자. - push_to_hub_kwargs — push_to_hub() 메서드에 함께 전달되는 추가 키워드 인자.
반환값
str 또는 None
push_to_hub=True인 경우 Hub의 커밋 URL, 그렇지 않으면 None
Save weights in local directory.
PyTorch
PyTorch 모델에 모델 Hub 업로드/다운로드 기능을 제공하기 위한 ModelHubMixin 구현입니다. 모델은 기본적으로 model.eval()을 사용하여 평가 모드로 설정됩니다(드롭아웃 모듈은 비활성화됨). 모델을 학습하려면 먼저 model.train()을 사용하여 학습 모드로 되돌려야 합니다.
믹신을 사용하는 방법에 대한 자세한 내용은 ModelHubMixin을 참조하세요.
예:
>>> import torch
>>> import torch.nn as nn
>>> from huggingface_hub import PyTorchModelHubMixin
>>> class MyModel(
... nn.Module,
... PyTorchModelHubMixin,
... library_name="keras-nlp",
... repo_url="https://github.com/keras-team/keras-nlp",
... paper_url="https://arxiv.org/abs/2304.12244",
... docs_url="https://keras.io/keras_nlp/",
... # ^ optional metadata to generate model card
... ):
... def __init__(self, hidden_size: int = 512, vocab_size: int = 30000, output_size: int = 4):
... super().__init__()
... self.param = nn.Parameter(torch.rand(hidden_size, vocab_size))
... self.linear = nn.Linear(output_size, vocab_size)
... def forward(self, x):
... return self.linear(x + self.param)
>>> model = MyModel(hidden_size=256)
# Save model weights to local directory
>>> model.save_pretrained("my-awesome-model")
# Push model weights to the Hub
>>> model.push_to_hub("my-awesome-model")
# Download and initialize weights from the Hub
>>> model = MyModel.from_pretrained("username/my-awesome-model")
>>> model.hidden_size
256Fastai
huggingface_hub.from_pretrained_fastai
< source >( repo_id: strrevision: str | None = None )
매개변수
- repo_id (
str) — pickled fastai.Learner의 위치입니다. 다음 두 가지 중 하나일 수 있습니다:- Hugging Face Hub에 호스팅됩니다. 예: ‘espejelomar/fatai-pet-breeds-classification’ 또는 ‘distilgpt2’.
repo_id끝에@를 추가하여revision을 지정할 수 있습니다. 예:dbmdz/bert-base-german-cased@main. Revision은 사용할 특정 모델 버전입니다. Hugging Face Hub에서 모델 및 기타 아티팩트를 저장하기 위해 git 기반 시스템을 사용하므로, branch 이름, tag 이름 또는 commit id일 수 있습니다. - 로컬에 호스팅됩니다.
repo_id는 pickle 파일과fastai.Learner를 빌드할 때 사용된 fastai 및 fastcore 버전을 나타내는 pyproject.toml 파일을 포함하는 디렉터리입니다. 예:./my_model_directory/.
- Hugging Face Hub에 호스팅됩니다. 예: ‘espejelomar/fatai-pet-breeds-classification’ 또는 ‘distilgpt2’.
- revision (
str, 선택 사항) — 리포지토리의 파일이 다운로드되는 리비전입니다.snapshot_download의 문서를 참조하세요.
Hub 또는 로컬 디렉터리에서 사전 학습된 fastai 모델을 로드합니다.
huggingface_hub.push_to_hub_fastai
< source >( learnerrepo_id: strcommit_message: str = 'Push FastAI model using huggingface_hub.'private: bool | None = Nonetoken: str | None = Noneconfig: dict | None = Nonebranch: str | None = Nonecreate_pr: bool | None = Noneallow_patterns: list[str] | str | None = Noneignore_patterns: list[str] | str | None = Nonedelete_patterns: list[str] | str | None = Noneapi_endpoint: str | None = None )
매개변수
- learner (Learner) — Hub에 업로드하려는 *fastai.Learner’입니다.
- repo_id (str) — Hub에서 모델의 저장소 ID로, “namespace/repo_name” 형식입니다. namespace는 개인 계정 또는 쓰기 권한이 있는 조직일 수 있습니다(예: ‘stanfordnlp/stanza-de’).
- commit_message (str`, 선택 사항) — push할 때 사용할 커밋 메시지. 기본값은
"add model"입니다. - private (bool, 선택 사항) — 생성할 저장소가 비공개여야 하는지 여부입니다. None(기본값)인 경우, 조직의 기본 설정이 비공개가 아닌 한 기본적으로 공개로 설정됩니다.
- token (str, 선택 사항) —
원격 파일에 대한 HTTP bearer 인증으로 사용할 Hugging Face 계정 토큰입니다.
None인 경우 프롬프트를 통해 토큰을 입력하도록 요청합니다. - config (dict, 선택 사항) — 모델 가중치와 함께 저장할 구성 객체.
- branch (str, 선택 사항) — 모델을 push할 git branch입니다. 기본값은 저장소에서 지정된 기본 branch이며, 이는 기본적으로 “main”입니다.
- create_pr (boolean, 선택) — 해당 커밋을 포함하여 branch에서 Pull Request를 생성할지 여부입니다. 기본값은 False입니다.
- api_endpoint (str, 선택 사항) — 모델을 허브에 푸시할 때 사용할 API 엔드포인트입니다.
- allow_patterns (list[str] 또는 str, 선택 사항) — 지정한 경우, 하나 이상의 패턴과 일치하는 파일만 push됩니다.
- ignore_patterns (list[str] 또는 str, 선택 사항) — 지정된 경우, 해당 패턴과 일치하는 파일은 push되지 않습니다.
- delete_patterns (list[str] 또는 str, 선택 사항) — 제공된 경우, 해당 패턴 중 하나와 일치하는 원격 파일이 저장소에서 삭제됩니다.
Hub에 학습자 체크포인트 파일을 업로드합니다.
허브에 업로드할 파일을 정확하게 필터링하려면 allow_patterns와 ignore_patterns를 사용하세요. 동일한 커밋에서 기존 원격 파일을 삭제하려면 delete_patterns를 사용하세요. 자세한 내용은 [upload_folder] 참고 문서를 참조하세요.
다음 오류를 발생시킵니다:
- 사용자가 Hugging Face Hub에 로그인하지 않은 경우 ValueError가 발생합니다.