Skip to content

fix: avoid re-downloading models already present in local store#641

Open
Pnkcaht wants to merge 2 commits intodocker:mainfrom
Pnkcaht:fix-model-redownload
Open

fix: avoid re-downloading models already present in local store#641
Pnkcaht wants to merge 2 commits intodocker:mainfrom
Pnkcaht:fix-model-redownload

Conversation

@Pnkcaht
Copy link
Contributor

@Pnkcaht Pnkcaht commented Feb 5, 2026

What I did

  • Stop re-downloading models already present in the local store by resolving cache via normalized model references.

Related issue

Diagram

flowchart LR
    A[docker model run] --> B[normalize model ref]
    B --> C{model in local store?}
    C -->|yes| D[use cached model]
    C -->|no| E[pull from registry]
Loading

Signed-off-by: pnkcaht <samzoovsk19@gmail.com>
@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello @Pnkcaht, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request introduces a significant optimization to the model pulling process. By first checking the local store for existing models using their normalized references, the system can now efficiently bypass unnecessary network requests and re-downloads. This enhancement improves performance and reduces bandwidth consumption when a model is already available locally, streamlining the overall model management workflow.

Highlights

  • Local Model Caching: Implemented a fast-path check in the model pulling logic to prevent re-downloading models that are already present in the local store. This check resolves the cache using normalized model references.

🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

Changelog
  • pkg/distribution/distribution/client.go
    • Added a new code block within the PullModel function to perform a local cache lookup before attempting to pull from a remote registry.
    • If a model is found in the local store, the system now logs its usage and returns early, effectively preventing redundant network operations.
    • Incorporated error handling for retrieving the cached model's configuration and included progress reporting to indicate the use of a cached model.
Activity
  • No specific review comments or activities have been provided in the context.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Contributor

@sourcery-ai sourcery-ai bot left a comment

Choose a reason for hiding this comment

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

Hey - I've left some high level feedback:

  • If localModel.Config() fails, the current behavior aborts the pull entirely, whereas previously it would have proceeded to download; consider logging the error and falling back to the normal pull path instead of returning an error so a corrupt cache does not block retrieval.
  • The progress message Using cached model: %s currently uses cfg.GetSize() as the interpolated value; consider including the normalized reference (and optionally the size) instead so the message clearly identifies which cached model is being used.
Prompt for AI Agents
Please address the comments from this code review:

## Overall Comments
- If `localModel.Config()` fails, the current behavior aborts the pull entirely, whereas previously it would have proceeded to download; consider logging the error and falling back to the normal pull path instead of returning an error so a corrupt cache does not block retrieval.
- The progress message `Using cached model: %s` currently uses `cfg.GetSize()` as the interpolated value; consider including the normalized reference (and optionally the size) instead so the message clearly identifies which cached model is being used.

Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

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

Code Review

The pull request introduces a performance optimization to avoid re-downloading models that are already present in the local cache. This is done by adding a fast-path check in PullModel. While this is a good optimization, the current implementation has a critical flaw: it prevents updates for models referenced by mutable tags (like :latest). If a model exists locally, it will be used without checking the registry for a newer version. This can lead to silently using stale models. My review includes a suggestion to limit this optimization to immutable, digest-based references to fix this issue while still gaining the performance benefit for applicable cases.

Signed-off-by: pnkcaht <samzoovsk19@gmail.com>
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.

Models appear in docker model list, but docker model run re-downloads

1 participant