Cog — это инструмент с открытым исходным кодом, который позволяет упаковывать модели машинного обучения в стандартный, готовый к использованию контейнер.
Вы можете развернуть упакованную модель в своей собственной инфраструктуре или в репликации.
Docker-контейнеры без проблем. Написание собственного Dockerfile
может оказаться запутанным процессом. С Cog вы определяете свою среду с помощью простого файла конфигурации, и он генерирует образ Docker со всеми лучшими практиками: базовые образы Nvidia, эффективное кэширование зависимостей, установка определенных версий Python, разумные значения переменных среды по умолчанию и т. д.
Никакого ада CUDA. Cog знает, какие комбинации CUDA/cuDNN/PyTorch/Tensorflow/Python совместимы, и настроит все правильно для вас.
Определите входные и выходные данные для вашей модели с помощью стандартного Python. Затем Cog генерирует схему OpenAPI и проверяет входные и выходные данные с помощью Pydantic.
Сервер автоматического прогнозирования HTTP . Типы вашей модели используются для динамического создания HTTP API RESTful с использованием FastAPI.
Автоматический работник очереди. Длительные модели глубокого обучения или пакетную обработку лучше всего проектировать с использованием очереди. Модели Cog делают это «из коробки». Redis в настоящее время поддерживается, и в разработке находятся дополнительные возможности.
Облачное хранилище. Файлы можно читать и записывать непосредственно в Amazon S3 и Google Cloud Storage. (Вскоре.)
Готов к производству. Разверните свою модель везде, где запускаются образы Docker. Ваша собственная инфраструктура или Репликация.
Определите среду Docker, в которой работает ваша модель, с помощью cog.yaml
:
сборка: графический процессор: правда system_packages: - "libgl1-mesa-glx" - "libglib2.0-0" python_version: "3.12" python_packages: - "torch==2.3"предсказать: "predict.py:Predictor"
Определите, как прогнозы выполняются в вашей модели с помощью predict.py
:
from cog import BasePredictor, Input, Pathimport torchclass Predictor(BasePredictor): def setup(self): """Загрузите модель в память, чтобы сделать выполнение нескольких прогнозов эффективным""" self.model = torch.load("./weights. pth") # Аргументы и типы, которые модель принимает в качестве входных данных def предсказывают(self, image: Path = Input(description="Входное изображение в оттенках серого") ) -> Путь: """Выполнить одиночный прогноз по модели"""processed_image = preprocess(image) output = self.model(processed_image) return postprocess(output)
Теперь вы можете выполнять прогнозы по этой модели:
$ cog Predict -i [email protected] --> Создание образа Docker... --> Выполнение прогнозирования... --> Вывод записывается в файл output.jpg
Или создайте образ Docker для развертывания:
$ cog build -t my-colorization-model --> Создание образа Docker...--> Построена моя модель-раскраски: последний $ docker run -d -p 5000:5000 --gpus all my-colorization-model$ curl http://localhost:5000/predictions -X POST -H 'Content-Type: application/json' -d '{"input": {"image": "https://.../input. jpg"}}'
Исследователям действительно сложно запустить модели машинного обучения в производство.
Частью решения является Docker, но заставить его работать очень сложно: Dockerfiles, предварительная/постобработка, серверы Flask, версии CUDA. Чаще всего исследователю приходится встречаться с инженером, чтобы развернуть эту чертову штуку.
Андреас и Бен создали Cog. Андреас раньше работал в Spotify, где создавал инструменты для создания и развертывания моделей машинного обучения с помощью Docker. Бен работал в Docker, где создал Docker Compose.
Мы поняли, что помимо Spotify другие компании также используют Docker для создания и развертывания моделей машинного обучения. Uber и другие компании создали аналогичные системы. Итак, мы делаем версию с открытым исходным кодом, чтобы другие люди тоже могли это делать.
Свяжитесь с нами, если вы заинтересованы в его использовании или хотите сотрудничать с нами. Мы зарегистрированы в Discord или напишите нам по адресу [email protected].
macOS, Linux или Windows 11 . Cog работает на macOS, Linux и Windows 11 с WSL 2.
Докер . Cog использует Docker для создания контейнера для вашей модели. Прежде чем вы сможете запустить Cog, вам необходимо установить Docker. Если вы устанавливаете Docker Engine вместо Docker Desktop, вам также потребуется установить Buildx.
Если вы используете macOS, вы можете установить Cog с помощью Homebrew:
заварить установку винтика
Вы также можете загрузить и установить последнюю версию, используя наш скрипт установки:
# fishshellsh (curl -fsSL https://cog.run/install.sh | psub)# bash, zsh и другие оболочкиsh <(curl -fsSL https://cog.run/install.sh)# загрузка с помощью wget и запустите отдельной командой wget -qO- https://cog.run/install.sh ш ./install.sh
Вы можете вручную установить последнюю версию Cog непосредственно из GitHub, выполнив в терминале следующие команды:
sudo curl -o /usr/local/bin/cog -L "https://github.com/reulate/cog/releases/latest/download/cog_$(uname -s)_$(uname -m)" sudo chmod +x /usr/local/bin/cog
Альтернативно вы можете собрать Cog из исходного кода и установить его с помощью этих команд:
makesudo сделать установку
Или, если вы используете докер:
RUN sh -c "INSTALL_DIR="/usr/local/bin" SUDO="" $(curl -fsSL https://cog.run/install.sh)"
Если вы используете macOS и ранее установили Cog с Homebrew, выполните следующее:
варить обновление винтика
В противном случае вы можете обновиться до последней версии, выполнив те же команды, которые вы использовали для ее установки.
Начните с примера модели
Начните работу со своей собственной моделью
Использование Cog с блокнотами
Использование Cog с Windows 11
Взгляните на несколько примеров использования Cog
Развертывание моделей с помощью Cog
Справочник cog.yaml
чтобы узнать, как определить среду вашей модели.
Справочник по интерфейсу прогнозирования, чтобы узнать, как работает интерфейс Predictor
Справочник по интерфейсу обучения, позволяющий узнать, как добавить API тонкой настройки в вашу модель.
Справочник по HTTP API, чтобы узнать, как использовать HTTP API, который обслуживают модели.
Присоединяйтесь к нам в #cog в Discord.