The `huggingface_hub` version v0.0.16 introduces several quality of life improvements.
Progress bars in `Repository`
Progress bars are now visible with many git operations, such as pulling, cloning and pushing:
python
>>> from huggingface_hub import Repository
>>> repo = Repository("local_folder", clone_from="huggingface/CodeBERTa-small-v1")
Cloning https://huggingface.co/huggingface/CodeBERTa-small-v1 into local empty directory.
Download file pytorch_model.bin: 45%|████████████████████████████▋ | 144M/321M [00:13<00:12, 14.7MB/s]
Download file flax_model.msgpack: 42%|██████████████████████████▌ | 134M/319M [00:13<00:13, 14.4MB/s]
Branching support
There is now branching support in `Repository`. This will clone the `xxx` repository and checkout the `new-branch` revision. If it is an existing branch on the remote, it will checkout that branch. If it is another revision, such as a commit or a tag, it will also checkout that revision.
If the revision does not exist, it will create a branch from the latest commit on the `main` branch.
py
>>> from huggingface_hub import Repository
>>> repo = Repository("local", clone_from="xxx", revision="new-branch")
Once the repository is instantiated, it is possible to manually checkout revisions using the `git_checkout` method. If the revision already exists:
>>> repo.git_checkout("main")
If a branch should be created from the current head in the case that it does not exist:
py
>>> repo.git_checkout("brand-new-branch", create_branch_ok=True)
Revision `brand-new-branch` does not exist. Created and checked out branch `brand-new-branch`
Finally, the `commit` context manager has a new `branch` parameter to specify to which branch the utility should push:
py
>>> with repo.commit("New commit on branch brand-new-branch", branch="brand-new-branch"):
... Save any file or model here, it will be committed to that branch.
... torch.save(model.state_dict())
Git credentials
The login system has been redesigned to leverage `git-credential` instead of a token-based authentication system. It leverages the `git-credential store` helper. If you're unaware of what this is, you may see the following when logging in with `huggingface_hub`:
_| _| _| _| _|_|_| _|_|_| _|_|_| _| _| _|_|_| _|_|_|_| _|_| _|_|_| _|_|_|_|
_| _| _| _| _| _| _| _|_| _| _| _| _| _| _| _|
_|_|_|_| _| _| _| _|_| _| _|_| _| _| _| _| _| _|_| _|_|_| _|_|_|_| _| _|_|_|
_| _| _| _| _| _| _| _| _| _| _|_| _| _| _| _| _| _| _|
_| _| _|_| _|_|_| _|_|_| _|_|_| _| _| _|_|_| _| _| _| _|_|_| _|_|_|_|
Username:
Password:
Login successful
Your token has been saved to /root/.huggingface/token
Authenticated through git-crendential store but this isn't the helper defined on your machine.
You will have to re-authenticate when pushing to the Hugging Face Hub. Run the following command in your terminal to set it as the default
git config --global credential.helper store
Running the command `git config --global credential.helper store` will set this as the default way to handle credentials for git authentication. All repositories instantiated with the `Repository` utility will have this helper set by default, so no action is required from your part when leveraging it.
Improved logging
The logging system is now similar to the existing logging system in `transformers` and `datasets`, based on a `logging` module that controls the entire library's logging level:
py
>>> from huggingface_hub import logging
>>> logging.set_verbosity_error()
>>> logging.set_verbosity_info()
Bug fixes and improvements
- Add documentation to GitHub and the Hub docs about the Inference client wrapper 253 (osanseviero)
- Have large files enabled by default when using `Repository` 219 (LysandreJik)
- Clarify/specify/document model card metadata, `model-index`, and pipeline/task types 265 (julien-c)
- [model_card][metadata] Actually, lets make dataset.name required 267 (julien-c)
- Progress bars 261 (LysandreJik)
- Add keras mixin 230 (nateraw)
- Open source code related to the repo type (tag icon, display order, snippets) 273 (osanseviero)
- Branch push to hub 276 (LysandreJik)
- Git credentials 277 (LysandreJik)
- Push to hub/commit with branches 282 (LysandreJik)
- Better logging 262 (LysandreJik)
- Remove custom language pack behavior 291 (LysandreJik)
- Update Hub and huggingface_hub docs 293 (osanseviero)
- Adding a handler 292 (LysandreJik)