mirror of
https://github.com/deepseek-ai/DeepSeek-Prover-V1.5.git
synced 2026-11-05 00:57:20 +00:00
[PR #25] Restrict each GeneratorProcess to a single visible GPU #17
Labels
No labels
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
deepseek-ai/DeepSeek-Prover-V1.5#17
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
📋 Pull Request Information
Original PR: https://github.com/deepseek-ai/DeepSeek-Prover-V1.5/pull/25
Author: @karandhaodiyal28-hash
Created: 8/9/2026
Status: 🔄 Open
Base:
main← Head:fix/multi-gpu-device-placement📝 Commits (1)
d2ccb18Restrict each GeneratorProcess to a single visible GPU📊 Changes
1 file changed (+7 additions, -0 deletions)
View changed files
📝
prover/workers/generator.py(+7 -0)📄 Description
What does this PR do?
Fixes #47612
Loading
google/siglip2-base-patch16-naflexwarns thatbos_token_id=49406/eos_token_id=49407are "not within the vocabulary (between 0 and 31999)" even though the checkpoint's real vocab is 256000. The warning comes from throwaway default config instances built internally (e.g. byto_diff_dict), which@strictvalidation inspects — and the class defaults ofSiglipTextConfigare indeed invalid: 49406/49407 are CLIP leftovers, while no SigLIP checkpoint uses a BOS token and EOS resolves to id 1 in the reference tokenizers.This directly follows the maintainer feedback from the review of #47613, where @zucchini-nlp and @vasqu ruled out changing logging verbosity and preferred correcting the wrong defaults instead. Concretely, this PR:
bos_token_id=Noneandeos_token_id=1inSiglipTextConfigconfiguration_siglip2.pysoSiglip2TextConfigpicks up the same defaults via modularAimv2TextConfig.eos_token_idexplicitly at49407(AIMv2 uses the CLIP tokenizer,vocab_size=49408, where that value is correct — it previously inherited it silently fromSiglipTextConfig)to_diff_dictWhere
eos_token_id=1andbos_token_id=Nonecome fromRead off the tokenizer files of the reference checkpoints on the Hub:
google/siglip-base-patch16-224/tokenizer_config.json:added_tokens_decodermaps id1to</s>, with"eos_token": "</s>"and"pad_token": "</s>"— there is no BOS token at all. Note pad and EOS sharing id 1 is the reference tokenizer's own behavior (it pads with</s>), which is also why the existingpad_token_id=1default stays untouched; this PR doesn't introduce the pad == eos overlap, it matches it.google/siglip2-base-patch16-naflex/tokenizer_config.json(Gemma tokenizer):added_tokens_decodermaps id1to<eos>(<pad>is 0,<bos>is 2), with"add_bos_token": false, "add_eos_token": true— so EOS is id 1 here as well, and BOS is never added.Nothing in
modeling_siglip*.pyreads these config fields, and thegoogle/siglip*checkpoints on the Hub don't store them, so no stored checkpoint value is overridden. The other models inheriting fromSiglipTextConfig(aimv2, videoprism, tipsv2) either override the defaults themselves or, in the case of aimv2'seos_token_id, are now pinned explicitly to their previous value.Verified locally (CPU):
vocab_size=256000,bos=None,eos=1pytest tests/models/siglip tests/models/siglip2— 772 passedutils/check_modular_conversion.pyon siglip2, aimv2, videoprism, tipsv2 — cleanutils/check_config_attributes.py— cleanruff check/ruff format --checkon the touched files — cleanWho can review?
@zucchini-nlp @vasqu (per the discussion in #47613)
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.