Cog 项目介绍
Cog是一款开源工具,专为将机器学习模型打包成标准化、可用于生产的容器而设计。利用Cog,用户可以轻松地将已打包的模型部署到自己的基础设施,或是使用Replicate来进行部署。
项目亮点
-
📦 免除Docker文件的困扰:自己编写
Dockerfile
或许让人困惑,而Cog通过一个简单的配置文件定义环境,并自动生成包含最佳实践的Docker镜像。包括Nvidia基础镜像、依赖项的高效缓存、特定Python版本的安装及合理预设的环境变量等。 -
🤬️ 杜绝CUDA配置的麻烦:Cog可以识别CUDA/cuDNN/PyTorch/Tensorflow/Python的兼容组合,并自动为用户配置。
-
✅ 用标准Python定义模型的输入和输出:Cog会生成OpenAPI模式,并用Pydantic验证输入和输出。
-
🎁 自动HTTP预测服务器:借助FastAPI,根据模型的类型动态生成RESTful HTTP API。
-
🥞 自动队列工作者:对于长时间运行的深度学习模型或批处理,队列是最佳的架构。Cog模型自带此功能。目前支持Redis,未来将支持更多。
-
☁️ 云存储支持:可直接读取和写入Amazon S3与Google Cloud Storage(即将推出)。
-
🚀 生产准备就绪:可部署到任何支持Docker镜像的环境,包括用户自己的基础设施或Replicate。
工作原理
用户可以通过cog.yaml
文件定义模型运行的Docker环境,例如:
build:
gpu: true
system_packages:
- "libgl1-mesa-glx"
- "libglib2.0-0"
python_version: "3.12"
python_packages:
- "torch==2.3"
predict: "predict.py:Predictor"
使用predict.py
文件定义如何在模型上运行预测:
from cog import BasePredictor, Input, Path
import torch
class Predictor(BasePredictor):
def setup(self):
"""将模型载入内存以高效运行多次预测"""
self.model = torch.load("./weights.pth")
def predict(self,
image: Path = Input(description="输入灰度图像")
) -> Path:
"""在模型上运行一次预测"""
processed_image = preprocess(image)
output = self.model(processed_image)
return postprocess(output)
通过命令行运行预测:
$ cog predict -i image=@input.jpg
--> 正在构建Docker镜像...
--> 运行预测...
--> 输出保存至output.jpg
或者,构建Docker镜像以供部署:
$ cog build -t my-colorization-model
--> 正在构建Docker镜像...
--> 构建成功 my-colorization-model:latest
$ 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"}}'
或者通过serve
命令结合构建与运行:
$ cog serve -p 8080
$ curl http://localhost:8080/predictions -X POST \
-H 'Content-Type: application/json' \
-d '{"input": {"image": "https://.../input.jpg"}}'
项目背景
将机器学习模型投入生产对研究人员来说并不容易。虽然Docker能够解决一部分问题,但其复杂性让研究人员望而却步。本项目的创始人Andreas Jansson和Ben Firshman,正是看到了这一需求,才开发出Cog。他们在Spotify与Docker的工作经历中,分别积累了丰富的模型部署经验。
使用需知
- 需要macOS、Linux或Windows 11。Cog支持在这些操作系统上运行。
- 需要Docker。Cog使用Docker来创建模型的容器,因此需要事先安装Docker。如果使用Docker Engine而非Docker Desktop,还需安装Buildx。
用户可以通过Homebrew在macOS上安装Cog:
brew install cog
此外,还可以通过项目提供的安装脚本下载安装最新版本。
升级指南
已安装Homebrew的macOS用户可以通过以下命令升级Cog:
brew upgrade cog
其他用户可以重复使用最初安装的命令来升级Cog至最新版本。
下一步
- 开始使用示例模型
- 开始使用自己的模型
- 了解如何在笔记本环境使用Cog
- 查看在Windows 11环境使用Cog的指导
- 浏览使用Cog的示例
- 使用Cog部署模型
- 掌握定义模型环境的
cog.yaml
参考 - 熟悉预测接口的参考文档
- 了解如何为模型添加微调API的训练接口参考
- 了解如何使用模型服务的HTTP API参考
如需帮助,欢迎加入我们的Discord频道。项目致力于欢迎各种形式的贡献,感谢所有支持和帮助Cog成长的贡献者们。