Skip to content

[Download] Smart downloading - #512

Merged
patrickvonplaten merged 7 commits into
mainfrom
smart_caching
Sep 16, 2022
Merged

[Download] Smart downloading#512
patrickvonplaten merged 7 commits into
mainfrom
smart_caching

Conversation

@patrickvonplaten

@patrickvonplaten patrickvonplaten commented Sep 14, 2022

Copy link
Copy Markdown
Contributor

Improved snapshot downloading for diffusers

It might happen more and more that a repo folder on the Hub contains more that the necessary diffusion model files.
E.g. Our pipelines should not load CompVis weights in a repo that has both CompVis weights and diffusers weights, but that would currently be the case which means that bandwidth and local storage is wasted.

This PR makes sure via an allow_patterns that only the relevant files are actually downloaded.

馃毃馃毃馃毃 Please make sure to update huggingface_hub to 0.9.1 馃毃馃毃馃毃
See: #538

@HuggingFaceDocBuilderDev

HuggingFaceDocBuilderDev commented Sep 14, 2022

Copy link
Copy Markdown

The documentation is not available anymore as the PR was closed or merged.

@patrickvonplaten patrickvonplaten changed the title [Download] Smart downloading [WIP][Download] Smart downloading Sep 14, 2022
@patrickvonplaten patrickvonplaten changed the title [WIP][Download] Smart downloading [Download] Smart downloading Sep 14, 2022
Comment thread src/diffusers/pipeline_utils.py Outdated

@patil-suraj patil-suraj left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Very cool, lgtm!

Comment thread tests/test_pipelines.py
Comment on lines +716 to +734
model_id = "hf-internal-testing/unet-pipeline-dummy"
with tempfile.TemporaryDirectory() as tmpdirname:
_ = DiffusionPipeline.from_pretrained(model_id, cache_dir=tmpdirname, force_download=True)
local_repo_name = "--".join(["models"] + model_id.split("/"))
snapshot_dir = os.path.join(tmpdirname, local_repo_name, "snapshots")
snapshot_dir = os.path.join(snapshot_dir, os.listdir(snapshot_dir)[0])

# inspect all downloaded files to make sure that everything is included
assert os.path.isfile(os.path.join(snapshot_dir, DiffusionPipeline.config_name))
assert os.path.isfile(os.path.join(snapshot_dir, CONFIG_NAME))
assert os.path.isfile(os.path.join(snapshot_dir, SCHEDULER_CONFIG_NAME))
assert os.path.isfile(os.path.join(snapshot_dir, WEIGHTS_NAME))
assert os.path.isfile(os.path.join(snapshot_dir, "scheduler", SCHEDULER_CONFIG_NAME))
assert os.path.isfile(os.path.join(snapshot_dir, "unet", WEIGHTS_NAME))
assert os.path.isfile(os.path.join(snapshot_dir, "unet", WEIGHTS_NAME))
# let's make sure the super large numpy file:
# https://huggingface.co/hf-internal-testing/unet-pipeline-dummy/blob/main/big_array.npy
# is not downloaded, but all the expected ones
assert not os.path.isfile(os.path.join(snapshot_dir, "big_array.npy"))

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

great test

@pcuenca pcuenca left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks great!

@anton-l anton-l left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great workaround!

@patrickvonplaten
patrickvonplaten merged commit e5902ed into main Sep 16, 2022
@patrickvonplaten
patrickvonplaten deleted the smart_caching branch September 16, 2022 17:32
PhaneeshB added a commit to nod-ai/diffusers that referenced this pull request Mar 1, 2023
yoonseokjin pushed a commit to yoonseokjin/diffusers that referenced this pull request Dec 25, 2023
* [Download] Smart downloading

* add test

* finish test

* update

* make style
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants