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
| int main() { | |
| fprintf(stderr, "=== test-gguf-model-data ===\n"); | |
| // Fetch Qwen3-0.6B Q8_0 metadata | |
| auto result = gguf_fetch_model_meta("ggml-org/Qwen3-0.6B-GGUF", "Q8_0"); | |
| if (!result.has_value()) { | |
| fprintf(stderr, "SKIP: could not fetch model metadata (no network or HTTP disabled)\n"); | |
| return 0; | |
| } | |
| const auto & model = result.value(); | |
| fprintf(stderr, "Architecture: %s\n", model.architecture.c_str()); | |
| fprintf(stderr, "n_embd: %u\n", model.n_embd); | |
| fprintf(stderr, "n_ff: %u\n", model.n_ff); | |
| fprintf(stderr, "n_vocab: %u\n", model.n_vocab); | |
| fprintf(stderr, "n_layer: %u\n", model.n_layer); | |
| fprintf(stderr, "n_head: %u\n", model.n_head); | |
| fprintf(stderr, "n_head_kv: %u\n", model.n_head_kv); | |
| fprintf(stderr, "n_expert: %u\n", model.n_expert); | |
| fprintf(stderr, "n_embd_head_k: %u\n", model.n_embd_head_k); | |
| fprintf(stderr, "n_embd_head_v: %u\n", model.n_embd_head_v); | |
| fprintf(stderr, "tensors: %zu\n", model.tensors.size()); | |
| // Verify architecture | |
| TEST_ASSERT(model.architecture == "qwen3", "expected architecture 'qwen3'"); | |
| // Verify key dimensions (Qwen3-0.6B) | |
| TEST_ASSERT(model.n_layer == 28, "expected n_layer == 28"); | |
| TEST_ASSERT(model.n_embd == 1024, "expected n_embd == 1024"); | |
| TEST_ASSERT(model.n_head == 16, "expected n_head == 16"); | |
| TEST_ASSERT(model.n_head_kv == 8, "expected n_head_kv == 8"); | |
| TEST_ASSERT(model.n_expert == 0, "expected n_expert == 0 (not MoE)"); | |
| TEST_ASSERT(model.n_vocab == 151936, "expected n_vocab == 151936"); | |
| // Verify tensor count | |
| TEST_ASSERT(model.tensors.size() == 311, "expected tensor count == 311"); | |
| // Verify known tensor names exist | |
| bool found_attn_q = false; | |
| bool found_token_embd = false; | |
| bool found_output_norm = false; | |
| for (const auto & t : model.tensors) { | |
| if (t.name == "blk.0.attn_q.weight") { | |
| found_attn_q = true; | |
| } | |
| if (t.name == "token_embd.weight") { | |
| found_token_embd = true; | |
| } | |
| if (t.name == "output_norm.weight") { | |
| found_output_norm = true; | |
| } | |
| } | |
| TEST_ASSERT(found_attn_q, "expected tensor 'blk.0.attn_q.weight'"); | |
| TEST_ASSERT(found_token_embd, "expected tensor 'token_embd.weight'"); | |
| TEST_ASSERT(found_output_norm, "expected tensor 'output_norm.weight'"); | |
| // Verify token_embd.weight shape | |
| for (const auto & t : model.tensors) { | |
| if (t.name == "token_embd.weight") { | |
| TEST_ASSERT(t.ne[0] == 1024, "expected token_embd.weight ne[0] == 1024"); | |
| TEST_ASSERT(t.n_dims == 2, "expected token_embd.weight to be 2D"); | |
| break; | |
| } | |
| } | |
| // Test that second call uses cache (just call again, it should work) | |
| auto result2 = gguf_fetch_model_meta("ggml-org/Qwen3-0.6B-GGUF", "Q8_0"); | |
| TEST_ASSERT(result2.has_value(), "cached fetch should succeed"); | |
| TEST_ASSERT(result2->tensors.size() == model.tensors.size(), "cached result should match"); | |
| // Test a split MoE model without specifying quant (should default to Q8_0) | |
| auto result3 = gguf_fetch_model_meta("ggml-org/GLM-4.6V-GGUF"); | |
| if (!result3.has_value()) { | |
| fprintf(stderr, "SKIP: could not fetch GLM-4.6V metadata (no network?)\n"); | |
| return 0; | |
| } | |
| const auto & model3 = result3.value(); | |
| fprintf(stderr, "Architecture: %s\n", model3.architecture.c_str()); | |
| fprintf(stderr, "n_embd: %u\n", model3.n_embd); | |
| fprintf(stderr, "n_ff: %u\n", model3.n_ff); | |
| fprintf(stderr, "n_vocab: %u\n", model3.n_vocab); | |
| fprintf(stderr, "n_layer: %u\n", model3.n_layer); | |
| fprintf(stderr, "n_head: %u\n", model3.n_head); | |
| fprintf(stderr, "n_head_kv: %u\n", model3.n_head_kv); | |
| fprintf(stderr, "n_expert: %u\n", model3.n_expert); | |
| fprintf(stderr, "n_embd_head_k: %u\n", model3.n_embd_head_k); | |
| fprintf(stderr, "n_embd_head_v: %u\n", model3.n_embd_head_v); | |
| fprintf(stderr, "tensors: %zu\n", model3.tensors.size()); | |
| // Verify architecture | |
| TEST_ASSERT(model3.architecture == "glm4moe", "expected architecture 'glm4moe'"); | |
| // Verify key dimensions (GLM-4.6V) | |
| TEST_ASSERT(model3.n_layer == 46, "expected n_layer == 46"); | |
| TEST_ASSERT(model3.n_embd == 4096, "expected n_embd == 4096"); | |
| TEST_ASSERT(model3.n_head == 96, "expected n_head == 96"); | |
| TEST_ASSERT(model3.n_head_kv == 8, "expected n_head_kv == 8"); | |
| TEST_ASSERT(model3.n_expert == 128, "expected n_expert == 128 (MoE)"); | |
| TEST_ASSERT(model3.n_vocab == 151552, "expected n_vocab == 151552"); | |
| // Verify tensor count | |
| TEST_ASSERT(model3.tensors.size() == 780, "expected tensor count == 780"); | |
| // Test a hybrid-attention model with array-valued head counts | |
| auto result4 = gguf_fetch_model_meta("ggml-org/Step-3.5-Flash-GGUF", "Q4_K"); | |
| if (!result4.has_value()) { | |
| fprintf(stderr, "FAIL: could not fetch Step-3.5-Flash metadata\n"); | |
| return 1; | |
| } | |
| const auto & model4 = result4.value(); | |
| fprintf(stderr, "Architecture: %s\n", model4.architecture.c_str()); | |
| fprintf(stderr, "n_embd: %u\n", model4.n_embd); | |
| fprintf(stderr, "n_ff: %u\n", model4.n_ff); | |
| fprintf(stderr, "n_vocab: %u\n", model4.n_vocab); | |
| fprintf(stderr, "n_layer: %u\n", model4.n_layer); | |
| fprintf(stderr, "n_head: %u\n", model4.n_head); | |
| fprintf(stderr, "n_head_kv: %u\n", model4.n_head_kv); | |
| fprintf(stderr, "n_expert: %u\n", model4.n_expert); | |
| fprintf(stderr, "n_embd_head_k: %u\n", model4.n_embd_head_k); | |
| fprintf(stderr, "n_embd_head_v: %u\n", model4.n_embd_head_v); | |
| fprintf(stderr, "tensors: %zu\n", model4.tensors.size()); | |
| TEST_ASSERT(model4.architecture == "step35", "expected architecture 'step35'"); | |
| TEST_ASSERT(model4.n_layer == 45, "expected n_layer == 45"); | |
| TEST_ASSERT(model4.n_embd == 4096, "expected n_embd == 4096"); | |
| TEST_ASSERT(model4.n_ff == 11264, "expected n_ff == 11264"); | |
| TEST_ASSERT(model4.n_head == 64, "expected n_head == 64 (first element of per-layer array)"); | |
| TEST_ASSERT(model4.n_head_kv == 8, "expected n_head_kv == 8 (first element of per-layer array)"); | |
| TEST_ASSERT(model4.n_expert == 288, "expected n_expert == 288"); | |
| TEST_ASSERT(model4.n_embd_head_k == 128, "expected n_embd_head_k == 128"); | |
| TEST_ASSERT(model4.n_embd_head_v == 128, "expected n_embd_head_v == 128"); | |
| TEST_ASSERT(model4.n_vocab == 128896, "expected n_vocab == 128896"); | |
| TEST_ASSERT(model4.tensors.size() == 754, "expected tensor count == 754"); | |
| fprintf(stderr, "=== ALL TESTS PASSED ===\n"); | |
| return 0; | |
| } | |