filetype.go 3.26 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
35
36
37
38
39
	fileTypeIQ1_S
	fileTypeIQ4_NL
	fileTypeIQ3_S
	fileTypeIQ2_S
	fileTypeIQ4_XS
	fileTypeIQ2_M
	fileTypeIQ1_M
	fileTypeBF16
Michael Yang's avatar
Michael Yang committed
40

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

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

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

Michael Yang's avatar
Michael Yang committed
178
func (t fileType) Value() uint32 {
Michael Yang's avatar
Michael Yang committed
179
180
	return uint32(t)
}