Llama.cpp: различия между версиями
In.wiki (комментарии | вклад) |
In.wiki (комментарии | вклад) |
||
(не показано 12 промежуточных версий этого же участника) | |||
Строка 6: | Строка 6: | ||
| released = {{Start date and age|2023|3|10}}<ref name="githubrelease">{{cite web |title=Initial release · ggerganov/llama.cpp@26c0846 |url=https://github.com/ggerganov/llama.cpp/commit/26c084662903ddaca19bef982831bfb0856e8257 |website=GitHub |access-date=15 May 2024 |language=en}}</ref> | | released = {{Start date and age|2023|3|10}}<ref name="githubrelease">{{cite web |title=Initial release · ggerganov/llama.cpp@26c0846 |url=https://github.com/ggerganov/llama.cpp/commit/26c084662903ddaca19bef982831bfb0856e8257 |website=GitHub |access-date=15 May 2024 |language=en}}</ref> | ||
| programming language = [[C++]], [[C (Язык программирования)|C]] | | programming language = [[C++]], [[C (Язык программирования)|C]] | ||
− | | genre = [[Библиотека ( | + | | genre = [[Библиотека (программирование)|Библиотека]] для [[инференс]]а LLM. |
| license = [[MIT License]] | | license = [[MIT License]] | ||
<ref name="license">{{cite web |title=llama.cpp/LICENSE at master · ggerganov/llama.cpp |url=https://github.com/ggerganov/llama.cpp/blob/master/LICENSE |website=GitHub |language=en}}</ref> | <ref name="license">{{cite web |title=llama.cpp/LICENSE at master · ggerganov/llama.cpp |url=https://github.com/ggerganov/llama.cpp/blob/master/LICENSE |website=GitHub |language=en}}</ref> | ||
Строка 34: | Строка 34: | ||
== Архитектура == | == Архитектура == | ||
− | llama.cpp поддерживает несколько целевых аппаратных платформ, включая x86, ARM, [[CUDA]], [[Metal]], [[Vulkan]] (версии 1.2 или выше) и [[SYCL]]. | + | llama.cpp поддерживает несколько целевых аппаратных платформ, включая x86, ARM, [[CUDA]], [[Metal]], [[Vulkan]] (версии 1.2 или выше) и [[SYCL]]<ref name="Gerganov Slaren Nguyen Introduction to ggml">{{cite web |last1=Gerganov |first1=Georgi |last2=Nguyen |first2=Xuan Son |author3=Slaren |title=Introduction to ggml |url=https://huggingface.co/blog/introduction-to-ggml |website=Huggingface |date=August 13, 2024}}</ref><ref name="Kluska">{{cite journal |last1=Kluska |first1=Piotr |last2=Castell´o |first2=Adri´an |last3=Scheidegger |first3=Florian |last4=I. Malossi |first4=A. Cristiano |last5=Quintana-Ort´ı |first5=Enrique |title=QAttn: Efficient GPU Kernels for mixed-precision Vision Transformers |journal=Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR) Workshops |date=June 2024 |url=https://openaccess.thecvf.com/content/CVPR2024W/ELVM/papers/Kluska_QAttn_Efficient_GPU_Kernels_for_Mixed-precision_Vision_Transformers_CVPRW_2024_paper.pdf}}</ref><ref name="Run LLMs on Intel GPUs Using llama.cpp">{{cite magazine |last1=Jianyu |first1=Zhang |last2=Hengyu |first2=Meng |last3=Ying |first3=Hu |last4=Yu |first4=Luo |last5=Xiaoping |first5=Duan |last6=Corporation |first6=Majumder Abhilash Intel |title=Run LLMs on Intel GPUs Using llama.cpp|journal=The Parallel Universe |date=July 2024 |issue=57 |pages=34–37 |url=https://www.intel.com/content/www/us/en/developer/articles/technical/run-llms-on-gpus-using-llama-cpp.html |publisher=Intel |language=en}}</ref><ref name="Bolz">{{cite web |last1=Bolz |first1=Jeff |title=Machine Learning in Vulkan with Cooperative Matrix 2 |url=https://vulkan.org/user/pages/09.events/vulkanised-2025/T47-Jeff-Bolz-NVIDIA.pdf |publisher=The Khronos Group/Nvidia |location=Cambridge, UK |language=en |date=February 11–13, 2025}}</ref>. Эта поддержка реализована в тензорной библиотеке [[GGML (библиотека машинного обучения)|GGML]], которая используется кодом llama.cpp, специфичным для модели фронтенда<ref name="tomshardware">{{cite web |last1=Pounder |first1=Les |title=How To Create Your Own AI Chatbot Server With Raspberry Pi 4 |url=https://www.tomshardware.com/how-to/create-ai-chatbot-server-on-raspberry-pi |website=tomshardware.com |date=25 March 2023 |access-date=16 April 2024}}</ref>. llama.cpp поддерживает предварительное квантование модели, а не квантование «на лету»<ref name="Walkowiak">{{cite journal |last1=Walkowiak |first1=Bartosz |last2=Walkowiak |first2=Tomasz |journal=International Journal of Electronics and Telecommunications|date=2024 |volume=70 |issue=1 |pages=153–159 |doi=10.24425/ijet.2024.149525 |url=https://journals.pan.pl/Content/130704/18_4466_Walkowiak_L_sk.pdf |access-date=8 May 2024| title=Implementation of language models within an infrastructure designed for Natural Language Processing}}</ref>. llama.cpp использует несколько [[Расширения набора команд x86|расширений набора команд x86]] для ускорения выполнения матричных операций: [[AVX]], [[AVX2]] и [[AVX-512]] для [[x86-64]], а также [[Neon]] на ARM. [[Apple Silicon]] также является важной целевой платформой для проекта<ref name="llama.cpprepo" /><ref name="Walkowiak">{{cite journal |last1=Walkowiak |first1=Bartosz |last2=Walkowiak |first2=Tomasz |journal=International Journal of Electronics and Telecommunications|date=2024 |volume=70 |issue=1 |pages=153–159 |doi=10.24425/ijet.2024.149525 |url=https://journals.pan.pl/Content/130704/18_4466_Walkowiak_L_sk.pdf |access-date=8 May 2024| title=Implementation of language models within an infrastructure designed for Natural Language Processing}}</ref>. |
+ | |||
+ | llama.cpp поддерживает форматирование выходных данных на основе грамматики в формате JSON<ref name="Wiest" /> и [[Спекулятивное декодирование модели|спекулятивное декодирование]]<ref name="theregister 15 December 2024" />. | ||
+ | |||
+ | Для хранения моделей | ||
+ | |||
+ | == Файлы GGUF == | ||
+ | {{Основная статья|GGUF}} | ||
+ | [[GGML Universal File]]<ref>[https://github.com/ggerganov/llama.cpp/blob/master/gguf-py/README.md]</ref> — это двоичный формат, который хранит как тензоры, так и метаданные в одном файле и предназначен для быстрого сохранения и загрузки данных модели<ref name="huggingface">{{cite web |title=GGUF |url=https://huggingface.co/docs/hub/gguf |website=huggingface.co |access-date=9 May 2024}}</ref>. Он был представлен в августе 2023 года проектом llama.cpp для лучшей обратной совместимости в связи с добавлением поддержки других архитектур моделей<ref name="Rajput" /><ref name="ibm-gguf-vs-ggml">{{cite web |last1=Mucci |first1=Tim |title=GGUF versus GGML |url=https://www.ibm.com/think/topics/gguf-versus-ggml |website=www.ibm.com |access-date=26 July 2024 |language=en-us |date=3 July 2024}}</ref>. Он заменил предыдущие форматы, использовавшиеся проектом, такие как [[GGML (формат файла)|GGML]]. Файлы GGUF обычно создаются путём конвертации моделей, разработанных с помощью другой [[библиотеки машинного обучения]], например, [[PyTorch]]<ref name="huggingface"/>. | ||
+ | |||
+ | == Поддерживаемые модели == | ||
+ | {{div col|colwidth=15em}} | ||
+ | * [[Llama]] | ||
+ | * [[Llama 2]] | ||
+ | * [[Llama 3]] | ||
+ | * [[Mistral AI#Mistral 7B|Mistral 7B]] | ||
+ | * [[Mistral AI#Mixtral 8x7B|Mixtral 8x7B]] | ||
+ | * [[Mistral AI#Mixtral 8x22B|Mixtral 8x22B]] | ||
+ | * [[DBRX]] | ||
+ | * [[BERT (языковая модель)|BERT]] | ||
+ | * [[GPT-2]] | ||
+ | * [[BLOOM (языковая модель)|BLOOM]] | ||
+ | * [[Gemini (языковая модель)|Gemma]] | ||
+ | * [[Grok]] | ||
+ | * [[Mamba (архитектура глубокого обучения)|Mamba]] | ||
+ | * [[EleutherAI#Модели GPT|GPT-NeoX]] | ||
+ | * [[T5 (языковая модель)|Flan T5]] | ||
+ | * [[DeepSeek]] | ||
+ | * [[IBM Granite]] | ||
+ | {{div col end}} | ||
== Примечания == | == Примечания == | ||
[[Категория:Программное обеспечение для машинного обучения]] | [[Категория:Программное обеспечение для машинного обучения]] |
Текущая версия от 09:34, 1 августа 2025
llama.cpp Библиотека для инференса LLM.
|
- Язык программирования:
- C++, C и C++, C
- Разработчик:
- Георгий Герганов и сообщество
- Дата появления:
- март 10, 2023[1]
со строчной буквы
llama.cpp — это библиотека с открытым исходным кодом, которая выполняет инференс с использованием различных больших языковых моделей, таких как Llama[3].
Она разрабатывается совместно с проектом GGML, тензорной библиотекой общего назначения[4].
Вместе с библиотекой поставляются утилиты командной строки[5], а также сервер с простым веб-интерфейсом[6][7].
ПредысторияПравить
В конце сентября 2022 года Георгий Герганов начал работу над библиотекой GGML, библиотекой на языке C, реализующей тензорную алгебру. Герганов разрабатывал библиотеку с учётом строгого управления памятью и многопоточности. Создание GGML было вдохновлено работой Фабриса Беллара над LibNC[8]. До llama.cpp Герганов работал над аналогичной библиотекой whisper.cpp, которая реализовала Whisper — модель преобразования речи в текст от OpenAI[9].
РазработкаПравить
Разработка llama.cpp началась в марте 2023 года Георгием Гергановым как реализация кода инференса Llama на чистом C/C++ без зависимостей.
Это резко повысило производительность на компьютерах без графического процессора или другого выделенного оборудования, что и было целью проекта[3][10][11]
llama.cpp завоевала популярность у пользователей, не имеющих специализированного оборудования, поскольку могла работать только на CPU в том числе на устройствах Android[10][12][13] . Изначально проект разрабатывался для CPU, но позже была добавлена поддержка инференса на GPU[14].
По состоянию на ноябрь 2024 года проект имел более 67 000 звёзд на GitHub[15].
В марте 2024 года Джастин Танни представила новые оптимизированные ядра умножения матриц для процессоров x86 и ARM, повысив производительность вычисления промптов для FP16 и Q8_0[16]. Эти улучшения были внесены в основную ветку разработки llama.cpp[16]. Танни также создала инструмент под названием llamafile, который объединяет модели и llama.cpp в один файл, работающий на нескольких операционных системах с помощью библиотеки Cosmopolitan Libc, также созданной Танни, которая позволяет C/C++ быть более переносимым между операционными системами[16].
АрхитектураПравить
llama.cpp поддерживает несколько целевых аппаратных платформ, включая x86, ARM, CUDA, Metal, Vulkan (версии 1.2 или выше) и SYCL[17][18][19][20]. Эта поддержка реализована в тензорной библиотеке GGML, которая используется кодом llama.cpp, специфичным для модели фронтенда[21]. llama.cpp поддерживает предварительное квантование модели, а не квантование «на лету»[22]. llama.cpp использует несколько расширений набора команд x86 для ускорения выполнения матричных операций: AVX, AVX2 и AVX-512 для x86-64, а также Neon на ARM. Apple Silicon также является важной целевой платформой для проекта[15][22].
llama.cpp поддерживает форматирование выходных данных на основе грамматики в формате JSON[11] и спекулятивное декодирование[7].
Для хранения моделей
Файлы GGUFПравить
GGML Universal File[23] — это двоичный формат, который хранит как тензоры, так и метаданные в одном файле и предназначен для быстрого сохранения и загрузки данных модели[24]. Он был представлен в августе 2023 года проектом llama.cpp для лучшей обратной совместимости в связи с добавлением поддержки других архитектур моделей[14][25]. Он заменил предыдущие форматы, использовавшиеся проектом, такие как GGML. Файлы GGUF обычно создаются путём конвертации моделей, разработанных с помощью другой библиотеки машинного обучения, например, PyTorch[24].
Поддерживаемые моделиПравить
ПримечанияПравить
- ↑ Initial release · ggerganov/llama.cpp@26c0846 (англ.). GitHub. Дата обращения: 15 мая 2024.
- ↑ llama.cpp/LICENSE at master · ggerganov/llama.cpp (англ.). GitHub.
- ↑ 3,0 3,1 Connatser, Matthew. How this open source LLM chatbot runner hit the gas on x86, Arm CPUs . theregister.com. Дата обращения: 15 апреля 2024.
- ↑ Gerganov, Georgi. ggerganov/ggml . GitHub (17 мая 2024).
- ↑ Mann, Tobias. Honey, I shrunk the LLM! A beginner's guide to quantization – and testing it . theregister (14 июля 2024).
- ↑ Alden, Daroc. Portable LLMs with llamafile [LWN.net] . lwn.net. Дата обращения: 30 июля 2024.
- ↑ 7,0 7,1 Mann, Tobias. Intro to speculative decoding: Cheat codes for faster LLMs (англ.). theregister (15 декабря 2024).
- ↑ Bringing Whisper and LLaMA to the masses with Georgi Gerganov (Changelog Interviews #532) (англ.). Changelog (22 марта 2023). Дата обращения: 28 июля 2024.
- ↑ ggerganov/whisper.cpp . GitHub.
- ↑ 10,0 10,1 Edwards, Benj. You can now run a GPT-3-level AI model on your laptop, phone, and Raspberry Pi . arstechnica.com (13 марта 2023). Дата обращения: 15 апреля 2024.
- ↑ 11,0 11,1 Wiest, Isabella Catharina; Ferber, Dyke; Zhu, Jiefu; van Treeck, Marko; Meyer, Meyer, Sonja K.; Juglan, Radhika; Carrero, Zunamys I.; Paech, Daniel; Kleesiek, Jens; Ebert, Matthias P.; Truhn, Daniel; Kather, Jakob Nikolas (2024). "Privacy-preserving large language models for structured medical information retrieval". npj Digital Medicine. 7 (257): 257. doi:10.1038/s41746-024-01233-2. PMC 11415382. PMID 39304709.
{{cite journal}}
: Проект:Обслуживание CS1 (множественные имена: authors list) (ссылка) - ↑ Hood, Stephen. llamafile: bringing LLMs to the people, and to your own computer (англ.). Mozilla Innovations. Дата обращения: 28 июля 2024.
- ↑ Democratizing AI with open-source language models . lwn.net. Дата обращения: 28 июля 2024.
- ↑ 14,0 14,1 Rajput, Saurabhsingh. Benchmarking Emerging Deep Learning Quantization Methods for Energy Efficiency // 2024 IEEE 21st International Conference on Software Architecture Companion (ICSA-C) / Saurabhsingh Rajput, Tushar Sharma. — 4 June 2024. — P. 238–242. — ISBN 979-8-3503-6625-9. — doi:10.1109/ICSA-C63560.2024.00049.
- ↑ 15,0 15,1 ggerganov/llama.cpp . GitHub.
- ↑ 16,0 16,1 16,2 Connatser, Matthew. Llamafile LLM driver project boosts performance on CPU cores (англ.). www.theregister.com. Дата обращения: 10 мая 2024.
- ↑ Nguyen, Xuan Son; Gerganov, Georgi; Slaren. Introduction to ggml . Huggingface (13 августа 2024).
- ↑ Kluska, Piotr; Castell´o, Adri´an; Scheidegger, Florian; I. Malossi, A. Cristiano; Quintana-Ort´ı, Enrique (June 2024). "QAttn: Efficient GPU Kernels for mixed-precision Vision Transformers" (PDF). Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR) Workshops.
- ↑ Jianyu, Zhang; Hengyu, Meng; Ying, Hu; Yu, Luo; Xiaoping, Duan; Corporation, Majumder Abhilash Intel (July 2024). "Run LLMs on Intel GPUs Using llama.cpp". The Parallel Universe (англ.). No. 57. Intel. pp. 34–37.
- ↑ Bolz, Jeff. Machine Learning in Vulkan with Cooperative Matrix 2 (англ.). Cambridge, UK: The Khronos Group/Nvidia (February 11–13, 2025).
- ↑ Pounder, Les. How To Create Your Own AI Chatbot Server With Raspberry Pi 4 . tomshardware.com (25 марта 2023). Дата обращения: 16 апреля 2024.
- ↑ 22,0 22,1 Walkowiak, Bartosz; Walkowiak, Tomasz (2024). "Implementation of language models within an infrastructure designed for Natural Language Processing" (PDF). International Journal of Electronics and Telecommunications. 70 (1): 153–159. doi:10.24425/ijet.2024.149525. Дата обращения: 8 мая 2024.
- ↑ [1]
- ↑ 24,0 24,1 GGUF . huggingface.co. Дата обращения: 9 мая 2024.
- ↑ Mucci, Tim. GGUF versus GGML (амер. англ.). www.ibm.com (3 июля 2024). Дата обращения: 26 июля 2024.