2bf318fd2f
* model: add JAIS-2 architecture support Add support for the JAIS-2 family of Arabic-English bilingual models from Inception AI (https://huggingface.co/inceptionai/Jais-2-8B-Chat). Architecture characteristics: - LayerNorm (not RMSNorm) with biases - ReLU² (ReLU squared) activation function - Separate Q/K/V projections with biases - Simple MLP without gate projection (up -> act -> down) - RoPE positional embeddings - GPT-2 BPE tokenizer Supported model sizes: - Jais-2-8B (32 layers, 26 heads, 3328 hidden) - Jais-2-70B (68 layers, 56 heads, 7168 hidden) Tested with quantizations: BF16, Q8_0, Q6_K, Q5_K_M, Q5_0, Q4_K_M, Q4_0, Q3_K_M, Q2_K Note: JAIS-2 requires F32 precision accumulators for numerical stability and uses standard attention (not flash attention) on CUDA backends. * fix: run convert_hf_to_gguf_update.py for jais-2 tokenizer hash * fix: use NEOX RoPE type for JAIS2 * fix: remove Q/K permutation (NEOX RoPE doesn't need it) * fix: enable flash attention for JAIS2 (fixed by #19115) * fix: add dedicated JAIS2 pre-tokenizer type and control vector support - Add LLAMA_VOCAB_PRE_TYPE_JAIS2 with cascading whitespace regex - Include original regex from tokenizer.json as comment - Add build_cvec call for control vector support * no longer necessary to override set_vocab --------- Co-authored-by: Sigbjørn Skjæret <sigbjorn.skjaeret@scala.com>
168 lines
4.9 KiB
CMake
168 lines
4.9 KiB
CMake
llama_add_compile_flags()
|
|
|
|
#
|
|
# libraries
|
|
#
|
|
|
|
# llama
|
|
|
|
add_library(llama
|
|
../include/llama.h
|
|
llama.cpp
|
|
llama-adapter.cpp
|
|
llama-arch.cpp
|
|
llama-batch.cpp
|
|
llama-chat.cpp
|
|
llama-context.cpp
|
|
llama-cparams.cpp
|
|
llama-grammar.cpp
|
|
llama-graph.cpp
|
|
llama-hparams.cpp
|
|
llama-impl.cpp
|
|
llama-io.cpp
|
|
llama-kv-cache.cpp
|
|
llama-kv-cache-iswa.cpp
|
|
llama-memory.cpp
|
|
llama-memory-hybrid.cpp
|
|
llama-memory-hybrid-iswa.cpp
|
|
llama-memory-recurrent.cpp
|
|
llama-mmap.cpp
|
|
llama-model-loader.cpp
|
|
llama-model-saver.cpp
|
|
llama-model.cpp
|
|
llama-quant.cpp
|
|
llama-sampler.cpp
|
|
llama-vocab.cpp
|
|
unicode-data.cpp
|
|
unicode.cpp
|
|
unicode.h
|
|
models/afmoe.cpp
|
|
models/apertus.cpp
|
|
models/arcee.cpp
|
|
models/arctic.cpp
|
|
models/arwkv7.cpp
|
|
models/baichuan.cpp
|
|
models/bailingmoe.cpp
|
|
models/bailingmoe2.cpp
|
|
models/bert.cpp
|
|
models/bitnet.cpp
|
|
models/bloom.cpp
|
|
models/chameleon.cpp
|
|
models/chatglm.cpp
|
|
models/codeshell.cpp
|
|
models/cogvlm.cpp
|
|
models/cohere2-iswa.cpp
|
|
models/command-r.cpp
|
|
models/dbrx.cpp
|
|
models/deci.cpp
|
|
models/deepseek.cpp
|
|
models/deepseek2.cpp
|
|
models/delta-net-base.cpp
|
|
models/dots1.cpp
|
|
models/dream.cpp
|
|
models/ernie4-5-moe.cpp
|
|
models/ernie4-5.cpp
|
|
models/exaone-moe.cpp
|
|
models/exaone.cpp
|
|
models/exaone4.cpp
|
|
models/falcon-h1.cpp
|
|
models/falcon.cpp
|
|
models/gemma-embedding.cpp
|
|
models/gemma.cpp
|
|
models/gemma2-iswa.cpp
|
|
models/gemma3.cpp
|
|
models/gemma3n-iswa.cpp
|
|
models/glm4-moe.cpp
|
|
models/glm4.cpp
|
|
models/gpt2.cpp
|
|
models/gptneox.cpp
|
|
models/granite-hybrid.cpp
|
|
models/granite.cpp
|
|
models/grok.cpp
|
|
models/grovemoe.cpp
|
|
models/hunyuan-dense.cpp
|
|
models/hunyuan-moe.cpp
|
|
models/internlm2.cpp
|
|
models/jais.cpp
|
|
models/jais2.cpp
|
|
models/jamba.cpp
|
|
models/kimi-linear.cpp
|
|
models/lfm2.cpp
|
|
models/llada-moe.cpp
|
|
models/llada.cpp
|
|
models/llama-iswa.cpp
|
|
models/llama.cpp
|
|
models/maincoder.cpp
|
|
models/mamba-base.cpp
|
|
models/mamba.cpp
|
|
models/mimo2-iswa.cpp
|
|
models/minicpm3.cpp
|
|
models/minimax-m2.cpp
|
|
models/mistral3.cpp
|
|
models/modern-bert.cpp
|
|
models/mpt.cpp
|
|
models/nemotron-h.cpp
|
|
models/nemotron.cpp
|
|
models/neo-bert.cpp
|
|
models/olmo.cpp
|
|
models/olmo2.cpp
|
|
models/olmoe.cpp
|
|
models/openai-moe-iswa.cpp
|
|
models/openelm.cpp
|
|
models/orion.cpp
|
|
models/pangu-embedded.cpp
|
|
models/phi2.cpp
|
|
models/phi3.cpp
|
|
models/plamo.cpp
|
|
models/plamo2.cpp
|
|
models/plamo3.cpp
|
|
models/plm.cpp
|
|
models/qwen.cpp
|
|
models/qwen2.cpp
|
|
models/qwen2moe.cpp
|
|
models/qwen2vl.cpp
|
|
models/qwen3.cpp
|
|
models/qwen35.cpp
|
|
models/qwen35moe.cpp
|
|
models/qwen3moe.cpp
|
|
models/qwen3next.cpp
|
|
models/qwen3vl-moe.cpp
|
|
models/qwen3vl.cpp
|
|
models/refact.cpp
|
|
models/rnd1.cpp
|
|
models/rwkv6-base.cpp
|
|
models/rwkv6.cpp
|
|
models/rwkv6qwen2.cpp
|
|
models/rwkv7-base.cpp
|
|
models/rwkv7.cpp
|
|
models/seed-oss.cpp
|
|
models/smallthinker.cpp
|
|
models/smollm3.cpp
|
|
models/stablelm.cpp
|
|
models/starcoder.cpp
|
|
models/starcoder2.cpp
|
|
models/step35-iswa.cpp
|
|
models/t5-dec.cpp
|
|
models/t5-enc.cpp
|
|
models/wavtokenizer-dec.cpp
|
|
models/xverse.cpp
|
|
)
|
|
|
|
set_target_properties(llama PROPERTIES
|
|
VERSION ${LLAMA_INSTALL_VERSION}
|
|
SOVERSION 0
|
|
MACHO_CURRENT_VERSION 0 # keep macOS linker from seeing oversized version number
|
|
)
|
|
|
|
target_include_directories(llama PRIVATE .)
|
|
target_include_directories(llama PUBLIC ../include)
|
|
target_compile_features (llama PRIVATE cxx_std_17) # don't bump
|
|
|
|
target_link_libraries(llama PUBLIC ggml)
|
|
|
|
if (BUILD_SHARED_LIBS)
|
|
set_target_properties(llama PROPERTIES POSITION_INDEPENDENT_CODE ON)
|
|
target_compile_definitions(llama PRIVATE LLAMA_BUILD)
|
|
target_compile_definitions(llama PUBLIC LLAMA_SHARED)
|
|
endif()
|