File size: 2,016 Bytes
857a91b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
// Package hf resolves and inspects Hugging Face model identifiers. It refactors
// the model-resolution and metadata-parsing ideas from the legacy
// matrixhub-ai HF discovery code into a small, standalone client.
package hf

import "fmt"

// HumanParams formats a parameter count as a short string (e.g. 7600000000 -> "7.6B").
func HumanParams(n int64) string {
	switch {
	case n <= 0:
		return "—"
	case n >= 1_000_000_000:
		return fmt.Sprintf("%.1fB", float64(n)/1e9)
	case n >= 1_000_000:
		return fmt.Sprintf("%.0fM", float64(n)/1e6)
	default:
		return fmt.Sprintf("%d", n)
	}
}

// Ref is a parsed Hugging Face model reference.
type Ref struct {
	Source    string `json:"source"`    // always "huggingface"
	Namespace string `json:"namespace"` // e.g. "Qwen"
	Name      string `json:"name"`      // e.g. "Qwen2.5-7B-Instruct"
	Revision  string `json:"revision"`  // e.g. "main"
}

// RepoID returns the canonical "namespace/name" identifier.
func (r Ref) RepoID() string { return r.Namespace + "/" + r.Name }

// Metadata is the subset of Hugging Face model metadata that the runtime cares
// about for inspection and runtime-recommendation purposes.
type Metadata struct {
	Model               string   `json:"model"`
	Source              string   `json:"source"`
	Namespace           string   `json:"namespace"`
	Name                string   `json:"name"`
	Revision            string   `json:"revision"`
	PipelineTag         string   `json:"pipeline_tag,omitempty"`
	LibraryName         string   `json:"library_name,omitempty"`
	License             string   `json:"license,omitempty"`
	ModelType           string   `json:"model_type,omitempty"`
	EstimatedParameters int64    `json:"estimated_parameters,omitempty"`
	RecommendedRuntime  string   `json:"recommended_runtime,omitempty"`
	RequiresGPU         bool     `json:"requires_gpu"`
	Tags                []string `json:"tags,omitempty"`
	Gated               bool     `json:"gated,omitempty"`
	Private             bool     `json:"private,omitempty"`
}