filetype.go 3.0 KB

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