LocalBackend fork_checkpoint doesn't update vLLM's initial LoRA
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 55/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Tranquilla
- Stack tecnologico
- python
- Ambito
- backend, machine-learning
Direzione di ricerca
Inizia da LocalBackend._experimental_fork_checkpoint e traccia come model.register crea checkpoints/0000 e come PipelineTrainer configura lora_modules di vLLM all'avvio. Determina se il fork debba sostituire 0000 o aggiornare lo stato dello step caricato. Il lavoro è completato quando un modello LocalBackend sottoposto a fork avvia vLLM con i pesi LoRA del fork senza il workaround della copia manuale.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Problem
When using LocalBackend._experimental_fork_checkpoint with PipelineTrainer, the forked LoRA weights are not loaded by the vLLM inference server at startup.
Root cause: model.register(backend) creates an empty LoRA checkpoint at checkpoints/0000. Then _experimental_fork_checkpoint copies the source checkpoint to checkpoints/{source_step} (e.g. 0686). But when vLLM starts, it loads the adapter at @0 — which is the empty 0000 checkpoint, not the forked one.
Sequence:
model.register(backend)→ createscheckpoints/0000/(empty LoRA)backend._experimental_fork_checkpoint(model, from_model="kl-000-1")→ createscheckpoints/0686/(real weights)- vLLM starts with
lora_modules=[LoRAModulePath(name='model@0', path='checkpoints/0000')] - Training begins from an empty adapter instead of the forked checkpoint
Verification:
$ md5sum checkpoints/0000/adapter_model.safetensors checkpoints/0686/adapter_model.safetensors
3fb4a12a... checkpoints/0000/adapter_model.safetensors # empty
98dd58ba... checkpoints/0686/adapter_model.safetensors # forked
Current workaround
After calling _experimental_fork_checkpoint, copy the forked checkpoint files over 0000:
await backend._experimental_fork_checkpoint(model, from_model=src, ...)
# Overwrite empty 0000 with forked weights
step0_dir = art_path / project / "models" / model.name / "checkpoints" / "0000"
forked_dir = art_path / project / "models" / model.name / "checkpoints" / f"{fork_step:04d}"
for f in forked_dir.iterdir():
shutil.copy2(f, step0_dir / f.name)
Suggested fix
_experimental_fork_checkpoint on LocalBackend should either:
- Copy the forked checkpoint to
0000(overwriting the empty one), or - Update the model's state so vLLM knows to load the forked step instead of
@0
This issue is specific to LocalBackend — ServerlessBackend handles fork differently (uploads as W&B artifact with the correct step alias).
- Lingua principale
- Python
- Stelle
- 10.8k
- Fork
- 989
- Merge medio
- 11h 38m
- PR unite (30g)
- 104
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di OpenPipe/ART
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 54/100
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 10/100
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 42/100
Tutte le issue di OpenPipe/ART
Issue simili
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 75/100
-
hcocena Apertapolicies-accepted pre-review precheck-passed
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
Bioconductor/BiocContributions#214 · 5 commenti ·
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 92/100
TencentCloud/Octop#1169 · 1 commento ·
-
[开源推荐] 在老板拷问你之前,先让 AI 灵魂拷问你 Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
521xueweihan/HelloGitHub#3778 ·
-
The version checker's trailing attribute region has no control for a less-than inside a quoted value Apertaarea: dashboard area: tests bug perceived difficulty: 2 python
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
Nitjsefnie-Harness-Commons/daedalus#1105 · 1 commento ·