Safetensors
GGUF
Turkish
llama
Llama-3
instruct
finetune
chatml
gpt4
synthetic data
distillation
function calling
json mode
axolotl
roleplaying
chat
Instructions to use tda45/TdAI with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- llama-cpp-python
How to use tda45/TdAI with llama-cpp-python:
# !pip install llama-cpp-python from llama_cpp import Llama llm = Llama.from_pretrained( repo_id="tda45/TdAI", filename="llama.cpp/models/ggml-vocab-aquila.gguf", )
output = llm( "Once upon a time,", max_tokens=512, echo=True ) print(output)
- Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- llama.cpp
How to use tda45/TdAI with llama.cpp:
Install (macOS, Linux)
curl -LsSf https://llama.app/install.sh | sh # Start a local OpenAI-compatible server with a web UI: llama serve -hf tda45/TdAI # Run inference directly in the terminal: llama cli -hf tda45/TdAI
Install from WinGet (Windows)
winget install llama.cpp # Start a local OpenAI-compatible server with a web UI: llama serve -hf tda45/TdAI # Run inference directly in the terminal: llama cli -hf tda45/TdAI
Use pre-built binary
# Download pre-built binary from: # https://github.com/ggerganov/llama.cpp/releases # Start a local OpenAI-compatible server with a web UI: ./llama-server -hf tda45/TdAI # Run inference directly in the terminal: ./llama-cli -hf tda45/TdAI
Build from source code
git clone https://github.com/ggerganov/llama.cpp.git cd llama.cpp cmake -B build cmake --build build -j --target llama-server llama-cli # Start a local OpenAI-compatible server with a web UI: ./build/bin/llama-server -hf tda45/TdAI # Run inference directly in the terminal: ./build/bin/llama-cli -hf tda45/TdAI
Use Docker
docker model run hf.co/tda45/TdAI
- LM Studio
- Jan
- Ollama
How to use tda45/TdAI with Ollama:
ollama run hf.co/tda45/TdAI
- Unsloth Studio
How to use tda45/TdAI with Unsloth Studio:
Install Unsloth Studio (macOS, Linux, WSL)
curl -fsSL https://unsloth.ai/install.sh | sh # Run unsloth studio unsloth studio -H 0.0.0.0 -p 8888 # Then open http://localhost:8888 in your browser # Search for tda45/TdAI to start chatting
Install Unsloth Studio (Windows)
irm https://unsloth.ai/install.ps1 | iex # Run unsloth studio unsloth studio -H 0.0.0.0 -p 8888 # Then open http://localhost:8888 in your browser # Search for tda45/TdAI to start chatting
Using HuggingFace Spaces for Unsloth
# No setup required # Open https://huggingface.co/spaces/unsloth/studio in your browser # Search for tda45/TdAI to start chatting
- Atomic Chat new
- Docker Model Runner
How to use tda45/TdAI with Docker Model Runner:
docker model run hf.co/tda45/TdAI
- Lemonade
How to use tda45/TdAI with Lemonade:
Pull the model
# Download Lemonade from https://lemonade-server.ai/ lemonade pull tda45/TdAI
Run and chat with the model
lemonade run user.TdAI-{{QUANT_TAG}}List all available models
lemonade list
| ggml_cgraph * clip_graph_gemma4v::build() { | |
| ggml_tensor * inp_raw = build_inp_raw(); | |
| // patches = 2 * (patches - 0.5) | |
| // equivalent to: patches * 2 - 1 | |
| inp_raw = ggml_scale_bias(ctx0, inp_raw, 2.0f, -1.0f); | |
| ggml_set_name(inp_raw, "inp_raw_scaled"); | |
| ggml_tensor * inp = ggml_conv_2d(ctx0, model.patch_embeddings_0, inp_raw, patch_size, patch_size, 0, 0, 1, 1); | |
| inp = ggml_reshape_3d(ctx0, inp, n_patches, n_embd, n_batch); | |
| inp = ggml_cont(ctx0, ggml_transpose(ctx0, inp)); | |
| ggml_set_name(inp, "inp"); | |
| // note: no patch bias | |
| ggml_tensor * pos_x = ggml_new_tensor_1d(ctx0, GGML_TYPE_I32, n_patches); | |
| ggml_set_name(pos_x, "pos_x"); | |
| ggml_set_input(pos_x); | |
| ggml_tensor * pos_y = ggml_new_tensor_1d(ctx0, GGML_TYPE_I32, n_patches); | |
| ggml_set_name(pos_y, "pos_y"); | |
| ggml_set_input(pos_y); | |
| { | |
| const int64_t pos_size = model.position_embeddings->ne[1]; | |
| const size_t nb1 = ggml_row_size(model.position_embeddings->type, n_embd); | |
| // positional embeddings are stored as lookup tables (one for x, one for y) | |
| ggml_tensor * tbl_x = ggml_view_2d(ctx0, model.position_embeddings, | |
| n_embd, pos_size, nb1, 0); | |
| ggml_tensor * tbl_y = ggml_view_2d(ctx0, model.position_embeddings, | |
| n_embd, pos_size, nb1, pos_size * nb1); | |
| // ggml_get_rows: [n_embd, n_patches] | |
| ggml_tensor * emb_x = ggml_get_rows(ctx0, tbl_x, pos_x); | |
| ggml_tensor * emb_y = ggml_get_rows(ctx0, tbl_y, pos_y); | |
| inp = ggml_add(ctx0, inp, emb_x); | |
| inp = ggml_add(ctx0, inp, emb_y); | |
| cb(inp, "pos_embd", -1); | |
| } | |
| // similar to build_rope_2d, but use neox ordering | |
| auto add_pos = [&](ggml_tensor * cur, const clip_layer &) { | |
| const int64_t n_dim = cur->ne[0]; | |
| const int64_t n_head = cur->ne[1]; | |
| const int64_t n_pos = cur->ne[2]; | |
| // first half | |
| ggml_tensor * first; | |
| { | |
| first = ggml_view_4d(ctx0, cur, | |
| n_dim/2, n_head, n_pos, n_batch, | |
| cur->nb[1], | |
| cur->nb[2], | |
| cur->nb[3], | |
| 0); | |
| first = ggml_rope_ext( | |
| ctx0, | |
| first, | |
| pos_x, // positions | |
| nullptr, // freq factors | |
| n_dim/2, // n_dims | |
| GGML_ROPE_TYPE_NEOX, 0, hparams.rope_theta, | |
| 1.0f, 0.0f, 1.0f, 0.0f, 0.0f | |
| ); | |
| } | |
| // second half | |
| ggml_tensor * second; | |
| { | |
| second = ggml_view_4d(ctx0, cur, | |
| n_dim/2, n_head, n_pos, n_batch, | |
| cur->nb[1], | |
| cur->nb[2], | |
| cur->nb[3], | |
| n_dim/2 * ggml_element_size(cur)); | |
| second = ggml_rope_ext( | |
| ctx0, | |
| second, | |
| pos_y, // positions | |
| nullptr, // freq factors | |
| n_dim/2, // n_dims | |
| GGML_ROPE_TYPE_NEOX, 0, hparams.rope_theta, | |
| 1.0f, 0.0f, 1.0f, 0.0f, 0.0f | |
| ); | |
| } | |
| cur = ggml_concat(ctx0, first, second, 0); | |
| return cur; | |
| }; | |
| kq_scale = 1.0f; | |
| ggml_tensor * cur = build_vit( | |
| inp, n_patches, | |
| NORM_TYPE_RMS, | |
| hparams.ffn_op, | |
| nullptr, // pos embd is already handled above | |
| add_pos); | |
| // Gemma4VisionPooler | |
| { | |
| const int kernel_size = hparams.n_merge; | |
| GGML_ASSERT(kernel_size > 0); | |
| // [n_embd, n_patches] -> [n_patches_x, n_patches_y, n_embd, n_batch] | |
| cur = ggml_cont_4d(ctx0, ggml_transpose(ctx0, cur), n_patches_x, n_patches_y, n_embd, n_batch); | |
| cur = ggml_pool_2d(ctx0, cur, GGML_OP_POOL_AVG, | |
| kernel_size, kernel_size, kernel_size, kernel_size, 0, 0); | |
| const int out_x = n_patches_x / kernel_size; | |
| const int out_y = n_patches_y / kernel_size; | |
| // [out_x, out_y, n_embd, n_batch] -> [n_embd, out_x * out_y, n_batch] | |
| cur = ggml_reshape_3d(ctx0, cur, out_x * out_y, n_embd, n_batch); | |
| cur = ggml_cont(ctx0, ggml_transpose(ctx0, cur)); | |
| cur = ggml_scale(ctx0, cur, sqrtf((float)n_embd)); | |
| cb(cur, "pooled", -1); | |
| } | |
| // hidden_states = (hidden_states - self.std_bias) * self.std_scale | |
| if (model.std_bias && model.std_scale) { | |
| cur = ggml_sub(ctx0, cur, model.std_bias); | |
| cur = ggml_mul(ctx0, cur, model.std_scale); | |
| cb(cur, "std_scaled", -1); | |
| } | |
| // Gemma4MultimodalEmbedder | |
| { | |
| // embedding_pre_projection_norm | |
| cur = ggml_rms_norm(ctx0, cur, hparams.eps); | |
| cur = build_mm(model.mm_input_proj_w, cur); | |
| cb(cur, "projected", -1); | |
| } | |
| ggml_build_forward_expand(gf, cur); | |
| return gf; | |
| } | |
| ggml_tensor * clip_graph_gemma4v::build_mm(ggml_tensor * w, ggml_tensor * x) const { | |
| // Gemma4ClippableLinear | |
| auto it = model.clamp_info_map.find(w->name); | |
| if (it == model.clamp_info_map.end()) { | |
| return ggml_mul_mat(ctx0, w, x); | |
| } else { | |
| const auto & clamp_info = it->second; | |
| ggml_tensor * clamped = ggml_clamp(ctx0, x, clamp_info.inp_min, clamp_info.inp_max); | |
| ggml_tensor * out = ggml_mul_mat(ctx0, w, clamped); | |
| out = ggml_clamp(ctx0, out, clamp_info.out_min, clamp_info.out_max); | |
| return out; | |
| } | |
| } | |