К концу сентября 2022 года Георгий Герганов начал работу над библиотекой GGML, библиотекой C, реализующей тензорную алгебру . Герганов разработал библиотеку с намерением строгого управления памятью и многопоточности. Создание GGML было вдохновлено работой Фабриса Беллара над LibNC. [8]
До llama.cpp Герганов работал над похожей библиотекой под названием whisper.cpp, которая реализовала Whisper , модель преобразования речи в текст от OpenAI . [9]
Герганов имеет образование в области медицинской физики и работал на физическом факультете Софийского университета . [10] В 2006 году он завоевал серебряную медаль на Международной физической олимпиаде . [11] [12] В 2008 году он выиграл соревнование по программированию, организованное Болгарской ассоциацией компаний-разработчиков программного обеспечения, журналом PC Magazine и болгарской компанией-разработчиком программного обеспечения Musala Soft. [13]
Разработка
Разработка llama.cpp началась в марте 2023 года Георгием Гергановым как реализация кода вывода Llama на чистом C/C++ без зависимостей. Это повысило производительность на компьютерах без GPU или другого выделенного оборудования, что было целью проекта. [3] [14] [15] llama.cpp завоевал популярность среди пользователей, у которых не было специализированного оборудования, поскольку он мог работать только на CPU , в том числе на устройствах Android . [14] [16] [17] Первоначально разработанный для CPU, позже был добавлен для поддержки вывода GPU. [18] По состоянию на ноябрь 2024 года он имеет более 67 000 звезд на GitHub. [19]
В марте 2024 года Джастин Танни представила новые оптимизированные ядра умножения матриц для процессоров x86 и ARM, улучшив производительность быстрой оценки для FP16 и 8-битных квантованных типов данных. [20] Эти улучшения были внесены в llama.cpp. [20] Танни также создал инструмент под названием llamafile, который объединяет модели и llama.cpp в один файл, работающий на нескольких операционных системах через библиотеку Cosmopolitan Libc, также созданную Танни, которая позволяет C/C++ быть более переносимым между операционными системами. [20]
Архитектура
llama.cpp поддерживает несколько целевых аппаратных платформ, включая x86 , ARM , CUDA , Metal , Vulkan и SYCL . [21] [22] [23] [24] Эти бэкэнды составляют тензорную библиотеку GGML, которая используется кодом llama.cpp, специфичным для модели фронтенда. [25] llama.cpp поддерживает предварительное квантование модели в отличие от квантования «на лету». [26] llama.cpp использует несколько расширений ЦП для оптимизации: AVX , AVX2 и AVX-512 для X86-64 и Neon на ARM. Apple Silicon является важной целевой платформой для проекта. [19] [27] Он поддерживает форматирование выходных данных на основе грамматики в виде JSON . [15] Он также поддерживает спекулятивное декодирование . [7]
Формат файла GGUF (универсальный файл GGML) [30] — это двоичный формат, который хранит как тензоры, так и метаданные в одном файле и предназначен для быстрого сохранения и загрузки данных модели. [31] Он был представлен в августе 2023 года проектом llama.cpp для лучшего поддержания обратной совместимости, поскольку была добавлена поддержка других архитектур моделей. [18] [32] Он пришел на смену предыдущим форматам, использовавшимся проектом, таким как GGML.
Файлы GGUF обычно создаются путем преобразования моделей, разработанных с помощью другой библиотеки машинного обучения, такой как PyTorch . [31]
Дизайн
Формат фокусируется на квантовании, процессе снижения точности весов модели. Это может привести к уменьшению использования памяти и повышению скорости за счет снижения точности модели. [33] [32]
GGUF поддерживает квантованные целочисленные типы от 2 до 8 бит; [34] распространенные форматы данных с плавающей точкой, такие как float32 , float16 и bfloat16 ; и квантование 1,56 бит. [5]
Этот формат файла содержит информацию, необходимую для запуска языковой модели, подобной GPT, такую как словарь токенизатора, длина контекста, информация о тензоре и другие атрибуты. [35]
^ "Первоначальный выпуск · ggerganov/llama.cpp@26c0846". GitHub . Получено 15 мая 2024 .
^ "llama.cpp/LICENSE в master · ggerganov/llama.cpp". GitHub .
^ ab Connatser, Matthew. «Как этот чат-бот с открытым исходным кодом LLM нажал на газ на процессорах x86 и Arm». theregister.com . Получено 15 апреля 2024 г. .
↑ Герганов, Георгий (17 мая 2024 г.). "герганов/ггмл". Гитхаб .
^ ab Mann, Tobias (14 июля 2024 г.). «Дорогая, я сократил LLM! Руководство для начинающих по квантизации и ее тестированию». theregister .
^ Олден, Дэрок. «Переносимые LLM с llamafile [LWN.net]». lwn.net . Получено 30 июля 2024 г. .
^ ab Mann, Tobias (15 декабря 2024 г.). «Введение в спекулятивное декодирование: чит-коды для более быстрых LLM». theregister .
^ «Привнесение Whisper и LLaMA в массы с Георгием Гергановым (Changelog Interviews #532)». Changelog . 22 марта 2023 г. . Получено 28 июля 2024 г. .
^ Митев, Красимир; Герганов, Георгий; Киров, Ассен С.; Шмидтлейн, К. Росс; Маджунков, Йордан; Кавраков, Иван (21 июня 2012 г.). «Влияние сокращения энергии фотонов на результаты моделирования ПЭТ Монте-Карло: влияние сокращения энергии фотонов». Медицинская физика . 39 (7Часть 1): 4175– 4186. doi :10.1118/1.4725168. PMID 22830751.
^ Тихи-Рач, Адам (2015). СПИСОК ПОБЕДИТЕЛЕЙ 1 – 45 МЕЖДУНАРОДНЫХ ОЛИМПИАД ПО ФИЗИКЕ. БМЕ ОМИКК. п. 246. ИСБН978-963-593-500-0.
^ Захариев, Боян (21 июля 2006 г.). «Болгария с 11 медалями международных олимпиад». сега бг .
^ Станева, Ирина (30 января 2008 г.). «Конкурс студентов СУ спечелиха по программам БАСКОМ». кариери .
^ ab Edwards, Benj (13 марта 2023 г.). «Теперь вы можете запустить модель ИИ уровня GPT-3 на своем ноутбуке, телефоне и Raspberry Pi». arstechnica.com . Получено 15 апреля 2024 г. .
^ аб Уист, Изабелла Катарина; Фербер, Дайк; Чжу, Цзефу; ван Трик, Марко; Мейер, Мейер, Соня К.; Джуглан, Радика; Карреро, Зунамис И.; Пэч, Дэниел; Клесик, Йенс; Эберт, Матиас П.; Трун, Дэниел; Катер, Якоб Николас (2024). «Большие языковые модели, сохраняющие конфиденциальность, для структурированного поиска медицинской информации». npj Цифровая медицина . 7 (257): 257. дои : 10.1038/s41746-024-01233-2. ПМЦ 11415382 . ПМИД 39304709.{{cite journal}}: CS1 maint: несколько имен: список авторов ( ссылка )
^ Худ, Стивен. «llamafile: привнесение LLMs в жизнь людей и на ваш компьютер». Mozilla Innovations . Получено 28 июля 2024 г.
^ «Демократизация ИИ с помощью языковых моделей с открытым исходным кодом». lwn.net . Получено 28 июля 2024 г. .
^ ab Rajput, Saurabhsingh; Sharma, Tushar (4 июня 2024 г.). «Сравнительный анализ новых методов квантования глубокого обучения для повышения энергоэффективности». 2024 IEEE 21st International Conference on Software Architecture Companion (ICSA-C) . стр. 238–242 . doi :10.1109/ICSA-C63560.2024.00049. ISBN979-8-3503-6625-9.
^ abc Коннацер, Мэтью. «Проект драйвера LLMafile LLM повышает производительность ядер ЦП». www.theregister.com . Получено 10 мая 2024 г. .
^ Герганов, Георгий; Нгуен, Сюань Сон; Сларен (13 августа 2024 г.). «Введение в ggml». Huggingface .
^ Клушка, Петр; Кастельо, Адриан; Шайдеггер, Флориан; И. Малосси, А. Кристиано; Кинтана-Орти, Энрике (июнь 2024 г.). "QAttn: Эффективные ядра GPU для преобразователей зрения со смешанной точностью" (PDF) . Труды конференции IEEE/CVF по семинарам по компьютерному зрению и распознаванию образов (CVPR) .
^ Фриттс, Гарольд (30 октября 2024 г.). «AMD и LM Studio: делаем ИИ доступным и быстрым на ноутбуках x86». StorageReview.com .
^ Цзяньюй, Чжан; Хэнъюй, Мэн; Ин, Ху; Ю, Ло; Сяопин, Дуань; Корпорация Majumder Abhilash Intel (июль 2024 г.). «Запуск LLM на графических процессорах Intel с использованием llama.cpp». Параллельная Вселенная . № 57. Интел. стр. 34–37 .
^ Pounder, Les (25 марта 2023 г.). «Как создать собственный сервер чат-ботов с искусственным интеллектом с помощью Raspberry Pi 4». tomshardware.com . Получено 16 апреля 2024 г. .
^ Walkowiak, Bartosz; Walkowiak, Tomasz (2024). «Реализация языковых моделей в инфраструктуре, разработанной для обработки естественного языка» (PDF) . International Journal of Electronics and Telecommunications . 70 (1): 153– 159. doi :10.24425/ijet.2024.149525 . Получено 8 мая 2024 г. .
^ Ларабель, Майкл. «Llamafile 0.7 обеспечивает поддержку AVX-512: в 10 раз более быстрое время оценки подсказок для AMD Zen 4». www.phoronix.com .
^ "GGUF от ggerganov · Запрос на извлечение № 2398 · ggerganov/llama.cpp". GitHub .
^ "ggml/docs/gguf.md в master · ggerganov/ggml". GitHub .
^ "ggerganov/llama.cpp/gguf-py/README.md". GitHub . Получено 10 ноября 2024 г. .
^ ab "GGUF". huggingface.co . Получено 9 мая 2024 г. .
^ ab Mucci, Tim (3 июля 2024 г.). "GGUF против GGML". www.ibm.com . Получено 26 июля 2024 г. .
^ Лабонн, Максим (29 ноября 2023 г.). «Квантование моделей Llama с помощью GGUF и llama.cpp». Medium . Towards Data Science . Получено 9 мая 2024 г. .
^ Кабесас, Дарио; Фонсека-Дельгадо, Ригоберто; Рейес-Чакон, Иван; Вискаино-Имаканья, Паулина; Морочо-Каямсела, Мануэль (2024). «Интеграция чат-бота на основе LLaMa с генерацией расширенного поиска в качестве дополнительного образовательного инструмента для старшеклассников и студентов». Материалы 19-й Международной конференции по программным технологиям . стр. 395–402 . doi : 10.5220/0012763000003753. ISBN978-989-758-706-1.
^ Донг, Бо; Линь, Джун; Ю, Жентао; Сюй, Чжэньчжун; Ло, Ю; Чанг, Ханвен; Шен, Хайхао (июль 2024 г.). «Ускорение моделей GGUF с помощью трансформаторов». Параллельная Вселенная . № 57. Интел. стр. 28–33 .