new tasks, model pricing, auto quantisation, etc...
This commit is contained in:
@@ -12,7 +12,7 @@
|
||||
"recommended": true,
|
||||
"deployment_status": "recommended",
|
||||
"hf_aliases": [],
|
||||
"hf_verified_match_note": "Pending human curation (issue 23) — no HF inference-marketplace listing has been confirmed as a comparable params/quantization match for this preset yet. Leave empty until a human signs off; an empty hf_aliases list keeps this model on the static default price.",
|
||||
"hf_verified_match_note": "Pending human curation (issue 23) \u2014 no HF inference-marketplace listing has been confirmed as a comparable params/quantization match for this preset yet. Leave empty until a human signs off; an empty hf_aliases list keeps this model on the static default price.",
|
||||
"required_model_bytes": 638876385280,
|
||||
"download_size_bytes": 638876385280,
|
||||
"native_quantization": "int4",
|
||||
@@ -38,6 +38,41 @@
|
||||
"KTransformers"
|
||||
]
|
||||
}
|
||||
},
|
||||
"qwen3.6-35b-a3b": {
|
||||
"layers_start": 0,
|
||||
"layers_end": 39,
|
||||
"hf_repo": "unsloth/Qwen3.6-35B-A3B",
|
||||
"aliases": [
|
||||
"qwen3.6-35b-a3b",
|
||||
"Qwen3.6-35B-A3B",
|
||||
"unsloth/Qwen3.6-35B-A3B",
|
||||
"Qwen/Qwen3.6-35B-A3B"
|
||||
],
|
||||
"recommended": true,
|
||||
"deployment_status": "recommended",
|
||||
"price_per_1k_tokens": 0.00044,
|
||||
"hf_aliases": [
|
||||
"qwen/qwen3.6-35b-a3b"
|
||||
],
|
||||
"hf_verified_match_note": "Verified 2026-07-06: unsloth/Qwen3.6-35B-A3B is a bf16 mirror of Qwen/Qwen3.6-35B-A3B; deepinfra and featherless-ai serve the official weights on the HF inference marketplace, so their rates are a fair comparable. Static price 0.00044 = 80% of deepinfra's blended $0.55/1M ($0.15 in / $0.95 out); the nightly refresher keeps it tracking.",
|
||||
"required_model_bytes": 71903776776,
|
||||
"download_size_bytes": 71903776776,
|
||||
"native_quantization": "bfloat16",
|
||||
"canonical_audit_dtype": "bfloat16",
|
||||
"canonical_audit_quantization": "bfloat16",
|
||||
"bytes_per_layer": {
|
||||
"bfloat16": 1797594419
|
||||
},
|
||||
"metadata": {
|
||||
"architecture": "Mixture-of-Experts (MoE, hybrid linear attention)",
|
||||
"total_parameters": "35B",
|
||||
"activated_parameters": "3B",
|
||||
"num_layers": 40,
|
||||
"context_length": 262144,
|
||||
"native_quantization": "bfloat16",
|
||||
"download_size_gb": 72
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -46,6 +46,24 @@ from .gossip import NodeGossip
|
||||
from .raft import RaftNode
|
||||
|
||||
|
||||
def _preset_price_keys(name: str, preset: dict) -> set[str]:
|
||||
"""All model strings a client may bill under for one preset.
|
||||
|
||||
``BillingLedger.price_for`` is keyed by the raw ``model`` string in the
|
||||
request, so the preset price must be registered under the preset name,
|
||||
its ``hf_repo``, and every alias — otherwise ``unsloth/Qwen…`` style
|
||||
requests silently fall back to the default rate.
|
||||
"""
|
||||
keys = {name}
|
||||
hf_repo = preset.get("hf_repo")
|
||||
if isinstance(hf_repo, str) and hf_repo:
|
||||
keys.add(hf_repo)
|
||||
for alias in preset.get("aliases") or []:
|
||||
if isinstance(alias, str) and alias:
|
||||
keys.add(alias)
|
||||
return keys
|
||||
|
||||
|
||||
def derive_relay_url_from_public_tracker_url(url: str | None) -> str | None:
|
||||
"""Return wss://host/ws when url is a public HTTPS tracker origin."""
|
||||
if not url:
|
||||
@@ -4065,9 +4083,10 @@ class TrackerServer:
|
||||
db_path = DEFAULT_BILLING_DB_PATH
|
||||
if db_path:
|
||||
preset_prices = {
|
||||
name: float(preset["price_per_1k_tokens"])
|
||||
key: float(preset["price_per_1k_tokens"])
|
||||
for name, preset in self._model_presets.items()
|
||||
if isinstance(preset, dict) and "price_per_1k_tokens" in preset
|
||||
for key in _preset_price_keys(name, preset)
|
||||
}
|
||||
billing = BillingLedger(db_path=db_path, prices=preset_prices)
|
||||
self._billing: BillingLedger | None = billing
|
||||
@@ -4332,7 +4351,8 @@ class TrackerServer:
|
||||
continue
|
||||
if result is None:
|
||||
continue
|
||||
billing.set_price(name, result["new_price_per_1k"])
|
||||
for key in _preset_price_keys(name, preset):
|
||||
billing.set_price(key, result["new_price_per_1k"])
|
||||
preset["hf_last_price_per_1k"] = result["new_price_per_1k"]
|
||||
preset["hf_last_updated"] = time.strftime("%Y-%m-%dT%H:%M:%SZ", time.gmtime())
|
||||
if self._hf_pricing_log is not None:
|
||||
|
||||
Reference in New Issue
Block a user