filetype.go 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195
  1. package llm
  2. import "fmt"
  3. type fileType uint32
  4. const (
  5. fileTypeF32 fileType = iota
  6. fileTypeF16
  7. fileTypeQ4_0
  8. fileTypeQ4_1
  9. fileTypeQ4_1_F16
  10. fileTypeQ4_2 // unused
  11. fileTypeQ4_3 // unused
  12. fileTypeQ8_0
  13. fileTypeQ5_0
  14. fileTypeQ5_1
  15. fileTypeQ2_K
  16. fileTypeQ3_K_S
  17. fileTypeQ3_K_M
  18. fileTypeQ3_K_L
  19. fileTypeQ4_K_S
  20. fileTypeQ4_K_M
  21. fileTypeQ5_K_S
  22. fileTypeQ5_K_M
  23. fileTypeQ6_K
  24. fileTypeIQ2_XXS
  25. fileTypeIQ2_XS
  26. fileTypeQ2_K_S
  27. fileTypeIQ3_XS
  28. fileTypeIQ3_XXS
  29. fileTypeIQ1_S
  30. fileTypeIQ4_NL
  31. fileTypeIQ3_S
  32. fileTypeIQ2_S
  33. fileTypeIQ4_XS
  34. fileTypeIQ2_M
  35. fileTypeIQ1_M
  36. fileTypeBF16
  37. fileTypeQ4_0_4_4
  38. fileTypeQ4_0_4_8
  39. fileTypeQ4_0_8_8
  40. fileTypeUnknown
  41. )
  42. func ParseFileType(s string) (fileType, error) {
  43. switch s {
  44. case "F32":
  45. return fileTypeF32, nil
  46. case "F16":
  47. return fileTypeF16, nil
  48. case "Q4_0":
  49. return fileTypeQ4_0, nil
  50. case "Q4_1":
  51. return fileTypeQ4_1, nil
  52. case "Q4_1_F16":
  53. return fileTypeQ4_1_F16, nil
  54. case "Q8_0":
  55. return fileTypeQ8_0, nil
  56. case "Q5_0":
  57. return fileTypeQ5_0, nil
  58. case "Q5_1":
  59. return fileTypeQ5_1, nil
  60. case "Q2_K":
  61. return fileTypeQ2_K, nil
  62. case "Q3_K_S":
  63. return fileTypeQ3_K_S, nil
  64. case "Q3_K_M":
  65. return fileTypeQ3_K_M, nil
  66. case "Q3_K_L":
  67. return fileTypeQ3_K_L, nil
  68. case "Q4_K_S":
  69. return fileTypeQ4_K_S, nil
  70. case "Q4_K_M":
  71. return fileTypeQ4_K_M, nil
  72. case "Q5_K_S":
  73. return fileTypeQ5_K_S, nil
  74. case "Q5_K_M":
  75. return fileTypeQ5_K_M, nil
  76. case "Q6_K":
  77. return fileTypeQ6_K, nil
  78. case "IQ2_XXS":
  79. return fileTypeIQ2_XXS, nil
  80. case "IQ2_XS":
  81. return fileTypeIQ2_XS, nil
  82. case "Q2_K_S":
  83. return fileTypeQ2_K_S, nil
  84. case "IQ3_XS":
  85. return fileTypeIQ3_XS, nil
  86. case "IQ3_XXS":
  87. return fileTypeIQ3_XXS, nil
  88. case "IQ1_S":
  89. return fileTypeIQ1_S, nil
  90. case "IQ4_NL":
  91. return fileTypeIQ4_NL, nil
  92. case "IQ3_S":
  93. return fileTypeIQ3_S, nil
  94. case "IQ2_S":
  95. return fileTypeIQ2_S, nil
  96. case "IQ4_XS":
  97. return fileTypeIQ4_XS, nil
  98. case "IQ2_M":
  99. return fileTypeIQ2_M, nil
  100. case "IQ1_M":
  101. return fileTypeIQ1_M, nil
  102. case "BF16":
  103. return fileTypeBF16, nil
  104. case "Q4_0_4_4":
  105. return fileTypeQ4_0_4_4, nil
  106. case "Q4_0_4_8":
  107. return fileTypeQ4_0_4_8, nil
  108. case "Q4_0_8_8":
  109. return fileTypeQ4_0_8_8, nil
  110. default:
  111. return fileTypeUnknown, fmt.Errorf("unknown fileType: %s", s)
  112. }
  113. }
  114. func (t fileType) String() string {
  115. switch t {
  116. case fileTypeF32:
  117. return "F32"
  118. case fileTypeF16:
  119. return "F16"
  120. case fileTypeQ4_0:
  121. return "Q4_0"
  122. case fileTypeQ4_1:
  123. return "Q4_1"
  124. case fileTypeQ4_1_F16:
  125. return "Q4_1_F16"
  126. case fileTypeQ8_0:
  127. return "Q8_0"
  128. case fileTypeQ5_0:
  129. return "Q5_0"
  130. case fileTypeQ5_1:
  131. return "Q5_1"
  132. case fileTypeQ2_K:
  133. return "Q2_K"
  134. case fileTypeQ3_K_S:
  135. return "Q3_K_S"
  136. case fileTypeQ3_K_M:
  137. return "Q3_K_M"
  138. case fileTypeQ3_K_L:
  139. return "Q3_K_L"
  140. case fileTypeQ4_K_S:
  141. return "Q4_K_S"
  142. case fileTypeQ4_K_M:
  143. return "Q4_K_M"
  144. case fileTypeQ5_K_S:
  145. return "Q5_K_S"
  146. case fileTypeQ5_K_M:
  147. return "Q5_K_M"
  148. case fileTypeQ6_K:
  149. return "Q6_K"
  150. case fileTypeIQ2_XXS:
  151. return "IQ2_XXS"
  152. case fileTypeIQ2_XS:
  153. return "IQ2_XS"
  154. case fileTypeQ2_K_S:
  155. return "Q2_K_S"
  156. case fileTypeIQ3_XS:
  157. return "IQ3_XS"
  158. case fileTypeIQ3_XXS:
  159. return "IQ3_XXS"
  160. case fileTypeIQ1_S:
  161. return "IQ1_S"
  162. case fileTypeIQ4_NL:
  163. return "IQ4_NL"
  164. case fileTypeIQ3_S:
  165. return "IQ3_S"
  166. case fileTypeIQ2_S:
  167. return "IQ2_S"
  168. case fileTypeIQ4_XS:
  169. return "IQ4_XS"
  170. case fileTypeIQ2_M:
  171. return "IQ2_M"
  172. case fileTypeIQ1_M:
  173. return "IQ1_M"
  174. case fileTypeBF16:
  175. return "BF16"
  176. case fileTypeQ4_0_4_4:
  177. return "Q4_0_4_4"
  178. case fileTypeQ4_0_4_8:
  179. return "Q4_0_4_8"
  180. case fileTypeQ4_0_8_8:
  181. return "Q4_0_8_8"
  182. default:
  183. return "unknown"
  184. }
  185. }
  186. func (t fileType) Value() uint32 {
  187. return uint32(t)
  188. }