]> git.djapps.eu Git - pkg/ggml/sources/llama.cpp/log
pkg/ggml/sources/llama.cpp
2 years agometal : remove old API (#4919)
Georgi Gerganov [Sat, 13 Jan 2024 18:45:45 +0000 (20:45 +0200)]
metal : remove old API (#4919)

ggml-ci

2 years agoserver : fix prompt caching with system prompt (#4914)
Georgi Gerganov [Sat, 13 Jan 2024 17:31:26 +0000 (19:31 +0200)]
server : fix prompt caching with system prompt (#4914)

2 years agollama : fix detokenization of non-special added-tokens (#4916)
Georgi Gerganov [Sat, 13 Jan 2024 16:47:38 +0000 (18:47 +0200)]
llama : fix detokenization of non-special added-tokens (#4916)

Co-authored-by: goerch <redacted>
2 years agometal : disable log for loaded kernels (#4794)
Georgi Gerganov [Sat, 13 Jan 2024 16:46:37 +0000 (18:46 +0200)]
metal : disable log for loaded kernels (#4794)

2 years agollama : minimize size used for state save/load (#4820)
David Friehs [Sat, 13 Jan 2024 16:29:43 +0000 (17:29 +0100)]
llama : minimize size used for state save/load (#4820)

* examples : save-load-state: save only required state

* llama : only reserve n_vocab * n_batch at most for logits

llama_decode asserts that only n_batch tokens are passed each call, and
n_ctx is expected to be bigger than n_batch.

* llama : always reserve n_vocab * n_batch for logits

llama_context de-serialization breaks if the contexts have differing
capacity for logits and llama_decode will at maximum resize to
n_vocab * n_batch.

* llama : only save and restore used logits

for batch sizes of 512 this reduces save state in the best case by
around 62 MB, which can be a lot if planning to save on each message
to allow regenerating messages.

* llama : use ostringstream and istringstream for save and load

* llama : serialize rng into minimum amount of space required

* llama : break session version due to serialization changes

2 years agoworkflows: unbreak nix-build-aarch64, and split it out (#4915)
Someone [Sat, 13 Jan 2024 16:29:16 +0000 (16:29 +0000)]
workflows: unbreak nix-build-aarch64, and split it out (#4915)

The fix should be just the `sudo apt-get update`

2 years agomain : add parameter --no-display-prompt (#4541)
Yann Follet [Sat, 13 Jan 2024 16:09:08 +0000 (00:09 +0800)]
main : add parameter --no-display-prompt (#4541)

* add the parameter : --no-display-prompt , combine with --log-disable it will display only the generated tokens

* remove empty line

---------

Co-authored-by: Georgi Gerganov <redacted>
2 years agogguf : fix potential infinite for-loop (#4600)
texmex76 [Sat, 13 Jan 2024 16:06:20 +0000 (17:06 +0100)]
gguf : fix potential infinite for-loop (#4600)

Co-authored-by: Bernhard Gstrein <redacted>
2 years agometal : refactor kernel loading code (#4794)
Georgi Gerganov [Sat, 13 Jan 2024 16:03:45 +0000 (18:03 +0200)]
metal : refactor kernel loading code (#4794)

* metal : detect more GPU families

* metal : refactor kernel loading

* metal : set kernel family requirements

* metal : fix kernel init + fix compile options

* metal : take into account simdgroup reduction support

* metal : print only skipped kernels

* metal : fix check for simdgroup reduction support

* metal : check for Metal 3

* metal : free allocations

* metal : normalize encoder:setComputePipelineStatus calls

ggml-ci

* metal : fix Metal3 family check

ggml-ci

* metal : check for simdgroup matrix mul. feature

ggml-ci

2 years agocompare-llama-bench: tweak output format (#4910)
Johannes Gäßler [Sat, 13 Jan 2024 14:52:53 +0000 (15:52 +0100)]
compare-llama-bench: tweak output format (#4910)

2 years agoserver : fix deadlock that occurs in multi-prompt scenarios (#4905)
Ziad Ben Hadj-Alouane [Sat, 13 Jan 2024 14:20:46 +0000 (09:20 -0500)]
server : fix deadlock that occurs in multi-prompt scenarios (#4905)

* * fix deadlock

* * dont ruint all whitespace

2 years agoserver : fix crash with multimodal models without BOS token (#4904)
makomk [Sat, 13 Jan 2024 14:16:11 +0000 (14:16 +0000)]
server : fix crash with multimodal models without BOS token (#4904)

2 years agoconvert : update phi-2 to latest HF repo (#4903)
Georgi Gerganov [Sat, 13 Jan 2024 11:44:37 +0000 (13:44 +0200)]
convert : update phi-2 to latest HF repo (#4903)

* convert : update phi-2 to latest HF repo

ggml-ci

* py : try to fix flake stuff

2 years agosync : ggml
Georgi Gerganov [Fri, 12 Jan 2024 20:02:43 +0000 (22:02 +0200)]
sync : ggml

2 years agoggml : fix 32-bit ARM compat for IQ2_XS (whisper/1758)
Georgi Gerganov [Fri, 12 Jan 2024 12:02:30 +0000 (14:02 +0200)]
ggml : fix 32-bit ARM compat for IQ2_XS (whisper/1758)

* ggml : fix 32-bit ARM compat

* ggml : fix fix

* ggml : fix fix fix

2 years agobackend_sched : fix assignments
slaren [Fri, 12 Jan 2024 19:38:34 +0000 (20:38 +0100)]
backend_sched : fix assignments

ggml-ci

2 years agoexamples : add pydantic models to GBNF grammar generator (#4883)
Maximilian Winter [Fri, 12 Jan 2024 19:46:45 +0000 (20:46 +0100)]
examples : add pydantic models to GBNF grammar generator (#4883)

* Create pydantic-models-to-grammar.py

* Added some comments for usage

* Refactored Grammar Generator

Added example and usage instruction.

* Update pydantic_models_to_grammar.py

* Update pydantic-models-to-grammar-examples.py

* Renamed module and imported it.

* Update pydantic-models-to-grammar.py

* Renamed file and fixed grammar generator issue.

2 years agoCUDA: faster q8_0 -> f16 dequantization (#4895)
Johannes Gäßler [Fri, 12 Jan 2024 19:38:54 +0000 (20:38 +0100)]
CUDA: faster q8_0 -> f16 dequantization (#4895)

2 years agollama : ggml-backend integration (#4766)
slaren [Fri, 12 Jan 2024 19:07:38 +0000 (20:07 +0100)]
llama : ggml-backend integration (#4766)

* llama : ggml-backend integration

* ggml-backend : add names to buffers

* fix unmap after loading

* batched-bench : add tensor_split param

* llama : check for null tensor_split

* ggml-backend : increase GGML_MAX_BACKENDS

* improve graph splitting, partial fix for --no-kv-offload

* cuda : add ggml-backend split buffer support

* cuda : do not create buffer types for devices that don't exist (fixes usage without CUDA devices available)

* ggml : fix null backend dereference (#4807)

* ggml : fix null backend dereference

* ggml : also check ggml_backend_is_cpu

* test-backend-ops : check buffer allocation failures

* llama : add cparam (split_mode) and command line argument (--split-mode, -sm) to configure the split mode (none, layer or row)

* ggml : fix mul_mat_id work size

* llama : rewrite session kv load/set without graphs

* minor

* llama : only initialize used backends, free backends on context free

* llama : abort ctx if cuda backend init fails

* llama : rewrite lora with ggml-backend and compute on CPU

ggml-ci

* llama : only map to a backend buffer the region of the file mapping containing the tensors used in the buffer

* opencl : add ggml-backend buffer type

* cuda : only use batched_cublas with batched mat muls (fixes fp16 tg perf)

* llama : on Metal, by default offload the full model

ggml-ci

* metal : page align the data ptr (#4854)

* Apply suggestions from code review

Co-authored-by: Johannes Gäßler <redacted>
* cuda : fix split buffer free

* address review comments

* llama-bench : add split-mode parameter

* fix whitespace

* opencl : fix double initialization

* server : add --split-mode parameter

* use async copy and compute to improve multi-gpu performance

ggml-ci

* use async memcpys to copy the graph outputs to the CPU

* fix opencl

* use a host buffer for the cpu compute buffer for faster copies to the gpu

---------

Co-authored-by: Georgi Gerganov <redacted>
Co-authored-by: Johannes Gäßler <redacted>
2 years agollama : remove redundant assert for StableLM (#4901)
Georgi Gerganov [Fri, 12 Jan 2024 18:54:12 +0000 (20:54 +0200)]
llama : remove redundant assert for StableLM (#4901)

2 years agoexport-lora : use LLAMA_FILE_MAGIC_GGLA (#4894)
Daniel Bevenius [Fri, 12 Jan 2024 17:54:53 +0000 (18:54 +0100)]
export-lora : use LLAMA_FILE_MAGIC_GGLA (#4894)

This commit replaces the magic number used in export-lora.cpp with
the one defined in llama.h, which is indirectly included via common.h.

Signed-off-by: Daniel Bevenius <redacted>
2 years agollama.swiftui : update models layout (#4826)
Zay [Fri, 12 Jan 2024 12:48:00 +0000 (05:48 -0700)]
llama.swiftui : update models layout (#4826)

* Updated Models Layout

- Added a models drawer
- Added downloading directly from Hugging Face
- Load custom models from local folder
- Delete models by swiping left

* trimmed trailing white space

* Updated Models Layout

2 years agogitignore : imatrix
Georgi Gerganov [Fri, 12 Jan 2024 12:33:21 +0000 (14:33 +0200)]
gitignore : imatrix

2 years agoCUDA: fix softmax compile for old CUDA versions (#4862)
Johannes Gäßler [Fri, 12 Jan 2024 11:30:41 +0000 (12:30 +0100)]
CUDA: fix softmax compile for old CUDA versions (#4862)

2 years agollama : fix typo "imp_embd" -> "inp_embd"
Georgi Gerganov [Fri, 12 Jan 2024 11:10:19 +0000 (13:10 +0200)]
llama : fix typo "imp_embd" -> "inp_embd"

2 years agocommon : streamline the formatting of help (#4890)
howlger [Fri, 12 Jan 2024 11:05:32 +0000 (12:05 +0100)]
common : streamline the formatting of help (#4890)

* common : streamline the formatting of help

- Separate alternative parameters by a comma

- Do not indent `--version` differently

* Update common/common.cpp

---------

Co-authored-by: Georgi Gerganov <redacted>
2 years agopy : fix lint (#4889)
Georgi Gerganov [Fri, 12 Jan 2024 11:03:38 +0000 (13:03 +0200)]
py : fix lint (#4889)

2 years agollama : fix llm_build_k_shift to use correct n_rot (#4889)
Georgi Gerganov [Fri, 12 Jan 2024 11:01:56 +0000 (13:01 +0200)]
llama : fix llm_build_k_shift to use correct n_rot (#4889)

* llama : fix llm_build_k_shift to use correct n_rot

ggml-ci

* llama : always use hparams.n_rot for ggml_rope_custom

ggml-ci

* convert : fix persimmon conversion to write correct n_rot

2 years agoImportance Matrix calculation (#4861)
Kawrakow [Fri, 12 Jan 2024 05:59:57 +0000 (06:59 +0100)]
Importance Matrix calculation (#4861)

* imatrix: 1st version

* imatrix: WIP

* Cleanup

* Update examples/imatrix/imatrix.cpp

Co-authored-by: Georgi Gerganov <redacted>
---------

Co-authored-by: Iwan Kawrakow <redacted>
Co-authored-by: Georgi Gerganov <redacted>
2 years agoserver : fix infill when prompt is empty (#4833)
Georgi Gerganov [Thu, 11 Jan 2024 21:23:49 +0000 (23:23 +0200)]
server : fix infill when prompt is empty (#4833)

2 years agomain : better name for variable n_print (#4874)
Georgi Gerganov [Thu, 11 Jan 2024 20:46:26 +0000 (22:46 +0200)]
main : better name for variable n_print (#4874)

2 years agomain : disable token count by default (#4874)
Georgi Gerganov [Thu, 11 Jan 2024 20:43:05 +0000 (22:43 +0200)]
main : disable token count by default (#4874)

2 years agoswift : track ggml release branch (#4867)
Georgi Gerganov [Thu, 11 Jan 2024 19:58:28 +0000 (21:58 +0200)]
swift : track ggml release branch (#4867)

2 years agollama : restore intended k-quants mixes for MoE models (#4872)
Kawrakow [Thu, 11 Jan 2024 19:43:15 +0000 (20:43 +0100)]
llama : restore intended k-quants mixes for MoE models (#4872)

* Restore intended k-quants quantization mixes for MoE models

* Update Q2_K_S values in the quantize tool

Still using LLaMA-v1 PPL values in the quant description
today does not make much sense. But let's leave this update
for another PR.

---------

Co-authored-by: Iwan Kawrakow <redacted>
Co-authored-by: Georgi Gerganov <redacted>
2 years agoggml : SOTA 2-bit quants (add IQ2_XS) (#4856)
Kawrakow [Thu, 11 Jan 2024 19:39:39 +0000 (20:39 +0100)]
ggml : SOTA 2-bit quants (add IQ2_XS) (#4856)

* iq2_xs: basics

* iq2_xs: this should have been in the basics

* iq2_xs: CUDA and scalar CPU works

* iq2_xs: WIP Metal

* iq2_xs: Metal now works

* iq2_xs: working, but dog slow, ARM_NEON dot product

* iq2_xs: better ARM_NEON dot product

We are now at 19.5 t/s for TG-128 and 61 t/s for PP-512 when
running on the CPU.

* iq2_xs: AVX2 dot product - 19.5 t/s

* iq2_xs: faster AVX2 dit product

21.4 t/s for TG-128, 59.2 t/s for PP-512.
The latter is 2x compared to the previous version.

* iq2_xs: had forgotten to delete iq2-data.h

* Add llama enum for IQ2_XS

---------

Co-authored-by: Iwan Kawrakow <redacted>
2 years agoswift : pin ggml commit + remove ggml.h from spm-headers (#4878)
Georgi Gerganov [Thu, 11 Jan 2024 19:31:31 +0000 (21:31 +0200)]
swift : pin ggml commit + remove ggml.h from spm-headers (#4878)

ggml-ci

2 years agoserver : implement credentialed CORS (#4514)
Laura [Thu, 11 Jan 2024 18:02:48 +0000 (19:02 +0100)]
server : implement credentialed CORS (#4514)

* Implement credentialed CORS according to MDN

* Fix syntax error

* Move validate_api_key up so it is defined before its first usage

2 years agoserver : support for multiple api keys (#4864)
Michael Coppola [Thu, 11 Jan 2024 17:51:17 +0000 (12:51 -0500)]
server : support for multiple api keys (#4864)

* server: added support for multiple api keys, added loading api keys from file

* minor: fix whitespace

* added file error handling to --api-key-file, changed code to better
reflect current style

* server: update README.md for --api-key-file

---------

Co-authored-by: Michael Coppola <redacted>
2 years agoserver : add `LOG_INFO` when model is successfully loaded (#4881)
Behnam M [Thu, 11 Jan 2024 17:41:39 +0000 (12:41 -0500)]
server : add `LOG_INFO` when model is successfully loaded (#4881)

* added /health endpoint to the server

* added comments on the additional /health endpoint

* Better handling of server state

When the model is being loaded, the server state is `LOADING_MODEL`. If model-loading fails, the server state becomes `ERROR`, otherwise it becomes `READY`. The `/health` endpoint provides more granular messages now according to the server_state value.

* initialized server_state

* fixed a typo

* starting http server before initializing the model

* Update server.cpp

* Update server.cpp

* fixes

* fixes

* fixes

* made ServerState atomic and turned two-line spaces into one-line

* updated `server` readme to document the `/health` endpoint too

* used LOG_INFO after successful model loading

2 years agoci: nix-flake-update: new token with pr permissions (#4879)
Someone [Thu, 11 Jan 2024 17:22:34 +0000 (17:22 +0000)]
ci: nix-flake-update: new token with pr permissions (#4879)

* ci: nix-flake-update: new token with pr permissions

---------

Co-authored-by: Georgi Gerganov <redacted>
2 years agomain : print total token count and tokens consumed so far (#4874)
pudepiedj [Thu, 11 Jan 2024 16:14:52 +0000 (16:14 +0000)]
main : print total token count and tokens consumed so far (#4874)

* Token count changes

* Add show token count

* Updating before PR

* Two requested changes

* Move param def posn

2 years agoserver : fix typo in model name (#4876)
Isaac McFadyen [Thu, 11 Jan 2024 14:33:26 +0000 (09:33 -0500)]
server : fix typo in model name (#4876)

2 years agometal : put encoder debug group behind a define (#4873)
Paul Tsochantaris [Thu, 11 Jan 2024 14:31:52 +0000 (14:31 +0000)]
metal : put encoder debug group behind a define (#4873)

2 years agosync : ggml
Georgi Gerganov [Thu, 11 Jan 2024 07:39:08 +0000 (09:39 +0200)]
sync : ggml

2 years agometal : fix deprecation warning (ggml/690)
Georgi Gerganov [Thu, 11 Jan 2024 07:34:59 +0000 (09:34 +0200)]
metal : fix deprecation warning (ggml/690)

2 years agoggml : remove ggml_cpy_inplace and ggml_cont_inplace (ggml/693)
Timothy Cronin [Thu, 11 Jan 2024 07:27:48 +0000 (02:27 -0500)]
ggml : remove ggml_cpy_inplace and ggml_cont_inplace (ggml/693)

2 years agometal : wrap each operation in debug group (ggml/690)
Jack Mousseau [Wed, 10 Jan 2024 14:19:19 +0000 (06:19 -0800)]
metal : wrap each operation in debug group (ggml/690)

2 years agoggml : change GGML_MAX_NAME at compile time (ggml/682)
leejet [Wed, 10 Jan 2024 13:13:42 +0000 (21:13 +0800)]
ggml : change GGML_MAX_NAME at compile time (ggml/682)

* change GGML_MAX_NAME to 128

* allow controlling the value of GGML_MAX_NAME through external macro definitions

2 years agoFix execlp call (ggml/689)
Halalaluyafail3 [Tue, 9 Jan 2024 16:16:37 +0000 (11:16 -0500)]
Fix execlp call (ggml/689)

NULL can be an integer constant expression with the value zero, in this case the behavior would be undefined because of an incorrect type being passed to the variable arguments.

2 years agofix : cuda order of synchronization when setting a buffer (ggml/679)
Erik Scholz [Fri, 5 Jan 2024 15:00:00 +0000 (16:00 +0100)]
fix : cuda order of synchronization when setting a buffer (ggml/679)

* fix : cuda order of synchronization when setting a buffer

* also sync before memcpy

---------

Co-authored-by: slaren <redacted>
2 years agoserver : update readme to document the new `/health` endpoint (#4866)
Behnam M [Thu, 11 Jan 2024 07:12:05 +0000 (02:12 -0500)]
server : update readme to document the new `/health` endpoint (#4866)

* added /health endpoint to the server

* added comments on the additional /health endpoint

* Better handling of server state

When the model is being loaded, the server state is `LOADING_MODEL`. If model-loading fails, the server state becomes `ERROR`, otherwise it becomes `READY`. The `/health` endpoint provides more granular messages now according to the server_state value.

* initialized server_state

* fixed a typo

* starting http server before initializing the model

* Update server.cpp

* Update server.cpp

* fixes

* fixes

* fixes

* made ServerState atomic and turned two-line spaces into one-line

* updated `server` readme to document the `/health` endpoint too

2 years agoserver : fix build + rename enums (#4870)
Georgi Gerganov [Thu, 11 Jan 2024 07:10:34 +0000 (09:10 +0200)]
server : fix build + rename enums (#4870)

2 years agoserver : add a `/health` endpoint (#4860)
Behnam M [Wed, 10 Jan 2024 19:56:05 +0000 (14:56 -0500)]
server : add a `/health` endpoint (#4860)

* added /health endpoint to the server

* added comments on the additional /health endpoint

* Better handling of server state

When the model is being loaded, the server state is `LOADING_MODEL`. If model-loading fails, the server state becomes `ERROR`, otherwise it becomes `READY`. The `/health` endpoint provides more granular messages now according to the server_state value.

* initialized server_state

* fixed a typo

* starting http server before initializing the model

* Update server.cpp

* Update server.cpp

* fixes

* fixes

* fixes

* made ServerState atomic and turned two-line spaces into one-line

2 years agollama : add additional suffixes for model params (#4834)
Brian [Wed, 10 Jan 2024 14:09:53 +0000 (01:09 +1100)]
llama : add additional suffixes for model params (#4834)

* llm_load_print_meta: Add additional suffixs for model params

* Update llama.cpp model param log

remove unneeded comments and convert from > to >=

2 years agollama : recognize 1B phi models (#4847)
Austin [Wed, 10 Jan 2024 13:39:09 +0000 (08:39 -0500)]
llama : recognize 1B phi models (#4847)

This update categorizes models with 24 layers as MODEL_1B, ensuring compatibility with different Phi model variants without impacting existing Phi-2 model functionality.

2 years agoclip : support more quantization types (#4846)
John [Wed, 10 Jan 2024 13:37:09 +0000 (14:37 +0100)]
clip : support more quantization types (#4846)

Uses ggml functions instead of hardcoded names and adds support to quantize into the modern Q-K variants.
This is just the bare minimum to get k-types working - a more refined choice of types would be needed to get best quality on low quantizations.

I ran a few tests, it doesn't break anything I could notice and a Q6_K ViT works almost as well as Q8_0 but 3 times the inference speed.

2 years agoPython script to compare commits with llama-bench (#4844)
Johannes Gäßler [Wed, 10 Jan 2024 00:04:33 +0000 (01:04 +0100)]
Python script to compare commits with llama-bench (#4844)

2 years agoconvert.py : fix vanilla LLaMA model conversion (#4818)
Austin [Tue, 9 Jan 2024 18:46:46 +0000 (13:46 -0500)]
convert.py : fix vanilla LLaMA model conversion (#4818)

* Update Imports and Add Notes for Future Reference

- Updated import statements in `convert.py`.
- Added import for `AutoTokenizer` from `transformers` module.
- Added conditional import for `gguf` from the local directory.
- Added comments and notes for future reference.

Additional Notes:

- Noted removal of a redundant `TypeAlias` import.
- Noted the removal of a `gguf` debug statement.
- Commented on the presence of `ARCH` and `NDArray` definitions.
- Commented on cleaning up and refactoring data type definitions.

* Refine Model Hyperparameters and Params Class

- Updated type annotations to use `Optional` for clarity.
- Improved method names and attribute consistency.
- Removed unnecessary variables for better code readability.

Additional Notes:

- Highlighted the use of `Optional` for clearer intent.
- Ensured backward and forward compatibility.

* Restore BpeVocab and SentencePieceVocab classes

- Restored the BpeVocab class for handling BPE tokenization.
- Restored the SentencePieceVocab class for SentencePiece tokenization.

These classes are essential for maintaining the original behavior of the codebase.

* refactor: Standardize vocabulary handling with HfVocab

- Replaced VocabLoader with HfVocab, aligning vocabulary handling across classes.
- Updated initialization of HfVocab with local_files_only=True for AutoTokenizer.
- Introduced optional parameter fname_added_tokens for flexible added token management.
- Streamlined added token handling for clarity and conciseness.
- Maintained special tokens and IDs, enhancing token management.
- Simplified token processing methods for improved readability.
- Added a placeholder for score computation with a default value of -1000.0.
- Optimized newline token check for efficiency.
- Updated __repr__ function for clarity in representation.
- Adjusted type alias Vocab to include BpeVocab, SentencePieceVocab, and HfVocab.
- Removed redundant code related to special token handling, reverse vocabulary mapping, and vocabulary file detection.

This refactoring promotes a standardized and modular approach to vocabulary management, facilitating future integration with a VocabFactory and improving code maintainability and scalability.

* refactor: Enhance readability, functionality, and code quality

- Improved code formatting and readability for better maintainability.
- Refactored LazyUnpickler's CLASSES dictionary for clarity.
- Added print statements and warnings in check_vocab_size for user feedback.
- Removed find_vocab_file_path, as it's superseded by VocabFactory.
- Preparatory changes for upcoming classes: OutputFile and VocabFactory.
- Overall focus on code quality, error handling, and consistency.

These changes reflect a continuous effort to refine the codebase, ensuring it meets best practices and prepares for future enhancements, such as the VocabFactory.

* refactor: Update OutputFile class for enhanced model vocabulary management

- Restructured the constructor for improved readability.
- Updated `add_meta_arch` method for flexible model name determination.
- Introduced `handle_tokenizer_model` for mapping vocab types to supported tokenizer models.
- Streamlined vocabulary extraction with `extract_vocabulary_from_model`.
- Simplified vocabulary metadata addition using `add_meta_vocab`.
- Refactored `add_tensor_info` for clarity and consistency.
- Improved error handling for better user feedback.

These changes signify the development of a versatile and comprehensive `OutputFile` class, enabling efficient management of model conversion output, metadata, vocabulary, and tensor information.

* feat: Introduce VocabFactory for flexible vocabulary management in model conversion

- The VocabFactory class is added to facilitate modular vocabulary handling.
- The constructor initializes a directory path and detects vocabulary-related files.
- The _select_file method provides file paths based on vocabulary type (e.g., BPE, SentencePiece).
- _create_special_vocab generates special vocabularies, accommodating different types.
- The load_vocab method loads vocabularies, handling BPE, SentencePiece, and Hugging Face Fast Tokenizer.
- Error handling and logging enhance debugging and user feedback.
- The modular and flexible design simplifies vocabulary management and supports future extensions.

The VocabFactory class enhances code modularity and maintainability, allowing versatile vocabulary handling in the model conversion process.

* refactor: Improve code organization, argument parsing, and user interface

- Renamed 'default_outfile' to 'default_output_file' for clarity.
- Refactored argument parser setup into 'get_argument_parser' function.
- Introduced descriptive comments for each argument in the parser.
- Added '--vocab-type' argument with choices ["spm", "bpe", "hfft"] for vocabulary processing.
- Improved flag naming consistency: '--outfile' to '--out-file' and '--bigendian' to '--big-endian'.
- Enhanced error handling to prevent overwriting input data in 'default_output_file'.
- Made 'argv' in 'main' an optional parameter for flexibility.
- Introduced dynamic import for 'awq.apply_awq' based on 'args.awq_path' for conditional dependency.

These changes enhance code clarity, organization, and the user interface of the script, aligning it with Python best practices and improving maintainability.

* refactor: Further refine functionality, improve user interaction, and streamline vocabulary handling

- Renamed command-line arguments for clarity and consistency.
- Improved path resolution and import adjustments for robustness.
- Thoughtfully handled 'awq-path' and conditional logic for the weighted model.
- Enhanced model and vocabulary loading with the 'VocabFactory' class for structured and adaptable loading.
- Strengthened error handling and user feedback for a more user-friendly experience.
- Structured output file handling with clear conditions and defaults.
- Streamlined and organized the 'main' function for better logic flow.
- Passed 'sys.argv[1:]' to 'main' for adaptability and testability.

These changes solidify the script's functionality, making it more robust, user-friendly, and adaptable. The use of the 'VocabFactory' class is a notable enhancement in efficient vocabulary handling, reflecting a thoughtful and iterative approach to script development.

* chore: Apply ruff formatting to convert.py

Signed-off-by: teleprint-me <redacted>
* Revert to commit 0614c33

* chore: Apply flake8 formatting rules

Signed-off-by: teleprint-me <redacted>
* refactor: Revise `check_vocab_size` for Enhanced Clarity and Correctness

- Resolved an unreachable branch issue by reorganizing the conditional structure.
- Moved the special case check for `params.n_vocab == -1` to the top for immediate assertion.
- Flattened the conditional logic for improved clarity and predictability of the function's behavior.

These changes enhance the readability and functional correctness of the `check_vocab_size` function without altering its intended functionality.

* py : fix outfile and outtype

* py : suggest hint for missing vocab size

---------

Signed-off-by: teleprint-me <redacted>
Co-authored-by: Georgi Gerganov <redacted>
2 years agollava-cli : don't crash if --image flag is invalid (#4835)
Justine Tunney [Tue, 9 Jan 2024 17:59:14 +0000 (09:59 -0800)]
llava-cli : don't crash if --image flag is invalid (#4835)

This change fixes an issue where supplying `--image missing-file` would
result in a segfault due to a null pointer being dereferenced. This can
result in distracting info being printed if robust crash analysis tools
are being used.

2 years agometal : improve dequantize precision to match CPU (#4836)
Georgi Gerganov [Tue, 9 Jan 2024 17:37:08 +0000 (19:37 +0200)]
metal : improve dequantize precision to match CPU (#4836)

ggml-ci

2 years agoscripts : improve get-pg.sh (#4838)
Georgi Gerganov [Tue, 9 Jan 2024 17:20:45 +0000 (19:20 +0200)]
scripts : improve get-pg.sh (#4838)

2 years agoreadme : add 3rd party collama reference to UI list (#4840)
iohub [Tue, 9 Jan 2024 16:45:54 +0000 (00:45 +0800)]
readme : add 3rd party collama reference to UI list (#4840)

Add a VSCode extension for llama.cpp reference to UI list

2 years agoscripts : script to get Paul Graham essays in txt format (#4838)
Georgi Gerganov [Tue, 9 Jan 2024 14:23:05 +0000 (16:23 +0200)]
scripts : script to get Paul Graham essays in txt format (#4838)

2 years agoserver : update readme about token probs (#4777)
Behnam M [Tue, 9 Jan 2024 10:02:05 +0000 (05:02 -0500)]
server : update readme about token probs (#4777)

* updated server readme to reflect the gg/server-token-probs-4088 commit

added explanation for the API's completion result which now includes `completion_probabilities`. Also added a JSON schema that shows the type/structure of `completion_probabilities`.

* simplified the `completion_probabilities` JSON schema

It's now easier to understand what the structure of `completion_probabilities` looks like.

* minor : fix trailing whitespace

---------

Co-authored-by: Georgi Gerganov <redacted>
2 years agoserver : add api-key flag to documentation (#4832)
Zsapi [Tue, 9 Jan 2024 09:12:43 +0000 (10:12 +0100)]
server : add api-key flag to documentation (#4832)

Document the api-key flag added to server in https://github.com/ggerganov/llama.cpp/pull/4441

2 years agoggml : fix vld1q_s8_x4 32-bit compat (#4828)
Georgi Gerganov [Tue, 9 Jan 2024 08:42:06 +0000 (10:42 +0200)]
ggml : fix vld1q_s8_x4 32-bit compat (#4828)

* ggml : fix vld1q_s8_x4 32-bit compat

ggml-ci

* ggml : fix 32-bit ARM compat (cont)

ggml-ci

2 years agoCUDA: faster softmax via shared memory + fp16 math (#4742)
Johannes Gäßler [Tue, 9 Jan 2024 07:58:55 +0000 (08:58 +0100)]
CUDA: faster softmax via shared memory + fp16 math (#4742)

2 years agocommon : fix the short form of `--grp-attn-w`, not `-gat` (#4825)
howlger [Mon, 8 Jan 2024 19:05:53 +0000 (20:05 +0100)]
common : fix the short form of `--grp-attn-w`, not `-gat` (#4825)

See https://github.com/ggerganov/llama.cpp/blob/master/common/common.cpp#L230C53-L230C57

2 years agoreadme : add link to SOTA models
Georgi Gerganov [Mon, 8 Jan 2024 18:25:17 +0000 (20:25 +0200)]
readme : add link to SOTA models

2 years agoSOTA 2-bit quants (#4773)
Kawrakow [Mon, 8 Jan 2024 15:02:32 +0000 (16:02 +0100)]
SOTA 2-bit quants (#4773)

* iq2_xxs: basics

* iq2_xxs: scalar and AVX2 dot products

Needed to change Q8_K to have quants in the -127...127 range,
else the IQ2_XXS AVX implementation becomes very awkward.
The alternative would have been to use Q8_0 instead. Perhaps
I'll change later, for now this is what we have.

* iq2_xxs: ARM_NEON dot product

Somehow strangely slow (112 ms/token).

* iq2_xxs: WIP Metal

Dequantize works, something is still wrong with the
dot product.

* iq2_xxs: Metal dot product now works

We have
PP-512 = 475 t/s
TG-128 = 47.3 t/s

Not the greatest performance, but not complete garbage either.

* iq2_xxs: slighty faster dot product

TG-128 is now 48.4 t/s

* iq2_xxs: slighty faster dot product

TG-128 is now 50.9 t/s

* iq2_xxs: even faster Metal dot product

TG-128 is now 54.1 t/s.

Strangely enough, putting the signs lookup table
into shared memory has a bigger impact than the
grid values being in shared memory.

* iq2_xxs: dequantize CUDA kernel - fix conflict with master

* iq2_xxs: quantized CUDA dot product (MMVQ)

We get TG-128 = 153.1 t/s

* iq2_xxs: slightly faster CUDA dot product

TG-128 is now at 155.1 t/s.

* iq2_xxs: add to llama ftype enum

* iq2_xxs: fix MoE on Metal

* Fix missing MMQ ops when on hipBLAS

I had put the ggml_supports_mmq call at the wrong place.

* Fix bug in qequantize_row_iq2_xxs

The 0.25f factor was missing.
Great detective work by @ggerganov!

* Fixing tests

* PR suggestion

---------

Co-authored-by: Iwan Kawrakow <redacted>
2 years agoswift : exclude ggml-metal.metal from the package (#4822)
Georgi Gerganov [Mon, 8 Jan 2024 14:40:51 +0000 (16:40 +0200)]
swift : exclude ggml-metal.metal from the package (#4822)

2 years agollama.swiftui : update readme
Georgi Gerganov [Mon, 8 Jan 2024 13:57:36 +0000 (15:57 +0200)]
llama.swiftui : update readme

2 years agomain : add self-extend support (#4815)
Georgi Gerganov [Mon, 8 Jan 2024 09:18:32 +0000 (11:18 +0200)]
main : add self-extend support (#4815)

* examples : add passkey test

* passkey : better prints

* passkey : select pass key pos from CLI

* passkey : simplify n_past logic

* llama : "self-extend"-like context extension

* passkey : add comment

* main : add Self-Extend support

* llama : add comment about llama_kv_cache_seq_div

2 years agoexamples : add passkey test (#3856)
Georgi Gerganov [Mon, 8 Jan 2024 09:14:04 +0000 (11:14 +0200)]
examples : add passkey test (#3856)

* examples : add passkey test

* passkey : better prints

* passkey : select pass key pos from CLI

* passkey : simplify n_past logic

* make : add passkey target

* passkey : add "self-extend"-like context extension (#4810)

* llama : "self-extend"-like context extension

* passkey : add comment

* passkey : add readme

2 years agoreadme : add lgrammel/modelfusion JS/TS client for llama.cpp (#4814)
Lars Grammel [Sun, 7 Jan 2024 20:24:11 +0000 (21:24 +0100)]
readme : add lgrammel/modelfusion JS/TS client for llama.cpp (#4814)

2 years agollama-bench : add no-kv-offload parameter (#4812)
slaren [Sun, 7 Jan 2024 16:59:01 +0000 (17:59 +0100)]
llama-bench : add no-kv-offload parameter (#4812)

2 years agoCUDA: fixed redundant value dequantization (#4809)
Johannes Gäßler [Sun, 7 Jan 2024 16:24:08 +0000 (17:24 +0100)]
CUDA: fixed redundant value dequantization (#4809)

2 years agollama : remove unused vars (#4796)
Georgi Gerganov [Sun, 7 Jan 2024 12:29:36 +0000 (14:29 +0200)]
llama : remove unused vars (#4796)

2 years agollama : remove redundant GQA check (#4796)
Georgi Gerganov [Sun, 7 Jan 2024 09:21:53 +0000 (11:21 +0200)]
llama : remove redundant GQA check (#4796)

2 years agollama.swiftui : use llama.cpp as SPM package (#4804)
Alex Azarov [Sun, 7 Jan 2024 08:20:50 +0000 (09:20 +0100)]
llama.swiftui : use llama.cpp as SPM package (#4804)

2 years agollama : print tensor meta for debugging
Georgi Gerganov [Sun, 7 Jan 2024 07:50:31 +0000 (09:50 +0200)]
llama : print tensor meta for debugging

2 years agollama.swiftui : add visionOS target (#4805)
Alex Azarov [Sun, 7 Jan 2024 07:46:55 +0000 (08:46 +0100)]
llama.swiftui : add visionOS target (#4805)

2 years agoggml : use __builtin_amdgcn_sudot4 in __dp4a for gfx11 (#4787)
Konstantin Zhuravlyov [Sun, 7 Jan 2024 06:52:42 +0000 (01:52 -0500)]
ggml : use __builtin_amdgcn_sudot4 in __dp4a for gfx11 (#4787)

2 years agoserver : fix n_predict check (#4798)
Georgi Gerganov [Sun, 7 Jan 2024 06:45:26 +0000 (08:45 +0200)]
server : fix n_predict check (#4798)

2 years agollama.swiftui : use correct pointer for llama_token_eos (#4797)
Daniel Illescas Romero [Sat, 6 Jan 2024 15:12:59 +0000 (16:12 +0100)]
llama.swiftui : use correct pointer for llama_token_eos (#4797)

2 years agoexamples : improve base-translate.sh script (#4783)
Georgi Gerganov [Sat, 6 Jan 2024 09:40:24 +0000 (11:40 +0200)]
examples : improve base-translate.sh script (#4783)

2 years agocmake : check for openblas64 (#4134)
a-n-n-a-l-e-e [Fri, 5 Jan 2024 16:04:40 +0000 (08:04 -0800)]
cmake : check for openblas64 (#4134)

openblas v0.3.22 64-bit pkg-config file is named openblas64.pc
https://github.com/OpenMathLib/OpenBLAS/issues/3790

2 years agoflake.nix : fix typo (#4700)
Ikko Eltociear Ashimine [Fri, 5 Jan 2024 16:02:44 +0000 (01:02 +0900)]
flake.nix : fix typo (#4700)

betwen -> between

2 years agometal : switch back to default.metallib (ggml/681)
Georgi Gerganov [Fri, 5 Jan 2024 14:30:52 +0000 (16:30 +0200)]
metal : switch back to default.metallib (ggml/681)

ggml-ci

2 years agoggml : fix q2_k bpw in comments (ggml/680)
Georgi Gerganov [Fri, 5 Jan 2024 13:36:04 +0000 (15:36 +0200)]
ggml : fix q2_k bpw in comments (ggml/680)

2 years agoggml : add error handling to graph_compute (whisper/1714)
Finn Voorhees [Wed, 3 Jan 2024 13:39:43 +0000 (08:39 -0500)]
ggml : add error handling to graph_compute (whisper/1714)

2 years agoggml : do not sched_yield when calling BLAS (#4761)
Georgi Gerganov [Fri, 5 Jan 2024 13:18:21 +0000 (15:18 +0200)]
ggml : do not sched_yield when calling BLAS (#4761)

* ggml : do not sched_yield when calling BLAS

ggml-ci

* ggml : fix do_yield logic

ggml-ci

* ggml : simplify do_yield logic

ggml-ci

2 years agoexamples : add few-shot translation example (#4783)
Georgi Gerganov [Fri, 5 Jan 2024 13:11:10 +0000 (15:11 +0200)]
examples : add few-shot translation example (#4783)

2 years agofinetune : remove unused includes (#4756)
Daniel Bevenius [Thu, 4 Jan 2024 19:45:37 +0000 (20:45 +0100)]
finetune : remove unused includes (#4756)

This commit removes unused includes from finetune.cpp.

Signed-off-by: Daniel Bevenius <redacted>
2 years agoserver : send token probs for "stream == false" (#4714)
Georgi Gerganov [Thu, 4 Jan 2024 17:56:33 +0000 (19:56 +0200)]
server : send token probs for "stream == false" (#4714)

2 years agoPrint backend name on test-backend-ops failure (#4751)
Johannes Gäßler [Thu, 4 Jan 2024 08:43:23 +0000 (09:43 +0100)]
Print backend name on test-backend-ops failure (#4751)

2 years agollama.swiftui : support loading custom model from file picker (#4767)
singularity [Thu, 4 Jan 2024 08:22:38 +0000 (16:22 +0800)]
llama.swiftui : support loading custom model from file picker (#4767)

* swiftui: support load model from file picker

* swiftui: remove trailing whitespace

2 years agoserver : fix options in README.md (#4765)
Michael Coppola [Thu, 4 Jan 2024 08:17:09 +0000 (03:17 -0500)]
server : fix options in README.md (#4765)

* fix examples/server/README.md

* minor : fix whitespace

---------

Co-authored-by: Georgi Gerganov <redacted>
2 years agoggml : include stdlib.h before intrin.h (#4736)
Georgi Gerganov [Thu, 4 Jan 2024 08:12:26 +0000 (10:12 +0200)]
ggml : include stdlib.h before intrin.h (#4736)

2 years agollama.swiftui : fix build of ggml.metallib (#4754)
singularity [Thu, 4 Jan 2024 07:58:16 +0000 (15:58 +0800)]
llama.swiftui : fix build of ggml.metallib (#4754)

* metal: fix metal backend init failure in swiftui

* metal: build ggml.metallib instead of copy src

* llama.swift : remove debug flags from metallib build

---------

Co-authored-by: Georgi Gerganov <redacted>