filetype.go 2.51 KB
Newer Older
Michael Yang's avatar
Michael Yang committed
1
2
3
4
package llm

import "fmt"

Michael Yang's avatar
Michael Yang committed
5
type fileType uint32
Michael Yang's avatar
Michael Yang committed
6
7

const (
Michael Yang's avatar
Michael Yang committed
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
	fileTypeF32 fileType = iota
	fileTypeF16
	fileTypeQ4_0
	fileTypeQ4_1
	fileTypeQ4_1_F16
	fileTypeQ4_2 // unused
	fileTypeQ4_3 // unused
	fileTypeQ8_0
	fileTypeQ5_0
	fileTypeQ5_1
	fileTypeQ2_K
	fileTypeQ3_K_S
	fileTypeQ3_K_M
	fileTypeQ3_K_L
	fileTypeQ4_K_S
	fileTypeQ4_K_M
	fileTypeQ5_K_S
	fileTypeQ5_K_M
	fileTypeQ6_K
	fileTypeIQ2_XXS
	fileTypeIQ2_XS
	fileTypeQ2_K_S
	fileTypeQ3_K_XS
	fileTypeIQ3_XXS
Michael Yang's avatar
Michael Yang committed
32

Michael Yang's avatar
Michael Yang committed
33
	fileTypeUnknown
Michael Yang's avatar
Michael Yang committed
34
35
)

Michael Yang's avatar
Michael Yang committed
36
func ParseFileType(s string) (fileType, error) {
Michael Yang's avatar
Michael Yang committed
37
38
	switch s {
	case "F32":
Michael Yang's avatar
Michael Yang committed
39
		return fileTypeF32, nil
Michael Yang's avatar
Michael Yang committed
40
	case "F16":
Michael Yang's avatar
Michael Yang committed
41
		return fileTypeF16, nil
Michael Yang's avatar
Michael Yang committed
42
	case "Q4_0":
Michael Yang's avatar
Michael Yang committed
43
		return fileTypeQ4_0, nil
Michael Yang's avatar
Michael Yang committed
44
	case "Q4_1":
Michael Yang's avatar
Michael Yang committed
45
		return fileTypeQ4_1, nil
Michael Yang's avatar
Michael Yang committed
46
	case "Q4_1_F16":
Michael Yang's avatar
Michael Yang committed
47
		return fileTypeQ4_1_F16, nil
Michael Yang's avatar
Michael Yang committed
48
	case "Q8_0":
Michael Yang's avatar
Michael Yang committed
49
		return fileTypeQ8_0, nil
Michael Yang's avatar
Michael Yang committed
50
	case "Q5_0":
Michael Yang's avatar
Michael Yang committed
51
		return fileTypeQ5_0, nil
Michael Yang's avatar
Michael Yang committed
52
	case "Q5_1":
Michael Yang's avatar
Michael Yang committed
53
		return fileTypeQ5_1, nil
Michael Yang's avatar
Michael Yang committed
54
	case "Q2_K":
Michael Yang's avatar
Michael Yang committed
55
		return fileTypeQ2_K, nil
Michael Yang's avatar
Michael Yang committed
56
	case "Q3_K_S":
Michael Yang's avatar
Michael Yang committed
57
		return fileTypeQ3_K_S, nil
Michael Yang's avatar
Michael Yang committed
58
	case "Q3_K_M":
Michael Yang's avatar
Michael Yang committed
59
		return fileTypeQ3_K_M, nil
Michael Yang's avatar
Michael Yang committed
60
	case "Q3_K_L":
Michael Yang's avatar
Michael Yang committed
61
		return fileTypeQ3_K_L, nil
Michael Yang's avatar
Michael Yang committed
62
	case "Q4_K_S":
Michael Yang's avatar
Michael Yang committed
63
		return fileTypeQ4_K_S, nil
Michael Yang's avatar
Michael Yang committed
64
	case "Q4_K_M":
Michael Yang's avatar
Michael Yang committed
65
		return fileTypeQ4_K_M, nil
Michael Yang's avatar
Michael Yang committed
66
	case "Q5_K_S":
Michael Yang's avatar
Michael Yang committed
67
		return fileTypeQ5_K_S, nil
Michael Yang's avatar
Michael Yang committed
68
	case "Q5_K_M":
Michael Yang's avatar
Michael Yang committed
69
		return fileTypeQ5_K_M, nil
Michael Yang's avatar
Michael Yang committed
70
	case "Q6_K":
Michael Yang's avatar
Michael Yang committed
71
		return fileTypeQ6_K, nil
Michael Yang's avatar
Michael Yang committed
72
	case "IQ2_XXS":
Michael Yang's avatar
Michael Yang committed
73
		return fileTypeIQ2_XXS, nil
Michael Yang's avatar
Michael Yang committed
74
	case "IQ2_XS":
Michael Yang's avatar
Michael Yang committed
75
		return fileTypeIQ2_XS, nil
Michael Yang's avatar
Michael Yang committed
76
	case "Q2_K_S":
Michael Yang's avatar
Michael Yang committed
77
		return fileTypeQ2_K_S, nil
Michael Yang's avatar
Michael Yang committed
78
	case "Q3_K_XS":
Michael Yang's avatar
Michael Yang committed
79
		return fileTypeQ3_K_XS, nil
Michael Yang's avatar
Michael Yang committed
80
	case "IQ3_XXS":
Michael Yang's avatar
Michael Yang committed
81
		return fileTypeIQ3_XXS, nil
Michael Yang's avatar
Michael Yang committed
82
	default:
Michael Yang's avatar
Michael Yang committed
83
		return fileTypeUnknown, fmt.Errorf("unknown fileType: %s", s)
Michael Yang's avatar
Michael Yang committed
84
85
86
	}
}

Michael Yang's avatar
Michael Yang committed
87
func (t fileType) String() string {
Michael Yang's avatar
Michael Yang committed
88
	switch t {
Michael Yang's avatar
Michael Yang committed
89
	case fileTypeF32:
Michael Yang's avatar
Michael Yang committed
90
		return "F32"
Michael Yang's avatar
Michael Yang committed
91
	case fileTypeF16:
Michael Yang's avatar
Michael Yang committed
92
		return "F16"
Michael Yang's avatar
Michael Yang committed
93
	case fileTypeQ4_0:
Michael Yang's avatar
Michael Yang committed
94
		return "Q4_0"
Michael Yang's avatar
Michael Yang committed
95
	case fileTypeQ4_1:
Michael Yang's avatar
Michael Yang committed
96
		return "Q4_1"
Michael Yang's avatar
Michael Yang committed
97
	case fileTypeQ4_1_F16:
Michael Yang's avatar
Michael Yang committed
98
		return "Q4_1_F16"
Michael Yang's avatar
Michael Yang committed
99
	case fileTypeQ8_0:
Michael Yang's avatar
Michael Yang committed
100
		return "Q8_0"
Michael Yang's avatar
Michael Yang committed
101
	case fileTypeQ5_0:
Michael Yang's avatar
Michael Yang committed
102
		return "Q5_0"
Michael Yang's avatar
Michael Yang committed
103
	case fileTypeQ5_1:
Michael Yang's avatar
Michael Yang committed
104
		return "Q5_1"
Michael Yang's avatar
Michael Yang committed
105
	case fileTypeQ2_K:
Michael Yang's avatar
Michael Yang committed
106
		return "Q2_K"
Michael Yang's avatar
Michael Yang committed
107
	case fileTypeQ3_K_S:
Michael Yang's avatar
Michael Yang committed
108
		return "Q3_K_S"
Michael Yang's avatar
Michael Yang committed
109
	case fileTypeQ3_K_M:
Michael Yang's avatar
Michael Yang committed
110
		return "Q3_K_M"
Michael Yang's avatar
Michael Yang committed
111
	case fileTypeQ3_K_L:
Michael Yang's avatar
Michael Yang committed
112
		return "Q3_K_L"
Michael Yang's avatar
Michael Yang committed
113
	case fileTypeQ4_K_S:
Michael Yang's avatar
Michael Yang committed
114
		return "Q4_K_S"
Michael Yang's avatar
Michael Yang committed
115
	case fileTypeQ4_K_M:
Michael Yang's avatar
Michael Yang committed
116
		return "Q4_K_M"
Michael Yang's avatar
Michael Yang committed
117
	case fileTypeQ5_K_S:
Michael Yang's avatar
Michael Yang committed
118
		return "Q5_K_S"
Michael Yang's avatar
Michael Yang committed
119
	case fileTypeQ5_K_M:
Michael Yang's avatar
Michael Yang committed
120
		return "Q5_K_M"
Michael Yang's avatar
Michael Yang committed
121
	case fileTypeQ6_K:
Michael Yang's avatar
Michael Yang committed
122
		return "Q6_K"
Michael Yang's avatar
Michael Yang committed
123
	case fileTypeIQ2_XXS:
Michael Yang's avatar
Michael Yang committed
124
		return "IQ2_XXS"
Michael Yang's avatar
Michael Yang committed
125
	case fileTypeIQ2_XS:
Michael Yang's avatar
Michael Yang committed
126
		return "IQ2_XS"
Michael Yang's avatar
Michael Yang committed
127
	case fileTypeQ2_K_S:
Michael Yang's avatar
Michael Yang committed
128
		return "Q2_K_S"
Michael Yang's avatar
Michael Yang committed
129
	case fileTypeQ3_K_XS:
Michael Yang's avatar
Michael Yang committed
130
		return "Q3_K_XS"
Michael Yang's avatar
Michael Yang committed
131
	case fileTypeIQ3_XXS:
Michael Yang's avatar
Michael Yang committed
132
133
134
135
136
137
		return "IQ3_XXS"
	default:
		return "unknown"
	}
}

Michael Yang's avatar
Michael Yang committed
138
func (t fileType) Value() uint32 {
Michael Yang's avatar
Michael Yang committed
139
140
	return uint32(t)
}