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
| struct llama_model; | |
| class llama_batch_allocr; | |
| class llama_io_read_i; | |
| class llama_io_write_i; | |
| // "memory" as in abstract memory for the context | |
| struct llama_memory_i; | |
| struct llama_memory_context_i; | |
| // stores copy of the memory in device buffer. used for fast state save/load | |
| struct llama_memory_buffer { | |
| int n_tensors = 0; | |
| size_t total_size = 0; | |
| ggml_backend_buffer_ptr buf; | |
| ggml_context_ptr ctx; | |
| std::vector<ggml_tensor *> org; | |
| std::vector<ggml_tensor *> cpy; | |
| }; | |
| using llama_memory_buffers = std::map<ggml_backend_buffer_type_t, llama_memory_buffer>; | |
| struct llama_context { | |
| // init scheduler and compute buffers, reserve worst-case graphs | |
| llama_context( | |
| const llama_model & model, | |
| llama_context_params params); | |
| ~llama_context(); | |
| // reserve a new backend scheduler (if needed) | |
| // for example, when: | |
| // - changing loras | |
| // - changing samplers | |
| // - changing attention type | |
| // - etc. | |
| void sched_reserve(); | |
| void synchronize(); | |
| const llama_model & get_model() const; | |
| const llama_cparams & get_cparams() const; | |
| ggml_backend_sched_t get_sched() const; | |
| uint32_t n_ctx() const; | |
| uint32_t n_ctx_seq() const; | |
| uint32_t n_batch() const; | |
| uint32_t n_ubatch() const; | |
| uint32_t n_seq_max() const; | |
| uint32_t n_threads() const; | |
| uint32_t n_threads_batch() const; | |
| llama_memory_t get_memory() const; | |
| // return true if the memory was updated | |
| bool memory_update(bool optimize); | |
| enum llama_pooling_type pooling_type() const; | |
| float * get_logits(); | |
| float * get_logits_ith(int32_t i); | |
| float * get_embeddings(); | |
| float * get_embeddings_ith(int32_t i); | |
| float * get_embeddings_seq(llama_seq_id seq_id); | |
| float * get_embeddings_nextn(); | |
| float * get_embeddings_nextn_ith(int32_t i); | |
| float * get_embeddings_layer_inp(uint32_t lid); | |
| llama_token * get_sampled_tokens() const; | |
| llama_token get_sampled_token_ith(int32_t idx); | |
| float * get_sampled_logits_ith(int32_t idx); | |
| size_t get_sampled_logits_count(int32_t idx); | |
| float * get_sampled_probs_ith(int32_t idx); | |
| size_t get_sampled_probs_count(int32_t idx); | |
| const llama_token * get_sampled_candidates_ith(int32_t idx); | |
| size_t get_sampled_candidates_count(int32_t idx); | |
| void attach_threadpool( | |
| ggml_threadpool_t threadpool, | |
| ggml_threadpool_t threadpool_batch); | |
| void detach_threadpool(); | |
| void set_n_threads(int32_t n_threads, int32_t n_threads_batch); | |
| void set_abort_callback(bool (*abort_callback)(void * data), void * abort_callback_data); | |
| void set_embeddings (bool value); | |
| void set_embeddings_nextn(bool value, bool masked); | |
| void set_embeddings_layer_inp(uint32_t lid, bool enable); | |
| void set_nextn_layer_offset(int32_t offset); | |
| void set_causal_attn(bool value); | |
| void set_warmup(bool value); | |
| void set_adapters_lora(llama_adapter_lora ** adapters, size_t n_adapters, float * scales); | |
| bool adapters_lora_are_same(llama_adapter_lora ** adapters, size_t n_adapters, float * scales); | |
| bool set_adapter_cvec( | |
| const float * data, | |
| size_t len, | |
| int32_t n_embd, | |
| int32_t il_start, | |
| int32_t il_end); | |
| // process a single ubatch with a specific graph type | |
| // if memory_context is provided, it will be applied first to the context's memory | |
| // ret contains the status of the graph computation | |
| // returns nullptr only if ret != GGML_STATUS_SUCCESS | |
| llm_graph_result * process_ubatch( | |
| const llama_ubatch & ubatch, | |
| llm_graph_type gtype, | |
| llama_memory_context_i * mctx, | |
| ggml_status & ret); | |
| int encode(const llama_batch & batch_inp); | |
| int decode(const llama_batch & batch_inp); | |
| // | |
| // state save/load | |
| // | |
| size_t state_get_size(); | |
| size_t state_get_data( uint8_t * dst, size_t size); | |
| size_t state_set_data(const uint8_t * src, size_t size); | |
| size_t state_seq_get_size(llama_seq_id seq_id, llama_state_seq_flags flags); | |
| size_t state_seq_get_data(llama_seq_id seq_id, uint8_t * dst, size_t size, llama_state_seq_flags flags); | |
| size_t state_seq_set_data(llama_seq_id seq_id, const uint8_t * src, size_t size, llama_state_seq_flags flags); | |
| bool state_load_file( | |
| const char * filepath, | |
| llama_token * tokens_out, | |
| size_t n_token_capacity, | |
| size_t * n_token_count_out); | |
| bool state_save_file( | |
| const char * filepath, | |
| const llama_token * tokens, | |
| size_t n_token_count); | |
| size_t state_seq_load_file( | |
| llama_seq_id seq_id, | |
| const char * filepath, | |
| llama_token * tokens_out, | |
| size_t n_token_capacity, | |
| size_t * n_token_count_out); | |
| size_t state_seq_save_file( | |
| llama_seq_id seq_id, | |
| const char * filepath, | |
| const llama_token * tokens, | |
| size_t n_token_count); | |
| // | |
| // perf | |
| // | |
| llama_perf_context_data perf_get_data() const; | |
| void perf_reset(); | |
| llama_memory_breakdown memory_breakdown() const; | |
| // | |
| // training | |
| // | |
| void opt_init(struct llama_model * model, struct llama_opt_params lopt_params); | |
| // TODO: more flexible combinations of logical/physical batch size and context size | |
| void opt_epoch( | |
| ggml_opt_dataset_t dataset, | |
| ggml_opt_result_t result_train, | |
| ggml_opt_result_t result_eval, | |
| int64_t idata_split, | |
| ggml_opt_epoch_callback callback_train, | |
| ggml_opt_epoch_callback callback_eval); | |
| void opt_epoch_iter( | |
| ggml_opt_dataset_t dataset, | |
| ggml_opt_result_t result, | |
| const std::vector<llama_token> & tokens, | |
| const std::vector<llama_token> & labels_sparse, | |
| llama_batch & batch, | |
| ggml_opt_epoch_callback callback, | |
| bool train, | |
| int64_t idata_in_loop, | |
| int64_t ndata_in_loop, | |
| int64_t t_loop_start); | |
| private: | |
| // | |
| // output | |
| // | |
| // Make sure enough space is available for outputs. | |
| // Returns max number of outputs for which space was reserved. | |
| uint32_t output_reserve(int32_t n_outputs); | |
| void output_reorder(); | |
| // map the output row index `i` to batch index | |
| int64_t output_resolve_row(int32_t i) const; | |
| // async-copy enabled layer-input tensors (per cparams.output_layer_inp) | |
| // from backend into host-side embd_layer_inp buffers | |
| void extract_layer_inputs(const llm_graph_result * res, size_t token_offset, size_t n_tokens); | |
| // | |
| // graph | |
| // | |
| public: | |
| uint32_t graph_max_nodes(uint32_t n_tokens) const; | |
| // can reuse the llm_graph_result instance of the context (for example to update a memory module) | |
| llm_graph_result * get_gf_res_reserve() const; | |
| // returns the result of ggml_backend_sched_graph_compute_async execution | |
| ggml_status graph_compute(ggml_cgraph * gf, bool batched); | |
| // reserve a graph with a dummy ubatch of the specified size | |
| ggml_cgraph * graph_reserve( | |
| uint32_t n_tokens, uint32_t n_seqs, uint32_t n_outputs, const llama_memory_context_i * mctx, bool split_only = false, size_t * sizes = nullptr); | |
| bool set_sampler(llama_seq_id seq_id, llama_sampler * sampler); | |
| private: | |
| llm_graph_params graph_params( | |
| llm_graph_result * res, | |
| const llama_ubatch & ubatch, | |
| const llama_memory_context_i * mctx, | |
| llm_graph_type gtype) const; | |
| llm_graph_cb graph_get_cb() const; | |
| // TODO: read/write lora adapters and cvec | |
| size_t state_write_data(llama_io_write_i & io); | |
| size_t state_read_data (llama_io_read_i & io); | |
| size_t state_seq_write_data(llama_io_write_i & io, llama_seq_id seq_id, llama_state_seq_flags flags); | |
| size_t state_seq_read_data (llama_io_read_i & io, llama_seq_id seq_id, llama_state_seq_flags flags); | |
| // | |
| // members | |
| // | |
| const llama_model & model; | |
| llama_cparams cparams; | |
| llama_adapter_cvec_ptr cvec; | |
| llama_adapter_loras_ptr loras; | |
| llama_cross cross; // TODO: tmp for handling cross-attention - need something better probably | |
| llama_memory_ptr memory; | |
| // decode output (2-dimensional array: [n_outputs][n_vocab]) | |
| buffer_view<float> logits = {nullptr, 0}; | |
| // embeddings output (2-dimensional array: [n_outputs][n_embd]) | |
| // populated only when pooling_type == LLAMA_POOLING_TYPE_NONE | |
| buffer_view<float> embd = {nullptr, 0}; | |
| // hidden state required by the nextn layers (2-dimensional array: [n_outputs][n_embd]) | |
| // populated only when cparams.embeddings_nextn is enabled and the model graph | |
| // sets llm_graph_result::t_h_nextn | |
| buffer_view<float> embd_nextn = {nullptr, 0}; | |
| // host buffers for output layer input embeddings, per layer | |
| // populated when cparams.output_layer_inp[il] is true | |
| std::vector<buffer_view<float>> embd_layer_inp; | |
| struct sampling_info { | |
| // !samplers.empty() to check if any samplers are active | |
| std::map<llama_seq_id, llama_sampler *> samplers; | |
| buffer_view<float> logits = {nullptr, 0}; | |
| buffer_view<llama_token> sampled = {nullptr, 0}; | |
| buffer_view<float> probs = {nullptr, 0}; | |
| buffer_view<llama_token> candidates = {nullptr, 0}; | |
| std::vector<uint32_t> logits_count; | |
| std::vector<uint32_t> probs_count; | |
| std::vector<uint32_t> candidates_count; | |
| // optimization | |
| std::vector<llama_token> token_ids_full_vocab; | |
| }; | |
| sampling_info sampling; | |
| // sequence embeddings output (map of [n_embd] vectors) | |
| // populated only when pooling_type != LLAMA_POOLING_TYPE_NONE | |
| std::map<llama_seq_id, std::vector<float>> embd_seq; | |
| // reuse the batch_allocr to avoid unnecessary memory allocations | |
| std::unique_ptr<llama_batch_allocr> balloc; | |
| uint32_t n_outputs = 0; // number of actually-used outputs in the current ubatch or last logical batch | |
| std::vector<int32_t> output_ids; // map batch token positions to ids of the logits and embd buffers | |
| struct swap_info { | |
| uint32_t i0; | |
| uint32_t i1; | |
| }; | |
| std::vector<swap_info> output_swaps; | |
| ggml_backend_sched_ptr sched; | |
| bool sched_need_reserve = true; | |
| ggml_backend_t backend_cpu = nullptr; | |
| std::vector<ggml_backend_ptr> backends; | |
| // training | |
| ggml_opt_context_t opt_ctx = nullptr; | |
| ggml_threadpool_t threadpool = nullptr; | |
| ggml_threadpool_t threadpool_batch = nullptr; | |
| ggml_abort_callback abort_callback = nullptr; | |
| void * abort_callback_data = nullptr; | |
| std::vector<std::pair<ggml_backend_t, ggml_backend_set_n_threads_t>> set_n_threads_fns; | |
| // pointers and buffer types used for the compute buffer of each backend | |
| std::vector<ggml_backend_t> backend_ptrs; | |
| std::vector<ggml_backend_buffer_type_t> backend_buft; | |
| std::vector<size_t> backend_buf_exp_size; // expected buffer sizes | |
| llm_graph_result_ptr gf_res_prev; | |
| llm_graph_result_ptr gf_res_reserve; | |
| // host buffer for the model output (logits and embeddings) | |
| ggml_backend_buffer_ptr buf_output; | |
| // keep copies of the per-sequence memory on the device | |
| std::map<llama_seq_id, llama_memory_buffers> mem_storage; | |
| bool has_evaluated_once = false; | |
| // env: LLAMA_GRAPH_REUSE_DISABLE | |
| bool graph_reuse_disable = false; | |
| // perf | |
| mutable int64_t t_start_us = 0; | |
| mutable int64_t t_load_us = 0; | |
| mutable int64_t t_p_eval_us = 0; | |
| mutable int64_t t_eval_us = 0; | |
| mutable int64_t t_compute_start_us = 0; | |
| mutable int64_t n_queued_tokens = 0; | |
| mutable int32_t n_p_eval = 0; // number of tokens in eval calls for the prompt (with batch size > 1) | |
| mutable int32_t n_eval = 0; // number of eval calls | |
| mutable int32_t n_reused = 0; // number of times the previous graph was reused | |
| }; | |