Форум » [x]Harbour » Llama.prg - библиотека для локальных языковых моделей » Ответить

Llama.prg - библиотека для локальных языковых моделей

alkresin: Начал новый проект - llama.prg, название взято по аналогии с llama.cpp, на основе которого он делается. Собственно, llama.prg - это bindings к llama.cpp. На сегодняшний момент он позволяет (см. test1.prg) загрузить выбранную локальную модель и вести с ней диалог. Параметры запуска модели могут быть заданы в models.ini. Контекст диалога пока не запоминается - я разбираюсь, как это можно сделать. Работает это дело только с 64-битными компиляторами, под Windows - msvc, под Linux - стандартный gcc. Чтобы можно было использовать и с другими компиляторами, в т.ч., 32-битными, продумываю систему на основе guiserver - чтобы вызывать процесс, собранный с llama.lib, из других программ. Проект поместил на gitflic.ru: https://gitflic.ru/project/alkresin/llama_prg. Я не могу открывать новые проекты на github из-за отказа от двухфакторной идентификации, теперь буду создавать их на gitflic.ru и, возможно, попробую на gitverse.ru.

Ответов - 12

alkresin: Сами локальные модели можно загрузить, например, отсюда: https://gpt4all.io/index.html https://huggingface.co/models Нужны модели с расширением gguf. Надо, конечно, ориентироваться на их размер, требования к памяти. Модели от 7b и выше требуют наличие более 8Гб ОЗУ Модели 1.1b. 1.3b грузятся и на 4Гб ОЗУ, но они, конечно, совсем слабенькие, только чтоб пощупать, что это такое. Есть уже много специализированных моделей - для разных областей знаний, для разного применения, в том числе и наших. Mistral-7b, кстати, понимает русский язык.

alkresin: Создал очень лаконичную страничку у себя на сайте http://www.kresin.ru/llama_prg.html - пока для того, чтобы разместить постоянную ссылку на демо-пример, который я туда загрузил. Там в readme все написано. Добавлю только, что llama_exsrv.exe из примера можно использовать и с hbedit. В последней версии hbedit Добавлен плагин plug_extllm.hrb, его можно активировать в hbedit.ini. Надо переписать llama_exsrv.exe в hbedit/plugins и там же создать models.ini с путями к моделям. При запуске этого плагина открывается отдельное окно и предлагается открыть модель - после успешного открытия можно начать диалог.

alkresin: Выложил на http://www.kresin.ru/llama_prg.html обновленное демо - контекст диалога теперь сохраняется, т.е. можно вести нормальный диалог, если модель позволяет. Обновленный плагин к Hbedit - на github'е. И еще полезная ссылка для поиска подходящих моделей: https://habr.com/ru/companies/tablum/articles/779084/


alkresin: Теперь llama.prg может анализировать изображения: если скормить ему файл изображения, он выдает краткое описание того, что там изображено - см. test3.prg. Для этого надо скачать две модели ggml-model-q5_k.gguf, mmproj-model-f16.gguf с https://huggingface.co/mys/ggml_llava-v1.5-7b Требования к ресурсам немаленькие, конечно. У меня на рабочем компе 12Gb ОЗУ - и работает не быстро, пару минут надо ждать.

PSP: А можно спросить, что с этим делать?

alkresin: PSP пишет: А можно спросить, что с этим делать? Хороший вопрос). Если говорить о llama.prg/llama.cpp в целом, то можно использовать это в качестве переводчика, для исправления текстов, для помощи в создании текстов/документации. При выборе соответствующей модели ( codellama, deepseek-coder, ... ) - как помощника в программироании. Это первое, что приходит в голову. Учитывая, что растет число специализированных моделей и их качество и то, что совершенствуется технология создания своих моделей, натренированных под свои конкретные нужды, то перспективы использования довольно широкие. Если говорить об анализе изображений, то, наверное. это можно использовать для автоматизированной обработки группы файлов, задавая для каждого вопрос - ну, например, сколько там мужчин и сколько женщин).

alkresin: Ну и, самое главное, это просто интересно. А я предпочитаю заниматься тем, что мне интересно, а не учетом тапочек, дебетом/кредитом и пр. (хотя и этим, увы, приходится заниматься).

PSP: alkresin пишет: Ну и, самое главное, это просто интересно. Вот это понятно)) Спасибо!)

alkresin: И для делопроизводства можно использовать. Вот, например, запустил его через плагин к hbedit и попросил написать деловое письмо насчет задержки поставки огурцов)

alkresin: Добавил в llama.prg поддержку whisper. Это проект, который использует ИИ модели для распознавания аудио. Я пробовал распознать файлы с речью на русском, где говорят совсем не поставленнным дикторским голосом - и, к моему удивлению, распозналось нормально. Поддерживаются только wav файлы 16kHz - сконвертировать в этот формат можно, например, с помощью ffmpeg: ffmpeg -i my.mp3 -acodec pcm_s16le -ar 16000 my.wav

alkresin: Добавил поддержку генерации изображений по текстовому описанию - отдельный проект https://gitflic.ru/project/alkresin/stable_diffusion_prg - Harbour привязка к stable-diffusion.cpp.

alkresin: В llama.prg добавил небольшой кроссплатформенный модуль для записи с микрофона и новый пример - test5.prg, который демонстрирует, как можно диктовать текст с последующим его распознаванием. Если ресурсы компьютера позволяют, получается сравнительно быстро. Можно это дело прикрутить к редактору, или применить для распознавания голосовых команд.



полная версия страницы