Перейти к содержимому
Главная страница » Ollama в Docker

Ollama в Docker

Ollama — это открытая платформа LLM, обученная на огромном наборе текстов и кода, что позволяет ей выполнять различные задачи, такие как генерация текста, перевод, автодополнение кода и ответы на вопросы.

Вы хотите поэкспериментировать с большими языковыми моделями (LLM), не платя за токены, подписки или ключи API? Вы хотите запускать их на своём ноутбуке (или выделенном оборудовании) и пользоваться возможностями ИИ нового поколения? Если да, то вам стоит обратить внимание на Ollama — платформу, которая позволяет всё это делать. В этом блоге я покажу вам, как это сделать.

С помощью Ollama все ваши взаимодействия с большими языковыми моделями происходят локально, без отправки конфиденциальных данных сторонним сервисам. Ollama может работать с ускорением GPU внутри контейнеров Docker для графических процессоров Nvidia.

Запуск Ollama в Docker

Для запуска будем использовать официальный образ ollama/ollama с Dockerhub.

Чтобы начать использовать образ Docker, выполним следующие команды команды.

docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama

Проверим, что контейнер запущен:

Также запустим языковую модель Llama 2, внутри контейнера.

docker exec -it ollama ollama run llama2

Запуск Ollama WebUI с использованием Docker Compose

Если вы не фанат командной строки, то вам может пригодиться репозиторий проекта Ollama-webui

Клонируем проект:

git clone https://github.com/ollama-webui/ollama-webui
cd ollama-webui

Содержимое файла docker-compose.yml проекта:

services:
  ollama:
    volumes:
      - ollama:/root/.ollama
    container_name: ollama
    pull_policy: always
    tty: true
    restart: unless-stopped
    image: ollama/ollama:${OLLAMA_DOCKER_TAG-latest}

  open-webui:
    build:
      context: .
      args:
        OLLAMA_BASE_URL: '/ollama'
      dockerfile: Dockerfile
    image: ghcr.io/open-webui/open-webui:${WEBUI_DOCKER_TAG-main}
    container_name: open-webui
    volumes:
      - open-webui:/app/backend/data
    depends_on:
      - ollama
    ports:
      - ${OPEN_WEBUI_PORT-3000}:8080
    environment:
      - 'OLLAMA_BASE_URL=http://ollama:11434'
      - 'WEBUI_SECRET_KEY='
    extra_hosts:
      - host.docker.internal:host-gateway
    restart: unless-stopped

volumes:
  ollama: {}
  open-webui: {}

Запустим команду:

docker compose up -d

Файл Compose определяет отдельные сервисы, из которых состоит всё приложение. Здесь у нас есть два сервиса:

  • webui
  • ollama

Сервис webui выступает в качестве пользовательского интерфейса для взаимодействия с моделями ИИ Ollama. Он получает данные от дополнительного сервиса ollama (сервера моделей ИИ), работающего в той же сети, и позволяет визуально управлять моделями и использовать их. Вы можете получить доступ к веб-интерфейсу по адресу http://localhost:8080, если работаете локально. Сам сервис ollama (дополнительный) управляет работой ваших моделей и может использовать графический процессор NVIDIA для более быстрых вычислений.

После регистрации вы будете перенаправлены на главную страницу ollama-webui.

Подключение к Ollama API

API-интерфейсы Ollama в стиле REST упрощают интеграцию возможностей ИИ в сторонние клиентские приложения. По умолчанию API доступно по адресу ‘http://localhost:11434’. Чтобы API было доступно, убедитесь, что Ollama работает в фоновом режиме.

Мы можем получить доступ к одной из поддерживаемых конечных точек API для выполнения действия. Например, мы можем сгенерировать завершение для «POST /api/generate» следующим образом:

curl http://localhost:11434/api/generate -d '{
  "model": "llama3",
  "prompt": "Why is the sky blue?"
}'

Мы также можем отправлять HTTP-запросы из наших приложений для использования API. В демонстрационных целях мы можем отправлять запросы с помощью cURL или клиентов API, таких как Postman:

curl http://localhost:11434/api/generate -d '{"model": "gemma2", "prompt": "Why is the sky blue?"}'

При тестировании в Postman с «потоком»: false мы получаем следующий ответ:

Ссылки

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *