feat: make model age admission-only
This commit is contained in:
57
README.md
57
README.md
@@ -62,8 +62,7 @@ Optional tuning:
|
||||
- `MODELHUB_ARCHITECTURE_COMMUNITY_LATEST_LIMIT` default `5000`
|
||||
- `MODELHUB_ARCHITECTURE_BOOTSTRAP_WORKERS` default `8`
|
||||
- `MODELHUB_ARCHITECTURE_BOOTSTRAP_MAX_LOGS` default `0` (unlimited)
|
||||
- `MODELHUB_RECENT_MODEL_RESERVE_SLOTS` default `10` per account
|
||||
- `MODELHUB_DYNAMIC_OLD_MODEL_CLEANUP_RESERVE_SLOTS` default `5` per account
|
||||
- `MODELHUB_RECENT_MODEL_RESERVE_SLOTS` default `5` per account
|
||||
- `MODELHUB_RECENT_MODEL_DAYS` default `7`
|
||||
|
||||
## Adaptive GPU Strategy
|
||||
@@ -171,37 +170,45 @@ same model or infer failure from historical similarity. The cleanup repeats
|
||||
every 120 poll cycles by default and writes its full evidence report to
|
||||
`.modelhub_state/queue_cleanup_latest.json`.
|
||||
|
||||
Architecture cleanup joins each active task to the locally recorded submission
|
||||
or ledger entry to recover its exact framework and task type, then reads the
|
||||
model's `config.json`. Only an exact GPU + framework + task type + architecture
|
||||
blacklist hit can authorize cancellation. Matching waiting tasks are stopped;
|
||||
Architecture cleanup reads the live queue task level and joins local submission
|
||||
or ledger metadata when available, then reads the model's `config.json`. An
|
||||
exact GPU + framework + task type + architecture blacklist hit can authorize
|
||||
cancellation. For legacy waiting tasks whose framework is absent from the API
|
||||
and local state, every currently listed framework must have an explicit matching
|
||||
block; a partial match is never enough. Matching waiting tasks are stopped;
|
||||
running tasks remain protected and their state is rechecked again immediately
|
||||
before the stop call. Failed outcomes are synchronized every three poll cycles.
|
||||
When fixed `MODEL_NOT_SUPPORTED` text adds a new blacklist entry, a lightweight
|
||||
architecture-only cleanup runs immediately without repeating repository-size or
|
||||
model-age scans.
|
||||
|
||||
Each account dynamically reserves its last 10 known-capacity positions for
|
||||
Each account dynamically reserves its last 5 known-capacity positions for
|
||||
models updated within seven days. If an account's discovered limit is 100, 200,
|
||||
or 500, older models stop at positions 90, 190, or 490 respectively. Old-model
|
||||
or 500, older models stop at positions 95, 195, or 495 respectively. Old-model
|
||||
reservations are made under the same account lock as capacity reservations, so
|
||||
concurrent submissions cannot enter the reserved suffix. Once every account's
|
||||
old-model allowance is exhausted, discovery is capped at the seven-day window.
|
||||
Unknown model timestamps are treated as old for new submissions. When capacity
|
||||
probing raises an account's known limit, its old-model boundary moves with it.
|
||||
If an account's active-count read fails, old-model admission is fail-closed for
|
||||
that account while other accounts remain eligible. Date-deferred candidates are
|
||||
recorded as `age_policy_skipped`, release their temporary claim, and do not enter
|
||||
failure statistics or permanent exclusions.
|
||||
|
||||
On startup, the worker first stops deterministic OOM tasks, recalculates each
|
||||
account's surviving task order by numeric task ID, and removes
|
||||
older-than-seven-days tasks beyond that account's current limit minus 10. Later
|
||||
scheduled cleanup uses limit minus 5, retaining a small hysteresis buffer that
|
||||
avoids repeatedly over-pruning valid work. For a 100-task account the two
|
||||
boundaries are 90 and 95; for a 500-task account they are 490 and 495. Recent
|
||||
overflow tasks are always kept. Age-based cleanup applies only to tasks that are
|
||||
still waiting; running validation tasks are protected even beyond the boundary.
|
||||
ModelScope metadata failures fail closed and never trigger cancellation.
|
||||
Immediately before the age-only stop batch, task ownership, active status, and
|
||||
post-OOM queue position are checked again. Deterministic OOM cleanup may still
|
||||
stop a running task because it cannot fit the selected GPU.
|
||||
Model age is admission-only. Startup and scheduled queue cleanup never cancel a
|
||||
task because it is older than seven days, beyond a capacity-minus-five boundary,
|
||||
or above a temporarily reduced platform limit. Existing waiting and running
|
||||
tasks remain untouched by date policy. Cleanup still removes deterministic OOM
|
||||
tasks and exact learned architecture incompatibilities under their existing
|
||||
state and evidence checks, preventing the old submit/cleanup/resubmit loop.
|
||||
|
||||
A full 12-account failure audit found that 31.25% of failures had no usable log
|
||||
and another 23.52% had only ambiguous runtime evidence. These unresolved results
|
||||
now remain visible as `unresolvedFailureCount` but do not reduce GPU/framework
|
||||
decision success rates, create model/GPU cooldowns, or open attributable-failure
|
||||
circuits. Explicit OOM, repository, context, tokenizer, model-load, operator, and
|
||||
framework-architecture evidence remains attributable; identified platform
|
||||
failures continue to use short infrastructure circuits instead.
|
||||
|
||||
The verified capacities, safe repository-size boundaries, evidence hierarchy,
|
||||
and source links are recorded in
|
||||
@@ -311,12 +318,18 @@ Version `2026.08.12.5` enriches every cleanup from the live active queue's task
|
||||
level metadata. If a legacy waiting task has no recoverable framework, cleanup
|
||||
queries the current ModelHub framework catalog and cancels it only when its
|
||||
architecture is explicitly blocked on every listed framework.
|
||||
Version `2026.08.12.6` makes model age admission-only: each account reserves its
|
||||
last five dynamic-capacity positions for seven-day models, unknown account
|
||||
counts fail closed for older candidates, and no startup or periodic cleanup can
|
||||
cancel a task by date. It also keeps unclassified/ambiguous historical failures
|
||||
neutral in GPU/framework success feedback while preserving deterministic OOM
|
||||
and architecture cleanup.
|
||||
|
||||
## Deploy
|
||||
|
||||
Create a tag and submit the repository URL plus tag in "我的适配智能体".
|
||||
|
||||
```bash
|
||||
git tag agent-v23
|
||||
git push origin agent-v23
|
||||
git tag agent-v24
|
||||
git push origin agent-v24
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user