Llama.cpp: различия между версиями

Материал из in.wiki
Перейти к навигации Перейти к поиску
Строка 34: Строка 34:
  
 
== Архитектура ==
 
== Архитектура ==
llama.cpp поддерживает несколько целевых аппаратных платформ, включая x86, ARM, [[CUDA]], [[Metal]], [[Vulkan]] (версии 1.2 или выше) и [[SYCL]].[17][18][19][20] Эта поддержка реализована в тензорной библиотеке [[GGML (библиотека машинного обучения)|GGML]], которая используется кодом llama.cpp, специфичным для модели фронтенда.[21] llama.cpp поддерживает предварительное квантование модели, а не квантование «на лету».[22] llama.cpp использует несколько [[Расширения набора команд x86|расширений набора команд x86]] для ускорения выполнения матричных операций: [[AVX]], [[AVX2]] и [[AVX-512]] для [[x86-64]], а также [[Neon]] на ARM. [[Apple Silicon]] является важной целевой платформой для проекта.[15][23] llama.cpp поддерживает форматирование выходных данных на основе грамматики в формате JSON<ref name="Wiest" /> и [[Спекулятивное декодирование модели|спекулятивное декодирование]]<ref name="theregister 15 December 2024" />.
+
llama.cpp поддерживает несколько целевых аппаратных платформ, включая x86, ARM, [[CUDA]], [[Metal]], [[Vulkan]] (версии 1.2 или выше) и [[SYCL]].[17][18][19][20] Эта поддержка реализована в тензорной библиотеке [[GGML (библиотека машинного обучения)|GGML]], которая используется кодом llama.cpp, специфичным для модели фронтенда.[21] llama.cpp поддерживает предварительное квантование модели, а не квантование «на лету».[22] llama.cpp использует несколько [[Расширения набора команд x86|расширений набора команд x86]] для ускорения выполнения матричных операций: [[AVX]], [[AVX2]] и [[AVX-512]] для [[x86-64]], а также [[Neon]] на ARM. [[Apple Silicon]] также является важной целевой платформой для проекта<ref name="llama.cpprepo" />.[23]  
 +
 
 +
llama.cpp поддерживает форматирование выходных данных на основе грамматики в формате JSON<ref name="Wiest" /> и [[Спекулятивное декодирование модели|спекулятивное декодирование]]<ref name="theregister 15 December 2024" />.
  
 
== Примечания ==
 
== Примечания ==
 
[[Категория:Программное обеспечение для машинного обучения]]
 
[[Категория:Программное обеспечение для машинного обучения]]

Версия от 14:56, 30 июля 2025

Llama1-logo.svg
llama.cpp
Язык программирования:
C++, C и C++, C




Разработчик:
Георгий Герганов и сообщество



Дата появления:
март 10, 2023; 2 years ago (2023-03-10)[1]




Лицензия:
MIT License [2]

со строчной буквы

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].[23]

llama.cpp поддерживает форматирование выходных данных на основе грамматики в формате JSON[11] и спекулятивное декодирование[7].

Примечания

  1. Initial release · ggerganov/llama.cpp@26c0846 (англ.). GitHub. Дата обращения: 15 мая 2024.
  2. llama.cpp/LICENSE at master · ggerganov/llama.cpp (англ.). GitHub.
  3. 3,0 3,1 Connatser, Matthew. How this open source LLM chatbot runner hit the gas on x86, Arm CPUs. theregister.com. Дата обращения: 15 апреля 2024.
  4. Gerganov, Georgi. ggerganov/ggml. GitHub (17 мая 2024).
  5. Mann, Tobias. Honey, I shrunk the LLM! A beginner's guide to quantization – and testing it. theregister (14 июля 2024).
  6. Alden, Daroc. Portable LLMs with llamafile [LWN.net]. lwn.net. Дата обращения: 30 июля 2024.
  7. 7,0 7,1 Mann, Tobias. Intro to speculative decoding: Cheat codes for faster LLMs (англ.). theregister (15 декабря 2024).
  8. Bringing Whisper and LLaMA to the masses with Georgi Gerganov (Changelog Interviews #532) (англ.). Changelog (22 марта 2023). Дата обращения: 28 июля 2024.
  9. ggerganov/whisper.cpp. GitHub.
  10. 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. 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) (ссылка)
  12. Hood, Stephen. llamafile: bringing LLMs to the people, and to your own computer (англ.). Mozilla Innovations. Дата обращения: 28 июля 2024.
  13. Democratizing AI with open-source language models. lwn.net. Дата обращения: 28 июля 2024.
  14. 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. 15,0 15,1 ggerganov/llama.cpp. GitHub.
  16. 16,0 16,1 16,2 Connatser, Matthew. Llamafile LLM driver project boosts performance on CPU cores (англ.). www.theregister.com. Дата обращения: 10 мая 2024.