Как стать автором
Обновить

Docker Model Runner: запускаем ИИ-модели локально

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров2.7K

Компания Docker выпустила новую интересную функцию в бета-версии, которая должна заинтересовать всех, кто работает с генеративным ИИ. Docker Model Runner позволяет загружать, запускать и управлять ИИ-моделями прямо на вашем локальном компьютере без необходимости настройки сложной инфраструктуры.

Что такое Docker Model Runner и зачем он нужен?

Docker Model Runner — это плагин для Docker Desktop, который существенно упрощает работу с ИИ-моделями.

Функция находится на стадии бета-тестирования, доступна в Docker Desktop версии 4.40 и выше, и пока поддерживается только на Mac с процессорами Apple Silicon.

Плагин позволяет:

  • Загружать модели из Docker Hub (из пространства имён ai)

  • Запускать ИИ-модели напрямую из командной строки

  • Управлять локальными моделями (добавлять, просматривать, удалять)

  • Взаимодействовать с моделями через заданные промпты или в режиме чата

Одно из ключевых преимуществ Docker Model Runner — оптимизация использования ресурсов. Модели загружаются из Docker Hub только при первом использовании и хранятся локально. При этом они загружаются в память только во время выполнения запроса и выгружаются, когда не используются. Поскольку современные ИИ-модели могут быть довольно объёмными, первоначальная загрузка может занять некоторое время, но затем они кешируются локально для быстрого доступа.

Ещё одним важным преимуществом является поддержка OpenAI-совместимых API, что значительно упрощает интеграцию с существующими приложениями.

Основные команды Docker Model Runner

Проверка статуса

$ docker model status
Docker Model Runner is running

Просмотр доступных команд

$ docker model help
Usage:  docker model COMMAND

Docker Model Runner

Commands:
  inspect     Display detailed information on one model
  list        List the available models that can be run with the Docker Model Runner
  pull        Download a model
  rm          Remove a model downloaded from Docker Hub
  run         Run a model with the Docker Model Runner
  status      Check if the Docker Model Runner is running
  version     Show the Docker Model Runner version

Run 'docker model COMMAND --help' for more information on a command.

Загрузка модели

$ docker model pull ai/smollm2
Downloaded: 0.00 MB
Model ai/smollm2 pulled successfully

Во время загрузки показывает правильный размер, но после загрузки 0.00 MB, но как я и писал выше, данная фича еще на бета тестировании

Просмотр локальных моделей

Пример вывода:

$ docker model list
MODEL       PARAMETERS  QUANTIZATION    ARCHITECTURE  MODEL ID      CREATED      SIZE
ai/smollm2  361.82 M    IQ2_XXS/Q4_K_M  llama         354bf30d0aa3  2 weeks ago  256.35 MiB

Запуск модели

С однократным промптом

$ docker model run ai/smollm2 "Привет"
Откривайте ввысокое, что наше входные данные.

В режиме диалога

$ docker model run ai/smollm2
Interactive chat mode started. Type '/bye' to exit.
> Привет
Привет, my friend!
> /bye
Chat session ended.

Удаление модели

$ docker model rm ai/smollm2
Model ai/smollm2 removed successfully

Интеграция Docker Model Runner в ваши приложения

Docker Model Runner предоставляет OpenAI-совместимые API-эндпоинты, что позволяет легко интегрировать его с существующими приложениями. Вот пример вызова эндпоинта chat/completions из контейнера:

#!/bin/sh

curl http://model-runner.docker.internal/engines/llama.cpp/v1/chat/completions \
    -H "Content-Type: application/json" \
    -d '{
        "model": "ai/smollm2",
        "messages": [
            {
                "role": "system",
                "content": "You are a helpful assistant."
            },
            {
                "role": "user",
                "content": "Напиши 500 слов о падении Рима."
            }
        ]
    }'

Вы также можете использовать Docker Model Runner из хоста через сокет Docker:

#!/bin/sh

curl --unix-socket $HOME/.docker/run/docker.sock \
    localhost/exp/vDD4.40/engines/llama.cpp/v1/chat/completions \
    -H "Content-Type: application/json" \
    -d '{
        "model": "ai/smollm2",
        "messages": [
            {
                "role": "system",
                "content": "You are a helpful assistant."
            },
            {
                "role": "user",
                "content": "Напиши 500 слов о падении Рима."
            }
        ]
    }'

Быстрое начало работы с примером GenAI-приложения

Если вы хотите быстро попробовать Docker Model Runner с готовым приложением генеративного ИИ, выполните следующие шаги:

  1. Клонируйте репозиторий с примером:

    $ git clone https://github.com/docker/hello-genai.git
  2. В терминале перейдите в директорию hello-genai.

  3. Запустите run.sh для загрузки выбранной модели и запуска приложения.

  4. Откройте приложение в браузере по адресу, указанному в README репозитория.

Доступные API-эндпоинты

После включения Docker Model Runner доступны следующие API:

#### Внутри контейнеров ####

http://model-runner.docker.internal/

    # Управление моделями
    POST /models/create
    GET /models
    GET /models/{namespace}/{name}
    DELETE /models/{namespace}/{name}

    # OpenAI-совместимые эндпоинты
    GET /engines/llama.cpp/v1/models
    GET /engines/llama.cpp/v1/models/{namespace}/{name}
    POST /engines/llama.cpp/v1/chat/completions
    POST /engines/llama.cpp/v1/completions
    POST /engines/llama.cpp/v1/embeddings
    Примечание: Можно также опустить llama.cpp.
    Например, POST /engines/v1/chat/completions.

#### Внутри или вне контейнеров (на хосте) ####

Те же эндпоинты на /var/run/docker.sock

    # Пока функция в бета-версии
    С префиксом /exp/vDD4.40

Известные проблемы

Команда docker model не распознается

Если вы получаете ошибку:

docker: 'model' is not a docker command

Это означает, что Docker не может найти плагин. Решение:

$ ln -s /Applications/Docker.app/Contents/Resources/cli-plugins/docker-model ~/.docker/cli-plugins/docker-model

Нет защиты от запуска чрезмерно больших моделей

В настоящее время Docker Model Runner не включает защиту от запуска моделей, превышающих доступные ресурсы системы. Попытка запустить слишком большую модель может привести к серьезным замедлениям или временной неработоспособности системы.

Ошибки при неудачных загрузках

Если загрузка модели не удалась, команда docker model run все равно может запустить интерфейс чата, хотя модель фактически недоступна. В этом случае рекомендуется вручную повторить команду docker model pull.

Как включить или отключить функцию

Docker Model Runner включен по умолчанию в Docker Desktop. Если вы хотите отключить эту функцию:

  1. Откройте настройки Docker Desktop

  2. Перейдите на вкладку Beta в разделе Features in development

  3. Снимите флажок Enable Docker Model Runner

  4. Нажмите Apply & restart

Если не видно флажка Enable Docker Model Runner, то включите экспериментальные фичи

Заключение

Docker Model Runner предоставляет удобный способ работы с ИИ-моделями локально, что особенно полезно для разработчиков, которые хотят экспериментировать с генеративным ИИ без необходимости подключения к облачным API или настройки сложной инфраструктуры.

Функция находится в бета-версии, поэтому могут возникать некоторые проблемы, но Docker активно работает над их устранением и принимает обратную связь через ссылку Give feedback рядом с настройкой Enable Docker Model Runner.

Если вы работаете с генеративным ИИ или просто хотите попробовать локальные модели без лишних сложностей, Docker Model Runner — отличный инструмент, который стоит добавить в свой арсенал.

Теги:
Хабы:
+2
Комментарии7

Публикации

Работа

DevOps инженер
30 вакансий

Ближайшие события