filetype.go 3.35 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
	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
30
	fileTypeIQ3_XS
Michael Yang's avatar
Michael Yang committed
31
	fileTypeIQ3_XXS
32
33
34
	fileTypeIQ1_S
	fileTypeIQ4_NL
	fileTypeIQ3_S
35
	fileTypeIQ3_M
36
37
	fileTypeIQ2_S
	fileTypeIQ2_M
38
	fileTypeIQ4_XS
39
40
	fileTypeIQ1_M
	fileTypeBF16
Michael Yang's avatar
Michael Yang committed
41

Michael Yang's avatar
Michael Yang committed
42
	fileTypeUnknown
Michael Yang's avatar
Michael Yang committed
43
44
)

Michael Yang's avatar
Michael Yang committed
45
func ParseFileType(s string) (fileType, error) {
Michael Yang's avatar
Michael Yang committed
46
47
	switch s {
	case "F32":
Michael Yang's avatar
Michael Yang committed
48
		return fileTypeF32, nil
Michael Yang's avatar
Michael Yang committed
49
	case "F16":
Michael Yang's avatar
Michael Yang committed
50
		return fileTypeF16, nil
Michael Yang's avatar
Michael Yang committed
51
	case "Q4_0":
Michael Yang's avatar
Michael Yang committed
52
		return fileTypeQ4_0, nil
Michael Yang's avatar
Michael Yang committed
53
	case "Q4_1":
Michael Yang's avatar
Michael Yang committed
54
		return fileTypeQ4_1, nil
Michael Yang's avatar
Michael Yang committed
55
	case "Q4_1_F16":
Michael Yang's avatar
Michael Yang committed
56
		return fileTypeQ4_1_F16, nil
Michael Yang's avatar
Michael Yang committed
57
	case "Q8_0":
Michael Yang's avatar
Michael Yang committed
58
		return fileTypeQ8_0, nil
Michael Yang's avatar
Michael Yang committed
59
	case "Q5_0":
Michael Yang's avatar
Michael Yang committed
60
		return fileTypeQ5_0, nil
Michael Yang's avatar
Michael Yang committed
61
	case "Q5_1":
Michael Yang's avatar
Michael Yang committed
62
		return fileTypeQ5_1, nil
Michael Yang's avatar
Michael Yang committed
63
	case "Q2_K":
Michael Yang's avatar
Michael Yang committed
64
		return fileTypeQ2_K, nil
Michael Yang's avatar
Michael Yang committed
65
	case "Q3_K_S":
Michael Yang's avatar
Michael Yang committed
66
		return fileTypeQ3_K_S, nil
Michael Yang's avatar
Michael Yang committed
67
	case "Q3_K_M":
Michael Yang's avatar
Michael Yang committed
68
		return fileTypeQ3_K_M, nil
Michael Yang's avatar
Michael Yang committed
69
	case "Q3_K_L":
Michael Yang's avatar
Michael Yang committed
70
		return fileTypeQ3_K_L, nil
Michael Yang's avatar
Michael Yang committed
71
	case "Q4_K_S":
Michael Yang's avatar
Michael Yang committed
72
		return fileTypeQ4_K_S, nil
Michael Yang's avatar
Michael Yang committed
73
	case "Q4_K_M":
Michael Yang's avatar
Michael Yang committed
74
		return fileTypeQ4_K_M, nil
Michael Yang's avatar
Michael Yang committed
75
	case "Q5_K_S":
Michael Yang's avatar
Michael Yang committed
76
		return fileTypeQ5_K_S, nil
Michael Yang's avatar
Michael Yang committed
77
	case "Q5_K_M":
Michael Yang's avatar
Michael Yang committed
78
		return fileTypeQ5_K_M, nil
Michael Yang's avatar
Michael Yang committed
79
	case "Q6_K":
Michael Yang's avatar
Michael Yang committed
80
		return fileTypeQ6_K, nil
Michael Yang's avatar
Michael Yang committed
81
	case "IQ2_XXS":
Michael Yang's avatar
Michael Yang committed
82
		return fileTypeIQ2_XXS, nil
Michael Yang's avatar
Michael Yang committed
83
	case "IQ2_XS":
Michael Yang's avatar
Michael Yang committed
84
		return fileTypeIQ2_XS, nil
Michael Yang's avatar
Michael Yang committed
85
	case "Q2_K_S":
Michael Yang's avatar
Michael Yang committed
86
		return fileTypeQ2_K_S, nil
87
88
	case "IQ3_XS":
		return fileTypeIQ3_XS, nil
Michael Yang's avatar
Michael Yang committed
89
	case "IQ3_XXS":
Michael Yang's avatar
Michael Yang committed
90
		return fileTypeIQ3_XXS, nil
91
92
93
94
95
96
	case "IQ1_S":
		return fileTypeIQ1_S, nil
	case "IQ4_NL":
		return fileTypeIQ4_NL, nil
	case "IQ3_S":
		return fileTypeIQ3_S, nil
97
98
	case "IQ3_M":
		return fileTypeIQ3_M, nil
99
100
101
102
103
104
105
106
107
108
	case "IQ2_S":
		return fileTypeIQ2_S, nil
	case "IQ4_XS":
		return fileTypeIQ4_XS, nil
	case "IQ2_M":
		return fileTypeIQ2_M, nil
	case "IQ1_M":
		return fileTypeIQ1_M, nil
	case "BF16":
		return fileTypeBF16, nil
Michael Yang's avatar
Michael Yang committed
109
	default:
Michael Yang's avatar
Michael Yang committed
110
		return fileTypeUnknown, fmt.Errorf("unknown fileType: %s", s)
Michael Yang's avatar
Michael Yang committed
111
112
113
	}
}

Michael Yang's avatar
Michael Yang committed
114
func (t fileType) String() string {
Michael Yang's avatar
Michael Yang committed
115
	switch t {
Michael Yang's avatar
Michael Yang committed
116
	case fileTypeF32:
Michael Yang's avatar
Michael Yang committed
117
		return "F32"
Michael Yang's avatar
Michael Yang committed
118
	case fileTypeF16:
Michael Yang's avatar
Michael Yang committed
119
		return "F16"
Michael Yang's avatar
Michael Yang committed
120
	case fileTypeQ4_0:
Michael Yang's avatar
Michael Yang committed
121
		return "Q4_0"
Michael Yang's avatar
Michael Yang committed
122
	case fileTypeQ4_1:
Michael Yang's avatar
Michael Yang committed
123
		return "Q4_1"
Michael Yang's avatar
Michael Yang committed
124
	case fileTypeQ4_1_F16:
Michael Yang's avatar
Michael Yang committed
125
		return "Q4_1_F16"
Michael Yang's avatar
Michael Yang committed
126
	case fileTypeQ8_0:
Michael Yang's avatar
Michael Yang committed
127
		return "Q8_0"
Michael Yang's avatar
Michael Yang committed
128
	case fileTypeQ5_0:
Michael Yang's avatar
Michael Yang committed
129
		return "Q5_0"
Michael Yang's avatar
Michael Yang committed
130
	case fileTypeQ5_1:
Michael Yang's avatar
Michael Yang committed
131
		return "Q5_1"
Michael Yang's avatar
Michael Yang committed
132
	case fileTypeQ2_K:
Michael Yang's avatar
Michael Yang committed
133
		return "Q2_K"
Michael Yang's avatar
Michael Yang committed
134
	case fileTypeQ3_K_S:
Michael Yang's avatar
Michael Yang committed
135
		return "Q3_K_S"
Michael Yang's avatar
Michael Yang committed
136
	case fileTypeQ3_K_M:
Michael Yang's avatar
Michael Yang committed
137
		return "Q3_K_M"
Michael Yang's avatar
Michael Yang committed
138
	case fileTypeQ3_K_L:
Michael Yang's avatar
Michael Yang committed
139
		return "Q3_K_L"
Michael Yang's avatar
Michael Yang committed
140
	case fileTypeQ4_K_S:
Michael Yang's avatar
Michael Yang committed
141
		return "Q4_K_S"
Michael Yang's avatar
Michael Yang committed
142
	case fileTypeQ4_K_M:
Michael Yang's avatar
Michael Yang committed
143
		return "Q4_K_M"
Michael Yang's avatar
Michael Yang committed
144
	case fileTypeQ5_K_S:
Michael Yang's avatar
Michael Yang committed
145
		return "Q5_K_S"
Michael Yang's avatar
Michael Yang committed
146
	case fileTypeQ5_K_M:
Michael Yang's avatar
Michael Yang committed
147
		return "Q5_K_M"
Michael Yang's avatar
Michael Yang committed
148
	case fileTypeQ6_K:
Michael Yang's avatar
Michael Yang committed
149
		return "Q6_K"
Michael Yang's avatar
Michael Yang committed
150
	case fileTypeIQ2_XXS:
Michael Yang's avatar
Michael Yang committed
151
		return "IQ2_XXS"
Michael Yang's avatar
Michael Yang committed
152
	case fileTypeIQ2_XS:
Michael Yang's avatar
Michael Yang committed
153
		return "IQ2_XS"
Michael Yang's avatar
Michael Yang committed
154
	case fileTypeQ2_K_S:
Michael Yang's avatar
Michael Yang committed
155
		return "Q2_K_S"
156
157
	case fileTypeIQ3_XS:
		return "IQ3_XS"
Michael Yang's avatar
Michael Yang committed
158
	case fileTypeIQ3_XXS:
Michael Yang's avatar
Michael Yang committed
159
		return "IQ3_XXS"
160
161
162
163
164
165
	case fileTypeIQ1_S:
		return "IQ1_S"
	case fileTypeIQ4_NL:
		return "IQ4_NL"
	case fileTypeIQ3_S:
		return "IQ3_S"
166
167
	case fileTypeIQ3_M:
		return "IQ3_M"
168
169
170
171
172
173
174
175
176
177
	case fileTypeIQ2_S:
		return "IQ2_S"
	case fileTypeIQ4_XS:
		return "IQ4_XS"
	case fileTypeIQ2_M:
		return "IQ2_M"
	case fileTypeIQ1_M:
		return "IQ1_M"
	case fileTypeBF16:
		return "BF16"
Michael Yang's avatar
Michael Yang committed
178
179
180
181
182
	default:
		return "unknown"
	}
}

Michael Yang's avatar
Michael Yang committed
183
func (t fileType) Value() uint32 {
Michael Yang's avatar
Michael Yang committed
184
185
	return uint32(t)
}