You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
llama.cpp/examples
comex f963b63afa Rewrite loading code to try to satisfy everyone:
- Support all three formats (ggml, ggmf, ggjt).  (However, I didn't
  include the hack needed to support GPT4All files without conversion.
  Those can still be used after converting them with convert.py from my
  other PR.)

- Support both mmap and read (mmap is used by default, but can be
  disabled with `--no-mmap`, and is automatically disabled for pre-ggjt
  files or on platforms where mmap is not supported).

- Support multi-file models like before, but automatically determine the
  number of parts rather than requiring `--n_parts`.

- Improve validation and error checking.

- Stop using the per-file type field (f16) entirely in favor of just
  relying on the per-tensor type/size fields.  This has no immediate
  benefit, but makes it easier to experiment with different formats, and
  should make it easier to support the new GPTQ-for-LLaMa models in the
  future (I have some work in progress on that front).

- Support VirtualLock on Windows (using the same `--mlock` option as on
  Unix).

    - Indicate loading progress when using mmap + mlock.  (Which led me
      to the interesting observation that on my Linux machine, with a
      warm file cache, mlock actually takes some time, whereas mmap
      without mlock starts almost instantly...)

      - To help implement this, move mlock support from ggml to the
        loading code.

- madvise/PrefetchVirtualMemory support (based on #740)

- Switch from ifstream to the `fopen` family of functions to avoid
  unnecessary copying and, when mmap is enabled, allow reusing the same
  file descriptor for both metadata reads and mmap (whereas the existing
  implementation opens the file a second time to mmap).

- Quantization now produces a single-file output even with multi-file
  inputs (not really a feature as much as 'it was easier this way').

Implementation notes:

I tried to factor the code into more discrete pieces than before.

Regarding code style: I tried to follow the code style, but I'm naughty
and used a few advanced C++ features repeatedly:

- Destructors to make it easier to ensure everything gets cleaned up.

- Exceptions.  I don't even usually use exceptions when writing C++, and
  I can remove them if desired... but here they make the loading code
  much more succinct while still properly handling a variety of errors,
  ranging from API calls failing to integer overflow and allocation
  failure.  The exceptions are converted to error codes at the
  API boundary.)

Co-authored-by: Pavol Rusnak <pavol@rusnak.io> (for the bit I copied from #740)
1 year ago
..
embedding Rewrite loading code to try to satisfy everyone: 1 year ago
main Rewrite loading code to try to satisfy everyone: 1 year ago
perplexity Rewrite loading code to try to satisfy everyone: 1 year ago
quantize Fix ggml_init_params in quantize 1 year ago
quantize-stats Rewrite loading code to try to satisfy everyone: 1 year ago
CMakeLists.txt Add quantize-stats command for testing quantization (#728) 1 year ago
Miku.sh miku.sh : add executable bit (#780) 1 year ago
alpaca.sh Move chat scripts into "./examples" 1 year ago
chat-13B.bat Create chat-13B.bat (#592) 1 year ago
chat-13B.sh Move chat scripts into "./examples" 1 year ago
chat.sh If n_predict == -1, generate forever 1 year ago
common.cpp Rewrite loading code to try to satisfy everyone: 1 year ago
common.h Rewrite loading code to try to satisfy everyone: 1 year ago
gpt4all.sh examples : add gpt4all script (#658) 1 year ago
reason-act.sh add example of re-act pattern (#583) 1 year ago