filetype.go 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  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. fileTypeIQ3_M
  33. fileTypeIQ2_S
  34. fileTypeIQ2_M
  35. fileTypeIQ4_XS
  36. fileTypeIQ1_M
  37. fileTypeBF16
  38. fileTypeUnknown
  39. )
  40. func ParseFileType(s string) (fileType, error) {
  41. switch s {
  42. case "F32":
  43. return fileTypeF32, nil
  44. case "F16":
  45. return fileTypeF16, nil
  46. case "Q4_0":
  47. return fileTypeQ4_0, nil
  48. case "Q4_1":
  49. return fileTypeQ4_1, nil
  50. case "Q4_1_F16":
  51. return fileTypeQ4_1_F16, nil
  52. case "Q8_0":
  53. return fileTypeQ8_0, nil
  54. case "Q5_0":
  55. return fileTypeQ5_0, nil
  56. case "Q5_1":
  57. return fileTypeQ5_1, nil
  58. case "Q2_K":
  59. return fileTypeQ2_K, nil
  60. case "Q3_K_S":
  61. return fileTypeQ3_K_S, nil
  62. case "Q3_K_M":
  63. return fileTypeQ3_K_M, nil
  64. case "Q3_K_L":
  65. return fileTypeQ3_K_L, nil
  66. case "Q4_K_S":
  67. return fileTypeQ4_K_S, nil
  68. case "Q4_K_M":
  69. return fileTypeQ4_K_M, nil
  70. case "Q5_K_S":
  71. return fileTypeQ5_K_S, nil
  72. case "Q5_K_M":
  73. return fileTypeQ5_K_M, nil
  74. case "Q6_K":
  75. return fileTypeQ6_K, nil
  76. case "IQ2_XXS":
  77. return fileTypeIQ2_XXS, nil
  78. case "IQ2_XS":
  79. return fileTypeIQ2_XS, nil
  80. case "Q2_K_S":
  81. return fileTypeQ2_K_S, nil
  82. case "IQ3_XS":
  83. return fileTypeIQ3_XS, nil
  84. case "IQ3_XXS":
  85. return fileTypeIQ3_XXS, nil
  86. case "IQ1_S":
  87. return fileTypeIQ1_S, nil
  88. case "IQ4_NL":
  89. return fileTypeIQ4_NL, nil
  90. case "IQ3_S":
  91. return fileTypeIQ3_S, nil
  92. case "IQ3_M":
  93. return fileTypeIQ3_M, 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. default:
  105. return fileTypeUnknown, fmt.Errorf("unknown fileType: %s", s)
  106. }
  107. }
  108. func (t fileType) String() string {
  109. switch t {
  110. case fileTypeF32:
  111. return "F32"
  112. case fileTypeF16:
  113. return "F16"
  114. case fileTypeQ4_0:
  115. return "Q4_0"
  116. case fileTypeQ4_1:
  117. return "Q4_1"
  118. case fileTypeQ4_1_F16:
  119. return "Q4_1_F16"
  120. case fileTypeQ8_0:
  121. return "Q8_0"
  122. case fileTypeQ5_0:
  123. return "Q5_0"
  124. case fileTypeQ5_1:
  125. return "Q5_1"
  126. case fileTypeQ2_K:
  127. return "Q2_K"
  128. case fileTypeQ3_K_S:
  129. return "Q3_K_S"
  130. case fileTypeQ3_K_M:
  131. return "Q3_K_M"
  132. case fileTypeQ3_K_L:
  133. return "Q3_K_L"
  134. case fileTypeQ4_K_S:
  135. return "Q4_K_S"
  136. case fileTypeQ4_K_M:
  137. return "Q4_K_M"
  138. case fileTypeQ5_K_S:
  139. return "Q5_K_S"
  140. case fileTypeQ5_K_M:
  141. return "Q5_K_M"
  142. case fileTypeQ6_K:
  143. return "Q6_K"
  144. case fileTypeIQ2_XXS:
  145. return "IQ2_XXS"
  146. case fileTypeIQ2_XS:
  147. return "IQ2_XS"
  148. case fileTypeQ2_K_S:
  149. return "Q2_K_S"
  150. case fileTypeIQ3_XS:
  151. return "IQ3_XS"
  152. case fileTypeIQ3_XXS:
  153. return "IQ3_XXS"
  154. case fileTypeIQ1_S:
  155. return "IQ1_S"
  156. case fileTypeIQ4_NL:
  157. return "IQ4_NL"
  158. case fileTypeIQ3_S:
  159. return "IQ3_S"
  160. case fileTypeIQ3_M:
  161. return "IQ3_M"
  162. case fileTypeIQ2_S:
  163. return "IQ2_S"
  164. case fileTypeIQ4_XS:
  165. return "IQ4_XS"
  166. case fileTypeIQ2_M:
  167. return "IQ2_M"
  168. case fileTypeIQ1_M:
  169. return "IQ1_M"
  170. case fileTypeBF16:
  171. return "BF16"
  172. default:
  173. return "unknown"
  174. }
  175. }
  176. func (t fileType) Value() uint32 {
  177. return uint32(t)
  178. }