Для начала выполним остановку сервиса ollama и удалим конфирацию:
sudo systemctl stop ollama
sudo systemctl disable ollama
sudo rm /etc/systemd/system/ollama.service
Далее, удалим бинарник ollama:
sudo rm $(which ollama)Удаляем пользователя ollama и группу ollama:
sudo userdel ollama
sudo groupdel ollamaВсе модели, которые вы скачали из библиотеки ollama или создали врунчю хранятся в /usr/share/ollama,
запомним эту директорию, вернёмся к ней чуть позже.
Создадим пустую директорию, скажем docker-ollama и в ней файл docker-compose.yml:
mkdir docker-ollama
cd docker-ollama
touch docker-compose.ymlЗаполним его следующим содержимым:
version: "3.9"
x-shared-logs: &shared-logs
logging:
driver: "json-file"
options:
max-size: "10k"
services:
ollama:
image: ollama/ollama:0.4.0-rc1
restart: unless-stopped
volumes:
- ./ollama_data:/root
environment:
OLLAMA_KEEP_ALIVE: 60 minutes
OLLAMA_FLASH_ATTENTION: 1
ports:
- "11434:11434"
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [ gpu ]
<<: *shared-logsМожно явно указать версии через image директиву, например ollama/ollama:0.4.0-rc1 говорит нам о том,
что необходимо взять контейнер с тегом 0.4.0-rc1 и юзать его в дальнейшем.
Далее перенесём папку /usr/share/ollama в текущую директорию и поменяем имя на ollama_data:
mv /usr/share/ollama ./ollama_dataСкачаем образ и запустим композицию:
docker-compose pull
docker-compose up -dДля обновления ollama нужно будет зайти через редактор и подправить тег у image, далее выполнить pull, up -d
и вот вы уже на новой версии.
Получим список доступных моделей:
curl http://gpu01:11434/api/tagsПопробуем выполнить генерацию через llama3.1:8b:
curl http://gpu01:11434/api/generate -d '{
"model": "llama3.1:8b",
"stream": false,
"prompt": "Почему трава зелёная?"
}'