Llama.cpp: различия между версиями
In.wiki (комментарии | вклад) |
In.wiki (комментарии | вклад) |
||
(не показаны 4 промежуточные версии этого же участника) | |||
Строка 40: | Строка 40: | ||
Для хранения моделей | Для хранения моделей | ||
− | == | + | == Файлы GGUF == |
{{Основная статья|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.