whispercpp 1.3.1 → 1.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (857) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +7 -3
  3. data/README.md +161 -43
  4. data/Rakefile +45 -13
  5. data/ext/.gitignore +4 -8
  6. data/ext/dependencies.rb +73 -0
  7. data/ext/extconf.rb +21 -198
  8. data/ext/options.rb +85 -0
  9. data/ext/ruby_whisper.c +177 -0
  10. data/ext/ruby_whisper.h +17 -2
  11. data/ext/ruby_whisper_context.c +672 -0
  12. data/ext/ruby_whisper_error.c +52 -0
  13. data/ext/ruby_whisper_model.c +232 -0
  14. data/ext/ruby_whisper_params.c +1303 -0
  15. data/ext/ruby_whisper_segment.c +220 -0
  16. data/ext/ruby_whisper_transcribe.cpp +93 -0
  17. data/ext/ruby_whisper_vad_params.c +288 -0
  18. data/ext/sources/CMakeGraphVizOptions.cmake +8 -0
  19. data/ext/sources/CMakeLists.txt +255 -0
  20. data/ext/sources/bindings/javascript/CMakeLists.txt +41 -0
  21. data/ext/sources/bindings/javascript/emscripten.cpp +93 -0
  22. data/ext/sources/bindings/javascript/libwhisper.worker.js +1 -0
  23. data/ext/sources/bindings/javascript/package-tmpl.json +26 -0
  24. data/ext/sources/bindings/javascript/package.json +26 -0
  25. data/ext/sources/bindings/javascript/whisper.js +19 -0
  26. data/ext/sources/build-xcframework.sh +547 -0
  27. data/ext/sources/cmake/DefaultTargetOptions.cmake +16 -0
  28. data/ext/sources/cmake/FindFFmpeg.cmake +163 -0
  29. data/ext/sources/cmake/build-info.cmake +60 -0
  30. data/ext/sources/cmake/git-vars.cmake +22 -0
  31. data/ext/sources/cmake/whisper-config.cmake.in +65 -0
  32. data/ext/sources/cmake/whisper.pc.in +10 -0
  33. data/ext/sources/examples/CMakeLists.txt +124 -0
  34. data/ext/sources/examples/addon.node/CMakeLists.txt +31 -0
  35. data/ext/sources/examples/addon.node/__test__/whisper.spec.js +133 -0
  36. data/ext/sources/examples/addon.node/addon.cpp +557 -0
  37. data/ext/sources/examples/addon.node/index.js +57 -0
  38. data/ext/sources/examples/addon.node/package.json +16 -0
  39. data/ext/sources/examples/addon.node/vad-example.js +132 -0
  40. data/ext/sources/examples/bench/CMakeLists.txt +8 -0
  41. data/ext/sources/examples/bench/bench.cpp +176 -0
  42. data/ext/sources/examples/bench.wasm/CMakeLists.txt +49 -0
  43. data/ext/sources/examples/bench.wasm/emscripten.cpp +87 -0
  44. data/ext/sources/examples/bench.wasm/index-tmpl.html +284 -0
  45. data/ext/sources/examples/cli/CMakeLists.txt +8 -0
  46. data/ext/sources/examples/cli/cli.cpp +1295 -0
  47. data/ext/sources/examples/coi-serviceworker.js +146 -0
  48. data/ext/sources/examples/command/CMakeLists.txt +10 -0
  49. data/ext/sources/examples/command/command.cpp +800 -0
  50. data/ext/sources/examples/command/commands.txt +9 -0
  51. data/ext/sources/examples/command.wasm/CMakeLists.txt +50 -0
  52. data/ext/sources/examples/command.wasm/emscripten.cpp +327 -0
  53. data/ext/sources/examples/command.wasm/index-tmpl.html +414 -0
  54. data/ext/sources/examples/common-ggml.cpp +238 -0
  55. data/ext/sources/examples/common-ggml.h +18 -0
  56. data/ext/sources/examples/common-sdl.cpp +227 -0
  57. data/ext/sources/examples/common-sdl.h +49 -0
  58. data/ext/sources/examples/common-whisper.cpp +175 -0
  59. data/ext/sources/examples/common-whisper.h +24 -0
  60. data/ext/sources/examples/common.cpp +675 -0
  61. data/ext/sources/examples/common.h +322 -0
  62. data/ext/sources/examples/deprecation-warning/CMakeLists.txt +6 -0
  63. data/ext/sources/examples/deprecation-warning/deprecation-warning.cpp +38 -0
  64. data/ext/sources/examples/ffmpeg-transcode.cpp +368 -0
  65. data/ext/sources/examples/generate-karaoke.sh +57 -0
  66. data/ext/sources/examples/grammar-parser.cpp +423 -0
  67. data/ext/sources/examples/grammar-parser.h +29 -0
  68. data/ext/sources/examples/helpers.js +191 -0
  69. data/ext/sources/examples/json.hpp +24596 -0
  70. data/ext/sources/examples/livestream.sh +112 -0
  71. data/ext/sources/examples/lsp/CMakeLists.txt +9 -0
  72. data/ext/sources/examples/lsp/lsp.cpp +469 -0
  73. data/ext/sources/examples/lsp/whisper.vim +362 -0
  74. data/ext/sources/examples/miniaudio.h +93468 -0
  75. data/ext/sources/examples/python/test_whisper_processor.py +7 -0
  76. data/ext/sources/examples/python/whisper_processor.py +54 -0
  77. data/ext/sources/examples/quantize/CMakeLists.txt +6 -0
  78. data/ext/sources/examples/quantize/quantize.cpp +226 -0
  79. data/ext/sources/examples/server/CMakeLists.txt +15 -0
  80. data/ext/sources/examples/server/bench.js +29 -0
  81. data/ext/sources/examples/server/httplib.h +10497 -0
  82. data/ext/sources/examples/server/server.cpp +1238 -0
  83. data/ext/sources/examples/server.py +115 -0
  84. data/ext/sources/examples/stb_vorbis.c +5584 -0
  85. data/ext/sources/examples/stream/CMakeLists.txt +10 -0
  86. data/ext/sources/examples/stream/stream.cpp +435 -0
  87. data/ext/sources/examples/stream.wasm/CMakeLists.txt +49 -0
  88. data/ext/sources/examples/stream.wasm/emscripten.cpp +216 -0
  89. data/ext/sources/examples/stream.wasm/index-tmpl.html +414 -0
  90. data/ext/sources/examples/sycl/CMakeLists.txt +9 -0
  91. data/ext/sources/examples/sycl/build.sh +22 -0
  92. data/ext/sources/examples/sycl/ls-sycl-device.cpp +11 -0
  93. data/ext/sources/examples/sycl/run-whisper.sh +17 -0
  94. data/ext/sources/examples/talk-llama/CMakeLists.txt +43 -0
  95. data/ext/sources/examples/talk-llama/eleven-labs.py +80 -0
  96. data/ext/sources/examples/talk-llama/llama-adapter.cpp +388 -0
  97. data/ext/sources/examples/talk-llama/llama-adapter.h +76 -0
  98. data/ext/sources/examples/talk-llama/llama-arch.cpp +1914 -0
  99. data/ext/sources/examples/talk-llama/llama-arch.h +464 -0
  100. data/ext/sources/examples/talk-llama/llama-batch.cpp +843 -0
  101. data/ext/sources/examples/talk-llama/llama-batch.h +147 -0
  102. data/ext/sources/examples/talk-llama/llama-chat.cpp +685 -0
  103. data/ext/sources/examples/talk-llama/llama-chat.h +59 -0
  104. data/ext/sources/examples/talk-llama/llama-context.cpp +2845 -0
  105. data/ext/sources/examples/talk-llama/llama-context.h +297 -0
  106. data/ext/sources/examples/talk-llama/llama-cparams.cpp +5 -0
  107. data/ext/sources/examples/talk-llama/llama-cparams.h +41 -0
  108. data/ext/sources/examples/talk-llama/llama-grammar.cpp +1229 -0
  109. data/ext/sources/examples/talk-llama/llama-grammar.h +173 -0
  110. data/ext/sources/examples/talk-llama/llama-graph.cpp +1693 -0
  111. data/ext/sources/examples/talk-llama/llama-graph.h +710 -0
  112. data/ext/sources/examples/talk-llama/llama-hparams.cpp +103 -0
  113. data/ext/sources/examples/talk-llama/llama-hparams.h +207 -0
  114. data/ext/sources/examples/talk-llama/llama-impl.cpp +167 -0
  115. data/ext/sources/examples/talk-llama/llama-impl.h +61 -0
  116. data/ext/sources/examples/talk-llama/llama-io.cpp +15 -0
  117. data/ext/sources/examples/talk-llama/llama-io.h +35 -0
  118. data/ext/sources/examples/talk-llama/llama-kv-cache-unified-iswa.cpp +279 -0
  119. data/ext/sources/examples/talk-llama/llama-kv-cache-unified-iswa.h +128 -0
  120. data/ext/sources/examples/talk-llama/llama-kv-cache-unified.cpp +1841 -0
  121. data/ext/sources/examples/talk-llama/llama-kv-cache-unified.h +303 -0
  122. data/ext/sources/examples/talk-llama/llama-kv-cache.h +44 -0
  123. data/ext/sources/examples/talk-llama/llama-kv-cells.h +439 -0
  124. data/ext/sources/examples/talk-llama/llama-memory-hybrid.cpp +246 -0
  125. data/ext/sources/examples/talk-llama/llama-memory-hybrid.h +138 -0
  126. data/ext/sources/examples/talk-llama/llama-memory-recurrent.cpp +1125 -0
  127. data/ext/sources/examples/talk-llama/llama-memory-recurrent.h +183 -0
  128. data/ext/sources/examples/talk-llama/llama-memory.cpp +59 -0
  129. data/ext/sources/examples/talk-llama/llama-memory.h +116 -0
  130. data/ext/sources/examples/talk-llama/llama-mmap.cpp +600 -0
  131. data/ext/sources/examples/talk-llama/llama-mmap.h +68 -0
  132. data/ext/sources/examples/talk-llama/llama-model-loader.cpp +1163 -0
  133. data/ext/sources/examples/talk-llama/llama-model-loader.h +169 -0
  134. data/ext/sources/examples/talk-llama/llama-model-saver.cpp +282 -0
  135. data/ext/sources/examples/talk-llama/llama-model-saver.h +37 -0
  136. data/ext/sources/examples/talk-llama/llama-model.cpp +15114 -0
  137. data/ext/sources/examples/talk-llama/llama-model.h +452 -0
  138. data/ext/sources/examples/talk-llama/llama-quant.cpp +1049 -0
  139. data/ext/sources/examples/talk-llama/llama-quant.h +1 -0
  140. data/ext/sources/examples/talk-llama/llama-sampling.cpp +2575 -0
  141. data/ext/sources/examples/talk-llama/llama-sampling.h +32 -0
  142. data/ext/sources/examples/talk-llama/llama-vocab.cpp +3377 -0
  143. data/ext/sources/examples/talk-llama/llama-vocab.h +132 -0
  144. data/ext/sources/examples/talk-llama/llama.cpp +358 -0
  145. data/ext/sources/examples/talk-llama/llama.h +1484 -0
  146. data/ext/sources/examples/talk-llama/prompts/talk-alpaca.txt +23 -0
  147. data/ext/sources/examples/talk-llama/speak +40 -0
  148. data/ext/sources/examples/talk-llama/speak.bat +1 -0
  149. data/ext/sources/examples/talk-llama/speak.ps1 +14 -0
  150. data/ext/sources/examples/talk-llama/talk-llama.cpp +810 -0
  151. data/ext/sources/examples/talk-llama/unicode-data.cpp +7034 -0
  152. data/ext/sources/examples/talk-llama/unicode-data.h +20 -0
  153. data/ext/sources/examples/talk-llama/unicode.cpp +854 -0
  154. data/ext/sources/examples/talk-llama/unicode.h +66 -0
  155. data/ext/sources/examples/vad-speech-segments/CMakeLists.txt +8 -0
  156. data/ext/sources/examples/vad-speech-segments/speech.cpp +149 -0
  157. data/ext/sources/examples/wchess/CMakeLists.txt +10 -0
  158. data/ext/sources/examples/wchess/libwchess/CMakeLists.txt +19 -0
  159. data/ext/sources/examples/wchess/libwchess/Chessboard.cpp +803 -0
  160. data/ext/sources/examples/wchess/libwchess/Chessboard.h +33 -0
  161. data/ext/sources/examples/wchess/libwchess/WChess.cpp +193 -0
  162. data/ext/sources/examples/wchess/libwchess/WChess.h +63 -0
  163. data/ext/sources/examples/wchess/libwchess/test-chessboard.cpp +117 -0
  164. data/ext/sources/examples/wchess/wchess.cmd/CMakeLists.txt +8 -0
  165. data/ext/sources/examples/wchess/wchess.cmd/wchess.cmd.cpp +251 -0
  166. data/ext/sources/examples/whisper.wasm/CMakeLists.txt +50 -0
  167. data/ext/sources/examples/whisper.wasm/emscripten.cpp +118 -0
  168. data/ext/sources/examples/whisper.wasm/index-tmpl.html +658 -0
  169. data/ext/sources/ggml/CMakeLists.txt +435 -0
  170. data/ext/sources/ggml/cmake/BuildTypes.cmake +54 -0
  171. data/ext/sources/ggml/cmake/GitVars.cmake +22 -0
  172. data/ext/sources/ggml/cmake/common.cmake +50 -0
  173. data/ext/sources/ggml/cmake/ggml-config.cmake.in +152 -0
  174. data/ext/{ggml → sources/ggml}/include/ggml-alloc.h +1 -1
  175. data/ext/{ggml → sources/ggml}/include/ggml-backend.h +10 -8
  176. data/ext/{ggml → sources/ggml}/include/ggml-cpp.h +2 -1
  177. data/ext/{ggml → sources/ggml}/include/ggml-cpu.h +11 -1
  178. data/ext/{ggml → sources/ggml}/include/ggml-metal.h +1 -1
  179. data/ext/{ggml → sources/ggml}/include/ggml-opt.h +49 -28
  180. data/ext/{ggml → sources/ggml}/include/ggml-rpc.h +6 -1
  181. data/ext/{ggml → sources/ggml}/include/ggml-vulkan.h +0 -2
  182. data/ext/{ggml → sources/ggml}/include/ggml.h +325 -269
  183. data/ext/sources/ggml/include/gguf.h +202 -0
  184. data/ext/sources/ggml/src/CMakeLists.txt +404 -0
  185. data/ext/{ggml → sources/ggml}/src/ggml-alloc.c +34 -29
  186. data/ext/sources/ggml/src/ggml-amx/CMakeLists.txt +107 -0
  187. data/ext/{ggml → sources/ggml}/src/ggml-backend-impl.h +1 -2
  188. data/ext/{ggml → sources/ggml}/src/ggml-backend-reg.cpp +92 -53
  189. data/ext/{ggml → sources/ggml}/src/ggml-backend.cpp +69 -34
  190. data/ext/sources/ggml/src/ggml-blas/CMakeLists.txt +87 -0
  191. data/ext/sources/ggml/src/ggml-cann/CMakeLists.txt +75 -0
  192. data/ext/sources/ggml/src/ggml-cann/Doxyfile +2579 -0
  193. data/ext/{ggml → sources/ggml}/src/ggml-cann/acl_tensor.cpp +10 -4
  194. data/ext/{ggml → sources/ggml}/src/ggml-cann/acl_tensor.h +5 -5
  195. data/ext/{ggml → sources/ggml}/src/ggml-cann/aclnn_ops.cpp +1272 -1506
  196. data/ext/sources/ggml/src/ggml-cann/aclnn_ops.h +1125 -0
  197. data/ext/{ggml → sources/ggml}/src/ggml-cann/common.h +140 -1
  198. data/ext/{ggml → sources/ggml}/src/ggml-cann/ggml-cann.cpp +588 -146
  199. data/ext/sources/ggml/src/ggml-cann/kernels/CMakeLists.txt +30 -0
  200. data/ext/{ggml → sources/ggml}/src/ggml-cann/kernels/dup.cpp +3 -5
  201. data/ext/{ggml → sources/ggml}/src/ggml-common.h +16 -8
  202. data/ext/sources/ggml/src/ggml-cpu/CMakeLists.txt +597 -0
  203. data/ext/{ggml → sources/ggml}/src/ggml-cpu/amx/amx.cpp +3 -2
  204. data/ext/{ggml → sources/ggml}/src/ggml-cpu/amx/mmq.cpp +11 -10
  205. data/ext/sources/ggml/src/ggml-cpu/arch/arm/cpu-feats.cpp +94 -0
  206. data/ext/sources/ggml/src/ggml-cpu/arch/arm/quants.c +4114 -0
  207. data/ext/sources/ggml/src/ggml-cpu/arch/arm/repack.cpp +2163 -0
  208. data/ext/sources/ggml/src/ggml-cpu/arch/loongarch/quants.c +2639 -0
  209. data/ext/sources/ggml/src/ggml-cpu/arch/powerpc/cpu-feats.cpp +82 -0
  210. data/ext/sources/ggml/src/ggml-cpu/arch/powerpc/quants.c +2732 -0
  211. data/ext/sources/ggml/src/ggml-cpu/arch/riscv/quants.c +2069 -0
  212. data/ext/sources/ggml/src/ggml-cpu/arch/riscv/repack.cpp +397 -0
  213. data/ext/sources/ggml/src/ggml-cpu/arch/s390/quants.c +1300 -0
  214. data/ext/sources/ggml/src/ggml-cpu/arch/wasm/quants.c +1481 -0
  215. data/ext/{ggml/src/ggml-cpu/cpu-feats-x86.cpp → sources/ggml/src/ggml-cpu/arch/x86/cpu-feats.cpp} +5 -1
  216. data/ext/sources/ggml/src/ggml-cpu/arch/x86/quants.c +4311 -0
  217. data/ext/sources/ggml/src/ggml-cpu/arch/x86/repack.cpp +3285 -0
  218. data/ext/sources/ggml/src/ggml-cpu/arch-fallback.h +184 -0
  219. data/ext/sources/ggml/src/ggml-cpu/binary-ops.cpp +158 -0
  220. data/ext/sources/ggml/src/ggml-cpu/binary-ops.h +16 -0
  221. data/ext/sources/ggml/src/ggml-cpu/cmake/FindSIMD.cmake +100 -0
  222. data/ext/sources/ggml/src/ggml-cpu/common.h +73 -0
  223. data/ext/{ggml → sources/ggml}/src/ggml-cpu/ggml-cpu-impl.h +172 -41
  224. data/ext/sources/ggml/src/ggml-cpu/ggml-cpu.c +3551 -0
  225. data/ext/{ggml → sources/ggml}/src/ggml-cpu/ggml-cpu.cpp +78 -25
  226. data/ext/{ggml/src/ggml-cpu/ggml-cpu-hbm.cpp → sources/ggml/src/ggml-cpu/hbm.cpp} +1 -1
  227. data/ext/sources/ggml/src/ggml-cpu/kleidiai/kernels.cpp +337 -0
  228. data/ext/sources/ggml/src/ggml-cpu/kleidiai/kernels.h +95 -0
  229. data/ext/sources/ggml/src/ggml-cpu/kleidiai/kleidiai.cpp +482 -0
  230. data/ext/sources/ggml/src/ggml-cpu/kleidiai/kleidiai.h +17 -0
  231. data/ext/sources/ggml/src/ggml-cpu/llamafile/sgemm.cpp +3594 -0
  232. data/ext/sources/ggml/src/ggml-cpu/llamafile/sgemm.h +19 -0
  233. data/ext/sources/ggml/src/ggml-cpu/ops.cpp +9786 -0
  234. data/ext/sources/ggml/src/ggml-cpu/ops.h +118 -0
  235. data/ext/sources/ggml/src/ggml-cpu/quants.c +1158 -0
  236. data/ext/{ggml/src/ggml-cpu/ggml-cpu-quants.h → sources/ggml/src/ggml-cpu/quants.h} +26 -0
  237. data/ext/sources/ggml/src/ggml-cpu/repack.cpp +1571 -0
  238. data/ext/sources/ggml/src/ggml-cpu/repack.h +98 -0
  239. data/ext/sources/ggml/src/ggml-cpu/simd-mappings.h +1184 -0
  240. data/ext/{ggml/src/ggml-cpu/ggml-cpu-traits.cpp → sources/ggml/src/ggml-cpu/traits.cpp} +1 -1
  241. data/ext/sources/ggml/src/ggml-cpu/unary-ops.cpp +186 -0
  242. data/ext/sources/ggml/src/ggml-cpu/unary-ops.h +28 -0
  243. data/ext/sources/ggml/src/ggml-cpu/vec.cpp +345 -0
  244. data/ext/sources/ggml/src/ggml-cpu/vec.h +1027 -0
  245. data/ext/sources/ggml/src/ggml-cuda/CMakeLists.txt +184 -0
  246. data/ext/sources/ggml/src/ggml-cuda/acc.cu +61 -0
  247. data/ext/sources/ggml/src/ggml-cuda/acc.cuh +5 -0
  248. data/ext/sources/ggml/src/ggml-cuda/arange.cu +34 -0
  249. data/ext/sources/ggml/src/ggml-cuda/arange.cuh +5 -0
  250. data/ext/sources/ggml/src/ggml-cuda/argmax.cu +91 -0
  251. data/ext/sources/ggml/src/ggml-cuda/argmax.cuh +3 -0
  252. data/ext/sources/ggml/src/ggml-cuda/argsort.cu +104 -0
  253. data/ext/sources/ggml/src/ggml-cuda/argsort.cuh +3 -0
  254. data/ext/sources/ggml/src/ggml-cuda/binbcast.cu +363 -0
  255. data/ext/sources/ggml/src/ggml-cuda/binbcast.cuh +9 -0
  256. data/ext/sources/ggml/src/ggml-cuda/clamp.cu +45 -0
  257. data/ext/sources/ggml/src/ggml-cuda/clamp.cuh +5 -0
  258. data/ext/sources/ggml/src/ggml-cuda/common.cuh +851 -0
  259. data/ext/sources/ggml/src/ggml-cuda/concat.cu +221 -0
  260. data/ext/sources/ggml/src/ggml-cuda/concat.cuh +5 -0
  261. data/ext/sources/ggml/src/ggml-cuda/conv-transpose-1d.cu +89 -0
  262. data/ext/sources/ggml/src/ggml-cuda/conv-transpose-1d.cuh +5 -0
  263. data/ext/sources/ggml/src/ggml-cuda/conv2d-dw.cu +161 -0
  264. data/ext/sources/ggml/src/ggml-cuda/conv2d-dw.cuh +5 -0
  265. data/ext/sources/ggml/src/ggml-cuda/conv2d-transpose.cu +91 -0
  266. data/ext/sources/ggml/src/ggml-cuda/conv2d-transpose.cuh +4 -0
  267. data/ext/sources/ggml/src/ggml-cuda/convert.cu +752 -0
  268. data/ext/sources/ggml/src/ggml-cuda/convert.cuh +31 -0
  269. data/ext/sources/ggml/src/ggml-cuda/count-equal.cu +64 -0
  270. data/ext/sources/ggml/src/ggml-cuda/count-equal.cuh +5 -0
  271. data/ext/sources/ggml/src/ggml-cuda/cp-async.cuh +57 -0
  272. data/ext/sources/ggml/src/ggml-cuda/cpy.cu +705 -0
  273. data/ext/sources/ggml/src/ggml-cuda/cpy.cuh +11 -0
  274. data/ext/sources/ggml/src/ggml-cuda/cross-entropy-loss.cu +189 -0
  275. data/ext/sources/ggml/src/ggml-cuda/cross-entropy-loss.cuh +7 -0
  276. data/ext/sources/ggml/src/ggml-cuda/dequantize.cuh +103 -0
  277. data/ext/sources/ggml/src/ggml-cuda/diagmask.cu +40 -0
  278. data/ext/sources/ggml/src/ggml-cuda/diagmask.cuh +5 -0
  279. data/ext/sources/ggml/src/ggml-cuda/fattn-common.cuh +881 -0
  280. data/ext/sources/ggml/src/ggml-cuda/fattn-mma-f16.cuh +1474 -0
  281. data/ext/sources/ggml/src/ggml-cuda/fattn-tile-f16.cu +357 -0
  282. data/ext/sources/ggml/src/ggml-cuda/fattn-tile-f16.cuh +3 -0
  283. data/ext/sources/ggml/src/ggml-cuda/fattn-tile-f32.cu +365 -0
  284. data/ext/sources/ggml/src/ggml-cuda/fattn-tile-f32.cuh +3 -0
  285. data/ext/sources/ggml/src/ggml-cuda/fattn-vec-f16.cuh +482 -0
  286. data/ext/sources/ggml/src/ggml-cuda/fattn-vec-f32.cuh +472 -0
  287. data/ext/sources/ggml/src/ggml-cuda/fattn-wmma-f16.cu +638 -0
  288. data/ext/sources/ggml/src/ggml-cuda/fattn-wmma-f16.cuh +3 -0
  289. data/ext/sources/ggml/src/ggml-cuda/fattn.cu +346 -0
  290. data/ext/sources/ggml/src/ggml-cuda/fattn.cuh +3 -0
  291. data/ext/sources/ggml/src/ggml-cuda/getrows.cu +275 -0
  292. data/ext/sources/ggml/src/ggml-cuda/getrows.cuh +15 -0
  293. data/ext/sources/ggml/src/ggml-cuda/ggml-cuda.cu +3647 -0
  294. data/ext/sources/ggml/src/ggml-cuda/gla.cu +93 -0
  295. data/ext/sources/ggml/src/ggml-cuda/gla.cuh +3 -0
  296. data/ext/sources/ggml/src/ggml-cuda/im2col.cu +103 -0
  297. data/ext/sources/ggml/src/ggml-cuda/im2col.cuh +5 -0
  298. data/ext/sources/ggml/src/ggml-cuda/mean.cu +19 -0
  299. data/ext/sources/ggml/src/ggml-cuda/mean.cuh +3 -0
  300. data/ext/sources/ggml/src/ggml-cuda/mma.cuh +396 -0
  301. data/ext/sources/ggml/src/ggml-cuda/mmq.cu +324 -0
  302. data/ext/sources/ggml/src/ggml-cuda/mmq.cuh +3217 -0
  303. data/ext/sources/ggml/src/ggml-cuda/mmv.cu +506 -0
  304. data/ext/sources/ggml/src/ggml-cuda/mmv.cuh +11 -0
  305. data/ext/sources/ggml/src/ggml-cuda/mmvq.cu +595 -0
  306. data/ext/sources/ggml/src/ggml-cuda/mmvq.cuh +12 -0
  307. data/ext/sources/ggml/src/ggml-cuda/norm.cu +458 -0
  308. data/ext/sources/ggml/src/ggml-cuda/norm.cuh +11 -0
  309. data/ext/sources/ggml/src/ggml-cuda/opt-step-adamw.cu +78 -0
  310. data/ext/sources/ggml/src/ggml-cuda/opt-step-adamw.cuh +5 -0
  311. data/ext/sources/ggml/src/ggml-cuda/out-prod.cu +68 -0
  312. data/ext/sources/ggml/src/ggml-cuda/out-prod.cuh +3 -0
  313. data/ext/sources/ggml/src/ggml-cuda/pad.cu +49 -0
  314. data/ext/sources/ggml/src/ggml-cuda/pad.cuh +5 -0
  315. data/ext/sources/ggml/src/ggml-cuda/pool2d.cu +94 -0
  316. data/ext/sources/ggml/src/ggml-cuda/pool2d.cuh +5 -0
  317. data/ext/sources/ggml/src/ggml-cuda/quantize.cu +190 -0
  318. data/ext/sources/ggml/src/ggml-cuda/quantize.cuh +27 -0
  319. data/ext/sources/ggml/src/ggml-cuda/rope.cu +456 -0
  320. data/ext/sources/ggml/src/ggml-cuda/rope.cuh +7 -0
  321. data/ext/sources/ggml/src/ggml-cuda/scale.cu +31 -0
  322. data/ext/sources/ggml/src/ggml-cuda/scale.cuh +5 -0
  323. data/ext/sources/ggml/src/ggml-cuda/softmax.cu +283 -0
  324. data/ext/sources/ggml/src/ggml-cuda/softmax.cuh +7 -0
  325. data/ext/sources/ggml/src/ggml-cuda/ssm-conv.cu +148 -0
  326. data/ext/sources/ggml/src/ggml-cuda/ssm-conv.cuh +3 -0
  327. data/ext/sources/ggml/src/ggml-cuda/ssm-scan.cu +155 -0
  328. data/ext/sources/ggml/src/ggml-cuda/ssm-scan.cuh +3 -0
  329. data/ext/sources/ggml/src/ggml-cuda/sum.cu +45 -0
  330. data/ext/sources/ggml/src/ggml-cuda/sum.cuh +5 -0
  331. data/ext/sources/ggml/src/ggml-cuda/sumrows.cu +26 -0
  332. data/ext/sources/ggml/src/ggml-cuda/sumrows.cuh +4 -0
  333. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-mma-f16-instance-ncols1_1-ncols2_16.cu +5 -0
  334. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-mma-f16-instance-ncols1_1-ncols2_8.cu +10 -0
  335. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-mma-f16-instance-ncols1_16-ncols2_1.cu +10 -0
  336. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-mma-f16-instance-ncols1_16-ncols2_2.cu +10 -0
  337. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-mma-f16-instance-ncols1_16-ncols2_4.cu +10 -0
  338. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-mma-f16-instance-ncols1_2-ncols2_16.cu +5 -0
  339. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-mma-f16-instance-ncols1_2-ncols2_4.cu +10 -0
  340. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-mma-f16-instance-ncols1_2-ncols2_8.cu +10 -0
  341. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-mma-f16-instance-ncols1_32-ncols2_1.cu +10 -0
  342. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-mma-f16-instance-ncols1_32-ncols2_2.cu +10 -0
  343. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-mma-f16-instance-ncols1_4-ncols2_16.cu +5 -0
  344. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-mma-f16-instance-ncols1_4-ncols2_2.cu +10 -0
  345. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-mma-f16-instance-ncols1_4-ncols2_4.cu +10 -0
  346. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-mma-f16-instance-ncols1_4-ncols2_8.cu +10 -0
  347. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-mma-f16-instance-ncols1_64-ncols2_1.cu +10 -0
  348. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-mma-f16-instance-ncols1_8-ncols2_1.cu +10 -0
  349. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-mma-f16-instance-ncols1_8-ncols2_2.cu +10 -0
  350. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-mma-f16-instance-ncols1_8-ncols2_4.cu +10 -0
  351. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-mma-f16-instance-ncols1_8-ncols2_8.cu +10 -0
  352. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-f16-f16.cu +5 -0
  353. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-f16-q4_0.cu +5 -0
  354. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-f16-q4_1.cu +5 -0
  355. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-f16-q5_0.cu +5 -0
  356. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-f16-q5_1.cu +5 -0
  357. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-f16-q8_0.cu +5 -0
  358. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q4_0-f16.cu +5 -0
  359. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q4_0-q4_0.cu +5 -0
  360. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q4_0-q4_1.cu +5 -0
  361. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q4_0-q5_0.cu +5 -0
  362. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q4_0-q5_1.cu +5 -0
  363. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q4_0-q8_0.cu +5 -0
  364. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q4_1-f16.cu +5 -0
  365. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q4_1-q4_0.cu +5 -0
  366. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q4_1-q4_1.cu +5 -0
  367. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q4_1-q5_0.cu +5 -0
  368. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q4_1-q5_1.cu +5 -0
  369. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q4_1-q8_0.cu +5 -0
  370. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q5_0-f16.cu +5 -0
  371. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q5_0-q4_0.cu +5 -0
  372. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q5_0-q4_1.cu +5 -0
  373. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q5_0-q5_0.cu +5 -0
  374. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q5_0-q5_1.cu +5 -0
  375. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q5_0-q8_0.cu +5 -0
  376. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q5_1-f16.cu +5 -0
  377. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q5_1-q4_0.cu +5 -0
  378. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q5_1-q4_1.cu +5 -0
  379. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q5_1-q5_0.cu +5 -0
  380. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q5_1-q5_1.cu +5 -0
  381. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q5_1-q8_0.cu +5 -0
  382. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q8_0-f16.cu +5 -0
  383. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q8_0-q4_0.cu +5 -0
  384. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q8_0-q4_1.cu +5 -0
  385. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q8_0-q5_0.cu +5 -0
  386. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q8_0-q5_1.cu +5 -0
  387. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q8_0-q8_0.cu +5 -0
  388. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f16-instance-hs256-f16-f16.cu +5 -0
  389. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f16-instance-hs64-f16-f16.cu +5 -0
  390. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f16-instance-hs64-f16-q4_0.cu +5 -0
  391. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f16-instance-hs64-f16-q4_1.cu +5 -0
  392. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f16-instance-hs64-f16-q5_0.cu +5 -0
  393. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f16-instance-hs64-f16-q5_1.cu +5 -0
  394. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f16-instance-hs64-f16-q8_0.cu +5 -0
  395. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-f16-f16.cu +5 -0
  396. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-f16-q4_0.cu +5 -0
  397. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-f16-q4_1.cu +5 -0
  398. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-f16-q5_0.cu +5 -0
  399. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-f16-q5_1.cu +5 -0
  400. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-f16-q8_0.cu +5 -0
  401. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q4_0-f16.cu +5 -0
  402. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q4_0-q4_0.cu +5 -0
  403. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q4_0-q4_1.cu +5 -0
  404. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q4_0-q5_0.cu +5 -0
  405. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q4_0-q5_1.cu +5 -0
  406. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q4_0-q8_0.cu +5 -0
  407. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q4_1-f16.cu +5 -0
  408. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q4_1-q4_0.cu +5 -0
  409. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q4_1-q4_1.cu +5 -0
  410. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q4_1-q5_0.cu +5 -0
  411. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q4_1-q5_1.cu +5 -0
  412. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q4_1-q8_0.cu +5 -0
  413. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q5_0-f16.cu +5 -0
  414. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q5_0-q4_0.cu +5 -0
  415. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q5_0-q4_1.cu +5 -0
  416. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q5_0-q5_0.cu +5 -0
  417. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q5_0-q5_1.cu +5 -0
  418. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q5_0-q8_0.cu +5 -0
  419. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q5_1-f16.cu +5 -0
  420. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q5_1-q4_0.cu +5 -0
  421. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q5_1-q4_1.cu +5 -0
  422. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q5_1-q5_0.cu +5 -0
  423. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q5_1-q5_1.cu +5 -0
  424. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q5_1-q8_0.cu +5 -0
  425. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q8_0-f16.cu +5 -0
  426. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q8_0-q4_0.cu +5 -0
  427. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q8_0-q4_1.cu +5 -0
  428. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q8_0-q5_0.cu +5 -0
  429. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q8_0-q5_1.cu +5 -0
  430. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q8_0-q8_0.cu +5 -0
  431. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f32-instance-hs256-f16-f16.cu +5 -0
  432. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f32-instance-hs64-f16-f16.cu +5 -0
  433. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f32-instance-hs64-f16-q4_0.cu +5 -0
  434. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f32-instance-hs64-f16-q4_1.cu +5 -0
  435. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f32-instance-hs64-f16-q5_0.cu +5 -0
  436. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f32-instance-hs64-f16-q5_1.cu +5 -0
  437. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f32-instance-hs64-f16-q8_0.cu +5 -0
  438. data/ext/sources/ggml/src/ggml-cuda/template-instances/generate_cu_files.py +78 -0
  439. data/ext/sources/ggml/src/ggml-cuda/template-instances/mmq-instance-iq1_s.cu +5 -0
  440. data/ext/sources/ggml/src/ggml-cuda/template-instances/mmq-instance-iq2_s.cu +5 -0
  441. data/ext/sources/ggml/src/ggml-cuda/template-instances/mmq-instance-iq2_xs.cu +5 -0
  442. data/ext/sources/ggml/src/ggml-cuda/template-instances/mmq-instance-iq2_xxs.cu +5 -0
  443. data/ext/sources/ggml/src/ggml-cuda/template-instances/mmq-instance-iq3_s.cu +5 -0
  444. data/ext/sources/ggml/src/ggml-cuda/template-instances/mmq-instance-iq3_xxs.cu +5 -0
  445. data/ext/sources/ggml/src/ggml-cuda/template-instances/mmq-instance-iq4_nl.cu +5 -0
  446. data/ext/sources/ggml/src/ggml-cuda/template-instances/mmq-instance-iq4_xs.cu +5 -0
  447. data/ext/sources/ggml/src/ggml-cuda/template-instances/mmq-instance-q2_k.cu +5 -0
  448. data/ext/sources/ggml/src/ggml-cuda/template-instances/mmq-instance-q3_k.cu +5 -0
  449. data/ext/sources/ggml/src/ggml-cuda/template-instances/mmq-instance-q4_0.cu +5 -0
  450. data/ext/sources/ggml/src/ggml-cuda/template-instances/mmq-instance-q4_1.cu +5 -0
  451. data/ext/sources/ggml/src/ggml-cuda/template-instances/mmq-instance-q4_k.cu +5 -0
  452. data/ext/sources/ggml/src/ggml-cuda/template-instances/mmq-instance-q5_0.cu +5 -0
  453. data/ext/sources/ggml/src/ggml-cuda/template-instances/mmq-instance-q5_1.cu +5 -0
  454. data/ext/sources/ggml/src/ggml-cuda/template-instances/mmq-instance-q5_k.cu +5 -0
  455. data/ext/sources/ggml/src/ggml-cuda/template-instances/mmq-instance-q6_k.cu +5 -0
  456. data/ext/sources/ggml/src/ggml-cuda/template-instances/mmq-instance-q8_0.cu +5 -0
  457. data/ext/sources/ggml/src/ggml-cuda/tsembd.cu +47 -0
  458. data/ext/sources/ggml/src/ggml-cuda/tsembd.cuh +5 -0
  459. data/ext/sources/ggml/src/ggml-cuda/unary.cu +378 -0
  460. data/ext/sources/ggml/src/ggml-cuda/unary.cuh +66 -0
  461. data/ext/sources/ggml/src/ggml-cuda/upscale.cu +51 -0
  462. data/ext/sources/ggml/src/ggml-cuda/upscale.cuh +5 -0
  463. data/ext/sources/ggml/src/ggml-cuda/vecdotq.cuh +1135 -0
  464. data/ext/{ggml → sources/ggml}/src/ggml-cuda/vendors/cuda.h +1 -0
  465. data/ext/{ggml → sources/ggml}/src/ggml-cuda/vendors/hip.h +57 -0
  466. data/ext/{ggml → sources/ggml}/src/ggml-cuda/vendors/musa.h +7 -1
  467. data/ext/sources/ggml/src/ggml-cuda/wkv.cu +199 -0
  468. data/ext/sources/ggml/src/ggml-cuda/wkv.cuh +7 -0
  469. data/ext/sources/ggml/src/ggml-hip/CMakeLists.txt +135 -0
  470. data/ext/{ggml → sources/ggml}/src/ggml-impl.h +147 -158
  471. data/ext/sources/ggml/src/ggml-kompute/CMakeLists.txt +166 -0
  472. data/ext/sources/ggml/src/ggml-kompute/kompute-shaders/common.comp +112 -0
  473. data/ext/sources/ggml/src/ggml-kompute/kompute-shaders/op_add.comp +58 -0
  474. data/ext/sources/ggml/src/ggml-kompute/kompute-shaders/op_addrow.comp +25 -0
  475. data/ext/sources/ggml/src/ggml-kompute/kompute-shaders/op_cpy_f16_f16.comp +52 -0
  476. data/ext/sources/ggml/src/ggml-kompute/kompute-shaders/op_cpy_f16_f32.comp +52 -0
  477. data/ext/sources/ggml/src/ggml-kompute/kompute-shaders/op_cpy_f32_f16.comp +52 -0
  478. data/ext/sources/ggml/src/ggml-kompute/kompute-shaders/op_cpy_f32_f32.comp +52 -0
  479. data/ext/sources/ggml/src/ggml-kompute/kompute-shaders/op_diagmask.comp +30 -0
  480. data/ext/sources/ggml/src/ggml-kompute/kompute-shaders/op_gelu.comp +22 -0
  481. data/ext/sources/ggml/src/ggml-kompute/kompute-shaders/op_getrows.comp +17 -0
  482. data/ext/sources/ggml/src/ggml-kompute/kompute-shaders/op_getrows_f16.comp +31 -0
  483. data/ext/sources/ggml/src/ggml-kompute/kompute-shaders/op_getrows_f32.comp +31 -0
  484. data/ext/sources/ggml/src/ggml-kompute/kompute-shaders/op_getrows_q4_0.comp +38 -0
  485. data/ext/sources/ggml/src/ggml-kompute/kompute-shaders/op_getrows_q4_1.comp +39 -0
  486. data/ext/sources/ggml/src/ggml-kompute/kompute-shaders/op_getrows_q6_k.comp +44 -0
  487. data/ext/sources/ggml/src/ggml-kompute/kompute-shaders/op_mul.comp +52 -0
  488. data/ext/sources/ggml/src/ggml-kompute/kompute-shaders/op_mul_mat_f16.comp +69 -0
  489. data/ext/sources/ggml/src/ggml-kompute/kompute-shaders/op_mul_mat_mat_f32.comp +51 -0
  490. data/ext/sources/ggml/src/ggml-kompute/kompute-shaders/op_mul_mat_q4_0.comp +33 -0
  491. data/ext/sources/ggml/src/ggml-kompute/kompute-shaders/op_mul_mat_q4_1.comp +35 -0
  492. data/ext/sources/ggml/src/ggml-kompute/kompute-shaders/op_mul_mat_q4_k.comp +140 -0
  493. data/ext/sources/ggml/src/ggml-kompute/kompute-shaders/op_mul_mat_q6_k.comp +106 -0
  494. data/ext/sources/ggml/src/ggml-kompute/kompute-shaders/op_mul_mat_q8_0.comp +73 -0
  495. data/ext/sources/ggml/src/ggml-kompute/kompute-shaders/op_mul_mv_q_n.comp +52 -0
  496. data/ext/sources/ggml/src/ggml-kompute/kompute-shaders/op_mul_mv_q_n_pre.comp +28 -0
  497. data/ext/sources/ggml/src/ggml-kompute/kompute-shaders/op_norm.comp +84 -0
  498. data/ext/sources/ggml/src/ggml-kompute/kompute-shaders/op_relu.comp +21 -0
  499. data/ext/sources/ggml/src/ggml-kompute/kompute-shaders/op_rmsnorm.comp +53 -0
  500. data/ext/sources/ggml/src/ggml-kompute/kompute-shaders/op_rope_neox_f16.comp +52 -0
  501. data/ext/sources/ggml/src/ggml-kompute/kompute-shaders/op_rope_neox_f32.comp +52 -0
  502. data/ext/sources/ggml/src/ggml-kompute/kompute-shaders/op_rope_norm_f16.comp +52 -0
  503. data/ext/sources/ggml/src/ggml-kompute/kompute-shaders/op_rope_norm_f32.comp +52 -0
  504. data/ext/sources/ggml/src/ggml-kompute/kompute-shaders/op_scale.comp +19 -0
  505. data/ext/sources/ggml/src/ggml-kompute/kompute-shaders/op_scale_8.comp +23 -0
  506. data/ext/sources/ggml/src/ggml-kompute/kompute-shaders/op_silu.comp +22 -0
  507. data/ext/sources/ggml/src/ggml-kompute/kompute-shaders/op_softmax.comp +72 -0
  508. data/ext/sources/ggml/src/ggml-kompute/kompute-shaders/rope_common.comp +71 -0
  509. data/ext/sources/ggml/src/ggml-metal/CMakeLists.txt +121 -0
  510. data/ext/sources/ggml/src/ggml-metal/ggml-metal-impl.h +649 -0
  511. data/ext/{ggml → sources/ggml}/src/ggml-metal/ggml-metal.m +2504 -1108
  512. data/ext/{ggml → sources/ggml}/src/ggml-metal/ggml-metal.metal +2102 -1463
  513. data/ext/sources/ggml/src/ggml-musa/CMakeLists.txt +113 -0
  514. data/ext/sources/ggml/src/ggml-musa/mudnn.cu +112 -0
  515. data/ext/sources/ggml/src/ggml-musa/mudnn.cuh +12 -0
  516. data/ext/sources/ggml/src/ggml-opencl/CMakeLists.txt +110 -0
  517. data/ext/sources/ggml/src/ggml-opencl/ggml-opencl.cpp +6494 -0
  518. data/ext/sources/ggml/src/ggml-opencl/kernels/add.cl +83 -0
  519. data/ext/sources/ggml/src/ggml-opencl/kernels/argsort.cl +86 -0
  520. data/ext/sources/ggml/src/ggml-opencl/kernels/clamp.cl +20 -0
  521. data/ext/sources/ggml/src/ggml-opencl/kernels/concat.cl +109 -0
  522. data/ext/sources/ggml/src/ggml-opencl/kernels/cpy.cl +184 -0
  523. data/ext/sources/ggml/src/ggml-opencl/kernels/cvt.cl +118 -0
  524. data/ext/sources/ggml/src/ggml-opencl/kernels/diag_mask_inf.cl +58 -0
  525. data/ext/sources/ggml/src/ggml-opencl/kernels/div.cl +72 -0
  526. data/ext/sources/ggml/src/ggml-opencl/kernels/embed_kernel.py +26 -0
  527. data/ext/sources/ggml/src/ggml-opencl/kernels/gelu.cl +62 -0
  528. data/ext/sources/ggml/src/ggml-opencl/kernels/gemv_noshuffle.cl +268 -0
  529. data/ext/sources/ggml/src/ggml-opencl/kernels/gemv_noshuffle_general.cl +274 -0
  530. data/ext/sources/ggml/src/ggml-opencl/kernels/get_rows.cl +163 -0
  531. data/ext/sources/ggml/src/ggml-opencl/kernels/glu.cl +201 -0
  532. data/ext/sources/ggml/src/ggml-opencl/kernels/group_norm.cl +72 -0
  533. data/ext/sources/ggml/src/ggml-opencl/kernels/im2col_f16.cl +57 -0
  534. data/ext/sources/ggml/src/ggml-opencl/kernels/im2col_f32.cl +57 -0
  535. data/ext/sources/ggml/src/ggml-opencl/kernels/mul.cl +79 -0
  536. data/ext/sources/ggml/src/ggml-opencl/kernels/mul_mat_Ab_Bi_8x4.cl +139 -0
  537. data/ext/sources/ggml/src/ggml-opencl/kernels/mul_mv_f16_f16.cl +118 -0
  538. data/ext/sources/ggml/src/ggml-opencl/kernels/mul_mv_f16_f32.cl +118 -0
  539. data/ext/sources/ggml/src/ggml-opencl/kernels/mul_mv_f16_f32_1row.cl +94 -0
  540. data/ext/sources/ggml/src/ggml-opencl/kernels/mul_mv_f16_f32_l4.cl +84 -0
  541. data/ext/sources/ggml/src/ggml-opencl/kernels/mul_mv_f32_f32.cl +118 -0
  542. data/ext/sources/ggml/src/ggml-opencl/kernels/mul_mv_id_q4_0_f32_8x_flat.cl +283 -0
  543. data/ext/sources/ggml/src/ggml-opencl/kernels/mul_mv_q4_0_f32.cl +192 -0
  544. data/ext/sources/ggml/src/ggml-opencl/kernels/mul_mv_q4_0_f32_1d_16x_flat.cl +307 -0
  545. data/ext/sources/ggml/src/ggml-opencl/kernels/mul_mv_q4_0_f32_1d_8x_flat.cl +265 -0
  546. data/ext/sources/ggml/src/ggml-opencl/kernels/mul_mv_q4_0_f32_8x_flat.cl +272 -0
  547. data/ext/sources/ggml/src/ggml-opencl/kernels/mul_mv_q4_0_f32_v.cl +254 -0
  548. data/ext/sources/ggml/src/ggml-opencl/kernels/mul_mv_q6_k.cl +190 -0
  549. data/ext/sources/ggml/src/ggml-opencl/kernels/norm.cl +81 -0
  550. data/ext/sources/ggml/src/ggml-opencl/kernels/pad.cl +30 -0
  551. data/ext/sources/ggml/src/ggml-opencl/kernels/relu.cl +16 -0
  552. data/ext/sources/ggml/src/ggml-opencl/kernels/repeat.cl +39 -0
  553. data/ext/sources/ggml/src/ggml-opencl/kernels/rms_norm.cl +96 -0
  554. data/ext/sources/ggml/src/ggml-opencl/kernels/rope.cl +721 -0
  555. data/ext/sources/ggml/src/ggml-opencl/kernels/scale.cl +16 -0
  556. data/ext/sources/ggml/src/ggml-opencl/kernels/sigmoid.cl +29 -0
  557. data/ext/sources/ggml/src/ggml-opencl/kernels/silu.cl +30 -0
  558. data/ext/sources/ggml/src/ggml-opencl/kernels/softmax_4_f16.cl +87 -0
  559. data/ext/sources/ggml/src/ggml-opencl/kernels/softmax_4_f32.cl +87 -0
  560. data/ext/sources/ggml/src/ggml-opencl/kernels/softmax_f16.cl +86 -0
  561. data/ext/sources/ggml/src/ggml-opencl/kernels/softmax_f32.cl +86 -0
  562. data/ext/sources/ggml/src/ggml-opencl/kernels/sub.cl +72 -0
  563. data/ext/sources/ggml/src/ggml-opencl/kernels/sum_rows.cl +39 -0
  564. data/ext/sources/ggml/src/ggml-opencl/kernels/tanh.cl +63 -0
  565. data/ext/sources/ggml/src/ggml-opencl/kernels/transpose.cl +84 -0
  566. data/ext/sources/ggml/src/ggml-opencl/kernels/tsembd.cl +48 -0
  567. data/ext/sources/ggml/src/ggml-opencl/kernels/upscale.cl +121 -0
  568. data/ext/{ggml → sources/ggml}/src/ggml-opt.cpp +373 -190
  569. data/ext/{ggml → sources/ggml}/src/ggml-quants.c +120 -128
  570. data/ext/sources/ggml/src/ggml-rpc/CMakeLists.txt +9 -0
  571. data/ext/{ggml → sources/ggml}/src/ggml-rpc/ggml-rpc.cpp +494 -84
  572. data/ext/sources/ggml/src/ggml-sycl/CMakeLists.txt +189 -0
  573. data/ext/sources/ggml/src/ggml-sycl/backend.hpp +37 -0
  574. data/ext/sources/ggml/src/ggml-sycl/binbcast.cpp +344 -0
  575. data/ext/sources/ggml/src/ggml-sycl/binbcast.hpp +39 -0
  576. data/ext/{ggml → sources/ggml}/src/ggml-sycl/common.cpp +20 -32
  577. data/ext/sources/ggml/src/ggml-sycl/common.hpp +561 -0
  578. data/ext/{ggml → sources/ggml}/src/ggml-sycl/concat.cpp +56 -70
  579. data/ext/sources/ggml/src/ggml-sycl/concat.hpp +20 -0
  580. data/ext/{ggml → sources/ggml}/src/ggml-sycl/conv.cpp +8 -12
  581. data/ext/sources/ggml/src/ggml-sycl/conv.hpp +20 -0
  582. data/ext/sources/ggml/src/ggml-sycl/convert.cpp +575 -0
  583. data/ext/sources/ggml/src/ggml-sycl/convert.hpp +34 -0
  584. data/ext/sources/ggml/src/ggml-sycl/cpy.cpp +839 -0
  585. data/ext/sources/ggml/src/ggml-sycl/cpy.hpp +11 -0
  586. data/ext/sources/ggml/src/ggml-sycl/dequantize.hpp +823 -0
  587. data/ext/{ggml → sources/ggml}/src/ggml-sycl/dmmv.cpp +188 -67
  588. data/ext/sources/ggml/src/ggml-sycl/dmmv.hpp +27 -0
  589. data/ext/sources/ggml/src/ggml-sycl/dpct/helper.hpp +2987 -0
  590. data/ext/sources/ggml/src/ggml-sycl/element_wise.cpp +1120 -0
  591. data/ext/sources/ggml/src/ggml-sycl/element_wise.hpp +84 -0
  592. data/ext/sources/ggml/src/ggml-sycl/gemm.hpp +102 -0
  593. data/ext/sources/ggml/src/ggml-sycl/getrows.cpp +212 -0
  594. data/ext/sources/ggml/src/ggml-sycl/getrows.hpp +20 -0
  595. data/ext/{ggml → sources/ggml}/src/ggml-sycl/ggml-sycl.cpp +1197 -1295
  596. data/ext/sources/ggml/src/ggml-sycl/gla.cpp +106 -0
  597. data/ext/sources/ggml/src/ggml-sycl/gla.hpp +8 -0
  598. data/ext/sources/ggml/src/ggml-sycl/im2col.cpp +136 -0
  599. data/ext/sources/ggml/src/ggml-sycl/im2col.hpp +21 -0
  600. data/ext/{ggml → sources/ggml}/src/ggml-sycl/mmq.cpp +60 -81
  601. data/ext/sources/ggml/src/ggml-sycl/mmq.hpp +33 -0
  602. data/ext/sources/ggml/src/ggml-sycl/mmvq.cpp +1065 -0
  603. data/ext/sources/ggml/src/ggml-sycl/mmvq.hpp +27 -0
  604. data/ext/sources/ggml/src/ggml-sycl/norm.cpp +482 -0
  605. data/ext/sources/ggml/src/ggml-sycl/norm.hpp +26 -0
  606. data/ext/{ggml → sources/ggml}/src/ggml-sycl/outprod.cpp +8 -17
  607. data/ext/sources/ggml/src/ggml-sycl/outprod.hpp +10 -0
  608. data/ext/sources/ggml/src/ggml-sycl/presets.hpp +74 -0
  609. data/ext/sources/ggml/src/ggml-sycl/quants.hpp +111 -0
  610. data/ext/sources/ggml/src/ggml-sycl/rope.cpp +472 -0
  611. data/ext/sources/ggml/src/ggml-sycl/rope.hpp +20 -0
  612. data/ext/{ggml → sources/ggml}/src/ggml-sycl/softmax.cpp +38 -28
  613. data/ext/sources/ggml/src/ggml-sycl/softmax.hpp +20 -0
  614. data/ext/sources/ggml/src/ggml-sycl/sycl_hw.cpp +15 -0
  615. data/ext/sources/ggml/src/ggml-sycl/sycl_hw.hpp +26 -0
  616. data/ext/{ggml → sources/ggml}/src/ggml-sycl/tsembd.cpp +6 -11
  617. data/ext/sources/ggml/src/ggml-sycl/tsembd.hpp +20 -0
  618. data/ext/sources/ggml/src/ggml-sycl/vecdotq.hpp +1307 -0
  619. data/ext/sources/ggml/src/ggml-sycl/wkv.cpp +289 -0
  620. data/ext/sources/ggml/src/ggml-sycl/wkv.hpp +10 -0
  621. data/ext/sources/ggml/src/ggml-vulkan/CMakeLists.txt +200 -0
  622. data/ext/sources/ggml/src/ggml-vulkan/cmake/host-toolchain.cmake.in +15 -0
  623. data/ext/{ggml → sources/ggml}/src/ggml-vulkan/ggml-vulkan.cpp +3822 -1335
  624. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/CMakeLists.txt +31 -0
  625. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/acc.comp +29 -0
  626. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/add.comp +29 -0
  627. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/argmax.comp +51 -0
  628. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/argsort.comp +69 -0
  629. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/clamp.comp +17 -0
  630. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/concat.comp +41 -0
  631. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/contig_copy.comp +49 -0
  632. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/conv2d_dw.comp +105 -0
  633. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/conv_transpose_1d.comp +98 -0
  634. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/copy.comp +23 -0
  635. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/copy_from_quant.comp +51 -0
  636. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/copy_to_quant.comp +242 -0
  637. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/cos.comp +17 -0
  638. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/count_equal.comp +31 -0
  639. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/dequant_f32.comp +20 -0
  640. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/dequant_funcs.comp +462 -0
  641. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/dequant_funcs_cm2.comp +699 -0
  642. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/dequant_head.comp +13 -0
  643. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/dequant_iq1_m.comp +42 -0
  644. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/dequant_iq1_s.comp +35 -0
  645. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/dequant_iq2_s.comp +44 -0
  646. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/dequant_iq2_xs.comp +43 -0
  647. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/dequant_iq2_xxs.comp +48 -0
  648. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/dequant_iq3_s.comp +39 -0
  649. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/dequant_iq3_xxs.comp +49 -0
  650. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/dequant_iq4_nl.comp +32 -0
  651. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/dequant_iq4_xs.comp +34 -0
  652. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/dequant_q2_k.comp +34 -0
  653. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/dequant_q3_k.comp +42 -0
  654. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/dequant_q4_0.comp +30 -0
  655. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/dequant_q4_1.comp +32 -0
  656. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/dequant_q4_k.comp +68 -0
  657. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/dequant_q5_0.comp +34 -0
  658. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/dequant_q5_1.comp +35 -0
  659. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/dequant_q5_k.comp +70 -0
  660. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/dequant_q6_k.comp +33 -0
  661. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/dequant_q8_0.comp +31 -0
  662. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/diag_mask_inf.comp +34 -0
  663. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/div.comp +27 -0
  664. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/flash_attn.comp +337 -0
  665. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/flash_attn_base.comp +162 -0
  666. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/flash_attn_cm1.comp +360 -0
  667. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/flash_attn_cm2.comp +267 -0
  668. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/flash_attn_split_k_reduce.comp +59 -0
  669. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/geglu.comp +13 -0
  670. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/gelu.comp +25 -0
  671. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/gelu_quick.comp +23 -0
  672. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/generic_binary_head.comp +64 -0
  673. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/generic_head.comp +9 -0
  674. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/generic_unary_head.comp +76 -0
  675. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/get_rows.comp +33 -0
  676. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/get_rows_quant.comp +41 -0
  677. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/glu_head.comp +15 -0
  678. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/glu_main.comp +29 -0
  679. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/group_norm.comp +66 -0
  680. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/im2col.comp +100 -0
  681. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/l2_norm.comp +41 -0
  682. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/leaky_relu.comp +22 -0
  683. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/mul.comp +27 -0
  684. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/mul_mat_split_k_reduce.comp +48 -0
  685. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/mul_mat_vec.comp +169 -0
  686. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/mul_mat_vec_base.comp +118 -0
  687. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/mul_mat_vec_iq1_m.comp +82 -0
  688. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/mul_mat_vec_iq1_s.comp +79 -0
  689. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/mul_mat_vec_iq2_s.comp +90 -0
  690. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/mul_mat_vec_iq2_xs.comp +87 -0
  691. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/mul_mat_vec_iq2_xxs.comp +87 -0
  692. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/mul_mat_vec_iq3_s.comp +90 -0
  693. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/mul_mat_vec_iq3_xxs.comp +88 -0
  694. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/mul_mat_vec_nc.comp +118 -0
  695. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/mul_mat_vec_p021.comp +154 -0
  696. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/mul_mat_vec_q2_k.comp +130 -0
  697. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/mul_mat_vec_q3_k.comp +132 -0
  698. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/mul_mat_vec_q4_k.comp +136 -0
  699. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/mul_mat_vec_q5_k.comp +167 -0
  700. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/mul_mat_vec_q6_k.comp +130 -0
  701. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/mul_mm.comp +868 -0
  702. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/mul_mm_cm2.comp +441 -0
  703. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/mul_mmq.comp +442 -0
  704. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/mul_mmq_funcs.comp +99 -0
  705. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/norm.comp +44 -0
  706. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/opt_step_adamw.comp +42 -0
  707. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/pad.comp +28 -0
  708. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/pool2d.comp +74 -0
  709. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/quantize_q8_1.comp +77 -0
  710. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/reglu.comp +9 -0
  711. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/relu.comp +21 -0
  712. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/repeat.comp +26 -0
  713. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/repeat_back.comp +37 -0
  714. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/rms_norm.comp +61 -0
  715. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/rms_norm_back.comp +55 -0
  716. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/rope_head.comp +58 -0
  717. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/rope_multi.comp +60 -0
  718. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/rope_neox.comp +43 -0
  719. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/rope_norm.comp +43 -0
  720. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/rope_vision.comp +47 -0
  721. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/scale.comp +24 -0
  722. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/sigmoid.comp +20 -0
  723. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/silu.comp +22 -0
  724. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/silu_back.comp +26 -0
  725. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/sin.comp +17 -0
  726. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/soft_max.comp +173 -0
  727. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/soft_max_back.comp +50 -0
  728. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/square.comp +17 -0
  729. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/sub.comp +29 -0
  730. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/sum_rows.comp +37 -0
  731. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/swiglu.comp +9 -0
  732. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/tanh.comp +20 -0
  733. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/test_bfloat16_support.comp +7 -0
  734. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/test_coopmat2_support.comp +7 -0
  735. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/test_coopmat_support.comp +7 -0
  736. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/test_integer_dot_support.comp +7 -0
  737. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/timestep_embedding.comp +41 -0
  738. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/types.comp +1373 -0
  739. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/upscale.comp +36 -0
  740. data/ext/{ggml → sources/ggml}/src/ggml-vulkan/vulkan-shaders/vulkan-shaders-gen.cpp +203 -36
  741. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/wkv6.comp +87 -0
  742. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/wkv7.comp +91 -0
  743. data/ext/{ggml → sources/ggml}/src/ggml.c +918 -1782
  744. data/ext/sources/ggml/src/ggml.cpp +26 -0
  745. data/ext/sources/ggml/src/gguf.cpp +1351 -0
  746. data/ext/{include → sources/include}/whisper.h +70 -2
  747. data/ext/sources/src/CMakeLists.txt +145 -0
  748. data/ext/sources/src/coreml/whisper-compat.h +10 -0
  749. data/ext/sources/src/coreml/whisper-compat.m +35 -0
  750. data/ext/{src → sources/src}/coreml/whisper-decoder-impl.h +27 -15
  751. data/ext/{src → sources/src}/coreml/whisper-decoder-impl.m +36 -10
  752. data/ext/{src → sources/src}/coreml/whisper-encoder-impl.h +21 -9
  753. data/ext/{src → sources/src}/coreml/whisper-encoder-impl.m +29 -3
  754. data/ext/sources/src/coreml/whisper-encoder.mm +73 -0
  755. data/ext/sources/src/whisper-arch.h +197 -0
  756. data/ext/{src → sources/src}/whisper.cpp +1966 -386
  757. data/ext/sources/tests/CMakeLists.txt +105 -0
  758. data/ext/sources/tests/earnings21/eval.mk +58 -0
  759. data/ext/sources/tests/earnings21/eval.py +68 -0
  760. data/ext/sources/tests/earnings21/normalizers/__init__.py +2 -0
  761. data/ext/sources/tests/earnings21/normalizers/basic.py +80 -0
  762. data/ext/sources/tests/earnings21/normalizers/english.json +1741 -0
  763. data/ext/sources/tests/earnings21/normalizers/english.py +550 -0
  764. data/ext/sources/tests/earnings21/requirements.txt +6 -0
  765. data/ext/sources/tests/en-0-ref.txt +1 -0
  766. data/ext/sources/tests/en-1-ref.txt +1 -0
  767. data/ext/sources/tests/en-2-ref.txt +1 -0
  768. data/ext/sources/tests/es-0-ref.txt +1 -0
  769. data/ext/sources/tests/librispeech/eval.mk +39 -0
  770. data/ext/sources/tests/librispeech/eval.py +47 -0
  771. data/ext/sources/tests/librispeech/normalizers/__init__.py +2 -0
  772. data/ext/sources/tests/librispeech/normalizers/basic.py +80 -0
  773. data/ext/sources/tests/librispeech/normalizers/english.json +1741 -0
  774. data/ext/sources/tests/librispeech/normalizers/english.py +550 -0
  775. data/ext/sources/tests/librispeech/requirements.txt +6 -0
  776. data/ext/sources/tests/run-tests.sh +130 -0
  777. data/ext/sources/tests/test-c.c +3 -0
  778. data/ext/sources/tests/test-vad-full.cpp +54 -0
  779. data/ext/sources/tests/test-vad.cpp +83 -0
  780. data/ext/sources/tests/test-whisper.js +58 -0
  781. data/extsources.rb +39 -5
  782. data/lib/whisper/context.rb +15 -0
  783. data/lib/whisper/model/uri.rb +202 -126
  784. data/lib/whisper/segment.rb +58 -0
  785. data/sig/whisper.rbs +510 -0
  786. data/test/helper.rb +24 -0
  787. data/{tests → test}/test_callback.rb +45 -3
  788. data/{tests → test}/test_error.rb +2 -2
  789. data/{tests → test}/test_model.rb +47 -0
  790. data/test/test_package.rb +51 -0
  791. data/test/test_params.rb +297 -0
  792. data/test/test_segment.rb +146 -0
  793. data/test/test_vad.rb +19 -0
  794. data/test/test_vad_params.rb +103 -0
  795. data/{tests → test}/test_whisper.rb +106 -36
  796. data/whispercpp.gemspec +5 -5
  797. metadata +837 -134
  798. data/ext/cpu.mk +0 -9
  799. data/ext/examples/dr_wav.h +0 -8815
  800. data/ext/ggml/src/ggml-cann/aclnn_ops.h +0 -592
  801. data/ext/ggml/src/ggml-cpu/ggml-cpu-aarch64.cpp +0 -4262
  802. data/ext/ggml/src/ggml-cpu/ggml-cpu-aarch64.h +0 -8
  803. data/ext/ggml/src/ggml-cpu/ggml-cpu-quants.c +0 -10835
  804. data/ext/ggml/src/ggml-cpu/ggml-cpu.c +0 -14123
  805. data/ext/ggml/src/ggml-cpu/llamafile/sgemm.cpp +0 -1884
  806. data/ext/ggml/src/ggml-cpu/llamafile/sgemm.h +0 -14
  807. data/ext/ggml/src/ggml-metal/ggml-metal-impl.h +0 -288
  808. data/ext/ggml/src/ggml-sycl/convert.cpp +0 -547
  809. data/ext/ggml/src/ggml-sycl/element_wise.cpp +0 -1030
  810. data/ext/ggml/src/ggml-sycl/im2col.cpp +0 -126
  811. data/ext/ggml/src/ggml-sycl/mmvq.cpp +0 -1015
  812. data/ext/ggml/src/ggml-sycl/norm.cpp +0 -378
  813. data/ext/ggml/src/ggml-sycl/rope.cpp +0 -276
  814. data/ext/ggml/src/ggml-sycl/wkv6.cpp +0 -141
  815. data/ext/metal-embed.mk +0 -17
  816. data/ext/metal.mk +0 -6
  817. data/ext/ruby_whisper.cpp +0 -1909
  818. data/ext/scripts/get-flags.mk +0 -38
  819. data/lib/whisper.rb +0 -2
  820. data/tests/helper.rb +0 -7
  821. data/tests/test_package.rb +0 -31
  822. data/tests/test_params.rb +0 -160
  823. data/tests/test_segment.rb +0 -83
  824. /data/ext/{ggml → sources/ggml}/include/ggml-blas.h +0 -0
  825. /data/ext/{ggml → sources/ggml}/include/ggml-cann.h +0 -0
  826. /data/ext/{ggml → sources/ggml}/include/ggml-cuda.h +0 -0
  827. /data/ext/{ggml → sources/ggml}/include/ggml-kompute.h +0 -0
  828. /data/ext/{ggml → sources/ggml}/include/ggml-opencl.h +0 -0
  829. /data/ext/{ggml → sources/ggml}/include/ggml-sycl.h +0 -0
  830. /data/ext/{ggml → sources/ggml}/src/ggml-amx/common.h +0 -0
  831. /data/ext/{ggml → sources/ggml}/src/ggml-amx/ggml-amx.cpp +0 -0
  832. /data/ext/{ggml → sources/ggml}/src/ggml-amx/mmq.cpp +0 -0
  833. /data/ext/{ggml → sources/ggml}/src/ggml-amx/mmq.h +0 -0
  834. /data/ext/{ggml → sources/ggml}/src/ggml-blas/ggml-blas.cpp +0 -0
  835. /data/ext/{ggml → sources/ggml}/src/ggml-cann/kernels/ascendc_kernels.h +0 -0
  836. /data/ext/{ggml → sources/ggml}/src/ggml-cann/kernels/get_row_f16.cpp +0 -0
  837. /data/ext/{ggml → sources/ggml}/src/ggml-cann/kernels/get_row_f32.cpp +0 -0
  838. /data/ext/{ggml → sources/ggml}/src/ggml-cann/kernels/get_row_q4_0.cpp +0 -0
  839. /data/ext/{ggml → sources/ggml}/src/ggml-cann/kernels/get_row_q8_0.cpp +0 -0
  840. /data/ext/{ggml → sources/ggml}/src/ggml-cann/kernels/quantize_f16_q8_0.cpp +0 -0
  841. /data/ext/{ggml → sources/ggml}/src/ggml-cann/kernels/quantize_f32_q8_0.cpp +0 -0
  842. /data/ext/{ggml → sources/ggml}/src/ggml-cann/kernels/quantize_float_to_q4_0.cpp +0 -0
  843. /data/ext/{ggml → sources/ggml}/src/ggml-cpu/amx/amx.h +0 -0
  844. /data/ext/{ggml → sources/ggml}/src/ggml-cpu/amx/common.h +0 -0
  845. /data/ext/{ggml → sources/ggml}/src/ggml-cpu/amx/mmq.h +0 -0
  846. /data/ext/{ggml/src/ggml-cpu/ggml-cpu-hbm.h → sources/ggml/src/ggml-cpu/hbm.h} +0 -0
  847. /data/ext/{ggml/src/ggml-cpu/ggml-cpu-traits.h → sources/ggml/src/ggml-cpu/traits.h} +0 -0
  848. /data/ext/{ggml → sources/ggml}/src/ggml-kompute/ggml-kompute.cpp +0 -0
  849. /data/ext/{ggml → sources/ggml}/src/ggml-quants.h +0 -0
  850. /data/ext/{ggml → sources/ggml}/src/ggml-threading.cpp +0 -0
  851. /data/ext/{ggml → sources/ggml}/src/ggml-threading.h +0 -0
  852. /data/ext/{src → sources/src}/coreml/whisper-encoder.h +0 -0
  853. /data/ext/{src → sources/src}/openvino/whisper-openvino-encoder.cpp +0 -0
  854. /data/ext/{src → sources/src}/openvino/whisper-openvino-encoder.h +0 -0
  855. /data/{tests → test}/jfk_reader/.gitignore +0 -0
  856. /data/{tests → test}/jfk_reader/extconf.rb +0 -0
  857. /data/{tests → test}/jfk_reader/jfk_reader.c +0 -0
@@ -0,0 +1,1914 @@
1
+ #include "llama-arch.h"
2
+
3
+ #include "llama-impl.h"
4
+
5
+ #include <map>
6
+
7
+ static const std::map<llm_arch, const char *> LLM_ARCH_NAMES = {
8
+ { LLM_ARCH_LLAMA, "llama" },
9
+ { LLM_ARCH_LLAMA4, "llama4" },
10
+ { LLM_ARCH_DECI, "deci" },
11
+ { LLM_ARCH_FALCON, "falcon" },
12
+ { LLM_ARCH_GROK, "grok" },
13
+ { LLM_ARCH_GPT2, "gpt2" },
14
+ { LLM_ARCH_GPTJ, "gptj" },
15
+ { LLM_ARCH_GPTNEOX, "gptneox" },
16
+ { LLM_ARCH_MPT, "mpt" },
17
+ { LLM_ARCH_BAICHUAN, "baichuan" },
18
+ { LLM_ARCH_STARCODER, "starcoder" },
19
+ { LLM_ARCH_REFACT, "refact" },
20
+ { LLM_ARCH_BERT, "bert" },
21
+ { LLM_ARCH_NOMIC_BERT, "nomic-bert" },
22
+ { LLM_ARCH_NOMIC_BERT_MOE, "nomic-bert-moe" },
23
+ { LLM_ARCH_NEO_BERT, "neo-bert" },
24
+ { LLM_ARCH_JINA_BERT_V2, "jina-bert-v2" },
25
+ { LLM_ARCH_BLOOM, "bloom" },
26
+ { LLM_ARCH_STABLELM, "stablelm" },
27
+ { LLM_ARCH_QWEN, "qwen" },
28
+ { LLM_ARCH_QWEN2, "qwen2" },
29
+ { LLM_ARCH_QWEN2MOE, "qwen2moe" },
30
+ { LLM_ARCH_QWEN2VL, "qwen2vl" },
31
+ { LLM_ARCH_QWEN3, "qwen3" },
32
+ { LLM_ARCH_QWEN3MOE, "qwen3moe" },
33
+ { LLM_ARCH_PHI2, "phi2" },
34
+ { LLM_ARCH_PHI3, "phi3" },
35
+ { LLM_ARCH_PHIMOE, "phimoe" },
36
+ { LLM_ARCH_PLAMO, "plamo" },
37
+ { LLM_ARCH_CODESHELL, "codeshell" },
38
+ { LLM_ARCH_ORION, "orion" },
39
+ { LLM_ARCH_INTERNLM2, "internlm2" },
40
+ { LLM_ARCH_MINICPM, "minicpm" },
41
+ { LLM_ARCH_MINICPM3, "minicpm3" },
42
+ { LLM_ARCH_GEMMA, "gemma" },
43
+ { LLM_ARCH_GEMMA2, "gemma2" },
44
+ { LLM_ARCH_GEMMA3, "gemma3" },
45
+ { LLM_ARCH_GEMMA3N, "gemma3n" },
46
+ { LLM_ARCH_STARCODER2, "starcoder2" },
47
+ { LLM_ARCH_MAMBA, "mamba" },
48
+ { LLM_ARCH_XVERSE, "xverse" },
49
+ { LLM_ARCH_COMMAND_R, "command-r" },
50
+ { LLM_ARCH_COHERE2, "cohere2" },
51
+ { LLM_ARCH_DBRX, "dbrx" },
52
+ { LLM_ARCH_OLMO, "olmo" },
53
+ { LLM_ARCH_OLMO2, "olmo2" },
54
+ { LLM_ARCH_OLMOE, "olmoe" },
55
+ { LLM_ARCH_OPENELM, "openelm" },
56
+ { LLM_ARCH_ARCTIC, "arctic" },
57
+ { LLM_ARCH_DEEPSEEK, "deepseek" },
58
+ { LLM_ARCH_DEEPSEEK2, "deepseek2" },
59
+ { LLM_ARCH_CHATGLM, "chatglm" },
60
+ { LLM_ARCH_GLM4, "glm4" },
61
+ { LLM_ARCH_BITNET, "bitnet" },
62
+ { LLM_ARCH_T5, "t5" },
63
+ { LLM_ARCH_T5ENCODER, "t5encoder" },
64
+ { LLM_ARCH_JAIS, "jais" },
65
+ { LLM_ARCH_NEMOTRON, "nemotron" },
66
+ { LLM_ARCH_EXAONE, "exaone" },
67
+ { LLM_ARCH_RWKV6, "rwkv6" },
68
+ { LLM_ARCH_RWKV6QWEN2, "rwkv6qwen2" },
69
+ { LLM_ARCH_RWKV7, "rwkv7" },
70
+ { LLM_ARCH_ARWKV7, "arwkv7" },
71
+ { LLM_ARCH_GRANITE, "granite" },
72
+ { LLM_ARCH_GRANITE_MOE, "granitemoe" },
73
+ { LLM_ARCH_CHAMELEON, "chameleon" },
74
+ { LLM_ARCH_WAVTOKENIZER_DEC, "wavtokenizer-dec" },
75
+ { LLM_ARCH_PLM, "plm" },
76
+ { LLM_ARCH_BAILINGMOE, "bailingmoe" },
77
+ { LLM_ARCH_DOTS1, "dots1" },
78
+ { LLM_ARCH_ARCEE, "arcee" },
79
+ { LLM_ARCH_ERNIE4_5, "ernie4_5" },
80
+ { LLM_ARCH_UNKNOWN, "(unknown)" },
81
+ };
82
+
83
+ static const std::map<llm_kv, const char *> LLM_KV_NAMES = {
84
+ { LLM_KV_GENERAL_TYPE, "general.type" },
85
+ { LLM_KV_GENERAL_ARCHITECTURE, "general.architecture" },
86
+ { LLM_KV_GENERAL_QUANTIZATION_VERSION, "general.quantization_version" },
87
+ { LLM_KV_GENERAL_ALIGNMENT, "general.alignment" },
88
+ { LLM_KV_GENERAL_FILE_TYPE, "general.file_type" },
89
+ { LLM_KV_GENERAL_NAME, "general.name" },
90
+ { LLM_KV_GENERAL_AUTHOR, "general.author" },
91
+ { LLM_KV_GENERAL_VERSION, "general.version" },
92
+ { LLM_KV_GENERAL_URL, "general.url" },
93
+ { LLM_KV_GENERAL_DESCRIPTION, "general.description" },
94
+ { LLM_KV_GENERAL_LICENSE, "general.license" },
95
+ { LLM_KV_GENERAL_SOURCE_URL, "general.source.url" },
96
+ { LLM_KV_GENERAL_SOURCE_HF_REPO, "general.source.huggingface.repository" },
97
+
98
+ { LLM_KV_VOCAB_SIZE, "%s.vocab_size" },
99
+ { LLM_KV_CONTEXT_LENGTH, "%s.context_length" },
100
+ { LLM_KV_EMBEDDING_LENGTH, "%s.embedding_length" },
101
+ { LLM_KV_FEATURES_LENGTH, "%s.features_length" },
102
+ { LLM_KV_BLOCK_COUNT, "%s.block_count" },
103
+ { LLM_KV_LEADING_DENSE_BLOCK_COUNT, "%s.leading_dense_block_count" },
104
+ { LLM_KV_FEED_FORWARD_LENGTH, "%s.feed_forward_length" },
105
+ { LLM_KV_EXPERT_FEED_FORWARD_LENGTH, "%s.expert_feed_forward_length" },
106
+ { LLM_KV_EXPERT_SHARED_FEED_FORWARD_LENGTH, "%s.expert_shared_feed_forward_length" },
107
+ { LLM_KV_USE_PARALLEL_RESIDUAL, "%s.use_parallel_residual" },
108
+ { LLM_KV_TENSOR_DATA_LAYOUT, "%s.tensor_data_layout" },
109
+ { LLM_KV_EXPERT_COUNT, "%s.expert_count" },
110
+ { LLM_KV_EXPERT_USED_COUNT, "%s.expert_used_count" },
111
+ { LLM_KV_EXPERT_SHARED_COUNT, "%s.expert_shared_count" },
112
+ { LLM_KV_EXPERT_WEIGHTS_SCALE, "%s.expert_weights_scale" },
113
+ { LLM_KV_EXPERT_WEIGHTS_NORM, "%s.expert_weights_norm" },
114
+ { LLM_KV_EXPERT_GATING_FUNC, "%s.expert_gating_func" },
115
+ { LLM_KV_MOE_EVERY_N_LAYERS, "%s.moe_every_n_layers" },
116
+ { LLM_KV_POOLING_TYPE, "%s.pooling_type" },
117
+ { LLM_KV_LOGIT_SCALE, "%s.logit_scale" },
118
+ { LLM_KV_DECODER_START_TOKEN_ID, "%s.decoder_start_token_id" },
119
+ { LLM_KV_ATTN_LOGIT_SOFTCAPPING, "%s.attn_logit_softcapping" },
120
+ { LLM_KV_FINAL_LOGIT_SOFTCAPPING, "%s.final_logit_softcapping" },
121
+ { LLM_KV_SWIN_NORM, "%s.swin_norm" },
122
+ { LLM_KV_RESCALE_EVERY_N_LAYERS, "%s.rescale_every_n_layers" },
123
+ { LLM_KV_TIME_MIX_EXTRA_DIM, "%s.time_mix_extra_dim" },
124
+ { LLM_KV_TIME_DECAY_EXTRA_DIM, "%s.time_decay_extra_dim" },
125
+ { LLM_KV_RESIDUAL_SCALE, "%s.residual_scale" },
126
+ { LLM_KV_EMBEDDING_SCALE, "%s.embedding_scale" },
127
+ { LLM_KV_TOKEN_SHIFT_COUNT, "%s.token_shift_count" },
128
+ { LLM_KV_INTERLEAVE_MOE_LAYER_STEP, "%s.interleave_moe_layer_step" },
129
+
130
+ { LLM_KV_ATTENTION_HEAD_COUNT, "%s.attention.head_count" },
131
+ { LLM_KV_ATTENTION_HEAD_COUNT_KV, "%s.attention.head_count_kv" },
132
+ { LLM_KV_ATTENTION_MAX_ALIBI_BIAS, "%s.attention.max_alibi_bias" },
133
+ { LLM_KV_ATTENTION_CLAMP_KQV, "%s.attention.clamp_kqv" },
134
+ { LLM_KV_ATTENTION_KEY_LENGTH, "%s.attention.key_length" },
135
+ { LLM_KV_ATTENTION_VALUE_LENGTH, "%s.attention.value_length" },
136
+ { LLM_KV_ATTENTION_LAYERNORM_EPS, "%s.attention.layer_norm_epsilon" },
137
+ { LLM_KV_ATTENTION_LAYERNORM_RMS_EPS, "%s.attention.layer_norm_rms_epsilon" },
138
+ { LLM_KV_ATTENTION_GROUPNORM_EPS, "%s.attention.group_norm_epsilon" },
139
+ { LLM_KV_ATTENTION_GROUPNORM_GROUPS, "%s.attention.group_norm_groups" },
140
+ { LLM_KV_ATTENTION_CAUSAL, "%s.attention.causal" },
141
+ { LLM_KV_ATTENTION_Q_LORA_RANK, "%s.attention.q_lora_rank" },
142
+ { LLM_KV_ATTENTION_KV_LORA_RANK, "%s.attention.kv_lora_rank" },
143
+ { LLM_KV_ATTENTION_DECAY_LORA_RANK, "%s.attention.decay_lora_rank" },
144
+ { LLM_KV_ATTENTION_ICLR_LORA_RANK, "%s.attention.iclr_lora_rank" },
145
+ { LLM_KV_ATTENTION_VALUE_RESIDUAL_MIX_LORA_RANK, "%s.attention.value_residual_mix_lora_rank" },
146
+ { LLM_KV_ATTENTION_GATE_LORA_RANK, "%s.attention.gate_lora_rank" },
147
+ { LLM_KV_ATTENTION_RELATIVE_BUCKETS_COUNT, "%s.attention.relative_buckets_count" },
148
+ { LLM_KV_ATTENTION_SLIDING_WINDOW, "%s.attention.sliding_window" },
149
+ { LLM_KV_ATTENTION_SCALE, "%s.attention.scale" },
150
+ { LLM_KV_ATTENTION_KEY_LENGTH_MLA, "%s.attention.key_length_mla" },
151
+ { LLM_KV_ATTENTION_VALUE_LENGTH_MLA, "%s.attention.value_length_mla" },
152
+ { LLM_KV_ATTENTION_LAYER_INDICES, "%s.attention.layer_indices" },
153
+
154
+ { LLM_KV_ROPE_DIMENSION_COUNT, "%s.rope.dimension_count" },
155
+ { LLM_KV_ROPE_DIMENSION_SECTIONS, "%s.rope.dimension_sections" },
156
+ { LLM_KV_ROPE_FREQ_BASE, "%s.rope.freq_base" },
157
+ { LLM_KV_ROPE_SCALE_LINEAR, "%s.rope.scale_linear" },
158
+ { LLM_KV_ROPE_SCALING_TYPE, "%s.rope.scaling.type" },
159
+ { LLM_KV_ROPE_SCALING_FACTOR, "%s.rope.scaling.factor" },
160
+ { LLM_KV_ROPE_SCALING_ATTN_FACTOR, "%s.rope.scaling.attn_factor" },
161
+ { LLM_KV_ROPE_SCALING_ORIG_CTX_LEN, "%s.rope.scaling.original_context_length" },
162
+ { LLM_KV_ROPE_SCALING_FINETUNED, "%s.rope.scaling.finetuned" },
163
+ { LLM_KV_ROPE_SCALING_YARN_LOG_MUL, "%s.rope.scaling.yarn_log_multiplier" },
164
+
165
+ { LLM_KV_SPLIT_NO, "split.no" },
166
+ { LLM_KV_SPLIT_COUNT, "split.count" },
167
+ { LLM_KV_SPLIT_TENSORS_COUNT, "split.tensors.count" },
168
+
169
+ { LLM_KV_SSM_CONV_KERNEL, "%s.ssm.conv_kernel" },
170
+ { LLM_KV_SSM_INNER_SIZE, "%s.ssm.inner_size" },
171
+ { LLM_KV_SSM_STATE_SIZE, "%s.ssm.state_size" },
172
+ { LLM_KV_SSM_TIME_STEP_RANK, "%s.ssm.time_step_rank" },
173
+ { LLM_KV_SSM_DT_B_C_RMS, "%s.ssm.dt_b_c_rms" },
174
+
175
+ { LLM_KV_WKV_HEAD_SIZE, "%s.wkv.head_size" },
176
+
177
+ { LLM_KV_POSNET_EMBEDDING_LENGTH, "%s.posnet.embedding_length" },
178
+ { LLM_KV_POSNET_BLOCK_COUNT, "%s.posnet.block_count" },
179
+
180
+ { LLM_KV_CONVNEXT_EMBEDDING_LENGTH, "%s.convnext.embedding_length" },
181
+ { LLM_KV_CONVNEXT_BLOCK_COUNT, "%s.convnext.block_count" },
182
+
183
+ { LLM_KV_CLASSIFIER_OUTPUT_LABELS, "%s.classifier.output_labels" },
184
+
185
+ { LLM_KV_TOKENIZER_MODEL, "tokenizer.ggml.model" },
186
+ { LLM_KV_TOKENIZER_PRE, "tokenizer.ggml.pre" },
187
+ { LLM_KV_TOKENIZER_LIST, "tokenizer.ggml.tokens" },
188
+ { LLM_KV_TOKENIZER_TOKEN_TYPE, "tokenizer.ggml.token_type" },
189
+ { LLM_KV_TOKENIZER_TOKEN_TYPE_COUNT, "tokenizer.ggml.token_type_count" },
190
+ { LLM_KV_TOKENIZER_SCORES, "tokenizer.ggml.scores" },
191
+ { LLM_KV_TOKENIZER_MERGES, "tokenizer.ggml.merges" },
192
+ { LLM_KV_TOKENIZER_BOS_ID, "tokenizer.ggml.bos_token_id" },
193
+ { LLM_KV_TOKENIZER_EOS_ID, "tokenizer.ggml.eos_token_id" },
194
+ { LLM_KV_TOKENIZER_EOT_ID, "tokenizer.ggml.eot_token_id" },
195
+ { LLM_KV_TOKENIZER_EOM_ID, "tokenizer.ggml.eom_token_id" },
196
+ { LLM_KV_TOKENIZER_UNK_ID, "tokenizer.ggml.unknown_token_id" },
197
+ { LLM_KV_TOKENIZER_SEP_ID, "tokenizer.ggml.seperator_token_id" },
198
+ { LLM_KV_TOKENIZER_PAD_ID, "tokenizer.ggml.padding_token_id" },
199
+ { LLM_KV_TOKENIZER_CLS_ID, "tokenizer.ggml.cls_token_id" },
200
+ { LLM_KV_TOKENIZER_MASK_ID, "tokenizer.ggml.mask_token_id" },
201
+ { LLM_KV_TOKENIZER_ADD_BOS, "tokenizer.ggml.add_bos_token" },
202
+ { LLM_KV_TOKENIZER_ADD_EOS, "tokenizer.ggml.add_eos_token" },
203
+ { LLM_KV_TOKENIZER_ADD_SEP, "tokenizer.ggml.add_sep_token" },
204
+ { LLM_KV_TOKENIZER_ADD_PREFIX, "tokenizer.ggml.add_space_prefix" },
205
+ { LLM_KV_TOKENIZER_REMOVE_EXTRA_WS, "tokenizer.ggml.remove_extra_whitespaces" },
206
+ { LLM_KV_TOKENIZER_PRECOMPILED_CHARSMAP, "tokenizer.ggml.precompiled_charsmap" },
207
+ { LLM_KV_TOKENIZER_HF_JSON, "tokenizer.huggingface.json" },
208
+ { LLM_KV_TOKENIZER_RWKV, "tokenizer.rwkv.world" },
209
+ { LLM_KV_TOKENIZER_CHAT_TEMPLATE, "tokenizer.chat_template" },
210
+ { LLM_KV_TOKENIZER_FIM_PRE_ID, "tokenizer.ggml.fim_pre_token_id" },
211
+ { LLM_KV_TOKENIZER_FIM_SUF_ID, "tokenizer.ggml.fim_suf_token_id" },
212
+ { LLM_KV_TOKENIZER_FIM_MID_ID, "tokenizer.ggml.fim_mid_token_id" },
213
+ { LLM_KV_TOKENIZER_FIM_PAD_ID, "tokenizer.ggml.fim_pad_token_id" },
214
+ { LLM_KV_TOKENIZER_FIM_REP_ID, "tokenizer.ggml.fim_rep_token_id" },
215
+ { LLM_KV_TOKENIZER_FIM_SEP_ID, "tokenizer.ggml.fim_sep_token_id" },
216
+
217
+ { LLM_KV_ADAPTER_TYPE, "adapter.type" },
218
+ { LLM_KV_ADAPTER_LORA_ALPHA, "adapter.lora.alpha" },
219
+
220
+ // deprecated
221
+ { LLM_KV_TOKENIZER_PREFIX_ID, "tokenizer.ggml.prefix_token_id" },
222
+ { LLM_KV_TOKENIZER_SUFFIX_ID, "tokenizer.ggml.suffix_token_id" },
223
+ { LLM_KV_TOKENIZER_MIDDLE_ID, "tokenizer.ggml.middle_token_id" },
224
+ };
225
+
226
+ static const std::map<llm_arch, std::map<llm_tensor, const char *>> LLM_TENSOR_NAMES = {
227
+ {
228
+ LLM_ARCH_LLAMA,
229
+ {
230
+ { LLM_TENSOR_TOKEN_EMBD, "token_embd" },
231
+ { LLM_TENSOR_OUTPUT_NORM, "output_norm" },
232
+ { LLM_TENSOR_OUTPUT, "output" },
233
+ { LLM_TENSOR_ROPE_FREQS, "rope_freqs" },
234
+ { LLM_TENSOR_ATTN_NORM, "blk.%d.attn_norm" },
235
+ { LLM_TENSOR_ATTN_Q, "blk.%d.attn_q" },
236
+ { LLM_TENSOR_ATTN_K, "blk.%d.attn_k" },
237
+ { LLM_TENSOR_ATTN_V, "blk.%d.attn_v" },
238
+ { LLM_TENSOR_ATTN_OUT, "blk.%d.attn_output" },
239
+ { LLM_TENSOR_ATTN_ROT_EMBD, "blk.%d.attn_rot_embd" },
240
+ { LLM_TENSOR_FFN_GATE_INP, "blk.%d.ffn_gate_inp" },
241
+ { LLM_TENSOR_FFN_NORM, "blk.%d.ffn_norm" },
242
+ { LLM_TENSOR_FFN_GATE, "blk.%d.ffn_gate" },
243
+ { LLM_TENSOR_FFN_DOWN, "blk.%d.ffn_down" },
244
+ { LLM_TENSOR_FFN_UP, "blk.%d.ffn_up" },
245
+ { LLM_TENSOR_FFN_GATE_EXP, "blk.%d.ffn_gate.%d" },
246
+ { LLM_TENSOR_FFN_DOWN_EXP, "blk.%d.ffn_down.%d" },
247
+ { LLM_TENSOR_FFN_UP_EXP, "blk.%d.ffn_up.%d" },
248
+ { LLM_TENSOR_FFN_GATE_EXPS, "blk.%d.ffn_gate_exps" },
249
+ { LLM_TENSOR_FFN_DOWN_EXPS, "blk.%d.ffn_down_exps" },
250
+ { LLM_TENSOR_FFN_UP_EXPS, "blk.%d.ffn_up_exps" },
251
+ },
252
+ },
253
+ {
254
+ LLM_ARCH_ARCEE,
255
+ {
256
+ { LLM_TENSOR_TOKEN_EMBD, "token_embd" },
257
+ { LLM_TENSOR_OUTPUT_NORM, "output_norm" },
258
+ { LLM_TENSOR_OUTPUT, "output" },
259
+ { LLM_TENSOR_ROPE_FREQS, "rope_freqs" },
260
+ { LLM_TENSOR_ATTN_NORM, "blk.%d.attn_norm" },
261
+ { LLM_TENSOR_ATTN_Q, "blk.%d.attn_q" },
262
+ { LLM_TENSOR_ATTN_K, "blk.%d.attn_k" },
263
+ { LLM_TENSOR_ATTN_V, "blk.%d.attn_v" },
264
+ { LLM_TENSOR_ATTN_OUT, "blk.%d.attn_output" },
265
+ { LLM_TENSOR_ATTN_ROT_EMBD, "blk.%d.attn_rot_embd" },
266
+ { LLM_TENSOR_FFN_NORM, "blk.%d.ffn_norm" },
267
+ { LLM_TENSOR_FFN_DOWN, "blk.%d.ffn_down" },
268
+ { LLM_TENSOR_FFN_UP, "blk.%d.ffn_up" },
269
+ },
270
+ },
271
+ {
272
+ LLM_ARCH_LLAMA4,
273
+ {
274
+ { LLM_TENSOR_TOKEN_EMBD, "token_embd" },
275
+ { LLM_TENSOR_OUTPUT_NORM, "output_norm" },
276
+ { LLM_TENSOR_OUTPUT, "output" },
277
+ { LLM_TENSOR_ROPE_FREQS, "rope_freqs" },
278
+ { LLM_TENSOR_ATTN_NORM, "blk.%d.attn_norm" },
279
+ { LLM_TENSOR_ATTN_Q, "blk.%d.attn_q" },
280
+ { LLM_TENSOR_ATTN_K, "blk.%d.attn_k" },
281
+ { LLM_TENSOR_ATTN_V, "blk.%d.attn_v" },
282
+ { LLM_TENSOR_ATTN_OUT, "blk.%d.attn_output" },
283
+ { LLM_TENSOR_ATTN_ROT_EMBD, "blk.%d.attn_rot_embd" },
284
+ { LLM_TENSOR_FFN_GATE_INP, "blk.%d.ffn_gate_inp" },
285
+ { LLM_TENSOR_FFN_NORM, "blk.%d.ffn_norm" },
286
+ { LLM_TENSOR_FFN_GATE, "blk.%d.ffn_gate" },
287
+ { LLM_TENSOR_FFN_DOWN, "blk.%d.ffn_down" },
288
+ { LLM_TENSOR_FFN_UP, "blk.%d.ffn_up" },
289
+ { LLM_TENSOR_FFN_GATE_EXP, "blk.%d.ffn_gate.%d" },
290
+ { LLM_TENSOR_FFN_DOWN_EXP, "blk.%d.ffn_down.%d" },
291
+ { LLM_TENSOR_FFN_UP_EXP, "blk.%d.ffn_up.%d" },
292
+ { LLM_TENSOR_FFN_GATE_EXPS, "blk.%d.ffn_gate_exps" },
293
+ { LLM_TENSOR_FFN_DOWN_EXPS, "blk.%d.ffn_down_exps" },
294
+ { LLM_TENSOR_FFN_UP_EXPS, "blk.%d.ffn_up_exps" },
295
+ { LLM_TENSOR_FFN_GATE_SHEXP, "blk.%d.ffn_gate_shexp" },
296
+ { LLM_TENSOR_FFN_DOWN_SHEXP, "blk.%d.ffn_down_shexp" },
297
+ { LLM_TENSOR_FFN_UP_SHEXP, "blk.%d.ffn_up_shexp" },
298
+ },
299
+ },
300
+ {
301
+ LLM_ARCH_DECI,
302
+ {
303
+ { LLM_TENSOR_TOKEN_EMBD, "token_embd" },
304
+ { LLM_TENSOR_OUTPUT_NORM, "output_norm" },
305
+ { LLM_TENSOR_OUTPUT, "output" },
306
+ { LLM_TENSOR_ROPE_FREQS, "rope_freqs" },
307
+ { LLM_TENSOR_ATTN_NORM, "blk.%d.attn_norm" },
308
+ { LLM_TENSOR_ATTN_Q, "blk.%d.attn_q" },
309
+ { LLM_TENSOR_ATTN_K, "blk.%d.attn_k" },
310
+ { LLM_TENSOR_ATTN_V, "blk.%d.attn_v" },
311
+ { LLM_TENSOR_ATTN_OUT, "blk.%d.attn_output" },
312
+ { LLM_TENSOR_ATTN_ROT_EMBD, "blk.%d.attn_rot_embd" },
313
+ { LLM_TENSOR_FFN_GATE_INP, "blk.%d.ffn_gate_inp" },
314
+ { LLM_TENSOR_FFN_NORM, "blk.%d.ffn_norm" },
315
+ { LLM_TENSOR_FFN_GATE, "blk.%d.ffn_gate" },
316
+ { LLM_TENSOR_FFN_DOWN, "blk.%d.ffn_down" },
317
+ { LLM_TENSOR_FFN_UP, "blk.%d.ffn_up" },
318
+ { LLM_TENSOR_FFN_GATE_EXP, "blk.%d.ffn_gate.%d" },
319
+ { LLM_TENSOR_FFN_DOWN_EXP, "blk.%d.ffn_down.%d" },
320
+ { LLM_TENSOR_FFN_UP_EXP, "blk.%d.ffn_up.%d" },
321
+ { LLM_TENSOR_FFN_GATE_EXPS, "blk.%d.ffn_gate_exps" },
322
+ { LLM_TENSOR_FFN_DOWN_EXPS, "blk.%d.ffn_down_exps" },
323
+ { LLM_TENSOR_FFN_UP_EXPS, "blk.%d.ffn_up_exps" },
324
+ },
325
+ },
326
+ {
327
+ LLM_ARCH_BAICHUAN,
328
+ {
329
+ { LLM_TENSOR_TOKEN_EMBD, "token_embd" },
330
+ { LLM_TENSOR_OUTPUT_NORM, "output_norm" },
331
+ { LLM_TENSOR_OUTPUT, "output" },
332
+ { LLM_TENSOR_ROPE_FREQS, "rope_freqs" },
333
+ { LLM_TENSOR_ATTN_NORM, "blk.%d.attn_norm" },
334
+ { LLM_TENSOR_ATTN_Q, "blk.%d.attn_q" },
335
+ { LLM_TENSOR_ATTN_K, "blk.%d.attn_k" },
336
+ { LLM_TENSOR_ATTN_V, "blk.%d.attn_v" },
337
+ { LLM_TENSOR_ATTN_OUT, "blk.%d.attn_output" },
338
+ { LLM_TENSOR_ATTN_ROT_EMBD, "blk.%d.attn_rot_embd" },
339
+ { LLM_TENSOR_FFN_NORM, "blk.%d.ffn_norm" },
340
+ { LLM_TENSOR_FFN_GATE, "blk.%d.ffn_gate" },
341
+ { LLM_TENSOR_FFN_DOWN, "blk.%d.ffn_down" },
342
+ { LLM_TENSOR_FFN_UP, "blk.%d.ffn_up" },
343
+ },
344
+ },
345
+ {
346
+ LLM_ARCH_FALCON,
347
+ {
348
+ { LLM_TENSOR_TOKEN_EMBD, "token_embd" },
349
+ { LLM_TENSOR_OUTPUT_NORM, "output_norm" },
350
+ { LLM_TENSOR_OUTPUT, "output" },
351
+ { LLM_TENSOR_ATTN_NORM, "blk.%d.attn_norm" },
352
+ { LLM_TENSOR_ATTN_NORM_2, "blk.%d.attn_norm_2" },
353
+ { LLM_TENSOR_ATTN_QKV, "blk.%d.attn_qkv" },
354
+ { LLM_TENSOR_ATTN_OUT, "blk.%d.attn_output" },
355
+ { LLM_TENSOR_FFN_DOWN, "blk.%d.ffn_down" },
356
+ { LLM_TENSOR_FFN_UP, "blk.%d.ffn_up" },
357
+ },
358
+ },
359
+ {
360
+ LLM_ARCH_GROK,
361
+ {
362
+ { LLM_TENSOR_TOKEN_EMBD, "token_embd" },
363
+ { LLM_TENSOR_OUTPUT_NORM, "output_norm" },
364
+ { LLM_TENSOR_OUTPUT, "output" },
365
+ { LLM_TENSOR_ROPE_FREQS, "rope_freqs" },
366
+ { LLM_TENSOR_ATTN_NORM, "blk.%d.attn_norm" },
367
+ { LLM_TENSOR_ATTN_Q, "blk.%d.attn_q" },
368
+ { LLM_TENSOR_ATTN_K, "blk.%d.attn_k" },
369
+ { LLM_TENSOR_ATTN_V, "blk.%d.attn_v" },
370
+ { LLM_TENSOR_ATTN_OUT, "blk.%d.attn_output" },
371
+ { LLM_TENSOR_ATTN_ROT_EMBD, "blk.%d.attn_rot_embd" },
372
+ { LLM_TENSOR_FFN_GATE_INP, "blk.%d.ffn_gate_inp" },
373
+ { LLM_TENSOR_FFN_NORM, "blk.%d.ffn_norm" },
374
+ { LLM_TENSOR_FFN_GATE_EXP, "blk.%d.ffn_gate.%d" },
375
+ { LLM_TENSOR_FFN_DOWN_EXP, "blk.%d.ffn_down.%d" },
376
+ { LLM_TENSOR_FFN_UP_EXP, "blk.%d.ffn_up.%d" },
377
+ { LLM_TENSOR_FFN_GATE_EXPS, "blk.%d.ffn_gate_exps" },
378
+ { LLM_TENSOR_FFN_DOWN_EXPS, "blk.%d.ffn_down_exps" },
379
+ { LLM_TENSOR_FFN_UP_EXPS, "blk.%d.ffn_up_exps" },
380
+ { LLM_TENSOR_LAYER_OUT_NORM, "blk.%d.layer_output_norm" },
381
+ { LLM_TENSOR_ATTN_OUT_NORM, "blk.%d.attn_output_norm" },
382
+ },
383
+ },
384
+ {
385
+ LLM_ARCH_GPT2,
386
+ {
387
+ { LLM_TENSOR_TOKEN_EMBD, "token_embd" },
388
+ { LLM_TENSOR_POS_EMBD, "position_embd" },
389
+ { LLM_TENSOR_OUTPUT_NORM, "output_norm" },
390
+ { LLM_TENSOR_OUTPUT, "output" },
391
+ { LLM_TENSOR_ATTN_NORM, "blk.%d.attn_norm" },
392
+ { LLM_TENSOR_ATTN_QKV, "blk.%d.attn_qkv" },
393
+ { LLM_TENSOR_ATTN_OUT, "blk.%d.attn_output" },
394
+ { LLM_TENSOR_FFN_NORM, "blk.%d.ffn_norm" },
395
+ { LLM_TENSOR_FFN_UP, "blk.%d.ffn_up" },
396
+ { LLM_TENSOR_FFN_DOWN, "blk.%d.ffn_down" },
397
+ },
398
+ },
399
+ {
400
+ LLM_ARCH_GPTJ,
401
+ {
402
+ { LLM_TENSOR_TOKEN_EMBD, "token_embd" },
403
+ },
404
+ },
405
+ {
406
+ LLM_ARCH_GPTNEOX,
407
+ {
408
+ { LLM_TENSOR_TOKEN_EMBD, "token_embd" },
409
+ { LLM_TENSOR_OUTPUT_NORM, "output_norm" },
410
+ { LLM_TENSOR_OUTPUT, "output" },
411
+ { LLM_TENSOR_ATTN_NORM, "blk.%d.attn_norm" },
412
+ { LLM_TENSOR_ATTN_QKV, "blk.%d.attn_qkv" },
413
+ { LLM_TENSOR_ATTN_OUT, "blk.%d.attn_output" },
414
+ { LLM_TENSOR_FFN_NORM, "blk.%d.ffn_norm" },
415
+ { LLM_TENSOR_FFN_DOWN, "blk.%d.ffn_down" },
416
+ { LLM_TENSOR_FFN_UP, "blk.%d.ffn_up" },
417
+ },
418
+ },
419
+ {
420
+ LLM_ARCH_MPT,
421
+ {
422
+ { LLM_TENSOR_TOKEN_EMBD, "token_embd" },
423
+ { LLM_TENSOR_OUTPUT_NORM, "output_norm" },
424
+ { LLM_TENSOR_OUTPUT, "output"},
425
+ { LLM_TENSOR_ATTN_NORM, "blk.%d.attn_norm" },
426
+ { LLM_TENSOR_FFN_NORM, "blk.%d.ffn_norm" },
427
+ { LLM_TENSOR_ATTN_QKV, "blk.%d.attn_qkv" },
428
+ { LLM_TENSOR_ATTN_OUT, "blk.%d.attn_output" },
429
+ { LLM_TENSOR_FFN_DOWN, "blk.%d.ffn_down" },
430
+ { LLM_TENSOR_FFN_UP, "blk.%d.ffn_up" },
431
+ { LLM_TENSOR_FFN_ACT, "blk.%d.ffn.act" },
432
+ { LLM_TENSOR_POS_EMBD, "position_embd" },
433
+ { LLM_TENSOR_ATTN_Q_NORM, "blk.%d.attn_q_norm"},
434
+ { LLM_TENSOR_ATTN_K_NORM, "blk.%d.attn_k_norm"},
435
+ },
436
+ },
437
+ {
438
+ LLM_ARCH_STARCODER,
439
+ {
440
+ { LLM_TENSOR_TOKEN_EMBD, "token_embd" },
441
+ { LLM_TENSOR_POS_EMBD, "position_embd" },
442
+ { LLM_TENSOR_OUTPUT_NORM, "output_norm" },
443
+ { LLM_TENSOR_OUTPUT, "output" },
444
+ { LLM_TENSOR_ATTN_NORM, "blk.%d.attn_norm" },
445
+ { LLM_TENSOR_ATTN_QKV, "blk.%d.attn_qkv" },
446
+ { LLM_TENSOR_ATTN_OUT, "blk.%d.attn_output" },
447
+ { LLM_TENSOR_FFN_NORM, "blk.%d.ffn_norm" },
448
+ { LLM_TENSOR_FFN_UP, "blk.%d.ffn_up" },
449
+ { LLM_TENSOR_FFN_DOWN, "blk.%d.ffn_down" },
450
+ },
451
+ },
452
+ {
453
+ LLM_ARCH_REFACT,
454
+ {
455
+ { LLM_TENSOR_TOKEN_EMBD, "token_embd" },
456
+ { LLM_TENSOR_OUTPUT_NORM, "output_norm" },
457
+ { LLM_TENSOR_OUTPUT, "output" },
458
+ { LLM_TENSOR_ATTN_NORM, "blk.%d.attn_norm" },
459
+ { LLM_TENSOR_ATTN_Q, "blk.%d.attn_q" },
460
+ { LLM_TENSOR_ATTN_K, "blk.%d.attn_k" },
461
+ { LLM_TENSOR_ATTN_V, "blk.%d.attn_v" },
462
+ { LLM_TENSOR_ATTN_OUT, "blk.%d.attn_output" },
463
+ { LLM_TENSOR_FFN_NORM, "blk.%d.ffn_norm" },
464
+ { LLM_TENSOR_FFN_GATE, "blk.%d.ffn_gate" },
465
+ { LLM_TENSOR_FFN_DOWN, "blk.%d.ffn_down" },
466
+ { LLM_TENSOR_FFN_UP, "blk.%d.ffn_up" },
467
+ },
468
+ },
469
+ {
470
+ LLM_ARCH_BERT,
471
+ {
472
+ { LLM_TENSOR_TOKEN_EMBD, "token_embd" },
473
+ { LLM_TENSOR_TOKEN_EMBD_NORM, "token_embd_norm" },
474
+ { LLM_TENSOR_TOKEN_TYPES, "token_types" },
475
+ { LLM_TENSOR_POS_EMBD, "position_embd" },
476
+ { LLM_TENSOR_ATTN_OUT_NORM, "blk.%d.attn_output_norm" },
477
+ { LLM_TENSOR_ATTN_QKV, "blk.%d.attn_qkv" },
478
+ { LLM_TENSOR_ATTN_Q, "blk.%d.attn_q" },
479
+ { LLM_TENSOR_ATTN_K, "blk.%d.attn_k" },
480
+ { LLM_TENSOR_ATTN_V, "blk.%d.attn_v" },
481
+ { LLM_TENSOR_ATTN_OUT, "blk.%d.attn_output" },
482
+ { LLM_TENSOR_LAYER_OUT_NORM, "blk.%d.layer_output_norm" },
483
+ { LLM_TENSOR_FFN_DOWN, "blk.%d.ffn_down" },
484
+ { LLM_TENSOR_FFN_UP, "blk.%d.ffn_up" },
485
+ { LLM_TENSOR_CLS, "cls" },
486
+ { LLM_TENSOR_CLS_OUT, "cls.output" },
487
+ },
488
+ },
489
+ {
490
+ LLM_ARCH_NOMIC_BERT,
491
+ {
492
+ { LLM_TENSOR_TOKEN_EMBD, "token_embd" },
493
+ { LLM_TENSOR_TOKEN_EMBD_NORM, "token_embd_norm" },
494
+ { LLM_TENSOR_TOKEN_TYPES, "token_types" },
495
+ { LLM_TENSOR_ATTN_OUT_NORM, "blk.%d.attn_output_norm" },
496
+ { LLM_TENSOR_ATTN_QKV, "blk.%d.attn_qkv" },
497
+ { LLM_TENSOR_ATTN_OUT, "blk.%d.attn_output" },
498
+ { LLM_TENSOR_LAYER_OUT_NORM, "blk.%d.layer_output_norm" },
499
+ { LLM_TENSOR_FFN_GATE, "blk.%d.ffn_gate" },
500
+ { LLM_TENSOR_FFN_DOWN, "blk.%d.ffn_down" },
501
+ { LLM_TENSOR_FFN_UP, "blk.%d.ffn_up" },
502
+ },
503
+ },
504
+ {
505
+ LLM_ARCH_NOMIC_BERT_MOE,
506
+ {
507
+ { LLM_TENSOR_TOKEN_EMBD, "token_embd" },
508
+ { LLM_TENSOR_TOKEN_EMBD_NORM, "token_embd_norm" },
509
+ { LLM_TENSOR_TOKEN_TYPES, "token_types" },
510
+ { LLM_TENSOR_ATTN_OUT_NORM, "blk.%d.attn_output_norm" },
511
+ { LLM_TENSOR_ATTN_QKV, "blk.%d.attn_qkv" },
512
+ { LLM_TENSOR_ATTN_OUT, "blk.%d.attn_output" },
513
+ { LLM_TENSOR_LAYER_OUT_NORM, "blk.%d.layer_output_norm" },
514
+ { LLM_TENSOR_FFN_GATE, "blk.%d.ffn_gate" },
515
+ { LLM_TENSOR_FFN_DOWN, "blk.%d.ffn_down" },
516
+ { LLM_TENSOR_FFN_UP, "blk.%d.ffn_up" },
517
+ { LLM_TENSOR_FFN_GATE_INP, "blk.%d.ffn_gate_inp" },
518
+ { LLM_TENSOR_FFN_DOWN_EXPS, "blk.%d.ffn_down_exps" },
519
+ { LLM_TENSOR_FFN_UP_EXPS, "blk.%d.ffn_up_exps" },
520
+ },
521
+ },
522
+ {
523
+ LLM_ARCH_NEO_BERT,
524
+ {
525
+ { LLM_TENSOR_TOKEN_EMBD, "token_embd" },
526
+ { LLM_TENSOR_ATTN_NORM, "blk.%d.attn_norm" },
527
+ { LLM_TENSOR_ATTN_QKV, "blk.%d.attn_qkv" },
528
+ { LLM_TENSOR_ATTN_OUT, "blk.%d.attn_output" },
529
+ { LLM_TENSOR_FFN_NORM, "blk.%d.ffn_norm" },
530
+ { LLM_TENSOR_FFN_DOWN, "blk.%d.ffn_down" },
531
+ { LLM_TENSOR_FFN_UP, "blk.%d.ffn_up" },
532
+ { LLM_TENSOR_ENC_OUTPUT_NORM, "enc.output_norm" },
533
+ { LLM_TENSOR_CLS, "cls" },
534
+ { LLM_TENSOR_CLS_OUT, "cls.output" },
535
+ },
536
+ },
537
+ {
538
+ LLM_ARCH_JINA_BERT_V2,
539
+ {
540
+ { LLM_TENSOR_TOKEN_EMBD, "token_embd" },
541
+ { LLM_TENSOR_TOKEN_EMBD_NORM, "token_embd_norm" },
542
+ { LLM_TENSOR_TOKEN_TYPES, "token_types" },
543
+ { LLM_TENSOR_ATTN_NORM_2, "blk.%d.attn_norm_2" },
544
+ { LLM_TENSOR_ATTN_OUT_NORM, "blk.%d.attn_output_norm" },
545
+ { LLM_TENSOR_ATTN_Q, "blk.%d.attn_q" },
546
+ { LLM_TENSOR_ATTN_Q_NORM, "blk.%d.attn_q_norm" },
547
+ { LLM_TENSOR_ATTN_K, "blk.%d.attn_k" },
548
+ { LLM_TENSOR_ATTN_K_NORM, "blk.%d.attn_k_norm" },
549
+ { LLM_TENSOR_ATTN_V, "blk.%d.attn_v" },
550
+ { LLM_TENSOR_ATTN_OUT, "blk.%d.attn_output" },
551
+ { LLM_TENSOR_LAYER_OUT_NORM, "blk.%d.layer_output_norm" },
552
+ { LLM_TENSOR_FFN_DOWN, "blk.%d.ffn_down" },
553
+ { LLM_TENSOR_FFN_GATE, "blk.%d.ffn_gate" },
554
+ { LLM_TENSOR_FFN_UP, "blk.%d.ffn_up" },
555
+ { LLM_TENSOR_CLS, "cls" },
556
+ },
557
+ },
558
+ {
559
+ LLM_ARCH_BLOOM,
560
+ {
561
+ { LLM_TENSOR_TOKEN_EMBD, "token_embd" },
562
+ { LLM_TENSOR_TOKEN_EMBD_NORM, "token_embd_norm" },
563
+ { LLM_TENSOR_OUTPUT_NORM, "output_norm" },
564
+ { LLM_TENSOR_OUTPUT, "output" },
565
+ { LLM_TENSOR_ATTN_NORM, "blk.%d.attn_norm" },
566
+ { LLM_TENSOR_ATTN_QKV, "blk.%d.attn_qkv" },
567
+ { LLM_TENSOR_ATTN_OUT, "blk.%d.attn_output" },
568
+ { LLM_TENSOR_FFN_NORM, "blk.%d.ffn_norm" },
569
+ { LLM_TENSOR_FFN_UP, "blk.%d.ffn_up" },
570
+ { LLM_TENSOR_FFN_DOWN, "blk.%d.ffn_down" },
571
+ },
572
+ },
573
+ {
574
+ LLM_ARCH_STABLELM,
575
+ {
576
+ { LLM_TENSOR_TOKEN_EMBD, "token_embd" },
577
+ { LLM_TENSOR_OUTPUT_NORM, "output_norm" },
578
+ { LLM_TENSOR_OUTPUT, "output" },
579
+ { LLM_TENSOR_ROPE_FREQS, "rope_freqs" },
580
+ { LLM_TENSOR_ATTN_NORM, "blk.%d.attn_norm" },
581
+ { LLM_TENSOR_ATTN_Q, "blk.%d.attn_q" },
582
+ { LLM_TENSOR_ATTN_K, "blk.%d.attn_k" },
583
+ { LLM_TENSOR_ATTN_V, "blk.%d.attn_v" },
584
+ { LLM_TENSOR_ATTN_OUT, "blk.%d.attn_output" },
585
+ { LLM_TENSOR_FFN_NORM, "blk.%d.ffn_norm" },
586
+ { LLM_TENSOR_FFN_GATE, "blk.%d.ffn_gate" },
587
+ { LLM_TENSOR_FFN_DOWN, "blk.%d.ffn_down" },
588
+ { LLM_TENSOR_FFN_UP, "blk.%d.ffn_up" },
589
+ { LLM_TENSOR_ATTN_Q_NORM, "blk.%d.attn_q_norm" },
590
+ { LLM_TENSOR_ATTN_K_NORM, "blk.%d.attn_k_norm" },
591
+ },
592
+ },
593
+ {
594
+ LLM_ARCH_QWEN,
595
+ {
596
+ { LLM_TENSOR_TOKEN_EMBD, "token_embd" },
597
+ { LLM_TENSOR_OUTPUT_NORM, "output_norm" },
598
+ { LLM_TENSOR_OUTPUT, "output" },
599
+ { LLM_TENSOR_ROPE_FREQS, "rope_freqs" },
600
+ { LLM_TENSOR_ATTN_NORM, "blk.%d.attn_norm" },
601
+ { LLM_TENSOR_ATTN_QKV, "blk.%d.attn_qkv" },
602
+ { LLM_TENSOR_ATTN_OUT, "blk.%d.attn_output" },
603
+ { LLM_TENSOR_FFN_NORM, "blk.%d.ffn_norm" },
604
+ { LLM_TENSOR_FFN_GATE, "blk.%d.ffn_gate" },
605
+ { LLM_TENSOR_FFN_DOWN, "blk.%d.ffn_down" },
606
+ { LLM_TENSOR_FFN_UP, "blk.%d.ffn_up" },
607
+ },
608
+ },
609
+ {
610
+ LLM_ARCH_QWEN2,
611
+ {
612
+ { LLM_TENSOR_TOKEN_EMBD, "token_embd" },
613
+ { LLM_TENSOR_OUTPUT_NORM, "output_norm" },
614
+ { LLM_TENSOR_OUTPUT, "output" },
615
+ { LLM_TENSOR_ATTN_NORM, "blk.%d.attn_norm" },
616
+ { LLM_TENSOR_ATTN_Q, "blk.%d.attn_q" },
617
+ { LLM_TENSOR_ATTN_K, "blk.%d.attn_k" },
618
+ { LLM_TENSOR_ATTN_V, "blk.%d.attn_v" },
619
+ { LLM_TENSOR_ATTN_OUT, "blk.%d.attn_output" },
620
+ { LLM_TENSOR_FFN_NORM, "blk.%d.ffn_norm" },
621
+ { LLM_TENSOR_FFN_GATE, "blk.%d.ffn_gate" },
622
+ { LLM_TENSOR_FFN_DOWN, "blk.%d.ffn_down" },
623
+ { LLM_TENSOR_FFN_UP, "blk.%d.ffn_up" },
624
+ },
625
+ },
626
+ {
627
+ LLM_ARCH_QWEN2VL,
628
+ {
629
+ { LLM_TENSOR_TOKEN_EMBD, "token_embd" },
630
+ { LLM_TENSOR_OUTPUT_NORM, "output_norm" },
631
+ { LLM_TENSOR_OUTPUT, "output" },
632
+ { LLM_TENSOR_ATTN_NORM, "blk.%d.attn_norm" },
633
+ { LLM_TENSOR_ATTN_Q, "blk.%d.attn_q" },
634
+ { LLM_TENSOR_ATTN_K, "blk.%d.attn_k" },
635
+ { LLM_TENSOR_ATTN_V, "blk.%d.attn_v" },
636
+ { LLM_TENSOR_ATTN_OUT, "blk.%d.attn_output" },
637
+ { LLM_TENSOR_FFN_NORM, "blk.%d.ffn_norm" },
638
+ { LLM_TENSOR_FFN_GATE, "blk.%d.ffn_gate" },
639
+ { LLM_TENSOR_FFN_DOWN, "blk.%d.ffn_down" },
640
+ { LLM_TENSOR_FFN_UP, "blk.%d.ffn_up" },
641
+ },
642
+ },
643
+ {
644
+ LLM_ARCH_QWEN2MOE,
645
+ {
646
+ { LLM_TENSOR_TOKEN_EMBD, "token_embd" },
647
+ { LLM_TENSOR_OUTPUT_NORM, "output_norm" },
648
+ { LLM_TENSOR_OUTPUT, "output" },
649
+ { LLM_TENSOR_ATTN_NORM, "blk.%d.attn_norm" },
650
+ { LLM_TENSOR_ATTN_Q, "blk.%d.attn_q" },
651
+ { LLM_TENSOR_ATTN_K, "blk.%d.attn_k" },
652
+ { LLM_TENSOR_ATTN_V, "blk.%d.attn_v" },
653
+ { LLM_TENSOR_ATTN_OUT, "blk.%d.attn_output" },
654
+ { LLM_TENSOR_FFN_NORM, "blk.%d.ffn_norm" },
655
+ { LLM_TENSOR_FFN_GATE_INP, "blk.%d.ffn_gate_inp" },
656
+ { LLM_TENSOR_FFN_GATE_EXPS, "blk.%d.ffn_gate_exps" },
657
+ { LLM_TENSOR_FFN_DOWN_EXPS, "blk.%d.ffn_down_exps" },
658
+ { LLM_TENSOR_FFN_UP_EXPS, "blk.%d.ffn_up_exps" },
659
+ { LLM_TENSOR_FFN_GATE_INP_SHEXP, "blk.%d.ffn_gate_inp_shexp" },
660
+ { LLM_TENSOR_FFN_GATE_SHEXP, "blk.%d.ffn_gate_shexp" },
661
+ { LLM_TENSOR_FFN_DOWN_SHEXP, "blk.%d.ffn_down_shexp" },
662
+ { LLM_TENSOR_FFN_UP_SHEXP, "blk.%d.ffn_up_shexp" },
663
+ },
664
+ },
665
+ {
666
+ LLM_ARCH_QWEN3,
667
+ {
668
+ { LLM_TENSOR_TOKEN_EMBD, "token_embd" },
669
+ { LLM_TENSOR_OUTPUT_NORM, "output_norm" },
670
+ { LLM_TENSOR_OUTPUT, "output" },
671
+ { LLM_TENSOR_ATTN_NORM, "blk.%d.attn_norm" },
672
+ { LLM_TENSOR_ATTN_Q, "blk.%d.attn_q" },
673
+ { LLM_TENSOR_ATTN_Q_NORM, "blk.%d.attn_q_norm" },
674
+ { LLM_TENSOR_ATTN_K, "blk.%d.attn_k" },
675
+ { LLM_TENSOR_ATTN_K_NORM, "blk.%d.attn_k_norm" },
676
+ { LLM_TENSOR_ATTN_V, "blk.%d.attn_v" },
677
+ { LLM_TENSOR_ATTN_OUT, "blk.%d.attn_output" },
678
+ { LLM_TENSOR_FFN_NORM, "blk.%d.ffn_norm" },
679
+ { LLM_TENSOR_FFN_GATE, "blk.%d.ffn_gate" },
680
+ { LLM_TENSOR_FFN_DOWN, "blk.%d.ffn_down" },
681
+ { LLM_TENSOR_FFN_UP, "blk.%d.ffn_up" },
682
+ },
683
+ },
684
+ {
685
+ LLM_ARCH_QWEN3MOE,
686
+ {
687
+ { LLM_TENSOR_TOKEN_EMBD, "token_embd" },
688
+ { LLM_TENSOR_OUTPUT_NORM, "output_norm" },
689
+ { LLM_TENSOR_OUTPUT, "output" },
690
+ { LLM_TENSOR_ATTN_NORM, "blk.%d.attn_norm" },
691
+ { LLM_TENSOR_ATTN_Q, "blk.%d.attn_q" },
692
+ { LLM_TENSOR_ATTN_Q_NORM, "blk.%d.attn_q_norm" },
693
+ { LLM_TENSOR_ATTN_K, "blk.%d.attn_k" },
694
+ { LLM_TENSOR_ATTN_K_NORM, "blk.%d.attn_k_norm" },
695
+ { LLM_TENSOR_ATTN_V, "blk.%d.attn_v" },
696
+ { LLM_TENSOR_ATTN_OUT, "blk.%d.attn_output" },
697
+ { LLM_TENSOR_FFN_NORM, "blk.%d.ffn_norm" },
698
+ { LLM_TENSOR_FFN_GATE_INP, "blk.%d.ffn_gate_inp" },
699
+ { LLM_TENSOR_FFN_GATE_EXPS, "blk.%d.ffn_gate_exps" },
700
+ { LLM_TENSOR_FFN_DOWN_EXPS, "blk.%d.ffn_down_exps" },
701
+ { LLM_TENSOR_FFN_UP_EXPS, "blk.%d.ffn_up_exps" },
702
+ },
703
+ },
704
+ {
705
+ LLM_ARCH_PHI2,
706
+ {
707
+ { LLM_TENSOR_TOKEN_EMBD, "token_embd" },
708
+ { LLM_TENSOR_OUTPUT_NORM, "output_norm" },
709
+ { LLM_TENSOR_OUTPUT, "output" },
710
+ { LLM_TENSOR_ATTN_NORM, "blk.%d.attn_norm" },
711
+ { LLM_TENSOR_ATTN_QKV, "blk.%d.attn_qkv" },
712
+ { LLM_TENSOR_ATTN_Q, "blk.%d.attn_q" },
713
+ { LLM_TENSOR_ATTN_K, "blk.%d.attn_k" },
714
+ { LLM_TENSOR_ATTN_V, "blk.%d.attn_v" },
715
+ { LLM_TENSOR_ATTN_OUT, "blk.%d.attn_output" },
716
+ { LLM_TENSOR_FFN_DOWN, "blk.%d.ffn_down" },
717
+ { LLM_TENSOR_FFN_UP, "blk.%d.ffn_up" },
718
+ },
719
+ },
720
+ {
721
+ LLM_ARCH_PHI3,
722
+ {
723
+ { LLM_TENSOR_TOKEN_EMBD, "token_embd" },
724
+ { LLM_TENSOR_OUTPUT_NORM, "output_norm" },
725
+ { LLM_TENSOR_OUTPUT, "output" },
726
+ { LLM_TENSOR_ROPE_FACTORS_LONG, "rope_factors_long" },
727
+ { LLM_TENSOR_ROPE_FACTORS_SHORT, "rope_factors_short" },
728
+ { LLM_TENSOR_ATTN_NORM, "blk.%d.attn_norm" },
729
+ { LLM_TENSOR_ATTN_QKV, "blk.%d.attn_qkv" },
730
+ { LLM_TENSOR_ATTN_Q, "blk.%d.attn_q" },
731
+ { LLM_TENSOR_ATTN_K, "blk.%d.attn_k" },
732
+ { LLM_TENSOR_ATTN_V, "blk.%d.attn_v" },
733
+ { LLM_TENSOR_ATTN_OUT, "blk.%d.attn_output" },
734
+ { LLM_TENSOR_FFN_NORM, "blk.%d.ffn_norm" },
735
+ { LLM_TENSOR_FFN_DOWN, "blk.%d.ffn_down" },
736
+ { LLM_TENSOR_FFN_UP, "blk.%d.ffn_up" },
737
+ },
738
+ },
739
+ {
740
+ LLM_ARCH_PHIMOE,
741
+ {
742
+ { LLM_TENSOR_TOKEN_EMBD, "token_embd" },
743
+ { LLM_TENSOR_OUTPUT_NORM, "output_norm" },
744
+ { LLM_TENSOR_OUTPUT, "output" },
745
+ { LLM_TENSOR_ROPE_FACTORS_LONG, "rope_factors_long" },
746
+ { LLM_TENSOR_ROPE_FACTORS_SHORT, "rope_factors_short" },
747
+ { LLM_TENSOR_ATTN_NORM, "blk.%d.attn_norm" },
748
+ { LLM_TENSOR_ATTN_QKV, "blk.%d.attn_qkv" },
749
+ { LLM_TENSOR_ATTN_Q, "blk.%d.attn_q" },
750
+ { LLM_TENSOR_ATTN_K, "blk.%d.attn_k" },
751
+ { LLM_TENSOR_ATTN_V, "blk.%d.attn_v" },
752
+ { LLM_TENSOR_ATTN_OUT, "blk.%d.attn_output" },
753
+ { LLM_TENSOR_FFN_NORM, "blk.%d.ffn_norm" },
754
+ { LLM_TENSOR_FFN_GATE_INP, "blk.%d.ffn_gate_inp" },
755
+ { LLM_TENSOR_FFN_GATE_EXPS, "blk.%d.ffn_gate_exps" },
756
+ { LLM_TENSOR_FFN_DOWN_EXPS, "blk.%d.ffn_down_exps" },
757
+ { LLM_TENSOR_FFN_UP_EXPS, "blk.%d.ffn_up_exps" },
758
+ },
759
+ },
760
+ {
761
+ LLM_ARCH_PLAMO,
762
+ {
763
+ { LLM_TENSOR_TOKEN_EMBD, "token_embd" },
764
+ { LLM_TENSOR_OUTPUT_NORM, "output_norm" },
765
+ { LLM_TENSOR_OUTPUT, "output" },
766
+ { LLM_TENSOR_ROPE_FREQS, "rope_freqs" },
767
+ { LLM_TENSOR_ATTN_NORM, "blk.%d.attn_norm" },
768
+ { LLM_TENSOR_ATTN_Q, "blk.%d.attn_q" },
769
+ { LLM_TENSOR_ATTN_K, "blk.%d.attn_k" },
770
+ { LLM_TENSOR_ATTN_V, "blk.%d.attn_v" },
771
+ { LLM_TENSOR_ATTN_OUT, "blk.%d.attn_output" },
772
+ { LLM_TENSOR_ATTN_ROT_EMBD, "blk.%d.attn_rot_embd" },
773
+ { LLM_TENSOR_FFN_GATE, "blk.%d.ffn_gate" },
774
+ { LLM_TENSOR_FFN_DOWN, "blk.%d.ffn_down" },
775
+ { LLM_TENSOR_FFN_UP, "blk.%d.ffn_up" },
776
+ },
777
+ },
778
+ {
779
+ LLM_ARCH_CODESHELL,
780
+ {
781
+ { LLM_TENSOR_TOKEN_EMBD, "token_embd" },
782
+ { LLM_TENSOR_OUTPUT_NORM, "output_norm" },
783
+ { LLM_TENSOR_OUTPUT, "output" },
784
+ { LLM_TENSOR_ROPE_FREQS, "rope_freqs" },
785
+ { LLM_TENSOR_ATTN_NORM, "blk.%d.attn_norm" },
786
+ { LLM_TENSOR_ATTN_Q, "blk.%d.attn_q" },
787
+ { LLM_TENSOR_ATTN_K, "blk.%d.attn_k" },
788
+ { LLM_TENSOR_ATTN_V, "blk.%d.attn_v" },
789
+ { LLM_TENSOR_ATTN_QKV, "blk.%d.attn_qkv" },
790
+ { LLM_TENSOR_ATTN_OUT, "blk.%d.attn_output" },
791
+ { LLM_TENSOR_ATTN_ROT_EMBD, "blk.%d.attn_rot_embd" },
792
+ { LLM_TENSOR_FFN_NORM, "blk.%d.ffn_norm" },
793
+ { LLM_TENSOR_FFN_GATE, "blk.%d.ffn_gate" },
794
+ { LLM_TENSOR_FFN_DOWN, "blk.%d.ffn_down" },
795
+ { LLM_TENSOR_FFN_UP, "blk.%d.ffn_up" },
796
+ },
797
+ },
798
+ {
799
+ LLM_ARCH_ORION,
800
+ {
801
+ { LLM_TENSOR_TOKEN_EMBD, "token_embd" },
802
+ { LLM_TENSOR_OUTPUT_NORM, "output_norm" },
803
+ { LLM_TENSOR_OUTPUT, "output" },
804
+ { LLM_TENSOR_ROPE_FREQS, "rope_freqs" },
805
+ { LLM_TENSOR_ATTN_NORM, "blk.%d.attn_norm" },
806
+ { LLM_TENSOR_ATTN_Q, "blk.%d.attn_q" },
807
+ { LLM_TENSOR_ATTN_K, "blk.%d.attn_k" },
808
+ { LLM_TENSOR_ATTN_V, "blk.%d.attn_v" },
809
+ { LLM_TENSOR_ATTN_OUT, "blk.%d.attn_output" },
810
+ { LLM_TENSOR_ATTN_ROT_EMBD, "blk.%d.attn_rot_embd" },
811
+ { LLM_TENSOR_FFN_NORM, "blk.%d.ffn_norm" },
812
+ { LLM_TENSOR_FFN_GATE, "blk.%d.ffn_gate" },
813
+ { LLM_TENSOR_FFN_DOWN, "blk.%d.ffn_down" },
814
+ { LLM_TENSOR_FFN_UP, "blk.%d.ffn_up" },
815
+ },
816
+ },
817
+ {
818
+ LLM_ARCH_INTERNLM2,
819
+ {
820
+ { LLM_TENSOR_TOKEN_EMBD, "token_embd" },
821
+ { LLM_TENSOR_OUTPUT_NORM, "output_norm" },
822
+ { LLM_TENSOR_OUTPUT, "output" },
823
+ { LLM_TENSOR_ATTN_NORM, "blk.%d.attn_norm" },
824
+ { LLM_TENSOR_ATTN_Q, "blk.%d.attn_q" },
825
+ { LLM_TENSOR_ATTN_K, "blk.%d.attn_k" },
826
+ { LLM_TENSOR_ATTN_V, "blk.%d.attn_v" },
827
+ { LLM_TENSOR_ATTN_OUT, "blk.%d.attn_output" },
828
+ { LLM_TENSOR_FFN_NORM, "blk.%d.ffn_norm" },
829
+ { LLM_TENSOR_FFN_GATE, "blk.%d.ffn_gate" },
830
+ { LLM_TENSOR_FFN_DOWN, "blk.%d.ffn_down" },
831
+ { LLM_TENSOR_FFN_UP, "blk.%d.ffn_up" },
832
+ },
833
+ },
834
+ {
835
+ LLM_ARCH_MINICPM,
836
+ {
837
+ { LLM_TENSOR_TOKEN_EMBD, "token_embd" },
838
+ { LLM_TENSOR_OUTPUT_NORM, "output_norm" },
839
+ { LLM_TENSOR_OUTPUT, "output" },
840
+ { LLM_TENSOR_ROPE_FREQS, "rope_freqs" },
841
+ { LLM_TENSOR_ROPE_FACTORS_LONG, "rope_factors_long" },
842
+ { LLM_TENSOR_ROPE_FACTORS_SHORT, "rope_factors_short" },
843
+ { LLM_TENSOR_ATTN_NORM, "blk.%d.attn_norm" },
844
+ { LLM_TENSOR_ATTN_Q, "blk.%d.attn_q" },
845
+ { LLM_TENSOR_ATTN_K, "blk.%d.attn_k" },
846
+ { LLM_TENSOR_ATTN_V, "blk.%d.attn_v" },
847
+ { LLM_TENSOR_ATTN_OUT, "blk.%d.attn_output" },
848
+ { LLM_TENSOR_ATTN_ROT_EMBD, "blk.%d.attn_rot_embd" },
849
+ { LLM_TENSOR_FFN_GATE_INP, "blk.%d.ffn_gate_inp" },
850
+ { LLM_TENSOR_FFN_NORM, "blk.%d.ffn_norm" },
851
+ { LLM_TENSOR_FFN_GATE, "blk.%d.ffn_gate" },
852
+ { LLM_TENSOR_FFN_DOWN, "blk.%d.ffn_down" },
853
+ { LLM_TENSOR_FFN_UP, "blk.%d.ffn_up" },
854
+ { LLM_TENSOR_FFN_GATE_EXP, "blk.%d.ffn_gate.%d" },
855
+ { LLM_TENSOR_FFN_DOWN_EXP, "blk.%d.ffn_down.%d" },
856
+ { LLM_TENSOR_FFN_UP_EXP, "blk.%d.ffn_up.%d" },
857
+ },
858
+ },
859
+ {
860
+ LLM_ARCH_MINICPM3,
861
+ {
862
+ { LLM_TENSOR_TOKEN_EMBD, "token_embd" },
863
+ { LLM_TENSOR_OUTPUT_NORM, "output_norm" },
864
+ { LLM_TENSOR_OUTPUT, "output" },
865
+ { LLM_TENSOR_ROPE_FACTORS_LONG, "rope_factors_long" },
866
+ { LLM_TENSOR_ROPE_FACTORS_SHORT, "rope_factors_short" },
867
+ { LLM_TENSOR_ATTN_NORM, "blk.%d.attn_norm" },
868
+ { LLM_TENSOR_ATTN_Q_A_NORM, "blk.%d.attn_q_a_norm" },
869
+ { LLM_TENSOR_ATTN_KV_A_NORM, "blk.%d.attn_kv_a_norm" },
870
+ { LLM_TENSOR_ATTN_Q, "blk.%d.attn_q" },
871
+ { LLM_TENSOR_ATTN_Q_A, "blk.%d.attn_q_a" },
872
+ { LLM_TENSOR_ATTN_Q_B, "blk.%d.attn_q_b" },
873
+ { LLM_TENSOR_ATTN_KV_A_MQA, "blk.%d.attn_kv_a_mqa" },
874
+ { LLM_TENSOR_ATTN_KV_B, "blk.%d.attn_kv_b" },
875
+ { LLM_TENSOR_ATTN_OUT, "blk.%d.attn_output" },
876
+ { LLM_TENSOR_FFN_NORM, "blk.%d.ffn_norm" },
877
+ { LLM_TENSOR_FFN_GATE, "blk.%d.ffn_gate" },
878
+ { LLM_TENSOR_FFN_UP, "blk.%d.ffn_up" },
879
+ { LLM_TENSOR_FFN_DOWN, "blk.%d.ffn_down" },
880
+ },
881
+ },
882
+ {
883
+ LLM_ARCH_GEMMA,
884
+ {
885
+ { LLM_TENSOR_TOKEN_EMBD, "token_embd" },
886
+ { LLM_TENSOR_OUTPUT_NORM, "output_norm" },
887
+ { LLM_TENSOR_ATTN_NORM, "blk.%d.attn_norm" },
888
+ { LLM_TENSOR_ATTN_Q, "blk.%d.attn_q" },
889
+ { LLM_TENSOR_ATTN_K, "blk.%d.attn_k" },
890
+ { LLM_TENSOR_ATTN_V, "blk.%d.attn_v" },
891
+ { LLM_TENSOR_ATTN_OUT, "blk.%d.attn_output" },
892
+ { LLM_TENSOR_FFN_NORM, "blk.%d.ffn_norm" },
893
+ { LLM_TENSOR_FFN_GATE, "blk.%d.ffn_gate" },
894
+ { LLM_TENSOR_FFN_DOWN, "blk.%d.ffn_down" },
895
+ { LLM_TENSOR_FFN_UP, "blk.%d.ffn_up" },
896
+ },
897
+ },
898
+ {
899
+ LLM_ARCH_GEMMA2,
900
+ {
901
+ { LLM_TENSOR_TOKEN_EMBD, "token_embd" },
902
+ { LLM_TENSOR_OUTPUT_NORM, "output_norm" },
903
+ { LLM_TENSOR_ATTN_NORM, "blk.%d.attn_norm" },
904
+ { LLM_TENSOR_ATTN_Q, "blk.%d.attn_q" },
905
+ { LLM_TENSOR_ATTN_K, "blk.%d.attn_k" },
906
+ { LLM_TENSOR_ATTN_V, "blk.%d.attn_v" },
907
+ { LLM_TENSOR_ATTN_OUT, "blk.%d.attn_output" },
908
+ { LLM_TENSOR_ATTN_POST_NORM, "blk.%d.post_attention_norm" },
909
+ { LLM_TENSOR_FFN_NORM, "blk.%d.ffn_norm" },
910
+ { LLM_TENSOR_FFN_GATE, "blk.%d.ffn_gate" },
911
+ { LLM_TENSOR_FFN_DOWN, "blk.%d.ffn_down" },
912
+ { LLM_TENSOR_FFN_UP, "blk.%d.ffn_up" },
913
+ { LLM_TENSOR_FFN_POST_NORM, "blk.%d.post_ffw_norm" },
914
+ },
915
+ },
916
+ {
917
+ LLM_ARCH_GEMMA3,
918
+ {
919
+ { LLM_TENSOR_TOKEN_EMBD, "token_embd" },
920
+ { LLM_TENSOR_OUTPUT_NORM, "output_norm" },
921
+ { LLM_TENSOR_OUTPUT, "output" },
922
+ { LLM_TENSOR_ATTN_NORM, "blk.%d.attn_norm" },
923
+ { LLM_TENSOR_ATTN_Q, "blk.%d.attn_q" },
924
+ { LLM_TENSOR_ATTN_Q_NORM, "blk.%d.attn_q_norm" },
925
+ { LLM_TENSOR_ATTN_K, "blk.%d.attn_k" },
926
+ { LLM_TENSOR_ATTN_K_NORM, "blk.%d.attn_k_norm" },
927
+ { LLM_TENSOR_ATTN_V, "blk.%d.attn_v" },
928
+ { LLM_TENSOR_ATTN_OUT, "blk.%d.attn_output" },
929
+ { LLM_TENSOR_ATTN_POST_NORM, "blk.%d.post_attention_norm" },
930
+ { LLM_TENSOR_FFN_NORM, "blk.%d.ffn_norm" },
931
+ { LLM_TENSOR_FFN_GATE, "blk.%d.ffn_gate" },
932
+ { LLM_TENSOR_FFN_DOWN, "blk.%d.ffn_down" },
933
+ { LLM_TENSOR_FFN_UP, "blk.%d.ffn_up" },
934
+ { LLM_TENSOR_FFN_POST_NORM, "blk.%d.post_ffw_norm" },
935
+ },
936
+ },
937
+ {
938
+ LLM_ARCH_GEMMA3N,
939
+ {
940
+ { LLM_TENSOR_TOKEN_EMBD, "token_embd" },
941
+ { LLM_TENSOR_OUTPUT_NORM, "output_norm" },
942
+ { LLM_TENSOR_ATTN_NORM, "blk.%d.attn_norm" },
943
+ { LLM_TENSOR_ATTN_Q, "blk.%d.attn_q" },
944
+ { LLM_TENSOR_ATTN_Q_NORM, "blk.%d.attn_q_norm" },
945
+ { LLM_TENSOR_ATTN_K, "blk.%d.attn_k" },
946
+ { LLM_TENSOR_ATTN_K_NORM, "blk.%d.attn_k_norm" },
947
+ { LLM_TENSOR_ATTN_V, "blk.%d.attn_v" },
948
+ { LLM_TENSOR_ATTN_OUT, "blk.%d.attn_output" },
949
+ { LLM_TENSOR_ATTN_POST_NORM, "blk.%d.post_attention_norm" },
950
+ { LLM_TENSOR_FFN_NORM, "blk.%d.ffn_norm" },
951
+ { LLM_TENSOR_FFN_GATE, "blk.%d.ffn_gate" },
952
+ { LLM_TENSOR_FFN_DOWN, "blk.%d.ffn_down" },
953
+ { LLM_TENSOR_FFN_UP, "blk.%d.ffn_up" },
954
+ { LLM_TENSOR_FFN_POST_NORM, "blk.%d.post_ffw_norm" },
955
+ { LLM_TENSOR_PER_LAYER_TOKEN_EMBD, "per_layer_token_embd" },
956
+ { LLM_TENSOR_PER_LAYER_MODEL_PROJ, "per_layer_model_proj" },
957
+ { LLM_TENSOR_PER_LAYER_PROJ_NORM, "per_layer_proj_norm" },
958
+ { LLM_TENSOR_ALTUP_UNEMBD_PROJ, "altup_unembd_proj" },
959
+ { LLM_TENSOR_ALTUP_PROJ, "altup_proj" },
960
+ { LLM_TENSOR_PER_LAYER_INP_GATE, "blk.%d.inp_gate" },
961
+ { LLM_TENSOR_PER_LAYER_PROJ, "blk.%d.proj" },
962
+ { LLM_TENSOR_PER_LAYER_POST_NORM, "blk.%d.post_norm" },
963
+ { LLM_TENSOR_ALTUP_CORRECT_COEF, "blk.%d.altup_correct_coef" },
964
+ { LLM_TENSOR_ALTUP_CORRECT_SCALE, "blk.%d.altup_correct_scale" },
965
+ { LLM_TENSOR_ALTUP_PREDICT_COEF, "blk.%d.altup_predict_coef" },
966
+ { LLM_TENSOR_ALTUP_ROUTER, "blk.%d.altup_router" },
967
+ { LLM_TENSOR_ALTUP_ROUTER_NORM, "blk.%d.altup_router_norm" },
968
+ { LLM_TENSOR_LAUREL_L, "blk.%d.laurel_l" },
969
+ { LLM_TENSOR_LAUREL_R, "blk.%d.laurel_r" },
970
+ { LLM_TENSOR_LAUREL_POST_NORM, "blk.%d.laurel_post_norm" },
971
+ },
972
+ },
973
+ {
974
+ LLM_ARCH_STARCODER2,
975
+ {
976
+ { LLM_TENSOR_TOKEN_EMBD, "token_embd" },
977
+ { LLM_TENSOR_OUTPUT_NORM, "output_norm" },
978
+ { LLM_TENSOR_OUTPUT, "output" },
979
+ { LLM_TENSOR_ROPE_FREQS, "rope_freqs" },
980
+ { LLM_TENSOR_ATTN_NORM, "blk.%d.attn_norm" },
981
+ { LLM_TENSOR_ATTN_Q, "blk.%d.attn_q" },
982
+ { LLM_TENSOR_ATTN_K, "blk.%d.attn_k" },
983
+ { LLM_TENSOR_ATTN_V, "blk.%d.attn_v" },
984
+ { LLM_TENSOR_ATTN_OUT, "blk.%d.attn_output" },
985
+ { LLM_TENSOR_ATTN_ROT_EMBD, "blk.%d.attn_rot_embd" },
986
+ { LLM_TENSOR_FFN_NORM, "blk.%d.ffn_norm" },
987
+ { LLM_TENSOR_FFN_DOWN, "blk.%d.ffn_down" },
988
+ { LLM_TENSOR_FFN_UP, "blk.%d.ffn_up" },
989
+ },
990
+ },
991
+ {
992
+ LLM_ARCH_MAMBA,
993
+ {
994
+ { LLM_TENSOR_TOKEN_EMBD, "token_embd" },
995
+ { LLM_TENSOR_OUTPUT_NORM, "output_norm" },
996
+ { LLM_TENSOR_OUTPUT, "output" },
997
+ { LLM_TENSOR_ATTN_NORM, "blk.%d.attn_norm" },
998
+ { LLM_TENSOR_SSM_IN, "blk.%d.ssm_in" },
999
+ { LLM_TENSOR_SSM_CONV1D, "blk.%d.ssm_conv1d" },
1000
+ { LLM_TENSOR_SSM_X, "blk.%d.ssm_x" },
1001
+ { LLM_TENSOR_SSM_DT, "blk.%d.ssm_dt" },
1002
+ { LLM_TENSOR_SSM_A, "blk.%d.ssm_a" },
1003
+ { LLM_TENSOR_SSM_D, "blk.%d.ssm_d" },
1004
+ { LLM_TENSOR_SSM_OUT, "blk.%d.ssm_out" },
1005
+ },
1006
+ },
1007
+ {
1008
+ LLM_ARCH_XVERSE,
1009
+ {
1010
+ { LLM_TENSOR_TOKEN_EMBD, "token_embd" },
1011
+ { LLM_TENSOR_OUTPUT_NORM, "output_norm" },
1012
+ { LLM_TENSOR_OUTPUT, "output" },
1013
+ { LLM_TENSOR_ROPE_FREQS, "rope_freqs" },
1014
+ { LLM_TENSOR_ATTN_NORM, "blk.%d.attn_norm" },
1015
+ { LLM_TENSOR_ATTN_Q, "blk.%d.attn_q" },
1016
+ { LLM_TENSOR_ATTN_K, "blk.%d.attn_k" },
1017
+ { LLM_TENSOR_ATTN_V, "blk.%d.attn_v" },
1018
+ { LLM_TENSOR_ATTN_OUT, "blk.%d.attn_output" },
1019
+ { LLM_TENSOR_ATTN_ROT_EMBD, "blk.%d.attn_rot_embd" },
1020
+ { LLM_TENSOR_FFN_NORM, "blk.%d.ffn_norm" },
1021
+ { LLM_TENSOR_FFN_GATE, "blk.%d.ffn_gate" },
1022
+ { LLM_TENSOR_FFN_DOWN, "blk.%d.ffn_down" },
1023
+ { LLM_TENSOR_FFN_UP, "blk.%d.ffn_up" },
1024
+ },
1025
+ },
1026
+ {
1027
+ LLM_ARCH_COMMAND_R,
1028
+ {
1029
+ { LLM_TENSOR_TOKEN_EMBD, "token_embd" },
1030
+ { LLM_TENSOR_OUTPUT_NORM, "output_norm" },
1031
+ { LLM_TENSOR_ATTN_NORM, "blk.%d.attn_norm" },
1032
+ { LLM_TENSOR_ATTN_Q, "blk.%d.attn_q" },
1033
+ { LLM_TENSOR_ATTN_K, "blk.%d.attn_k" },
1034
+ { LLM_TENSOR_ATTN_V, "blk.%d.attn_v" },
1035
+ { LLM_TENSOR_ATTN_OUT, "blk.%d.attn_output" },
1036
+ { LLM_TENSOR_FFN_GATE, "blk.%d.ffn_gate" },
1037
+ { LLM_TENSOR_FFN_DOWN, "blk.%d.ffn_down" },
1038
+ { LLM_TENSOR_FFN_UP, "blk.%d.ffn_up" },
1039
+ { LLM_TENSOR_ATTN_Q_NORM, "blk.%d.attn_q_norm" },
1040
+ { LLM_TENSOR_ATTN_K_NORM, "blk.%d.attn_k_norm" },
1041
+ },
1042
+ },
1043
+ {
1044
+ LLM_ARCH_COHERE2,
1045
+ {
1046
+ { LLM_TENSOR_TOKEN_EMBD, "token_embd" },
1047
+ { LLM_TENSOR_OUTPUT_NORM, "output_norm" },
1048
+ { LLM_TENSOR_ATTN_NORM, "blk.%d.attn_norm" },
1049
+ { LLM_TENSOR_ATTN_Q, "blk.%d.attn_q" },
1050
+ { LLM_TENSOR_ATTN_K, "blk.%d.attn_k" },
1051
+ { LLM_TENSOR_ATTN_V, "blk.%d.attn_v" },
1052
+ { LLM_TENSOR_ATTN_OUT, "blk.%d.attn_output" },
1053
+ { LLM_TENSOR_FFN_GATE, "blk.%d.ffn_gate" },
1054
+ { LLM_TENSOR_FFN_DOWN, "blk.%d.ffn_down" },
1055
+ { LLM_TENSOR_FFN_UP, "blk.%d.ffn_up" },
1056
+ },
1057
+ },
1058
+ {
1059
+ LLM_ARCH_DBRX,
1060
+ {
1061
+ { LLM_TENSOR_TOKEN_EMBD, "token_embd" },
1062
+ { LLM_TENSOR_OUTPUT_NORM, "output_norm" },
1063
+ { LLM_TENSOR_OUTPUT, "output" },
1064
+ { LLM_TENSOR_ATTN_QKV, "blk.%d.attn_qkv" },
1065
+ { LLM_TENSOR_ATTN_NORM, "blk.%d.attn_norm" },
1066
+ { LLM_TENSOR_ATTN_OUT, "blk.%d.attn_output" },
1067
+ { LLM_TENSOR_ATTN_OUT_NORM, "blk.%d.attn_output_norm" },
1068
+ { LLM_TENSOR_FFN_GATE_INP, "blk.%d.ffn_gate_inp" },
1069
+ { LLM_TENSOR_FFN_GATE_EXPS, "blk.%d.ffn_gate_exps" },
1070
+ { LLM_TENSOR_FFN_DOWN_EXPS, "blk.%d.ffn_down_exps" },
1071
+ { LLM_TENSOR_FFN_UP_EXPS, "blk.%d.ffn_up_exps" },
1072
+ },
1073
+ },
1074
+ {
1075
+ LLM_ARCH_OLMO,
1076
+ {
1077
+ { LLM_TENSOR_TOKEN_EMBD, "token_embd" },
1078
+ { LLM_TENSOR_OUTPUT, "output" },
1079
+ { LLM_TENSOR_ATTN_Q, "blk.%d.attn_q" },
1080
+ { LLM_TENSOR_ATTN_K, "blk.%d.attn_k" },
1081
+ { LLM_TENSOR_ATTN_V, "blk.%d.attn_v" },
1082
+ { LLM_TENSOR_ATTN_OUT, "blk.%d.attn_output" },
1083
+ { LLM_TENSOR_FFN_GATE, "blk.%d.ffn_gate" },
1084
+ { LLM_TENSOR_FFN_DOWN, "blk.%d.ffn_down" },
1085
+ { LLM_TENSOR_FFN_UP, "blk.%d.ffn_up" },
1086
+ },
1087
+ },
1088
+ {
1089
+ LLM_ARCH_OLMO2,
1090
+ {
1091
+ { LLM_TENSOR_TOKEN_EMBD, "token_embd" },
1092
+ { LLM_TENSOR_OUTPUT_NORM, "output_norm" },
1093
+ { LLM_TENSOR_OUTPUT, "output" },
1094
+ { LLM_TENSOR_ATTN_Q, "blk.%d.attn_q" },
1095
+ { LLM_TENSOR_ATTN_K, "blk.%d.attn_k" },
1096
+ { LLM_TENSOR_ATTN_V, "blk.%d.attn_v" },
1097
+ { LLM_TENSOR_ATTN_OUT, "blk.%d.attn_output" },
1098
+ { LLM_TENSOR_ATTN_POST_NORM, "blk.%d.post_attention_norm" },
1099
+ { LLM_TENSOR_ATTN_Q_NORM, "blk.%d.attn_q_norm" },
1100
+ { LLM_TENSOR_ATTN_K_NORM, "blk.%d.attn_k_norm" },
1101
+ { LLM_TENSOR_FFN_POST_NORM, "blk.%d.post_ffw_norm" },
1102
+ { LLM_TENSOR_FFN_GATE, "blk.%d.ffn_gate" },
1103
+ { LLM_TENSOR_FFN_DOWN, "blk.%d.ffn_down" },
1104
+ { LLM_TENSOR_FFN_UP, "blk.%d.ffn_up" },
1105
+ },
1106
+ },
1107
+ {
1108
+ LLM_ARCH_OLMOE,
1109
+ {
1110
+ { LLM_TENSOR_TOKEN_EMBD, "token_embd" },
1111
+ { LLM_TENSOR_OUTPUT_NORM, "output_norm" },
1112
+ { LLM_TENSOR_OUTPUT, "output" },
1113
+ { LLM_TENSOR_ATTN_NORM, "blk.%d.attn_norm" },
1114
+ { LLM_TENSOR_ATTN_Q, "blk.%d.attn_q" },
1115
+ { LLM_TENSOR_ATTN_K, "blk.%d.attn_k" },
1116
+ { LLM_TENSOR_ATTN_V, "blk.%d.attn_v" },
1117
+ { LLM_TENSOR_ATTN_OUT, "blk.%d.attn_output" },
1118
+ { LLM_TENSOR_ATTN_Q_NORM, "blk.%d.attn_q_norm" },
1119
+ { LLM_TENSOR_ATTN_K_NORM, "blk.%d.attn_k_norm" },
1120
+ { LLM_TENSOR_FFN_NORM, "blk.%d.ffn_norm" },
1121
+ { LLM_TENSOR_FFN_GATE_INP, "blk.%d.ffn_gate_inp" },
1122
+ { LLM_TENSOR_FFN_GATE_EXPS, "blk.%d.ffn_gate_exps" },
1123
+ { LLM_TENSOR_FFN_DOWN_EXPS, "blk.%d.ffn_down_exps" },
1124
+ { LLM_TENSOR_FFN_UP_EXPS, "blk.%d.ffn_up_exps" },
1125
+ },
1126
+ },
1127
+ {
1128
+ LLM_ARCH_OPENELM,
1129
+ {
1130
+ { LLM_TENSOR_TOKEN_EMBD, "token_embd" },
1131
+ { LLM_TENSOR_OUTPUT_NORM, "output_norm" },
1132
+ { LLM_TENSOR_ATTN_NORM, "blk.%d.attn_norm" },
1133
+ { LLM_TENSOR_ATTN_QKV, "blk.%d.attn_qkv" },
1134
+ { LLM_TENSOR_ATTN_Q_NORM, "blk.%d.attn_q_norm" },
1135
+ { LLM_TENSOR_ATTN_K_NORM, "blk.%d.attn_k_norm" },
1136
+ { LLM_TENSOR_ATTN_OUT, "blk.%d.attn_output" },
1137
+ { LLM_TENSOR_FFN_NORM, "blk.%d.ffn_norm" },
1138
+ { LLM_TENSOR_FFN_GATE, "blk.%d.ffn_gate" },
1139
+ { LLM_TENSOR_FFN_DOWN, "blk.%d.ffn_down" },
1140
+ { LLM_TENSOR_FFN_UP, "blk.%d.ffn_up" },
1141
+ },
1142
+ },
1143
+ {
1144
+ LLM_ARCH_ARCTIC,
1145
+ {
1146
+ { LLM_TENSOR_TOKEN_EMBD, "token_embd" },
1147
+ { LLM_TENSOR_OUTPUT_NORM, "output_norm" },
1148
+ { LLM_TENSOR_OUTPUT, "output" },
1149
+ { LLM_TENSOR_ATTN_NORM, "blk.%d.attn_norm" },
1150
+ { LLM_TENSOR_ATTN_Q, "blk.%d.attn_q" },
1151
+ { LLM_TENSOR_ATTN_K, "blk.%d.attn_k" },
1152
+ { LLM_TENSOR_ATTN_V, "blk.%d.attn_v" },
1153
+ { LLM_TENSOR_ATTN_OUT, "blk.%d.attn_output" },
1154
+ { LLM_TENSOR_FFN_GATE_INP, "blk.%d.ffn_gate_inp" },
1155
+ { LLM_TENSOR_FFN_NORM, "blk.%d.ffn_norm" },
1156
+ { LLM_TENSOR_FFN_GATE, "blk.%d.ffn_gate" },
1157
+ { LLM_TENSOR_FFN_DOWN, "blk.%d.ffn_down" },
1158
+ { LLM_TENSOR_FFN_UP, "blk.%d.ffn_up" },
1159
+ { LLM_TENSOR_FFN_NORM_EXPS, "blk.%d.ffn_norm_exps" },
1160
+ { LLM_TENSOR_FFN_GATE_EXPS, "blk.%d.ffn_gate_exps" },
1161
+ { LLM_TENSOR_FFN_DOWN_EXPS, "blk.%d.ffn_down_exps" },
1162
+ { LLM_TENSOR_FFN_UP_EXPS, "blk.%d.ffn_up_exps" },
1163
+ },
1164
+ },
1165
+ {
1166
+ LLM_ARCH_DEEPSEEK,
1167
+ {
1168
+ { LLM_TENSOR_TOKEN_EMBD, "token_embd" },
1169
+ { LLM_TENSOR_OUTPUT_NORM, "output_norm" },
1170
+ { LLM_TENSOR_OUTPUT, "output" },
1171
+ { LLM_TENSOR_ROPE_FREQS, "rope_freqs" },
1172
+ { LLM_TENSOR_ATTN_NORM, "blk.%d.attn_norm" },
1173
+ { LLM_TENSOR_ATTN_Q, "blk.%d.attn_q" },
1174
+ { LLM_TENSOR_ATTN_K, "blk.%d.attn_k" },
1175
+ { LLM_TENSOR_ATTN_V, "blk.%d.attn_v" },
1176
+ { LLM_TENSOR_ATTN_OUT, "blk.%d.attn_output" },
1177
+ { LLM_TENSOR_ATTN_ROT_EMBD, "blk.%d.attn_rot_embd" },
1178
+ { LLM_TENSOR_FFN_GATE_INP, "blk.%d.ffn_gate_inp" },
1179
+ { LLM_TENSOR_FFN_NORM, "blk.%d.ffn_norm" },
1180
+ { LLM_TENSOR_FFN_GATE, "blk.%d.ffn_gate" },
1181
+ { LLM_TENSOR_FFN_DOWN, "blk.%d.ffn_down" },
1182
+ { LLM_TENSOR_FFN_UP, "blk.%d.ffn_up" },
1183
+ { LLM_TENSOR_FFN_GATE_EXPS, "blk.%d.ffn_gate_exps" },
1184
+ { LLM_TENSOR_FFN_DOWN_EXPS, "blk.%d.ffn_down_exps" },
1185
+ { LLM_TENSOR_FFN_UP_EXPS, "blk.%d.ffn_up_exps" },
1186
+ { LLM_TENSOR_FFN_GATE_INP_SHEXP, "blk.%d.ffn_gate_inp_shexp" },
1187
+ { LLM_TENSOR_FFN_GATE_SHEXP, "blk.%d.ffn_gate_shexp" },
1188
+ { LLM_TENSOR_FFN_DOWN_SHEXP, "blk.%d.ffn_down_shexp" },
1189
+ { LLM_TENSOR_FFN_UP_SHEXP, "blk.%d.ffn_up_shexp" },
1190
+ },
1191
+ },
1192
+ {
1193
+ LLM_ARCH_DEEPSEEK2,
1194
+ {
1195
+ { LLM_TENSOR_TOKEN_EMBD, "token_embd" },
1196
+ { LLM_TENSOR_OUTPUT_NORM, "output_norm" },
1197
+ { LLM_TENSOR_OUTPUT, "output" },
1198
+ { LLM_TENSOR_ATTN_NORM, "blk.%d.attn_norm" },
1199
+ { LLM_TENSOR_ATTN_Q_A_NORM, "blk.%d.attn_q_a_norm" },
1200
+ { LLM_TENSOR_ATTN_KV_A_NORM, "blk.%d.attn_kv_a_norm" },
1201
+ { LLM_TENSOR_ATTN_Q, "blk.%d.attn_q" },
1202
+ { LLM_TENSOR_ATTN_Q_A, "blk.%d.attn_q_a" },
1203
+ { LLM_TENSOR_ATTN_Q_B, "blk.%d.attn_q_b" },
1204
+ { LLM_TENSOR_ATTN_KV_A_MQA, "blk.%d.attn_kv_a_mqa" },
1205
+ { LLM_TENSOR_ATTN_KV_B, "blk.%d.attn_kv_b" },
1206
+ { LLM_TENSOR_ATTN_K_B, "blk.%d.attn_k_b" },
1207
+ { LLM_TENSOR_ATTN_V_B, "blk.%d.attn_v_b" },
1208
+ { LLM_TENSOR_ATTN_OUT, "blk.%d.attn_output" },
1209
+ { LLM_TENSOR_FFN_NORM, "blk.%d.ffn_norm" },
1210
+ { LLM_TENSOR_FFN_GATE, "blk.%d.ffn_gate" },
1211
+ { LLM_TENSOR_FFN_UP, "blk.%d.ffn_up" },
1212
+ { LLM_TENSOR_FFN_DOWN, "blk.%d.ffn_down" },
1213
+ { LLM_TENSOR_FFN_GATE_INP, "blk.%d.ffn_gate_inp" },
1214
+ { LLM_TENSOR_FFN_GATE_EXPS, "blk.%d.ffn_gate_exps" },
1215
+ { LLM_TENSOR_FFN_DOWN_EXPS, "blk.%d.ffn_down_exps" },
1216
+ { LLM_TENSOR_FFN_UP_EXPS, "blk.%d.ffn_up_exps" },
1217
+ { LLM_TENSOR_FFN_GATE_INP_SHEXP, "blk.%d.ffn_gate_inp_shexp" },
1218
+ { LLM_TENSOR_FFN_GATE_SHEXP, "blk.%d.ffn_gate_shexp" },
1219
+ { LLM_TENSOR_FFN_DOWN_SHEXP, "blk.%d.ffn_down_shexp" },
1220
+ { LLM_TENSOR_FFN_UP_SHEXP, "blk.%d.ffn_up_shexp" },
1221
+ { LLM_TENSOR_FFN_EXP_PROBS_B, "blk.%d.exp_probs_b" },
1222
+ },
1223
+ },
1224
+ {
1225
+ LLM_ARCH_PLM,
1226
+ {
1227
+ { LLM_TENSOR_TOKEN_EMBD, "token_embd" },
1228
+ { LLM_TENSOR_OUTPUT_NORM, "output_norm" },
1229
+ { LLM_TENSOR_ATTN_NORM, "blk.%d.attn_norm" },
1230
+ { LLM_TENSOR_ATTN_Q, "blk.%d.attn_q" },
1231
+ { LLM_TENSOR_ATTN_KV_A_MQA, "blk.%d.attn_kv_a_mqa" },
1232
+ { LLM_TENSOR_ATTN_KV_A_NORM, "blk.%d.attn_kv_a_norm" },
1233
+ { LLM_TENSOR_ATTN_KV_B, "blk.%d.attn_kv_b" },
1234
+ { LLM_TENSOR_ATTN_OUT, "blk.%d.attn_output" },
1235
+ { LLM_TENSOR_FFN_NORM, "blk.%d.ffn_norm" },
1236
+ { LLM_TENSOR_FFN_DOWN, "blk.%d.ffn_down" },
1237
+ { LLM_TENSOR_FFN_UP, "blk.%d.ffn_up" },
1238
+ },
1239
+ },
1240
+ {
1241
+ LLM_ARCH_CHATGLM,
1242
+ {
1243
+ { LLM_TENSOR_TOKEN_EMBD, "token_embd" },
1244
+ { LLM_TENSOR_ROPE_FREQS, "rope_freqs" },
1245
+ { LLM_TENSOR_OUTPUT_NORM, "output_norm" },
1246
+ { LLM_TENSOR_OUTPUT, "output" },
1247
+ { LLM_TENSOR_ATTN_NORM, "blk.%d.attn_norm" },
1248
+ { LLM_TENSOR_ATTN_QKV, "blk.%d.attn_qkv" },
1249
+ { LLM_TENSOR_ATTN_Q, "blk.%d.attn_q" },
1250
+ { LLM_TENSOR_ATTN_K, "blk.%d.attn_k" },
1251
+ { LLM_TENSOR_ATTN_V, "blk.%d.attn_v" },
1252
+ { LLM_TENSOR_ATTN_OUT, "blk.%d.attn_output" },
1253
+ { LLM_TENSOR_FFN_NORM, "blk.%d.ffn_norm" },
1254
+ { LLM_TENSOR_FFN_UP, "blk.%d.ffn_up" },
1255
+ { LLM_TENSOR_FFN_DOWN, "blk.%d.ffn_down" },
1256
+ },
1257
+ },
1258
+ {
1259
+ LLM_ARCH_GLM4,
1260
+ {
1261
+ { LLM_TENSOR_TOKEN_EMBD, "token_embd" },
1262
+ { LLM_TENSOR_ROPE_FREQS, "rope_freqs" },
1263
+ { LLM_TENSOR_OUTPUT_NORM, "output_norm" },
1264
+ { LLM_TENSOR_OUTPUT, "output" },
1265
+ { LLM_TENSOR_ATTN_NORM, "blk.%d.attn_norm" },
1266
+ { LLM_TENSOR_ATTN_Q, "blk.%d.attn_q" },
1267
+ { LLM_TENSOR_ATTN_K, "blk.%d.attn_k" },
1268
+ { LLM_TENSOR_ATTN_V, "blk.%d.attn_v" },
1269
+ { LLM_TENSOR_ATTN_OUT, "blk.%d.attn_output" },
1270
+ { LLM_TENSOR_FFN_NORM, "blk.%d.ffn_norm" },
1271
+ { LLM_TENSOR_FFN_UP, "blk.%d.ffn_up" },
1272
+ { LLM_TENSOR_FFN_DOWN, "blk.%d.ffn_down" },
1273
+ { LLM_TENSOR_ATTN_POST_NORM, "blk.%d.post_attention_norm" },
1274
+ { LLM_TENSOR_FFN_POST_NORM, "blk.%d.post_ffw_norm" },
1275
+ },
1276
+ },
1277
+ {
1278
+ LLM_ARCH_BITNET,
1279
+ {
1280
+ { LLM_TENSOR_TOKEN_EMBD, "token_embd" },
1281
+ { LLM_TENSOR_OUTPUT_NORM, "output_norm" },
1282
+ { LLM_TENSOR_ATTN_Q, "blk.%d.attn_q" },
1283
+ { LLM_TENSOR_ATTN_K, "blk.%d.attn_k" },
1284
+ { LLM_TENSOR_ATTN_V, "blk.%d.attn_v" },
1285
+ { LLM_TENSOR_ATTN_OUT, "blk.%d.attn_output" },
1286
+ { LLM_TENSOR_ATTN_NORM, "blk.%d.attn_norm" },
1287
+ { LLM_TENSOR_ATTN_SUB_NORM, "blk.%d.attn_sub_norm" },
1288
+ { LLM_TENSOR_FFN_GATE, "blk.%d.ffn_gate" },
1289
+ { LLM_TENSOR_FFN_DOWN, "blk.%d.ffn_down" },
1290
+ { LLM_TENSOR_FFN_UP, "blk.%d.ffn_up" },
1291
+ { LLM_TENSOR_FFN_NORM, "blk.%d.ffn_norm" },
1292
+ { LLM_TENSOR_FFN_SUB_NORM, "blk.%d.ffn_sub_norm" },
1293
+ },
1294
+ },
1295
+ {
1296
+ LLM_ARCH_T5,
1297
+ {
1298
+ { LLM_TENSOR_TOKEN_EMBD, "token_embd" },
1299
+ { LLM_TENSOR_OUTPUT, "output" },
1300
+ { LLM_TENSOR_DEC_OUTPUT_NORM, "dec.output_norm" },
1301
+ { LLM_TENSOR_DEC_ATTN_NORM, "dec.blk.%d.attn_norm" },
1302
+ { LLM_TENSOR_DEC_ATTN_Q, "dec.blk.%d.attn_q" },
1303
+ { LLM_TENSOR_DEC_ATTN_K, "dec.blk.%d.attn_k" },
1304
+ { LLM_TENSOR_DEC_ATTN_V, "dec.blk.%d.attn_v" },
1305
+ { LLM_TENSOR_DEC_ATTN_OUT, "dec.blk.%d.attn_o" },
1306
+ { LLM_TENSOR_DEC_ATTN_REL_B, "dec.blk.%d.attn_rel_b" },
1307
+ { LLM_TENSOR_DEC_CROSS_ATTN_NORM, "dec.blk.%d.cross_attn_norm" },
1308
+ { LLM_TENSOR_DEC_CROSS_ATTN_Q, "dec.blk.%d.cross_attn_q" },
1309
+ { LLM_TENSOR_DEC_CROSS_ATTN_K, "dec.blk.%d.cross_attn_k" },
1310
+ { LLM_TENSOR_DEC_CROSS_ATTN_V, "dec.blk.%d.cross_attn_v" },
1311
+ { LLM_TENSOR_DEC_CROSS_ATTN_OUT, "dec.blk.%d.cross_attn_o" },
1312
+ { LLM_TENSOR_DEC_CROSS_ATTN_REL_B, "dec.blk.%d.cross_attn_rel_b" },
1313
+ { LLM_TENSOR_DEC_FFN_NORM, "dec.blk.%d.ffn_norm" },
1314
+ { LLM_TENSOR_DEC_FFN_GATE, "dec.blk.%d.ffn_gate" },
1315
+ { LLM_TENSOR_DEC_FFN_DOWN, "dec.blk.%d.ffn_down" },
1316
+ { LLM_TENSOR_DEC_FFN_UP, "dec.blk.%d.ffn_up" },
1317
+ { LLM_TENSOR_ENC_OUTPUT_NORM, "enc.output_norm" },
1318
+ { LLM_TENSOR_ENC_ATTN_NORM, "enc.blk.%d.attn_norm" },
1319
+ { LLM_TENSOR_ENC_ATTN_Q, "enc.blk.%d.attn_q" },
1320
+ { LLM_TENSOR_ENC_ATTN_K, "enc.blk.%d.attn_k" },
1321
+ { LLM_TENSOR_ENC_ATTN_V, "enc.blk.%d.attn_v" },
1322
+ { LLM_TENSOR_ENC_ATTN_OUT, "enc.blk.%d.attn_o" },
1323
+ { LLM_TENSOR_ENC_ATTN_REL_B, "enc.blk.%d.attn_rel_b" },
1324
+ { LLM_TENSOR_ENC_FFN_NORM, "enc.blk.%d.ffn_norm" },
1325
+ { LLM_TENSOR_ENC_FFN_GATE, "enc.blk.%d.ffn_gate" },
1326
+ { LLM_TENSOR_ENC_FFN_DOWN, "enc.blk.%d.ffn_down" },
1327
+ { LLM_TENSOR_ENC_FFN_UP, "enc.blk.%d.ffn_up" },
1328
+ },
1329
+ },
1330
+ {
1331
+ LLM_ARCH_T5ENCODER,
1332
+ {
1333
+ { LLM_TENSOR_TOKEN_EMBD, "token_embd" },
1334
+ { LLM_TENSOR_OUTPUT, "output" },
1335
+ { LLM_TENSOR_ENC_OUTPUT_NORM, "enc.output_norm" },
1336
+ { LLM_TENSOR_ENC_ATTN_NORM, "enc.blk.%d.attn_norm" },
1337
+ { LLM_TENSOR_ENC_ATTN_Q, "enc.blk.%d.attn_q" },
1338
+ { LLM_TENSOR_ENC_ATTN_K, "enc.blk.%d.attn_k" },
1339
+ { LLM_TENSOR_ENC_ATTN_V, "enc.blk.%d.attn_v" },
1340
+ { LLM_TENSOR_ENC_ATTN_OUT, "enc.blk.%d.attn_o" },
1341
+ { LLM_TENSOR_ENC_ATTN_REL_B, "enc.blk.%d.attn_rel_b" },
1342
+ { LLM_TENSOR_ENC_FFN_NORM, "enc.blk.%d.ffn_norm" },
1343
+ { LLM_TENSOR_ENC_FFN_GATE, "enc.blk.%d.ffn_gate" },
1344
+ { LLM_TENSOR_ENC_FFN_DOWN, "enc.blk.%d.ffn_down" },
1345
+ { LLM_TENSOR_ENC_FFN_UP, "enc.blk.%d.ffn_up" },
1346
+ },
1347
+ },
1348
+ {
1349
+ LLM_ARCH_JAIS,
1350
+ {
1351
+ { LLM_TENSOR_TOKEN_EMBD, "token_embd" },
1352
+ { LLM_TENSOR_OUTPUT_NORM, "output_norm" },
1353
+ { LLM_TENSOR_OUTPUT, "output" },
1354
+ { LLM_TENSOR_ATTN_NORM, "blk.%d.attn_norm" },
1355
+ { LLM_TENSOR_ATTN_QKV, "blk.%d.attn_qkv" },
1356
+ { LLM_TENSOR_ATTN_OUT, "blk.%d.attn_output" },
1357
+ { LLM_TENSOR_FFN_NORM, "blk.%d.ffn_norm" },
1358
+ { LLM_TENSOR_FFN_UP, "blk.%d.ffn_up" },
1359
+ { LLM_TENSOR_FFN_GATE, "blk.%d.ffn_gate" },
1360
+ { LLM_TENSOR_FFN_DOWN, "blk.%d.ffn_down" },
1361
+ },
1362
+ },
1363
+ {
1364
+ LLM_ARCH_NEMOTRON,
1365
+ {
1366
+ { LLM_TENSOR_TOKEN_EMBD, "token_embd" },
1367
+ { LLM_TENSOR_OUTPUT_NORM, "output_norm" },
1368
+ { LLM_TENSOR_OUTPUT, "output" },
1369
+ { LLM_TENSOR_ROPE_FREQS, "rope_freqs" },
1370
+ { LLM_TENSOR_ATTN_NORM, "blk.%d.attn_norm" },
1371
+ { LLM_TENSOR_ATTN_Q, "blk.%d.attn_q" },
1372
+ { LLM_TENSOR_ATTN_K, "blk.%d.attn_k" },
1373
+ { LLM_TENSOR_ATTN_V, "blk.%d.attn_v" },
1374
+ { LLM_TENSOR_ATTN_OUT, "blk.%d.attn_output" },
1375
+ { LLM_TENSOR_ATTN_ROT_EMBD, "blk.%d.attn_rot_embd" },
1376
+ { LLM_TENSOR_FFN_NORM, "blk.%d.ffn_norm" },
1377
+ { LLM_TENSOR_FFN_DOWN, "blk.%d.ffn_down" },
1378
+ { LLM_TENSOR_FFN_UP, "blk.%d.ffn_up" },
1379
+ },
1380
+ },
1381
+ {
1382
+ LLM_ARCH_EXAONE,
1383
+ {
1384
+ { LLM_TENSOR_TOKEN_EMBD, "token_embd" },
1385
+ { LLM_TENSOR_OUTPUT_NORM, "output_norm" },
1386
+ { LLM_TENSOR_OUTPUT, "output" },
1387
+ { LLM_TENSOR_ROPE_FREQS, "rope_freqs" },
1388
+ { LLM_TENSOR_ATTN_NORM, "blk.%d.attn_norm" },
1389
+ { LLM_TENSOR_ATTN_Q, "blk.%d.attn_q" },
1390
+ { LLM_TENSOR_ATTN_K, "blk.%d.attn_k" },
1391
+ { LLM_TENSOR_ATTN_V, "blk.%d.attn_v" },
1392
+ { LLM_TENSOR_ATTN_OUT, "blk.%d.attn_output" },
1393
+ { LLM_TENSOR_ATTN_ROT_EMBD, "blk.%d.attn_rot_embd" },
1394
+ { LLM_TENSOR_FFN_NORM, "blk.%d.ffn_norm" },
1395
+ { LLM_TENSOR_FFN_GATE, "blk.%d.ffn_gate" },
1396
+ { LLM_TENSOR_FFN_DOWN, "blk.%d.ffn_down" },
1397
+ { LLM_TENSOR_FFN_UP, "blk.%d.ffn_up" },
1398
+ },
1399
+ },
1400
+ {
1401
+ LLM_ARCH_RWKV6,
1402
+ {
1403
+ { LLM_TENSOR_TOKEN_EMBD, "token_embd" },
1404
+ { LLM_TENSOR_TOKEN_EMBD_NORM, "token_embd_norm" },
1405
+ { LLM_TENSOR_OUTPUT_NORM, "output_norm" },
1406
+ { LLM_TENSOR_OUTPUT, "output" },
1407
+ { LLM_TENSOR_ATTN_NORM, "blk.%d.attn_norm" },
1408
+ { LLM_TENSOR_ATTN_NORM_2, "blk.%d.attn_norm_2" },
1409
+ { LLM_TENSOR_TIME_MIX_W1, "blk.%d.time_mix_w1" },
1410
+ { LLM_TENSOR_TIME_MIX_W2, "blk.%d.time_mix_w2" },
1411
+ { LLM_TENSOR_TIME_MIX_LERP_X, "blk.%d.time_mix_lerp_x" },
1412
+ { LLM_TENSOR_TIME_MIX_LERP_W, "blk.%d.time_mix_lerp_w" },
1413
+ { LLM_TENSOR_TIME_MIX_LERP_K, "blk.%d.time_mix_lerp_k" },
1414
+ { LLM_TENSOR_TIME_MIX_LERP_V, "blk.%d.time_mix_lerp_v" },
1415
+ { LLM_TENSOR_TIME_MIX_LERP_R, "blk.%d.time_mix_lerp_r" },
1416
+ { LLM_TENSOR_TIME_MIX_LERP_G, "blk.%d.time_mix_lerp_g" },
1417
+ { LLM_TENSOR_TIME_MIX_LERP_FUSED, "blk.%d.time_mix_lerp_fused" },
1418
+ { LLM_TENSOR_TIME_MIX_FIRST, "blk.%d.time_mix_first" },
1419
+ { LLM_TENSOR_TIME_MIX_DECAY, "blk.%d.time_mix_decay" },
1420
+ { LLM_TENSOR_TIME_MIX_DECAY_W1, "blk.%d.time_mix_decay_w1" },
1421
+ { LLM_TENSOR_TIME_MIX_DECAY_W2, "blk.%d.time_mix_decay_w2" },
1422
+ { LLM_TENSOR_TIME_MIX_KEY, "blk.%d.time_mix_key" },
1423
+ { LLM_TENSOR_TIME_MIX_VALUE, "blk.%d.time_mix_value" },
1424
+ { LLM_TENSOR_TIME_MIX_RECEPTANCE, "blk.%d.time_mix_receptance" },
1425
+ { LLM_TENSOR_TIME_MIX_GATE, "blk.%d.time_mix_gate" },
1426
+ { LLM_TENSOR_TIME_MIX_LN, "blk.%d.time_mix_ln" },
1427
+ { LLM_TENSOR_TIME_MIX_OUTPUT, "blk.%d.time_mix_output" },
1428
+ { LLM_TENSOR_CHANNEL_MIX_LERP_K, "blk.%d.channel_mix_lerp_k" },
1429
+ { LLM_TENSOR_CHANNEL_MIX_LERP_R, "blk.%d.channel_mix_lerp_r" },
1430
+ { LLM_TENSOR_CHANNEL_MIX_KEY, "blk.%d.channel_mix_key" },
1431
+ { LLM_TENSOR_CHANNEL_MIX_VALUE, "blk.%d.channel_mix_value" },
1432
+ { LLM_TENSOR_CHANNEL_MIX_RECEPTANCE, "blk.%d.channel_mix_receptance" },
1433
+ },
1434
+ },
1435
+ {
1436
+ LLM_ARCH_RWKV6QWEN2,
1437
+ {
1438
+ { LLM_TENSOR_TOKEN_EMBD, "token_embd" },
1439
+ { LLM_TENSOR_OUTPUT_NORM, "output_norm" },
1440
+ { LLM_TENSOR_OUTPUT, "output" },
1441
+ { LLM_TENSOR_ATTN_NORM, "blk.%d.attn_norm" },
1442
+ { LLM_TENSOR_TIME_MIX_W1, "blk.%d.time_mix_w1" },
1443
+ { LLM_TENSOR_TIME_MIX_W2, "blk.%d.time_mix_w2" },
1444
+ { LLM_TENSOR_TIME_MIX_LERP_X, "blk.%d.time_mix_lerp_x" },
1445
+ { LLM_TENSOR_TIME_MIX_LERP_FUSED, "blk.%d.time_mix_lerp_fused" },
1446
+ { LLM_TENSOR_TIME_MIX_FIRST, "blk.%d.time_mix_first" },
1447
+ { LLM_TENSOR_TIME_MIX_DECAY, "blk.%d.time_mix_decay" },
1448
+ { LLM_TENSOR_TIME_MIX_DECAY_W1, "blk.%d.time_mix_decay_w1" },
1449
+ { LLM_TENSOR_TIME_MIX_DECAY_W2, "blk.%d.time_mix_decay_w2" },
1450
+ { LLM_TENSOR_TIME_MIX_KEY, "blk.%d.time_mix_key" },
1451
+ { LLM_TENSOR_TIME_MIX_VALUE, "blk.%d.time_mix_value" },
1452
+ { LLM_TENSOR_TIME_MIX_RECEPTANCE, "blk.%d.time_mix_receptance" },
1453
+ { LLM_TENSOR_TIME_MIX_GATE, "blk.%d.time_mix_gate" },
1454
+ { LLM_TENSOR_TIME_MIX_OUTPUT, "blk.%d.time_mix_output" },
1455
+ { LLM_TENSOR_FFN_NORM, "blk.%d.ffn_norm" },
1456
+ { LLM_TENSOR_FFN_GATE, "blk.%d.ffn_gate" },
1457
+ { LLM_TENSOR_FFN_DOWN, "blk.%d.ffn_down" },
1458
+ { LLM_TENSOR_FFN_UP, "blk.%d.ffn_up" },
1459
+ },
1460
+ },
1461
+ {
1462
+ LLM_ARCH_RWKV7,
1463
+ {
1464
+ { LLM_TENSOR_TOKEN_EMBD, "token_embd" },
1465
+ { LLM_TENSOR_TOKEN_EMBD_NORM, "token_embd_norm" },
1466
+ { LLM_TENSOR_OUTPUT_NORM, "output_norm" },
1467
+ { LLM_TENSOR_OUTPUT, "output" },
1468
+ { LLM_TENSOR_ATTN_NORM, "blk.%d.attn_norm" },
1469
+ { LLM_TENSOR_ATTN_NORM_2, "blk.%d.attn_norm_2" },
1470
+ { LLM_TENSOR_TIME_MIX_W0, "blk.%d.time_mix_w0" },
1471
+ { LLM_TENSOR_TIME_MIX_W1, "blk.%d.time_mix_w1" },
1472
+ { LLM_TENSOR_TIME_MIX_W2, "blk.%d.time_mix_w2" },
1473
+ { LLM_TENSOR_TIME_MIX_A0, "blk.%d.time_mix_a0" },
1474
+ { LLM_TENSOR_TIME_MIX_A1, "blk.%d.time_mix_a1" },
1475
+ { LLM_TENSOR_TIME_MIX_A2, "blk.%d.time_mix_a2" },
1476
+ { LLM_TENSOR_TIME_MIX_V0, "blk.%d.time_mix_v0" },
1477
+ { LLM_TENSOR_TIME_MIX_V1, "blk.%d.time_mix_v1" },
1478
+ { LLM_TENSOR_TIME_MIX_V2, "blk.%d.time_mix_v2" },
1479
+ { LLM_TENSOR_TIME_MIX_G1, "blk.%d.time_mix_g1" },
1480
+ { LLM_TENSOR_TIME_MIX_G2, "blk.%d.time_mix_g2" },
1481
+ { LLM_TENSOR_TIME_MIX_K_K, "blk.%d.time_mix_k_k" },
1482
+ { LLM_TENSOR_TIME_MIX_K_A, "blk.%d.time_mix_k_a" },
1483
+ { LLM_TENSOR_TIME_MIX_R_K, "blk.%d.time_mix_r_k" },
1484
+ { LLM_TENSOR_TIME_MIX_LERP_FUSED, "blk.%d.time_mix_lerp_fused" },
1485
+ { LLM_TENSOR_TIME_MIX_KEY, "blk.%d.time_mix_key" },
1486
+ { LLM_TENSOR_TIME_MIX_VALUE, "blk.%d.time_mix_value" },
1487
+ { LLM_TENSOR_TIME_MIX_RECEPTANCE, "blk.%d.time_mix_receptance" },
1488
+ { LLM_TENSOR_TIME_MIX_LN, "blk.%d.time_mix_ln" },
1489
+ { LLM_TENSOR_TIME_MIX_OUTPUT, "blk.%d.time_mix_output" },
1490
+ { LLM_TENSOR_CHANNEL_MIX_LERP_K, "blk.%d.channel_mix_lerp_k" },
1491
+ { LLM_TENSOR_CHANNEL_MIX_KEY, "blk.%d.channel_mix_key" },
1492
+ { LLM_TENSOR_CHANNEL_MIX_VALUE, "blk.%d.channel_mix_value" },
1493
+ },
1494
+ },
1495
+ {
1496
+ LLM_ARCH_ARWKV7,
1497
+ {
1498
+ { LLM_TENSOR_TOKEN_EMBD, "token_embd" },
1499
+ { LLM_TENSOR_TOKEN_EMBD_NORM, "token_embd_norm" },
1500
+ { LLM_TENSOR_OUTPUT_NORM, "output_norm" },
1501
+ { LLM_TENSOR_OUTPUT, "output" },
1502
+ { LLM_TENSOR_ATTN_NORM, "blk.%d.attn_norm" },
1503
+ { LLM_TENSOR_TIME_MIX_W0, "blk.%d.time_mix_w0" },
1504
+ { LLM_TENSOR_TIME_MIX_W1, "blk.%d.time_mix_w1" },
1505
+ { LLM_TENSOR_TIME_MIX_W2, "blk.%d.time_mix_w2" },
1506
+ { LLM_TENSOR_TIME_MIX_A0, "blk.%d.time_mix_a0" },
1507
+ { LLM_TENSOR_TIME_MIX_A1, "blk.%d.time_mix_a1" },
1508
+ { LLM_TENSOR_TIME_MIX_A2, "blk.%d.time_mix_a2" },
1509
+ { LLM_TENSOR_TIME_MIX_V0, "blk.%d.time_mix_v0" },
1510
+ { LLM_TENSOR_TIME_MIX_V1, "blk.%d.time_mix_v1" },
1511
+ { LLM_TENSOR_TIME_MIX_V2, "blk.%d.time_mix_v2" },
1512
+ { LLM_TENSOR_TIME_MIX_G1, "blk.%d.time_mix_g1" },
1513
+ { LLM_TENSOR_TIME_MIX_G2, "blk.%d.time_mix_g2" },
1514
+ { LLM_TENSOR_TIME_MIX_K_K, "blk.%d.time_mix_k_k" },
1515
+ { LLM_TENSOR_TIME_MIX_K_A, "blk.%d.time_mix_k_a" },
1516
+ { LLM_TENSOR_TIME_MIX_R_K, "blk.%d.time_mix_r_k" },
1517
+ { LLM_TENSOR_TIME_MIX_LERP_FUSED, "blk.%d.time_mix_lerp_fused" },
1518
+ { LLM_TENSOR_TIME_MIX_KEY, "blk.%d.time_mix_key" },
1519
+ { LLM_TENSOR_TIME_MIX_VALUE, "blk.%d.time_mix_value" },
1520
+ { LLM_TENSOR_TIME_MIX_RECEPTANCE, "blk.%d.time_mix_receptance" },
1521
+ { LLM_TENSOR_TIME_MIX_LN, "blk.%d.time_mix_ln" },
1522
+ { LLM_TENSOR_TIME_MIX_OUTPUT, "blk.%d.time_mix_output" },
1523
+ { LLM_TENSOR_FFN_NORM, "blk.%d.ffn_norm" },
1524
+ { LLM_TENSOR_FFN_GATE, "blk.%d.ffn_gate" },
1525
+ { LLM_TENSOR_FFN_DOWN, "blk.%d.ffn_down" },
1526
+ { LLM_TENSOR_FFN_UP, "blk.%d.ffn_up" },
1527
+ },
1528
+ },
1529
+ {
1530
+ LLM_ARCH_GRANITE,
1531
+ {
1532
+ { LLM_TENSOR_TOKEN_EMBD, "token_embd" },
1533
+ { LLM_TENSOR_OUTPUT_NORM, "output_norm" },
1534
+ { LLM_TENSOR_OUTPUT, "output" },
1535
+ { LLM_TENSOR_ATTN_NORM, "blk.%d.attn_norm" },
1536
+ { LLM_TENSOR_ATTN_Q, "blk.%d.attn_q" },
1537
+ { LLM_TENSOR_ATTN_K, "blk.%d.attn_k" },
1538
+ { LLM_TENSOR_ATTN_V, "blk.%d.attn_v" },
1539
+ { LLM_TENSOR_ATTN_OUT, "blk.%d.attn_output" },
1540
+ { LLM_TENSOR_FFN_NORM, "blk.%d.ffn_norm" },
1541
+ { LLM_TENSOR_FFN_GATE, "blk.%d.ffn_gate" },
1542
+ { LLM_TENSOR_FFN_DOWN, "blk.%d.ffn_down" },
1543
+ { LLM_TENSOR_FFN_UP, "blk.%d.ffn_up" },
1544
+ },
1545
+ },
1546
+ {
1547
+ LLM_ARCH_GRANITE_MOE,
1548
+ {
1549
+ { LLM_TENSOR_TOKEN_EMBD, "token_embd" },
1550
+ { LLM_TENSOR_OUTPUT_NORM, "output_norm" },
1551
+ { LLM_TENSOR_OUTPUT, "output" },
1552
+ { LLM_TENSOR_ATTN_NORM, "blk.%d.attn_norm" },
1553
+ { LLM_TENSOR_ATTN_Q, "blk.%d.attn_q" },
1554
+ { LLM_TENSOR_ATTN_K, "blk.%d.attn_k" },
1555
+ { LLM_TENSOR_ATTN_V, "blk.%d.attn_v" },
1556
+ { LLM_TENSOR_ATTN_OUT, "blk.%d.attn_output" },
1557
+ { LLM_TENSOR_FFN_NORM, "blk.%d.ffn_norm" },
1558
+ { LLM_TENSOR_FFN_GATE_INP, "blk.%d.ffn_gate_inp" },
1559
+ { LLM_TENSOR_FFN_GATE_EXPS, "blk.%d.ffn_gate_exps" },
1560
+ { LLM_TENSOR_FFN_DOWN_EXPS, "blk.%d.ffn_down_exps" },
1561
+ { LLM_TENSOR_FFN_UP_EXPS, "blk.%d.ffn_up_exps" },
1562
+ { LLM_TENSOR_FFN_GATE_SHEXP, "blk.%d.ffn_gate_shexp" },
1563
+ { LLM_TENSOR_FFN_DOWN_SHEXP, "blk.%d.ffn_down_shexp" },
1564
+ { LLM_TENSOR_FFN_UP_SHEXP, "blk.%d.ffn_up_shexp" },
1565
+ },
1566
+ },
1567
+ {
1568
+ LLM_ARCH_CHAMELEON,
1569
+ {
1570
+ { LLM_TENSOR_TOKEN_EMBD, "token_embd" },
1571
+ { LLM_TENSOR_OUTPUT_NORM, "output_norm" },
1572
+ { LLM_TENSOR_OUTPUT, "output" },
1573
+ { LLM_TENSOR_ATTN_NORM, "blk.%d.attn_norm" },
1574
+ { LLM_TENSOR_ATTN_Q, "blk.%d.attn_q" },
1575
+ { LLM_TENSOR_ATTN_K, "blk.%d.attn_k" },
1576
+ { LLM_TENSOR_ATTN_V, "blk.%d.attn_v" },
1577
+ { LLM_TENSOR_ATTN_OUT, "blk.%d.attn_output" },
1578
+ { LLM_TENSOR_FFN_NORM, "blk.%d.ffn_norm" },
1579
+ { LLM_TENSOR_FFN_GATE, "blk.%d.ffn_gate" },
1580
+ { LLM_TENSOR_FFN_DOWN, "blk.%d.ffn_down" },
1581
+ { LLM_TENSOR_FFN_UP, "blk.%d.ffn_up" },
1582
+ { LLM_TENSOR_ATTN_Q_NORM, "blk.%d.attn_q_norm" },
1583
+ { LLM_TENSOR_ATTN_K_NORM, "blk.%d.attn_k_norm" },
1584
+ },
1585
+ },
1586
+ {
1587
+ LLM_ARCH_WAVTOKENIZER_DEC,
1588
+ {
1589
+ { LLM_TENSOR_TOKEN_EMBD, "token_embd" },
1590
+ { LLM_TENSOR_TOKEN_EMBD_NORM, "token_embd_norm" },
1591
+ { LLM_TENSOR_CONV1D, "conv1d" },
1592
+ { LLM_TENSOR_CONVNEXT_DW, "convnext.%d.dw" },
1593
+ { LLM_TENSOR_CONVNEXT_NORM, "convnext.%d.norm" },
1594
+ { LLM_TENSOR_CONVNEXT_PW1, "convnext.%d.pw1" },
1595
+ { LLM_TENSOR_CONVNEXT_PW2, "convnext.%d.pw2" },
1596
+ { LLM_TENSOR_CONVNEXT_GAMMA, "convnext.%d.gamma" },
1597
+ { LLM_TENSOR_OUTPUT_NORM, "output_norm" },
1598
+ { LLM_TENSOR_OUTPUT, "output" },
1599
+ { LLM_TENSOR_POS_NET_CONV1, "posnet.%d.conv1" },
1600
+ { LLM_TENSOR_POS_NET_CONV2, "posnet.%d.conv2" },
1601
+ { LLM_TENSOR_POS_NET_NORM, "posnet.%d.norm" },
1602
+ { LLM_TENSOR_POS_NET_NORM1, "posnet.%d.norm1" },
1603
+ { LLM_TENSOR_POS_NET_NORM2, "posnet.%d.norm2" },
1604
+ { LLM_TENSOR_POS_NET_ATTN_NORM, "posnet.%d.attn_norm" },
1605
+ { LLM_TENSOR_POS_NET_ATTN_Q, "posnet.%d.attn_q" },
1606
+ { LLM_TENSOR_POS_NET_ATTN_K, "posnet.%d.attn_k" },
1607
+ { LLM_TENSOR_POS_NET_ATTN_V, "posnet.%d.attn_v" },
1608
+ { LLM_TENSOR_POS_NET_ATTN_OUT, "posnet.%d.attn_output" },
1609
+ },
1610
+ },
1611
+ {
1612
+ LLM_ARCH_BAILINGMOE,
1613
+ {
1614
+ { LLM_TENSOR_TOKEN_EMBD, "token_embd" },
1615
+ { LLM_TENSOR_OUTPUT_NORM, "output_norm" },
1616
+ { LLM_TENSOR_OUTPUT, "output" },
1617
+ { LLM_TENSOR_ROPE_FREQS, "rope_freqs" },
1618
+ { LLM_TENSOR_ATTN_NORM, "blk.%d.attn_norm" },
1619
+ { LLM_TENSOR_ATTN_Q, "blk.%d.attn_q" },
1620
+ { LLM_TENSOR_ATTN_K, "blk.%d.attn_k" },
1621
+ { LLM_TENSOR_ATTN_V, "blk.%d.attn_v" },
1622
+ { LLM_TENSOR_ATTN_OUT, "blk.%d.attn_output" },
1623
+ { LLM_TENSOR_FFN_GATE_INP, "blk.%d.ffn_gate_inp" },
1624
+ { LLM_TENSOR_FFN_NORM, "blk.%d.ffn_norm" },
1625
+ { LLM_TENSOR_FFN_GATE_EXPS, "blk.%d.ffn_gate_exps" },
1626
+ { LLM_TENSOR_FFN_DOWN_EXPS, "blk.%d.ffn_down_exps" },
1627
+ { LLM_TENSOR_FFN_UP_EXPS, "blk.%d.ffn_up_exps" },
1628
+ { LLM_TENSOR_FFN_GATE_INP_SHEXP, "blk.%d.ffn_gate_inp_shexp" },
1629
+ { LLM_TENSOR_FFN_GATE_SHEXP, "blk.%d.ffn_gate_shexp" },
1630
+ { LLM_TENSOR_FFN_DOWN_SHEXP, "blk.%d.ffn_down_shexp" },
1631
+ { LLM_TENSOR_FFN_UP_SHEXP, "blk.%d.ffn_up_shexp" },
1632
+ },
1633
+ },
1634
+ {
1635
+ LLM_ARCH_DOTS1,
1636
+ {
1637
+ { LLM_TENSOR_TOKEN_EMBD, "token_embd" },
1638
+ { LLM_TENSOR_OUTPUT_NORM, "output_norm" },
1639
+ { LLM_TENSOR_OUTPUT, "output" },
1640
+ { LLM_TENSOR_ATTN_NORM, "blk.%d.attn_norm" },
1641
+ { LLM_TENSOR_ATTN_Q, "blk.%d.attn_q" },
1642
+ { LLM_TENSOR_ATTN_Q_NORM, "blk.%d.attn_q_norm" },
1643
+ { LLM_TENSOR_ATTN_K, "blk.%d.attn_k" },
1644
+ { LLM_TENSOR_ATTN_K_NORM, "blk.%d.attn_k_norm" },
1645
+ { LLM_TENSOR_ATTN_V, "blk.%d.attn_v" },
1646
+ { LLM_TENSOR_ATTN_OUT, "blk.%d.attn_output" },
1647
+ { LLM_TENSOR_FFN_NORM, "blk.%d.ffn_norm" },
1648
+ { LLM_TENSOR_FFN_GATE, "blk.%d.ffn_gate" },
1649
+ { LLM_TENSOR_FFN_UP, "blk.%d.ffn_up" },
1650
+ { LLM_TENSOR_FFN_DOWN, "blk.%d.ffn_down" },
1651
+ { LLM_TENSOR_FFN_GATE_INP, "blk.%d.ffn_gate_inp" },
1652
+ { LLM_TENSOR_FFN_GATE_EXPS, "blk.%d.ffn_gate_exps" },
1653
+ { LLM_TENSOR_FFN_DOWN_EXPS, "blk.%d.ffn_down_exps" },
1654
+ { LLM_TENSOR_FFN_UP_EXPS, "blk.%d.ffn_up_exps" },
1655
+ { LLM_TENSOR_FFN_GATE_INP_SHEXP, "blk.%d.ffn_gate_inp_shexp" },
1656
+ { LLM_TENSOR_FFN_GATE_SHEXP, "blk.%d.ffn_gate_shexp" },
1657
+ { LLM_TENSOR_FFN_DOWN_SHEXP, "blk.%d.ffn_down_shexp" },
1658
+ { LLM_TENSOR_FFN_UP_SHEXP, "blk.%d.ffn_up_shexp" },
1659
+ { LLM_TENSOR_FFN_EXP_PROBS_B, "blk.%d.exp_probs_b" },
1660
+ }
1661
+ },
1662
+ {
1663
+ LLM_ARCH_ERNIE4_5,
1664
+ {
1665
+ { LLM_TENSOR_TOKEN_EMBD, "token_embd" },
1666
+ { LLM_TENSOR_OUTPUT_NORM, "output_norm" },
1667
+ { LLM_TENSOR_OUTPUT, "output" },
1668
+ { LLM_TENSOR_ATTN_NORM, "blk.%d.attn_norm" },
1669
+ { LLM_TENSOR_ATTN_Q, "blk.%d.attn_q" },
1670
+ { LLM_TENSOR_ATTN_K, "blk.%d.attn_k" },
1671
+ { LLM_TENSOR_ATTN_V, "blk.%d.attn_v" },
1672
+ { LLM_TENSOR_ATTN_OUT, "blk.%d.attn_output" },
1673
+ { LLM_TENSOR_FFN_NORM, "blk.%d.ffn_norm" },
1674
+ { LLM_TENSOR_FFN_GATE, "blk.%d.ffn_gate" },
1675
+ { LLM_TENSOR_FFN_DOWN, "blk.%d.ffn_down" },
1676
+ { LLM_TENSOR_FFN_UP, "blk.%d.ffn_up" },
1677
+ },
1678
+ },
1679
+ {
1680
+ LLM_ARCH_UNKNOWN,
1681
+ {
1682
+ { LLM_TENSOR_TOKEN_EMBD, "token_embd" },
1683
+ },
1684
+ },
1685
+ };
1686
+
1687
+ static const std::map<llm_tensor, llm_tensor_info> LLM_TENSOR_INFOS = {
1688
+ {LLM_TENSOR_TOKEN_EMBD, {LLM_TENSOR_LAYER_INPUT, GGML_OP_GET_ROWS}},
1689
+ {LLM_TENSOR_POS_EMBD, {LLM_TENSOR_LAYER_INPUT, GGML_OP_GET_ROWS}},
1690
+ {LLM_TENSOR_TOKEN_EMBD_NORM, {LLM_TENSOR_LAYER_INPUT, GGML_OP_GET_ROWS}},
1691
+ {LLM_TENSOR_TOKEN_TYPES, {LLM_TENSOR_LAYER_INPUT, GGML_OP_GET_ROWS}},
1692
+ {LLM_TENSOR_OUTPUT, {LLM_TENSOR_LAYER_OUTPUT, GGML_OP_MUL_MAT}},
1693
+ {LLM_TENSOR_CLS, {LLM_TENSOR_LAYER_OUTPUT, GGML_OP_MUL_MAT}},
1694
+ {LLM_TENSOR_CLS_OUT, {LLM_TENSOR_LAYER_OUTPUT, GGML_OP_MUL_MAT}},
1695
+ {LLM_TENSOR_OUTPUT_NORM, {LLM_TENSOR_LAYER_OUTPUT, GGML_OP_MUL}},
1696
+ {LLM_TENSOR_DEC_OUTPUT_NORM, {LLM_TENSOR_LAYER_OUTPUT, GGML_OP_MUL}},
1697
+ {LLM_TENSOR_ENC_OUTPUT_NORM, {LLM_TENSOR_LAYER_OUTPUT, GGML_OP_MUL}},
1698
+ {LLM_TENSOR_ROPE_FREQS, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_ROPE}},
1699
+ {LLM_TENSOR_ROPE_FACTORS_LONG, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_ROPE}},
1700
+ {LLM_TENSOR_ROPE_FACTORS_SHORT, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_ROPE}},
1701
+ {LLM_TENSOR_ATTN_Q, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},
1702
+ {LLM_TENSOR_ATTN_K, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},
1703
+ {LLM_TENSOR_ATTN_V, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},
1704
+ {LLM_TENSOR_ATTN_QKV, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},
1705
+ {LLM_TENSOR_ATTN_OUT, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},
1706
+ {LLM_TENSOR_FFN_GATE, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},
1707
+ {LLM_TENSOR_FFN_DOWN, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},
1708
+ {LLM_TENSOR_FFN_UP, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},
1709
+ {LLM_TENSOR_FFN_DOWN_SHEXP, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},
1710
+ {LLM_TENSOR_FFN_GATE_SHEXP, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},
1711
+ {LLM_TENSOR_FFN_UP_SHEXP, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},
1712
+ {LLM_TENSOR_ATTN_Q_A, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},
1713
+ {LLM_TENSOR_ATTN_Q_B, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},
1714
+ {LLM_TENSOR_ATTN_KV_A_MQA, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},
1715
+ {LLM_TENSOR_ATTN_KV_B, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},
1716
+ {LLM_TENSOR_ATTN_K_B, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},
1717
+ {LLM_TENSOR_ATTN_V_B, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},
1718
+ {LLM_TENSOR_DEC_ATTN_Q, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},
1719
+ {LLM_TENSOR_DEC_ATTN_K, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},
1720
+ {LLM_TENSOR_DEC_ATTN_V, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},
1721
+ {LLM_TENSOR_DEC_ATTN_OUT, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},
1722
+ {LLM_TENSOR_DEC_CROSS_ATTN_Q, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},
1723
+ {LLM_TENSOR_DEC_CROSS_ATTN_K, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},
1724
+ {LLM_TENSOR_DEC_CROSS_ATTN_V, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},
1725
+ {LLM_TENSOR_DEC_CROSS_ATTN_OUT, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},
1726
+ {LLM_TENSOR_DEC_FFN_GATE, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},
1727
+ {LLM_TENSOR_DEC_FFN_DOWN, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},
1728
+ {LLM_TENSOR_DEC_FFN_UP, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},
1729
+ {LLM_TENSOR_ENC_ATTN_Q, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},
1730
+ {LLM_TENSOR_ENC_ATTN_K, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},
1731
+ {LLM_TENSOR_ENC_ATTN_V, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},
1732
+ {LLM_TENSOR_ENC_ATTN_OUT, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},
1733
+ {LLM_TENSOR_ENC_FFN_GATE, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},
1734
+ {LLM_TENSOR_ENC_FFN_DOWN, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},
1735
+ {LLM_TENSOR_ENC_FFN_UP, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},
1736
+ {LLM_TENSOR_FFN_GATE_INP_SHEXP, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},
1737
+ {LLM_TENSOR_FFN_GATE_INP, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},
1738
+ {LLM_TENSOR_SSM_IN, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},
1739
+ {LLM_TENSOR_SSM_X, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},
1740
+ {LLM_TENSOR_SSM_DT, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},
1741
+ {LLM_TENSOR_SSM_OUT, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},
1742
+ {LLM_TENSOR_TIME_MIX_W1, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},
1743
+ {LLM_TENSOR_TIME_MIX_W2, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},
1744
+ {LLM_TENSOR_TIME_MIX_A1, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},
1745
+ {LLM_TENSOR_TIME_MIX_A2, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},
1746
+ {LLM_TENSOR_TIME_MIX_V1, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},
1747
+ {LLM_TENSOR_TIME_MIX_V2, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},
1748
+ {LLM_TENSOR_TIME_MIX_G1, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},
1749
+ {LLM_TENSOR_TIME_MIX_G2, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},
1750
+ {LLM_TENSOR_TIME_MIX_DECAY_W1, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},
1751
+ {LLM_TENSOR_TIME_MIX_DECAY_W2, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},
1752
+ {LLM_TENSOR_TIME_MIX_KEY, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},
1753
+ {LLM_TENSOR_TIME_MIX_VALUE, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},
1754
+ {LLM_TENSOR_TIME_MIX_RECEPTANCE, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},
1755
+ {LLM_TENSOR_TIME_MIX_GATE, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},
1756
+ {LLM_TENSOR_TIME_MIX_OUTPUT, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},
1757
+ {LLM_TENSOR_CHANNEL_MIX_KEY, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},
1758
+ {LLM_TENSOR_CHANNEL_MIX_RECEPTANCE, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},
1759
+ {LLM_TENSOR_CHANNEL_MIX_VALUE, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},
1760
+ {LLM_TENSOR_FFN_ACT, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_DIV}},
1761
+ {LLM_TENSOR_SSM_CONV1D, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_SSM_CONV}},
1762
+ {LLM_TENSOR_SSM_A, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_SSM_SCAN}},
1763
+ {LLM_TENSOR_SSM_D, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},
1764
+ {LLM_TENSOR_TIME_MIX_LERP_X, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},
1765
+ {LLM_TENSOR_TIME_MIX_LN, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},
1766
+ {LLM_TENSOR_CHANNEL_MIX_LERP_K, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},
1767
+ {LLM_TENSOR_CHANNEL_MIX_LERP_R, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},
1768
+ {LLM_TENSOR_TIME_MIX_K_K, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},
1769
+ {LLM_TENSOR_TIME_MIX_K_A, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},
1770
+ {LLM_TENSOR_TIME_MIX_R_K, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},
1771
+ {LLM_TENSOR_TIME_MIX_LERP_W, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_ADD}},
1772
+ {LLM_TENSOR_TIME_MIX_LERP_K, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_ADD}},
1773
+ {LLM_TENSOR_TIME_MIX_LERP_V, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_ADD}},
1774
+ {LLM_TENSOR_TIME_MIX_LERP_R, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_ADD}},
1775
+ {LLM_TENSOR_TIME_MIX_LERP_G, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_ADD}},
1776
+ {LLM_TENSOR_TIME_MIX_LERP_FUSED, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_ADD}},
1777
+ {LLM_TENSOR_TIME_MIX_DECAY, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_ADD}},
1778
+ {LLM_TENSOR_TIME_MIX_W0, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_ADD}},
1779
+ {LLM_TENSOR_TIME_MIX_A0, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_ADD}},
1780
+ {LLM_TENSOR_TIME_MIX_V0, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_ADD}},
1781
+ {LLM_TENSOR_TIME_MIX_FIRST, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_RWKV_WKV6}},
1782
+ {LLM_TENSOR_ATTN_NORM, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},
1783
+ {LLM_TENSOR_ATTN_NORM_2, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},
1784
+ {LLM_TENSOR_ATTN_OUT_NORM, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},
1785
+ {LLM_TENSOR_ATTN_POST_NORM, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},
1786
+ {LLM_TENSOR_FFN_NORM, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},
1787
+ {LLM_TENSOR_FFN_POST_NORM, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},
1788
+ {LLM_TENSOR_FFN_NORM_EXPS, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},
1789
+ {LLM_TENSOR_ATTN_Q_NORM, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},
1790
+ {LLM_TENSOR_ATTN_K_NORM, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},
1791
+ {LLM_TENSOR_LAYER_OUT_NORM, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},
1792
+ {LLM_TENSOR_ATTN_Q_A_NORM, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},
1793
+ {LLM_TENSOR_ATTN_KV_A_NORM, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},
1794
+ {LLM_TENSOR_ATTN_SUB_NORM, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},
1795
+ {LLM_TENSOR_FFN_SUB_NORM, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},
1796
+ {LLM_TENSOR_DEC_ATTN_NORM, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},
1797
+ {LLM_TENSOR_DEC_CROSS_ATTN_NORM, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},
1798
+ {LLM_TENSOR_DEC_FFN_NORM, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},
1799
+ {LLM_TENSOR_ENC_ATTN_NORM, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},
1800
+ {LLM_TENSOR_ENC_FFN_NORM, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},
1801
+ {LLM_TENSOR_DEC_ATTN_REL_B, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_GET_ROWS}},
1802
+ {LLM_TENSOR_ENC_ATTN_REL_B, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_GET_ROWS}},
1803
+ {LLM_TENSOR_FFN_DOWN_EXPS, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT_ID}},
1804
+ {LLM_TENSOR_FFN_GATE_EXPS, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT_ID}},
1805
+ {LLM_TENSOR_FFN_UP_EXPS, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT_ID}},
1806
+ {LLM_TENSOR_FFN_EXP_PROBS_B, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_ADD}},
1807
+ // altup / laurel (gemma 3n)
1808
+ {LLM_TENSOR_PER_LAYER_TOKEN_EMBD, {LLM_TENSOR_LAYER_OUTPUT, GGML_OP_GET_ROWS}},
1809
+ {LLM_TENSOR_PER_LAYER_MODEL_PROJ, {LLM_TENSOR_LAYER_OUTPUT, GGML_OP_MUL_MAT}},
1810
+ {LLM_TENSOR_PER_LAYER_PROJ_NORM, {LLM_TENSOR_LAYER_OUTPUT, GGML_OP_MUL}},
1811
+ {LLM_TENSOR_ALTUP_PROJ, {LLM_TENSOR_LAYER_OUTPUT, GGML_OP_MUL_MAT}},
1812
+ {LLM_TENSOR_ALTUP_UNEMBD_PROJ, {LLM_TENSOR_LAYER_OUTPUT, GGML_OP_MUL_MAT}},
1813
+ {LLM_TENSOR_PER_LAYER_INP_GATE, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},
1814
+ {LLM_TENSOR_PER_LAYER_PROJ, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},
1815
+ {LLM_TENSOR_PER_LAYER_POST_NORM, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},
1816
+ {LLM_TENSOR_ALTUP_CORRECT_COEF, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},
1817
+ {LLM_TENSOR_ALTUP_CORRECT_SCALE, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},
1818
+ {LLM_TENSOR_ALTUP_PREDICT_COEF, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},
1819
+ {LLM_TENSOR_ALTUP_ROUTER, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},
1820
+ {LLM_TENSOR_ALTUP_ROUTER_NORM, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},
1821
+ {LLM_TENSOR_LAUREL_L, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},
1822
+ {LLM_TENSOR_LAUREL_R, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},
1823
+ {LLM_TENSOR_LAUREL_POST_NORM, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},
1824
+ // this tensor is loaded for T5, but never used
1825
+ {LLM_TENSOR_DEC_CROSS_ATTN_REL_B, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_NONE}},
1826
+ {LLM_TENSOR_CONV1D, {LLM_TENSOR_LAYER_INPUT, GGML_OP_IM2COL}},
1827
+ {LLM_TENSOR_POS_NET_NORM, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},
1828
+ {LLM_TENSOR_POS_NET_NORM1, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},
1829
+ {LLM_TENSOR_POS_NET_NORM2, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},
1830
+ {LLM_TENSOR_POS_NET_CONV1, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_IM2COL}},
1831
+ {LLM_TENSOR_POS_NET_CONV2, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_IM2COL}},
1832
+ {LLM_TENSOR_POS_NET_ATTN_NORM, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},
1833
+ {LLM_TENSOR_POS_NET_ATTN_Q, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},
1834
+ {LLM_TENSOR_POS_NET_ATTN_K, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},
1835
+ {LLM_TENSOR_POS_NET_ATTN_V, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},
1836
+ {LLM_TENSOR_POS_NET_ATTN_OUT, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},
1837
+ {LLM_TENSOR_CONVNEXT_DW, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_IM2COL}},
1838
+ {LLM_TENSOR_CONVNEXT_NORM, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},
1839
+ {LLM_TENSOR_CONVNEXT_PW1, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},
1840
+ {LLM_TENSOR_CONVNEXT_PW2, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},
1841
+ {LLM_TENSOR_CONVNEXT_GAMMA, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},
1842
+ };
1843
+
1844
+ LLM_KV::LLM_KV(llm_arch arch, const char * suffix) : arch(arch), suffix(suffix) {}
1845
+
1846
+ std::string LLM_KV::operator()(llm_kv kv) const {
1847
+ std::string name = ::format(LLM_KV_NAMES.at(kv), LLM_ARCH_NAMES.at(arch));
1848
+
1849
+ if (suffix != nullptr) {
1850
+ name += ".";
1851
+ name += suffix;
1852
+ }
1853
+
1854
+ return name;
1855
+ }
1856
+
1857
+ std::string LLM_TN_IMPL::str() const {
1858
+ if (LLM_TENSOR_NAMES.at(arch).find(tensor) == LLM_TENSOR_NAMES.at(arch).end()) {
1859
+ return "__missing__";
1860
+ }
1861
+
1862
+ std::string name = ::format(LLM_TENSOR_NAMES.at(arch).at(tensor), bid, xid);
1863
+
1864
+ if (suffix != nullptr) {
1865
+ name += ".";
1866
+ name += suffix;
1867
+ }
1868
+
1869
+ return name;
1870
+ }
1871
+
1872
+ const char * llm_arch_name(llm_arch arch) {
1873
+ auto it = LLM_ARCH_NAMES.find(arch);
1874
+ if (it == LLM_ARCH_NAMES.end()) {
1875
+ return "unknown";
1876
+ }
1877
+ return it->second;
1878
+ }
1879
+
1880
+ llm_arch llm_arch_from_string(const std::string & name) {
1881
+ for (const auto & kv : LLM_ARCH_NAMES) { // NOLINT
1882
+ if (kv.second == name) {
1883
+ return kv.first;
1884
+ }
1885
+ }
1886
+
1887
+ return LLM_ARCH_UNKNOWN;
1888
+ }
1889
+
1890
+ const llm_tensor_info & llm_tensor_info_for(llm_tensor tensor) {
1891
+ return LLM_TENSOR_INFOS.at(tensor);
1892
+ }
1893
+
1894
+ bool llm_arch_is_recurrent(const llm_arch & arch) {
1895
+ switch (arch) {
1896
+ case LLM_ARCH_MAMBA:
1897
+ case LLM_ARCH_RWKV6:
1898
+ case LLM_ARCH_RWKV6QWEN2:
1899
+ case LLM_ARCH_RWKV7:
1900
+ case LLM_ARCH_ARWKV7:
1901
+ return true;
1902
+ default:
1903
+ return false;
1904
+ }
1905
+ }
1906
+
1907
+ bool llm_arch_is_hybrid(const llm_arch & arch) {
1908
+ // TODO: There are currently no hybrid models! Once there are, this will be
1909
+ // the place to identify them
1910
+ switch (arch) {
1911
+ default:
1912
+ return false;
1913
+ }
1914
+ }