filetype.go 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  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. filetypeQ8_0 filetype = iota + 2
  11. filetypeQ5_0
  12. filetypeQ5_1
  13. filetypeQ2_K
  14. filetypeQ3_K_S
  15. filetypeQ3_K_M
  16. filetypeQ3_K_L
  17. filetypeQ4_K_S
  18. filetypeQ4_K_M
  19. filetypeQ5_K_S
  20. filetypeQ5_K_M
  21. filetypeQ6_K
  22. filetypeIQ2_XXS
  23. filetypeIQ2_XS
  24. filetypeQ2_K_S
  25. filetypeQ3_K_XS
  26. filetypeIQ3_XXS
  27. filetypeUnknown
  28. )
  29. func ParseFileType(s string) (filetype, error) {
  30. switch s {
  31. case "F32":
  32. return filetypeF32, nil
  33. case "F16":
  34. return filetypeF16, nil
  35. case "Q4_0":
  36. return filetypeQ4_0, nil
  37. case "Q4_1":
  38. return filetypeQ4_1, nil
  39. case "Q4_1_F16":
  40. return filetypeQ4_1_F16, nil
  41. case "Q8_0":
  42. return filetypeQ8_0, nil
  43. case "Q5_0":
  44. return filetypeQ5_0, nil
  45. case "Q5_1":
  46. return filetypeQ5_1, nil
  47. case "Q2_K":
  48. return filetypeQ2_K, nil
  49. case "Q3_K_S":
  50. return filetypeQ3_K_S, nil
  51. case "Q3_K_M":
  52. return filetypeQ3_K_M, nil
  53. case "Q3_K_L":
  54. return filetypeQ3_K_L, nil
  55. case "Q4_K_S":
  56. return filetypeQ4_K_S, nil
  57. case "Q4_K_M":
  58. return filetypeQ4_K_M, nil
  59. case "Q5_K_S":
  60. return filetypeQ5_K_S, nil
  61. case "Q5_K_M":
  62. return filetypeQ5_K_M, nil
  63. case "Q6_K":
  64. return filetypeQ6_K, nil
  65. case "IQ2_XXS":
  66. return filetypeIQ2_XXS, nil
  67. case "IQ2_XS":
  68. return filetypeIQ2_XS, nil
  69. case "Q2_K_S":
  70. return filetypeQ2_K_S, nil
  71. case "Q3_K_XS":
  72. return filetypeQ3_K_XS, nil
  73. case "IQ3_XXS":
  74. return filetypeIQ3_XXS, nil
  75. default:
  76. return filetypeUnknown, fmt.Errorf("unknown filetype: %s", s)
  77. }
  78. }
  79. func (t filetype) String() string {
  80. switch t {
  81. case filetypeF32:
  82. return "F32"
  83. case filetypeF16:
  84. return "F16"
  85. case filetypeQ4_0:
  86. return "Q4_0"
  87. case filetypeQ4_1:
  88. return "Q4_1"
  89. case filetypeQ4_1_F16:
  90. return "Q4_1_F16"
  91. case filetypeQ8_0:
  92. return "Q8_0"
  93. case filetypeQ5_0:
  94. return "Q5_0"
  95. case filetypeQ5_1:
  96. return "Q5_1"
  97. case filetypeQ2_K:
  98. return "Q2_K"
  99. case filetypeQ3_K_S:
  100. return "Q3_K_S"
  101. case filetypeQ3_K_M:
  102. return "Q3_K_M"
  103. case filetypeQ3_K_L:
  104. return "Q3_K_L"
  105. case filetypeQ4_K_S:
  106. return "Q4_K_S"
  107. case filetypeQ4_K_M:
  108. return "Q4_K_M"
  109. case filetypeQ5_K_S:
  110. return "Q5_K_S"
  111. case filetypeQ5_K_M:
  112. return "Q5_K_M"
  113. case filetypeQ6_K:
  114. return "Q6_K"
  115. case filetypeIQ2_XXS:
  116. return "IQ2_XXS"
  117. case filetypeIQ2_XS:
  118. return "IQ2_XS"
  119. case filetypeQ2_K_S:
  120. return "Q2_K_S"
  121. case filetypeQ3_K_XS:
  122. return "Q3_K_XS"
  123. case filetypeIQ3_XXS:
  124. return "IQ3_XXS"
  125. default:
  126. return "unknown"
  127. }
  128. }
  129. func (t filetype) Value() uint32 {
  130. return uint32(t)
  131. }