Мое первое знакомство с ollama
Надоело использовать зоопарк из HF кода для тестирования моделек, как и мне? :-) Пришло время упростить этот процесс с помощью популярного инструмента ollama, полезного для разработчиков и исследователей. Здесь в статье будет упор про терминальное использование на linux, но есть множество разных вариантов GUI - изучайте.
Ollama построена на основе llama.cpp, но она автоматически обрабатывает форматирование запросов чата в соответствии с ожиданиями каждой модели и автоматически загружает и выгружает модели по запросу, в зависимости от того, какую модель запрашивает клиент API. Ollama также обрабатывает загрузку и кэширование моделей, поэтому вы можете запрашивать их по имени.
Библиотека сильно упрощает скачивание и инференс моделей, предлагая разные квантизированные версии GGUF - 2, 3, 6, 5, 8 бит или FP16, можно сразу работать с чат версией и одновременно по API выполнять запросы с режимом стриминга.
Ollama предлагает несколько ключевых преимуществ:
- Локальное выполнение: Ollama позволяет запускать большие языковые модели (LLM) локально на вашем компьютере, устраняя необходимость отправки данных на сторонние серверы. Это обеспечивает конфиденциальность и безопасность данных.
- Простота использования: Ollama предоставляет простой API и предварительно настроенные для инференс модели, не надо самому ковыряться в системных промптах, сокращая время и усилия на разработку приложений на основе LLM, таких как чат-боты, инструменты обобщения и помощники.
- Расширяемость: Ollama является высоко расширяемой, позволяя пользователям создавать пользовательские модели, импортировать модели из других источников и точно настраивать модели для определенных задач или приложений. На официальном гитхабе можно увидеть обширный список расширений и интеграций, множество GUI.
- Автономная работа: Поскольку Ollama работает локально, она может функционировать без подключения к Интернету, что делает ее подходящей для сценариев с ограниченным или отсутствующим подключением.
- Улучшенная производительность: использует и CPU и GPU, модели которые не влазят в память видеокарты частично выносятся в оперативку.
Установка и первый запуск
Программа поставляется для MacOS, Linux, Windows. Есть также в докере. Для винды надо качнуть дистрибутив и установить. В линуксе достаточно одной команды:
Стоит заметить, что ollama запускается как системный сервис в операционной системе и весит в памяти. Это не скрипт python.
В каталоге Library можно найти совместимые на данный момент модели:
Удобно что сразу показаны все варианты конкретной модели
Чтобы запустить модель достаточно в терминале линукса или винды, указать команду с название модели и сразу откроется чат.
Можно запускать одновременно несколько моделей, ollama автоматически выгрузит из памяти не активную и загрузит с которой актуален чат. По АПИ такая же история - если модель скачана, значит ее прогрузит, даже если не запускать ollama run по этой модели.
Прикольно, что можно просто в терминале мультимоделке указать путь к картинке
Делаем вывод файла системной командой cat
Пример API запроса через CURL
На питоне через API
Для работы с контекстом рекомендую сразу поставить "options":{ "seed": 123,"temperature": 0}, иначе часто будут всякие помехи вылазить
Настройка системных параметров ollama
Я сразу столкнулся с необходимостью изменения параметров сервиса. Это оказалось не так гибко - через systemd, что требует редактирования файла и перезапуск сервиса.
Как настроить ollama для работы с одной GPU
Имея несколько видеокарт можно столкнуться с необходимостью запуска только на некоторых из них. Чтобы это сделать необходимо указать через CUDA_VISIBLE_DEVICES какие номера GPU будут видны
Как изменить папку для моделей ollama
Опять же у меня системный терабайтник ssd уже давно забился, приходится перемещать на большой ssd.
Прописать эти параметры нужно в systemd. Рекомендуют это через команду systemctl edit ollama.service - но у меня проще получилось через редактирование напрямую в файла, в Ubuntu 22 который расположен здесь:
/etc/systemd/system/ollama.service
Содержание файла ниже, но не указал настройки выбора количество GPU, ибо передумал :-), потому что мучаю большие в основном модели.
После редактирования systemd запускаем команды
Как узнать информацию о модели
С помощью простой команды можно вывести лицензию и какие параметры, включая системный промпт, заданы.
Как обновить ollama
Если редактировали конфиг как я через nano ollama.service то он затрется.
Как отключить использование GPU в ollama
Нужно прописать в конфиге -1
На этом пока все, возможно дополню позже. Если нашли неточность в описании - буду рад поправкам. Также вы можете подписаться на мой ТГ-канал, где я делюсь своими находками и опытом.
Тоже пробовал, но отвечает жутко долго. И это на не самом слабом маке. Думал на сервер установить и по апихе обращаться, но игра свеч не стоит.
Какие модели пробовали и с какой квантизацией?
Привет. Подскажите если на оламе использовать модель mistral, то можно задавать вопросы на русском языке?
Да, конечно. Любые модели с русским языком работают, но не все это делают хорошо.
У меня на Винде с 3060 работает довольно шустро. Но когда ввожу длинные тексты на русском для классификации, отказывается отвечать на русском вообще.
А как ей настраивать SYSTEM (системный промпт)?
И как запускать модели пользователей? https://ollama.com/sergo1217/rugpt-3.5
Дело в том, что чем длинее контекст тем больше требуется памяти. Соответственно, когда короткий контекст у вас модель влазит в память GPU, а когда длинный - нет и задействуется CPU.
Обучение llama на своих текстах