Skip to content

[staging CI] unslothai/unsloth#8435 - #263

Open
danielhanchen wants to merge 27 commits into
mainfrom
pr-8435-xplat-ci
Open

[staging CI] unslothai/unsloth#8435#263
danielhanchen wants to merge 27 commits into
mainfrom
pr-8435-xplat-ci

Conversation

@danielhanchen

Copy link
Copy Markdown
Collaborator

Disposable CI run for unslothai/unsloth#8435. Do not merge; closed after CI.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 04ff59d2a0

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +11265 to +11267
_foot_wo = (_base_wo + _shared) / (1024 * 1024)
if _foot_wo > _budget_wo:
continue

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Apply per-device reserves before dropping the drafter

On a heterogeneous or partially busy multi-GPU subset, the pooled footprint can pass here even though the least-available GPU cannot hold its replicated pipeline and compute-buffer reserve. The actual Auto placement below handles that case with _every_gpu_holds_reserve and may cap the context via _cap_ctx_to_per_device_reserve, but this probe immediately treats the uncapped context as a valid target-only placement. It can therefore conclude that the drafter does not fit and disable it even though the drafter would fit at the context the real placement selects; with an explicit context, the target may instead fall back to --fit on, contradicting the premise that it pins. Mirror the placement branch's per-device check and context cap before setting _target_fits_somewhere or comparing the drafter footprint.

Useful? React with 👍 / 👎.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 18ecab6753

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +11330 to +11333
_probe_ranked = sorted(
gpus,
key = lambda g: _gpu_usable(g, _probe_frac(False)),
reverse = True,

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Rank probe subsets with the active drafter reserve

When GPUs have different total capacities or existing allocations and the flat MTP reserve applies, lowering the usable fraction for the drafter can reorder the devices. This probe ranks with _probe_frac(False), while the actual Auto placement later ranks with _pin_fraction, which includes the drafter reserve. A large, partly busy card can therefore lead the probe but contribute less than the extra pipeline overhead under the drafter budget, causing every probed prefix to fail even though the actual drafter-ranked leading GPU can hold both; Auto then incorrectly sets drafter_no_vram and disables the drafter. Rank the both-fit candidates using the same active fraction as the real placement, or evaluate both rankings.

Useful? React with 👍 / 👎.

danielhanchen and others added 19 commits August 11, 2026 19:13
- --model-draft naming a path that is not on disk is no longer priced as a
  Hugging Face repo, so a typo cannot 409 a chat load over a 12 GiB reserve.
- A drafter listing that carries no sizes falls through to the cache and then
  the reserve; zero is kept for the case where every family is an incomplete
  split and the fetch can load none of them.
- Auto DFlash is not charged when the extras already name their own drafter.
- An MLA embedded-MTP model keeps mla_mtp_disabled as its fallback reason, so
  the notice does not invite the user to force a path that is slower than the
  ngram-mod they are getting.
- Draft flags are last-wins, so a repo id followed by --model-draft leaves a
  path as the drafter. _extra_args_mtp_draft_source now returns the value and
  whether the flag that won carried a repo id, so a path is never priced as a
  Hugging Face repository.
- split_listing_is_complete tracks distinct shard indices inside 1..total
  rather than counting matches, so 00001-of-00002 beside a stray 00003-of-00002
  is no longer read as a whole set.
_cached_repo_gguf_bytes scanned huggingface_hub's import-time default, so a
user who moved the cache had their cached drafter missed and priced at the
flat reserve instead. Pass the active hub cache, as the rest of Studio's cache
operations do. Also covers the underscore flag spelling llama.cpp accepts.
The reserve constant carried two overlapping headers, the extras-drafter note
still described the local-file-only rule that was reverted once remote repos
could be priced, and the zero-bound note no longer matched the code.
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.

1 participant