filetype.go 2.5 KB

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