]> git.djapps.eu Git - pkg/ggml/sources/llama.cpp/log
pkg/ggml/sources/llama.cpp
13 months agoggml : fix loongson compile warnings (#7537)
Georgi Gerganov [Fri, 31 May 2024 11:17:10 +0000 (14:17 +0300)]
ggml : fix loongson compile warnings (#7537)

* ggml : fix loongson compile warnings

ggml-ci

* Fix loongarch quantize test fail.

Fix unexpected error introduced during rebase code.

* tests : disable json test due to lack of python on the CI node

ggml-ci

---------

Co-authored-by: junchao-loongson <redacted>
13 months agoSomehow '**' got lost (#7663)
Galunid [Fri, 31 May 2024 08:24:41 +0000 (10:24 +0200)]
Somehow '**' got lost (#7663)

13 months agoAdd convert.py removal to hot topics (#7662)
Galunid [Fri, 31 May 2024 08:09:20 +0000 (10:09 +0200)]
Add convert.py removal to hot topics (#7662)

13 months ago[no ci] docs: add aikit to readme (#7650)
Sertaç Özercan [Thu, 30 May 2024 23:57:16 +0000 (16:57 -0700)]
[no ci] docs: add aikit to readme (#7650)

Signed-off-by: Sertac Ozercan <redacted>
13 months agoFixed painfully slow single process builds. (#7326)
JohnnyB [Thu, 30 May 2024 20:32:38 +0000 (21:32 +0100)]
Fixed painfully slow single process builds. (#7326)

* Fixed painfully slow single process builds.

* Added nproc for systems that don't default to nproc

13 months agollama : cache llama_token_to_piece (#7587)
Georgi Gerganov [Thu, 30 May 2024 16:01:41 +0000 (19:01 +0300)]
llama : cache llama_token_to_piece (#7587)

* llama : cache llama_token_to_piece

ggml-ci

* llama : use vectors and avoid has_cache

ggml-ci

* llama : throw on unknown tokenizer types

ggml-ci

* llama : print a log of the total cache size

13 months agoFix conan badge display [no ci] (#7645)
Martin Delille [Thu, 30 May 2024 15:07:39 +0000 (17:07 +0200)]
Fix conan badge display [no ci] (#7645)

13 months agoAdd brew installation instruction to README [no ci] (#7616)
Manuel [Thu, 30 May 2024 14:58:15 +0000 (16:58 +0200)]
Add brew installation instruction to README [no ci] (#7616)

13 months agoreadme : add Conan badge (#7638)
Martin Delille [Thu, 30 May 2024 12:52:50 +0000 (14:52 +0200)]
readme : add Conan badge (#7638)

13 months agogithub: add contact links to issues and convert question into research [no ci] (...
Brian [Thu, 30 May 2024 11:55:36 +0000 (21:55 +1000)]
github: add contact links to issues and convert question into research [no ci] (#7612)

13 months agoMove convert.py to examples/convert-legacy-llama.py (#7430)
Galunid [Thu, 30 May 2024 11:40:00 +0000 (13:40 +0200)]
Move convert.py to examples/convert-legacy-llama.py (#7430)

* Move convert.py to examples/convert-no-torch.py

* Fix CI, scripts, readme files

* convert-no-torch -> convert-legacy-llama

* Move vocab thing to vocab.py

* Fix convert-no-torch -> convert-legacy-llama

* Fix lost convert.py in ci/run.sh

* Fix imports

* Fix gguf not imported correctly

* Fix flake8 complaints

* Fix check-requirements.sh

* Get rid of ADDED_TOKENS_FILE, FAST_TOKENIZER_FILE

* Review fixes

13 months agofaster avx512 exp implementation (#7551)
Chris Elrod [Thu, 30 May 2024 11:32:55 +0000 (07:32 -0400)]
faster avx512 exp implementation (#7551)

* faster avx512 exp implementation

* x->r

* improve accuracy, handle special cases

* remove `e`

13 months agoggml : fix loongarch build (O2 issue) (#7636)
junchao-loongson [Thu, 30 May 2024 09:30:10 +0000 (17:30 +0800)]
ggml : fix loongarch build (O2 issue) (#7636)

13 months agoREADME: explain parallel build [no ci] (#7618)
Johannes Gäßler [Thu, 30 May 2024 07:52:39 +0000 (09:52 +0200)]
README: explain parallel build [no ci] (#7618)

13 months ago[SYCL] fix intel docker (#7630)
Meng, Hengyu [Thu, 30 May 2024 06:19:08 +0000 (14:19 +0800)]
[SYCL] fix intel docker (#7630)

* Update main-intel.Dockerfile

* workaround for https://github.com/intel/oneapi-containers/issues/70

* reset intel docker in CI

* add missed in server

13 months agogguf-py : Add tokenizer.ggml.pre to gguf-new-metadata.py (#7627)
Galunid [Thu, 30 May 2024 00:10:40 +0000 (02:10 +0200)]
gguf-py : Add tokenizer.ggml.pre to gguf-new-metadata.py (#7627)

13 months agometal : remove invalid asserts (#7617)
Georgi Gerganov [Wed, 29 May 2024 19:20:40 +0000 (22:20 +0300)]
metal : remove invalid asserts (#7617)

13 months agometal : add missing asserts (#7617)
Georgi Gerganov [Wed, 29 May 2024 17:45:25 +0000 (20:45 +0300)]
metal : add missing asserts (#7617)

13 months agoggml : fix YARN + add tests + add asserts (#7617)
Georgi Gerganov [Wed, 29 May 2024 17:17:31 +0000 (20:17 +0300)]
ggml : fix YARN + add tests + add asserts (#7617)

* tests : add rope tests

ggml-ci

* ggml : fixes (hopefully)

ggml-ci

* tests : add non-cont tests

ggml-ci

* cuda : add asserts for rope/norm + fix DS2

ggml-ci

* ggml : assert contiguousness

* tests : reduce RoPE tests

ggml-ci

13 months agocuda : non-cont concat support (#7610)
Georgi Gerganov [Wed, 29 May 2024 12:38:26 +0000 (15:38 +0300)]
cuda : non-cont concat support (#7610)

* tests : add non-cont concat tests

* cuda : non-cont concat support

ggml-ci

13 months agollama-bench : add support for the RPC backend (#7435)
Radoslav Gerganov [Wed, 29 May 2024 11:45:44 +0000 (14:45 +0300)]
llama-bench : add support for the RPC backend (#7435)

13 months agoggml : use atomic_flag for critical section (#7598)
slaren [Wed, 29 May 2024 11:36:39 +0000 (13:36 +0200)]
ggml : use atomic_flag for critical section (#7598)

* ggml : use atomic_flag for critical section

* add windows shims

13 months agoscripts : remove mpi remnants
Georgi Gerganov [Wed, 29 May 2024 11:31:18 +0000 (14:31 +0300)]
scripts : remove mpi remnants

13 months agosync : ggml
Georgi Gerganov [Wed, 29 May 2024 11:29:52 +0000 (14:29 +0300)]
sync : ggml

13 months agoggml : restore ggml_rope_xpos_inplace (ggml/0)
Georgi Gerganov [Sun, 26 May 2024 15:35:23 +0000 (18:35 +0300)]
ggml : restore ggml_rope_xpos_inplace (ggml/0)

ggml-ci

13 months agoAdd Arc A750 and Arch linux to readme-sycl.md as verified GPU model and Linux distro...
Akarshan Biswas [Wed, 29 May 2024 06:53:47 +0000 (12:23 +0530)]
Add Arc A750 and Arch linux to readme-sycl.md as verified GPU model and Linux distro (#7605)

13 months agoggml : fix typo in ggml.c (#7603)
zhouwg [Wed, 29 May 2024 02:09:31 +0000 (10:09 +0800)]
ggml : fix typo in ggml.c (#7603)

13 months ago[SYCL] Align GEMM dispatch (#7566)
Meng, Hengyu [Tue, 28 May 2024 23:00:24 +0000 (07:00 +0800)]
[SYCL] Align GEMM dispatch (#7566)

* align GEMM dispatch

13 months agoTokenizer WPM fixes (#7500)
jaime-m-p [Tue, 28 May 2024 19:46:34 +0000 (21:46 +0200)]
Tokenizer WPM fixes (#7500)

* Update random test: add_bos_token.
* Update random test: add WPM models for testing.
* Build vocab.special_tokens_cache using vocab token types.
* Fix and improve WPM preprocessing.
  - Fix unicode edge case combinations.
  - Split by whitspace in the same pass.
* Discard all tokens when no matching found.

13 months agosycl : fix assert (#7563)
Georgi Gerganov [Tue, 28 May 2024 19:22:50 +0000 (22:22 +0300)]
sycl : fix assert (#7563)

13 months agollama : support small Granite models (#7481)
Giuseppe Scrivano [Tue, 28 May 2024 18:49:49 +0000 (20:49 +0200)]
llama : support small Granite models (#7481)

* Add optional MLP bias for Granite models

Add optional MLP bias for ARCH_LLAMA to support Granite models.
Partially addresses ggerganov/llama.cpp/issues/7116
Still needs some more changes to properly support Granite.

* llama: honor add_space_prefix from the model configuration

propagate the add_space_prefix configuration from the HF model
configuration to the gguf file and honor it with the gpt2 tokenizer.

Signed-off-by: Giuseppe Scrivano <redacted>
* llama: add support for small granite models

it works only for the small models 3b and 8b.

The convert-hf-to-gguf.py script uses the vocabulary size of the
granite models to detect granite and set the correct configuration.

Signed-off-by: Giuseppe Scrivano <redacted>
---------

Signed-off-by: Giuseppe Scrivano <redacted>
Co-authored-by: Steffen Roecker <redacted>
13 months agovulkan: properly initialize vulkan devices for LLAMA_SPLIT_MODE_NONE (#7552)
k.h.lai [Tue, 28 May 2024 17:25:08 +0000 (01:25 +0800)]
vulkan: properly initialize vulkan devices for LLAMA_SPLIT_MODE_NONE (#7552)

13 months agorpc : resource management rework (#7562)
Radoslav Gerganov [Tue, 28 May 2024 15:13:36 +0000 (18:13 +0300)]
rpc : resource management rework (#7562)

* rpc : resource management rework

* address review comments

13 months agoAdd support for DeepseekV2ForCausalLM (#7519)
fairydreaming [Tue, 28 May 2024 15:07:05 +0000 (17:07 +0200)]
Add support for DeepseekV2ForCausalLM (#7519)

* common : increase max number of experts to 160

* common : add tensors ATTN_Q_A, ATTN_Q_A_NORM, ATTN_Q_B, ATTN_KV_A_MQA, ATTN_KV_A_NORM, ATTN_KV_B needed by DeepSeek-V2 MLA (multi-head latent attention) architecture

* common : add model header parameters: leading_dense_block_count, expert_feed_forward_length, expert_shared_count, expert_weights_scale, attention.q_lora_rank, attention.kv_lora_rank, rope.scaling.yarn_log_multiplier

* convert-hf : add model conversion support for DeepseekV2ForCausalLM

* llama : add model types for DeepSeek-V2 and DeepSeek-V2-Lite models

* llama : add two new llm_build_moe_ffn() arguments: scale_w (whether to scale weights of selected MoE experts) and w_scale (numerical value of the scaling factor)

* llama : add inference support for LLM_ARCH_DEEPSEEK2

---------

Co-authored-by: Stanisław Szymczyk <redacted>
13 months agotests : fix test-tokenizer-0.sh
Georgi Gerganov [Tue, 28 May 2024 12:04:09 +0000 (15:04 +0300)]
tests : fix test-tokenizer-0.sh

13 months agollama : handle unknown utf8 bytes (#7588)
Georgi Gerganov [Tue, 28 May 2024 10:55:35 +0000 (13:55 +0300)]
llama : handle unknown utf8 bytes (#7588)

13 months agogithub: add refactor to issue template (#7561)
Brian [Tue, 28 May 2024 10:27:27 +0000 (20:27 +1000)]
github: add refactor to issue template (#7561)

* github: add refactor issue template [no ci]

* Update 07-refactor.yml

13 months ago[SYCL]fix ggml_sycl_mul_mat_id() to match the change of api (#7436)
Neo Zhang [Tue, 28 May 2024 09:53:37 +0000 (17:53 +0800)]
[SYCL]fix ggml_sycl_mul_mat_id() to match the change of api (#7436)

* fix mul_mat_id to match the change of api

* rm comment

* rm unused or duplicated code, rename as review comment

13 months agoggml : generalize GGML_OP_CONCAT (#7563)
Georgi Gerganov [Tue, 28 May 2024 08:04:19 +0000 (11:04 +0300)]
ggml : generalize GGML_OP_CONCAT (#7563)

* ggml : generalize GGML_OP_CONCAT (WIP)

ggml-ci

* tests : add dim != 2 tests

* metal : generalize concat kernel

* tests : naming

* cuda : generalize concat kernel

ggml-ci

* sycl : add warning and assert

* ggml : fix op params handling

* metal : bugfix kernel

ggml-ci

* ggml : reimplement CPU and Metal

* cuda : add asserts

ggml-ci

* ggml : fix ptrs

ggml-ci

13 months agoserver: do not remove whitespace at the start of a completion chunk (#7524)
mgroeber9110 [Tue, 28 May 2024 04:55:51 +0000 (06:55 +0200)]
server: do not remove whitespace at the start of a completion chunk (#7524)

13 months agoMarkdownish code block fix (#7571)
Nathan Epstein [Tue, 28 May 2024 04:41:14 +0000 (00:41 -0400)]
Markdownish code block fix (#7571)

* markdownish codeblock fix

* updating regexes

13 months agollava : update clip.h (#7580)
Ikko Eltociear Ashimine [Tue, 28 May 2024 02:48:16 +0000 (11:48 +0900)]
llava : update clip.h (#7580)

overriden -> overridden

13 months agoupdate HIP_UMA #7399 (#7414)
Djip007 [Mon, 27 May 2024 23:40:47 +0000 (01:40 +0200)]
update HIP_UMA #7399 (#7414)

* update HIP_UMA #7399

add use of hipMemAdviseSetCoarseGrain when LLAMA_HIP_UMA is enable.
- get x2 on prompte eval and x1.5 on token gen with rocm6.0 on ryzen 7940HX iGPU (780M/gfx1103)

* simplify code, more consistent style

---------

Co-authored-by: slaren <redacted>
13 months agoadding in x64 targets to cmake presets (#7574)
kunnis [Mon, 27 May 2024 23:40:12 +0000 (18:40 -0500)]
adding in x64 targets to cmake presets (#7574)

13 months agomake: add --device-debug to NVCC debug flags (#7542)
Johannes Gäßler [Mon, 27 May 2024 17:34:40 +0000 (19:34 +0200)]
make: add --device-debug to NVCC debug flags (#7542)

13 months agoAllow multiple copy function pointers for CUDA graph kernel param updates (#7565)
agray3 [Mon, 27 May 2024 17:33:42 +0000 (18:33 +0100)]
Allow multiple copy function pointers for CUDA graph kernel param updates (#7565)

CUDA graphs require parameter updates to kernels associated with
GGML_OP_CPY nodes. Previously the implementation only checked for a
single CUDA kernel in such nodes, but this caused a bug in cases where
2 such kernels exist. This fixes the issue by using a vector to allow
multiple function pointers to be stored and checked against.

Fixes #7942

13 months agoFix q_xxs using mul_mat_q (#7459)
AidanBeltonS [Mon, 27 May 2024 16:34:51 +0000 (17:34 +0100)]
Fix q_xxs using mul_mat_q (#7459)

13 months agoAdd freq factors (#7495)
AidanBeltonS [Mon, 27 May 2024 12:34:09 +0000 (13:34 +0100)]
Add freq factors (#7495)

13 months agometal : add GGML_OP_REPEAT kernels (#7557)
Georgi Gerganov [Mon, 27 May 2024 09:10:19 +0000 (12:10 +0300)]
metal : add GGML_OP_REPEAT kernels (#7557)

ggml-ci

13 months agometal : disable FA kernel for HS=256 (#7556)
Georgi Gerganov [Mon, 27 May 2024 07:38:39 +0000 (10:38 +0300)]
metal : disable FA kernel for HS=256 (#7556)

ggml-ci

13 months agollama : add comments about experimental flags (#7544)
Georgi Gerganov [Mon, 27 May 2024 06:24:13 +0000 (09:24 +0300)]
llama : add comments about experimental flags (#7544)

13 months agogithub: add self sorted issue ticket forms (#7543)
Brian [Mon, 27 May 2024 00:54:30 +0000 (10:54 +1000)]
github: add self sorted issue ticket forms (#7543)

* github: add self sorted issue ticket forms [no ci]

* github: consolidate BSD in bug issue ticket

* github: remove contact from bug ticket template [no ci]

* github: remove bios from os dropdown in bug report [no ci]

13 months agoflake.lock: Update (#7540)
Georgi Gerganov [Sun, 26 May 2024 15:54:56 +0000 (18:54 +0300)]
flake.lock: Update (#7540)

Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/4a6b83b05df1a8bd7d99095ec4b4d271f2956b64?narHash=sha256-%2BNpbZRCRisUHKQJZF3CT%2Bxn14ZZQO%2BKjxIIanH3Pvn4%3D' (2024-05-17)
  → 'github:NixOS/nixpkgs/bfb7a882678e518398ce9a31a881538679f6f092?narHash=sha256-4zSIhSRRIoEBwjbPm3YiGtbd8HDWzFxJjw5DYSDy1n8%3D' (2024-05-24)

Co-authored-by: github-actions[bot] <redacted>
13 months agomain: replace --no-special with --special (#7534)
Brian [Sun, 26 May 2024 14:10:17 +0000 (00:10 +1000)]
main: replace --no-special with --special (#7534)

This also flips the default behavior of the output to not include control token by default.

13 months agoFix aya-23 conversion scripts (#7539)
Galunid [Sun, 26 May 2024 14:02:34 +0000 (16:02 +0200)]
Fix aya-23 conversion scripts (#7539)

13 months agollama : add Smaug 70B support (#7402)
Bartowski [Sun, 26 May 2024 12:28:35 +0000 (08:28 -0400)]
llama : add Smaug 70B support (#7402)

13 months agoReadme: add akx/ggify to tools (#1484)
Aarni Koskela [Sun, 26 May 2024 12:09:42 +0000 (15:09 +0300)]
Readme: add akx/ggify to tools (#1484)

13 months agoSimpleChat Completion Mode flexibility and cleanup, Settings gMe, Optional sliding...
HanishKVC [Sun, 26 May 2024 00:56:34 +0000 (06:26 +0530)]
SimpleChat Completion Mode flexibility and cleanup, Settings gMe, Optional sliding window (#7480)

* SimpleChat: A placeholder system prompt, Use usage msg in code

Just have a alert msg wrt needing javascript enabled in html. And
have usage message from js file. Update the usage message a bit.
So also enable switch session wrt setup_ui call.

Add a possible system prompt as a placeholder for the system-input.

* SimpleChat:CompletionMode: Allow control of Role: prefix

* SimpleChat:Completion: Avoid Role: prefix; Newline only in between

In completion mode

* avoid inserting Role: prefix before each role's message

* avoid inserting newline at the begin and end of the prompt
  message. However if there are multiple role messages, then
  insert newline when going from one role's message to the
  next role's message.

* SimpleChat:CompletionMode: Update readme/usage, trim textarea newline

Readme update wrt completion mode behavior.

Usage help updated wrt completion mode behavior.

When changing from input to textarea elment wrt user input, the last
newline at the end of the user input wrt textarea, was forgotten to be
filtered, this is fixed now. However if user wants to have a explicit
newline they can using shift+enter to insert a newline, that wont be
removed. The extra newline removal logic uses substring and keyup to
keep things simple and avoid some previously noted bugs wrt other
events in the key path as well as IME composition etal.

* SimpleChat:SC: Ensure proper clearing/reseting

previous logic would have cleared/reset the xchat, without doing
the same wrt iLastSys, thus leading to it pointing to a now non
existent role-content entry.

So if a user set a system prompt and used completion mode, it would
have done the half stupid clear, after the model response was got.
Inturn when user tries to send a new completion query, it would
inturn lead to handle_user_submit trying to add/update system prompt
if any, which will fail, bcas iLastSys will be still pointing to a
non existant entry.

This is fixed now, by having a proper clear helper wrt SC class.

* SimpleChat: Update usage note and readme a bit

* SimpleChat:Completion: clear any prev chat history at begining

Previously any chat history including model response to a completion
query would have got cleared, after showing the same to the user,
at the end of handle_user_submit, rather than at the begining.

This gave the flexibility that user could switch from chat mode
to completion mode and have the chat history till then sent to
the ai model, as part of the completion query. However this flow
also had the issue that, if user switches between different chat
sessions, after getting a completion response, they can no longer
see the completion query and its response that they had just got.

The new flow changes the clearing of chat history wrt completion
mode to the begining of handle_user_submit, so that user doesnt
lose the last completion mode query and response, till a new
completion mode query is sent to the model, even if they were to
switch between the chat sessions. At the same time the loss of
flexibility wrt converting previous chat history into being part
of the completion query implicitly doesnt matter, because now
the end user can enter multiline queries.

* SimpleChat:Try read json early, if available

For later

the server flow doesnt seem to be sending back data early, atleast
for the request (inc options) that is currently sent.

if able to read json data early on in future, as and when ai model
is generating data, then this helper needs to indirectly update
the chat div with the recieved data, without waiting for the
overall data to be available.

* SimpleChat: Rename the half asleep mis-spelled global var

* SimpleChat: Common chat request options from a global object

* SimpleChat: Update title, usage and readme a bit

Keep the title simple so that print file name doesnt have chars
that need to be removed.

Update readme wrt some of the new helpers and options.

Change Usage list to a list of lists, add few items and style it
to reduce the margin wrt lists.

* SimpleChat:ChatRequestOptions: max_tokens

As some times based on the query from the user, the ai model may get
into a run away kind of generation with repeatations etal, so adding
max_tokens to try and limit this run away behaviour, if possible.

* SimpleChat: Reduce max_tokens to be small but still sufficient

* SimpleChat: Consolidate global vars into gMe, Display to user

This allows the end user to see the settings used by the logic,
as well as allows users to change/update the settings if they
want to by using devel-tools/console

* SimpleChat:SlidingWindow: iRecentUserMsgCnt to limit context load

This is disabled by default. However if enabled, then in addition
to latest system message, only the last N user messages, after the
latest system message and its reponses from the ai model will be sent
to the ai-model, when querying for a new response.

This specified N also includes the latest user query.

* SimpleChat: placeholder based usage hint for user-in textarea

* SimpleChat: Try make user experience better, if possible

Reduce chat history context sent to the server/ai-model to be
just the system-prompt, prev-user-request-and-ai-response and
cur-user-request, instead of the previous full chat history.
This way if there is any response with garbage/repeatation, it
doesnt mess with things beyond the next question, in some ways.

Increase max_tokens to 1024, so that a relatively large previous
reponse doesnt eat up the space available wrt next query-response.
However dont forget that the server when started should also
be started with a model context size of 1k or more, to be on
safe side.

Add frequency and presence penalty fields set to 1.2 to the set
of fields sent to server along with the user query. So that
the model is partly set to try avoid repeating text in its
response.

* SimpleChat:Add n_predict (equiv max_tokens) for llamacpp server

The /completions endpoint of examples/server doesnt take max_tokens,
instead it takes the internal n_predict, for now add the same on
the client side, maybe later add max_tokens to /completions endpoint
handling.

* SimpleChat: Note about trying to keep things simple yet flexible

13 months agotrain : change default FA argument (#7528)
Georgi Gerganov [Sat, 25 May 2024 12:21:30 +0000 (15:21 +0300)]
train : change default FA argument (#7528)

13 months agolabeler: added Apple Metal detector (+Kompute) (#7529)
Brian [Sat, 25 May 2024 09:30:42 +0000 (19:30 +1000)]
labeler: added Apple Metal detector (+Kompute) (#7529)

* labeler: added Apple Metal detector [no ci]

* labeler: add Kompute to detector [no ci]

13 months agomain : don't print special tokens with --grammar (#6923)
Justine Tunney [Sat, 25 May 2024 09:04:03 +0000 (05:04 -0400)]
main : don't print special tokens with --grammar (#6923)

* main : don't print special tokens with --grammar

The CLI interface was recently changed to print special control tokens
like the </s> stop message one. This token shouldn't be printed if the
grammar flag was passed, unless the grammar specifies it, because that
breaks shell-scriptability.

* main: use seperate stream for control characters

* main: use dprintf and add --ctrl-token-no-out and --ctrl-token-fd-out

* main: dprintf isn't part of the IEEE POSIX standard. Just use write().

* main: remove --ctrl-token-fd-out in favor for fcntl() based detection

* common.cpp: accidentally removed --interactive-first

* main: only merge stdout and control token if not in conversation or grammar mode

* main: rejig control token descriptor handling

* main: must check pipe status on very top of program

* main: renamed --no-special from  --ctrl-token-no-out and other refactoring

* main: refactor ctrl_token_no_out --> no_special

* llama: rename llama_token_is_control_token() to llama_token_is_control()

* main: remove special token file descriptor feature (#5)

---------

Co-authored-by: Brian <redacted>
13 months agoggml: aarch64: SVE kernels for q8_0_q8_0, q4_0_q8_0 vector dot (#7433)
Masaya, Kato [Sat, 25 May 2024 08:42:31 +0000 (17:42 +0900)]
ggml: aarch64: SVE kernels for q8_0_q8_0, q4_0_q8_0 vector dot (#7433)

* Add SVE support for q4_0_q8_0 q8_0_q8_0

* remove ifdef

13 months agoandroid : module (#7502)
Elton Kola [Sat, 25 May 2024 08:11:33 +0000 (04:11 -0400)]
android : module (#7502)

* move ndk code to a new library

* add gradle file

13 months agofix missing slash in `fs_get_cache_directory()` (#7503)
Xuan Son Nguyen [Sat, 25 May 2024 03:30:59 +0000 (05:30 +0200)]
fix missing slash in `fs_get_cache_directory()` (#7503)

* fix missing slash in fs_get_cache_directory()

* use LOCALAPPDATA for fs_get_cache_directory()

* better code style

13 months agoMake tokenize CLI tool have nicer command line arguments. (#6188)
Mikko Juola [Sat, 25 May 2024 01:14:42 +0000 (18:14 -0700)]
Make tokenize CLI tool have nicer command line arguments. (#6188)

* Make tokenizer.cpp CLI tool nicer.

Before this commit, tokenize was a simple CLI tool like this:

  tokenize MODEL_FILENAME PROMPT [--ids]

This simple tool loads the model, takes the prompt, and shows the tokens
llama.cpp is interpreting.

This changeset makes the tokenize more sophisticated, and more useful
for debugging and troubleshooting:

  tokenize [-m, --model MODEL_FILENAME]
           [--ids]
           [--stdin]
           [--prompt]
           [-f, --file]
           [--no-bos]
           [--log-disable]

It also behaves nicer on Windows now, interpreting and rendering Unicode
from command line arguments and pipes no matter what code page the user
has set on their terminal.

* style fix: strlen(str) == 0 --> *str == 0

* Simplify tokenize.cpp; by getting rid of handling positional style arguments.

It must now be invoked with long --model, --prompt etc. arguments only.
Shortens the code.

* tokenize.cpp: iostream header no longer required

---------

Co-authored-by: Georgi Gerganov <redacted>
Co-authored-by: brian khuu <redacted>
13 months agogguf-py : fix and simplify quantized shape round-trip (#7483)
compilade [Sat, 25 May 2024 01:11:48 +0000 (21:11 -0400)]
gguf-py : fix and simplify quantized shape round-trip (#7483)

* gguf-py : fix and simplify quantized shape round-trip

* gguf-py : remove unused import

13 months agoflake.lock: Update (#7232)
Georgi Gerganov [Fri, 24 May 2024 15:59:06 +0000 (18:59 +0300)]
flake.lock: Update (#7232)

Flake lock file updates:

• Updated input 'flake-parts':
    'github:hercules-ci/flake-parts/e5d10a24b66c3ea8f150e47dfdb0416ab7c3390e?narHash=sha256-yzcRNDoyVP7%2BSCNX0wmuDju1NUCt8Dz9%2BlyUXEI0dbI%3D' (2024-05-02)
  → 'github:hercules-ci/flake-parts/8dc45382d5206bd292f9c2768b8058a8fd8311d9?narHash=sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78%3D' (2024-05-16)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/63c3a29ca82437c87573e4c6919b09a24ea61b0f?narHash=sha256-4cPymbty65RvF1DWQfc%2BBc8B233A1BWxJnNULJKQ1EY%3D' (2024-05-02)
  → 'github:NixOS/nixpkgs/4a6b83b05df1a8bd7d99095ec4b4d271f2956b64?narHash=sha256-%2BNpbZRCRisUHKQJZF3CT%2Bxn14ZZQO%2BKjxIIanH3Pvn4%3D' (2024-05-17)

Co-authored-by: github-actions[bot] <redacted>
13 months agodocker.yml: disable light-intel and server-intel test (#7515)
Brian [Fri, 24 May 2024 13:47:56 +0000 (23:47 +1000)]
docker.yml: disable light-intel and server-intel test (#7515)

* docker.yml: disable light-intel test

* docker.yml: disable server-intel test

13 months agoAdd support for ArcticForCausalLM (#7020)
fairydreaming [Fri, 24 May 2024 12:31:13 +0000 (14:31 +0200)]
Add support for ArcticForCausalLM (#7020)

* common : increase max number of experts to 128

* common : add tensor LLM_TENSOR_FFN_NORM_EXPS for normalization before MoE that runs in parallel to attention + ffn

* gguf-py : add architecture-specific block mappings that override selected general block mappings

* convert-hf : add model conversion support for ArcticForCausalLM

* convert-hf : use added_tokens_decoder from tokenizer_config.json to redefine tokens from SentencePiece model (only for ArcticForCausalLM)

* llama : add inference support for LLM_ARCH_ARCTIC

---------

Co-authored-by: Stanisław Szymczyk <redacted>
13 months agoadd build shared lib in win release package (#7438)
Neo Zhang [Fri, 24 May 2024 02:06:56 +0000 (10:06 +0800)]
add build shared lib in win release package (#7438)

13 months agoreadme : remove trailing space (#7469)
Georgi Gerganov [Thu, 23 May 2024 14:43:18 +0000 (17:43 +0300)]
readme : remove trailing space (#7469)

13 months agoggml : silence UB sanitizer error during iq2_xxs quantization (#0)
Georgi Gerganov [Thu, 23 May 2024 14:17:43 +0000 (17:17 +0300)]
ggml : silence UB sanitizer error during iq2_xxs quantization (#0)

13 months agoFix phi3 chat template confusion with zephyr (#7449)
Tristan Druyen [Thu, 23 May 2024 14:15:15 +0000 (16:15 +0200)]
Fix phi3 chat template confusion with zephyr (#7449)

* Fix phi3 template matching vs zephyr

* Add regression test for new phi3 chat template

* Implement review suggestions

* Fix phi3 jinja test templates & match by <|end|>

* Apply suggestion

Co-authored-by: Xuan Son Nguyen <redacted>
* Add all phi3 template variants in tests

* Remove unneeded message trimming

Co-authored-by: Xuan Son Nguyen <redacted>
* Fix tests to not expect trimmed messages

---------

Co-authored-by: Xuan Son Nguyen <redacted>
13 months agoreadme : add Bunny in supported models [no ci] (#7469)
Raj Hammeer Singh Hada [Thu, 23 May 2024 12:30:13 +0000 (18:00 +0530)]
readme : add Bunny in supported models [no ci] (#7469)

13 months agollama : add getters for n_threads/n_threads_batch (#7464)
Daniel Bevenius [Thu, 23 May 2024 12:29:26 +0000 (14:29 +0200)]
llama : add getters for n_threads/n_threads_batch (#7464)

* llama : add getters for n_threads/n_threads_batch

This commit adds two new functions to the llama API. The functions
can be used to get the number of threads used for generating a single
token and the number of threads used for prompt and batch processing
(multiple tokens).

The motivation for this is that we want to be able to get the number of
threads that the a context is using. The main use case is for a
testing/verification that the number of threads is set correctly.

Signed-off-by: Daniel Bevenius <redacted>
* squash! llama : add getters for n_threads/n_threads_batch

Rename the getters to llama_n_threads and llama_n_threads_batch.

Signed-off-by: Daniel Bevenius <redacted>
---------

Signed-off-by: Daniel Bevenius <redacted>
13 months agoci : use Pythia models instead of OpenLlama (#7470)
Georgi Gerganov [Thu, 23 May 2024 12:28:14 +0000 (15:28 +0300)]
ci : use Pythia models instead of OpenLlama (#7470)

* ci : start using Pythia models over OpenLlama

ggml-ci

* ci : disable q2_k ppl tests

* ci : use convert-hf-to-gguf.py

* ci : update gg_get_model

* ci : fix convert outfile name

ggml-ci

* llama : gptneox arch use F32 attn prec

ggml-ci

13 months agoreadme : add GPT-NeoX + Pythia to the list of supported models (#7491)
Victor Nogueira [Thu, 23 May 2024 12:12:43 +0000 (15:12 +0300)]
readme : add GPT-NeoX + Pythia to the list of supported models (#7491)

13 months agoAdd missing inference support for GPTNeoXForCausalLM (Pythia and GPT-NeoX base models...
fairydreaming [Thu, 23 May 2024 09:49:53 +0000 (11:49 +0200)]
Add missing inference support for GPTNeoXForCausalLM (Pythia and GPT-NeoX base models) (#7461)

* convert-hf : add conversion of bloom-style qkv tensor to gpt-style qkv (code borrowed from BloomModel)

* llama : add inference support for LLM_ARCH_GPTNEOX

* llama : add model types for every Pythia variant and GPT-NeoX

Co-authored-by: Stanisław Szymczyk <redacted>
13 months agollama : rename n_ctx -> cache.size, less confusing (#0)
Georgi Gerganov [Thu, 23 May 2024 09:38:18 +0000 (12:38 +0300)]
llama : rename n_ctx -> cache.size, less confusing (#0)

13 months agolabeler.yml: add embedding label detector [no ci] (#7482)
Brian [Thu, 23 May 2024 07:40:43 +0000 (17:40 +1000)]
labeler.yml: add embedding label detector [no ci] (#7482)

13 months agoggml : remove ggml_flash_attn and ggml_flash_ff (#7463)
Georgi Gerganov [Thu, 23 May 2024 07:00:44 +0000 (10:00 +0300)]
ggml : remove ggml_flash_attn and ggml_flash_ff (#7463)

ggml-ci

13 months agoggml : drop support for QK_K=64 (#7473)
Georgi Gerganov [Thu, 23 May 2024 07:00:21 +0000 (10:00 +0300)]
ggml : drop support for QK_K=64 (#7473)

* ggml : drop support for QK_K=64

ggml-ci

* opencl : restore QK_K=256 define

13 months agoUpdate vulkan rope implementation to support frequency factors (#7475)
0cc4m [Thu, 23 May 2024 06:59:59 +0000 (08:59 +0200)]
Update vulkan rope implementation to support frequency factors (#7475)

13 months agomain : minor (#7462)
Georgi Gerganov [Thu, 23 May 2024 06:43:24 +0000 (09:43 +0300)]
main : minor (#7462)

13 months agoCUDA: fix FA out-of-bounds reads (#7479)
Johannes Gäßler [Wed, 22 May 2024 22:31:20 +0000 (00:31 +0200)]
CUDA: fix FA out-of-bounds reads (#7479)

13 months agoSimpleChat: a simple and dumb web front end for testing /chat/completions and /comple...
HanishKVC [Wed, 22 May 2024 17:53:21 +0000 (23:23 +0530)]
SimpleChat: a simple and dumb web front end for testing /chat/completions and /completions end points and try chat (#7350)

* SimpleChat: Add a skeletal html page

Contains a div placeholder for showing chat messages till now

a text-input for allowing user to enter next chat message/query
to the model.

a submit button to allow sending of the user entered message and
chat till now to the model.

* SimpleChat: A js skeleton with SimpleChat class

Allows maintaining an array of chat message.

Allows adding chat message (from any of the roles be it system,
user, assistant, ...)

Allows showing chat messages till now, in a given div element.

* SimpleChat: request_json, globals, startme

* SimpleChatJS: Roles Class, submitClick

Define Role class with static members corresponding to the roles.

Update startme to

* Get hold of the ui elements.

* Attach a click handler to submit button, which adds the user input
  to xchats array and shows the chat messages till now in chat div
  element.

Trap DOMContentLoaded to trigger startme

* SimpleChat:HTML: Bring in the js file

* SimpleChat: Rather value wrt input text element

* SimpleChat: Also add completions related prompt

* SimpleChat: Use common helper logic wrt json data

* SimpleChat: Move handling of submit request into its own func

* SimpleChat: Try handshake with llm over its web service endpoint

* SimpleChat:JS: Extract model response and show to user

* SimpleChat:JS: Messages/Prompt, indicate working to end user

* SimpleChat: Try keep input element in view

* SimpleChat: Diff user/assistant msgs, Make input wider

Also show a default message to user

Also add some metas

* SimpleChat: Move into its own sub directory to avoid confusion

* SimpleChat:sh: Add simple shell script to run python3 http.server

So one needs to run the llm server locally
then run this script and access it using a local browser

* SimpleChat:JS: Try trap enter key press wrt input text field

So user can either press submit button or press enter key

* SimpleChat: Allow user to select chat or completion mode

* SimpleChat: Dont submit if already submitted and waiting

Also make chat the default selection wrt mode

* SimpleChat:JS: Handle difference in response

Try read the assistance response from appropriate field in the
response got.

Also examples/server seems to return the response in a slightly
different field, so try account for that also.

* SimpleChat:JS: Force completion mode be single message by default

* SimpleChat: Add a simple readme file

* SimpleChat:HTML: Cleanup/structure UI a bit, Add input for system

* SimpleChat:Allow system prompt to be set, if provided before user

* SimpleChat: Ignore empty user input, without trimming

* SimpleChat:Alert user if they provide sysprompt late or change it

* SimpleChat: Move handling systemprompt into its own func

* SimpleChat:HTML: Add a style for system role message

* SimpleChat: Update the readme file

* SimpleChat:CSS: Move style info into its own css file

To keep it simple, clean and seperate so that things are not
unnecessarily cluttered.

* SimpleChat:CSS: Allow for chat div to be scrollable

* SimpleChat:JS: Try ensure the last entry in chat is visible

Needed because now only the chat div is scrollable and not the full
page.

In last commit the chat div size was fixed to 75% vertical height,
so the full page no longer scrolls, so the old bring user-input
element to view wont work, instead now the last element in the
chat div should be brought into view.

* SimpleChat:JS: bottom of element visible, Set focus to user input

As the generated text could be multiple lines and occupy more space
that the full scrollable div's vertical space, make the bottom of
the last element (which can be such a generated text) in the div
visible by scrolling.

Ensure that the user input box has focus

* SimpleChat: Update notes a bit. Try keep browser happy

Avoid browser quirk mode with DOCTYPE.

Help with accessibility a bit by specifying the language explicitly.

Specify the char encoding explicitly, inturn utf-8 is a safe bet,
even with intermixing of languages if reqd in future.

Add a cache-control http-equiv meta tag, which in all probability
will be ignored.

Defer js loading and execution, just for fun and future, not that
critical here as it stands now.

* SimpleChat:HTML:Group user input+btn together; Note about multichat

* SimpleChat:JS: Allow for changing system prompt anytime for future

* SimpleChat:Readme: Note about handle_systemprompt begin/anytime

* SimpleChat:HTML: Add viewport meta for better mobile friendliness

Without this the page content may look too small.

* SimpleChat:HtmlCss: Cleanup UI flow

set margin wrt vmin rather than vw or vh so portrait/landscape ok.

Use flex and flex-grow to put things on the same line as well as
distribute available space as needed. Given two main elements/line
so it remains simple.

In each line have one element with grows and one sits with a basic
comfortably fixed size.

* SimpleChat: textarea for multiline user chat, inturn shift+enter 4 enter

* SimpleChat: Make vertical layout better responsive (flex based)

Also needed to make things cleaner and properly usable whether
landscape or portrait, after changing to multiline textarea rather
than single line user input.

Avoid hardcoding the chat-till-now display area height, instead
make it a flex-growable within a flex column of ui elements within
a fixed vertical area.

* SimpleChat: Rename simplechat.html to index.html, update readme

Instead of providing a seperate shell script, update the readme wrt
how to run/use this web front end.

* SimpleChat: Screen fixed view and scrolling, Printing full

* SimpleChat:JS:CI: Avoid space at end of jsdoc param line

* SimpleChat:JS: MultiChat initial skeleton

Will help maintain multiple independent chats in future

* SimpleChat:JS: Move system prompt begin/anytime into SimpleChat

* SimpleChat:JS:Keep MultiChatUI simple for now

Worry about different chats with different servers for later.

* SimpleChat:JS: Move handle submit into MultiChat, build on same

Create an instance of MultiChatUI and inturn a instance of chat
session, which is what the UI will inturn work on.

* SimpleChat:JS: Move to dictionary of SimpleChat, instead of array

* SimpleChat: Move ui elements into MultiChatUI, Update el IDs

Move ui elements into MultiChatUI, so that current handleUserSubmit
doesnt need to take the element arguments. Also in future, when
user is allowed to switch between different chat sessions, the
UI can be updated as needed by using the elements in UI already
known to MultiChatUI instance.

Rename the element ids' so that they follow a common convention,
as well as one can identify what the element represents in a more
consistant manner.

* SimpleChat:MCUI:Show available chat sessions, try switch btw them

Previous commits brought in / consolidated existing logic into
MultiChatUI class.

Now start adding logic towards multichat support

* show buttons indicating available chat sessions

* on sessin button click, try switch to that session

* SimpleChat:MCUI: Store and use current chat session id

Also

allow to switch chat session optionally, wrt some of the related
helpers.

setup for two chat sessions by default.

* SimpleChat:MCUI: Delay enabling user-input to avoid race

Re-enable user-input, only after response to a user query has been
updated to the chat-div. This ensures that if user tries to switch
chat session, it wont be allowed till chat-request-response flow is
done.

* SimpleChat: Take care of system prompt

Helper to get the latest system prompt and inturn use same to
set the system prompt ui, when switching.

Ensure that system prompt is set if and when enter key is pressed.

* SimpleChat:GetSystemLatest, fix a oversight.

* SimpleChat:MCUI: Allow selected chat-session btn to be highlighted

Also have a general helper for setting class of children.

* SimpleChat:Cleanup corners

Show system prompt in chat space, when it is set by pressing enter,
as a feedback to user.

Alert user, if they try to switch chat session in the middle of
waiting for a response from the ai model.

* SimpleChat:MCUI: Ensure req-resp failure doesnt lock up things

* SimpleChat:MCUI: Support for new chat sessions

Also a general create button helper.

* SimpleChat:MCUI: CreateSessionBtn helper, use wrt NewChat

Also fix a oversight wrt using stale data wrt the list of chat
sessions.

* SimpleChat:MCUI: NewChat btn first before existing chat sessions

* SimpleChat:MCUI:CornerCases:Skip new chat, show only if current

Skip NewChat if user cancels or if one waiting for response from
the ai model.

Dont show a chat with newly got ai model response, if current chat
session has changed, some how. Chat session shouldnt be allowed to
change, if there is a pending response, but still as a additional
sanity check.

* SimpleChat: Update readme, title, show usage if no chat to show

* SimpleChat: Cleanup the log/dialog messages a bit

13 months agobuild : remove zig (#7471)
Georgi Gerganov [Wed, 22 May 2024 17:05:38 +0000 (20:05 +0300)]
build : remove zig (#7471)

13 months agocommon : normalize naming style (#7462)
Georgi Gerganov [Wed, 22 May 2024 17:04:20 +0000 (20:04 +0300)]
common : normalize naming style (#7462)

* common : normalize naming style

ggml-ci

* common : match declaration / definition order

* zig : try to fix build

13 months agoCUDA: fix FA out-of-bounds writes (#7465)
Johannes Gäßler [Wed, 22 May 2024 15:58:25 +0000 (17:58 +0200)]
CUDA: fix FA out-of-bounds writes (#7465)

13 months agophi3 : duplicate rope factors in each layer (#7447)
slaren [Wed, 22 May 2024 14:10:46 +0000 (16:10 +0200)]
phi3 : duplicate rope factors in each layer (#7447)

* phi3 : duplicate rope factors in each layer

phi3 : set phi-3 model type as 14B

model loader : simplify the process for duplicating model tensors

llama-bench : remove default pg test

* replace bool parameters in llama_model_loader with named flags

13 months agovulkan: add workaround for iterator boundary check to fix clang-cl debug build (...
k.h.lai [Wed, 22 May 2024 12:53:21 +0000 (20:53 +0800)]
vulkan: add workaround for iterator boundary check to fix clang-cl debug build (#7426)

13 months agollama : add missing model type names (#7445)
Justine Tunney [Wed, 22 May 2024 11:08:18 +0000 (07:08 -0400)]
llama : add missing model type names (#7445)

13 months agocuda : fix compile warning (#7454)
Georgi Gerganov [Wed, 22 May 2024 09:36:37 +0000 (12:36 +0300)]
cuda : fix compile warning (#7454)

13 months agoCUDA: remove incorrect precision check (#7454)
Johannes Gäßler [Wed, 22 May 2024 08:24:29 +0000 (10:24 +0200)]
CUDA: remove incorrect precision check (#7454)

13 months agocuda : fix rope + add tests (#7452)
Georgi Gerganov [Wed, 22 May 2024 08:01:35 +0000 (11:01 +0300)]
cuda : fix rope + add tests (#7452)

* cuda : fix rope pos data

ggml-ci

* ggml : drop mode & 1 == 1 support for ggml_rope

ggml-ci

* ggml : support freq_factors for f16 rope (CPU)

ggml-ci

* tests : add rope tests using frequency factors

ggml-ci

13 months agollama : add phi3 128K model support (#7225)
liuwei-git [Tue, 21 May 2024 20:28:32 +0000 (04:28 +0800)]
llama : add phi3 128K model support (#7225)

* add phi3 128k support in convert-hf-to-gguf

* add phi3 128k support in cuda

* address build warnings on llama.cpp

* adjust index value in cuda long rope freq factors

* add long rope support in ggml cpu backend

* make freq factors only depend on ctx size

* remove unused rope scaling type 'su' frin gguf converter

* fix flint warnings on convert-hf-to-gguf.py

* set to the short freq factor when context size is small than trained context size

* add one line of comments

* metal : support rope freq_factors

* ggml : update ggml_rope_ext API to support freq. factors

* backends : add dev messages to support rope freq. factors

* minor : style

* tests : update to use new rope API

* backends : fix pragma semicolons

* minor : cleanup

* llama : move rope factors from KV header to tensors

* llama : remove tmp assert

* cuda : fix compile warning

* convert : read/write n_head_kv

* llama : fix uninitialized tensors

---------

Co-authored-by: Georgi Gerganov <redacted>
13 months agometal : handle F16 inf values, fix FA partial offload (#7434)
Georgi Gerganov [Tue, 21 May 2024 20:03:42 +0000 (23:03 +0300)]
metal : handle F16 inf values, fix FA partial offload (#7434)

ggml-ci

13 months ago`grammars`: fix resampling logic regression (#7424)
Olivier Chafik [Tue, 21 May 2024 19:40:00 +0000 (20:40 +0100)]
`grammars`: fix resampling logic regression (#7424)

13 months agoCUDA: fix unused warning in mmq.cu (#7442)
Johannes Gäßler [Tue, 21 May 2024 17:27:12 +0000 (19:27 +0200)]
CUDA: fix unused warning in mmq.cu (#7442)

13 months agotests : test-tokenizer-0.sh print more info (#7402)
Georgi Gerganov [Tue, 21 May 2024 16:53:48 +0000 (19:53 +0300)]
tests : test-tokenizer-0.sh print more info (#7402)