机器学习容器
项目描述
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):
"""Load the model into memory to make running multiple predictions efficient"""
self.model = torch.load("./weights.pth")
# The arguments and types the model takes as input
def predict(self,
image: Path = Input(description="Grayscale input image")
) -> Path:
"""Run a single prediction on the model"""
processed_image = preprocess(image)
output = self.model(processed_image)
return postprocess(output)
现在,您可以运行此模型的预测
$ cog predict -i image=@input.jpg
--> Building Docker image...
--> Running Prediction...
--> Output written to output.jpg
或,构建用于部署的Docker镜像
$ cog build -t my-colorization-model
--> Building Docker image...
--> Built 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"}}'
我们为什么要构建这个?
研究人员要将机器学习模型推向生产非常困难。
解决方案的一部分是Docker,但让它正常工作非常复杂:Dockerfile、预处理/后处理、Flask服务器、CUDA版本。更多时候,研究人员必须与工程师坐下来才能部署这个该死的东西。
Andreas和Ben创建了Cog。Andreas曾在Spotify工作,在那里他使用Docker构建和部署机器学习模型的工具。Ben曾在Docker工作,创建了Docker Compose。
我们意识到,除了Spotify之外,其他公司也使用Docker来构建和部署机器学习模型。例如Uber和其他公司已经建立了类似的系统。因此,我们正在创建一个开源版本,这样其他人也可以这样做。
如果您有兴趣使用它或想与我们合作,请联系我们。我们在Discord上或通过team@replicate.com给我们发邮件。
先决条件
- macOS、Linux或Windows 11。Cog在macOS、Linux和Windows 11上工作,支持WSL 2
- Docker。Cog使用Docker为您的模型创建一个容器。在您运行Cog之前,您需要安装Docker。如果您安装了Docker Engine而不是Docker Desktop,您还需要安装Buildx。
安装
如果您使用macOS,您可以使用Homebrew安装Cog
brew install cog
您还可以使用我们的安装脚本下载并安装最新版本
# fish shell
sh (curl -fsSL https://cog.run/install.sh | psub)
# bash, zsh, and other shells
sh <(curl -fsSL https://cog.run/install.sh)
# download with wget and run in a separate command
wget -qO- https://cog.run/install.sh
sh ./install.sh
您可以通过在终端中运行以下命令从GitHub直接手动安装Cog的最新版本
sudo curl -o /usr/local/bin/cog -L "https://github.com/replicate/cog/releases/latest/download/cog_$(uname -s)_$(uname -m)"
sudo chmod +x /usr/local/bin/cog
或者,您可以从源代码构建Cog并使用以下命令安装它
make
sudo make install
或者如果您在docker上
RUN sh -c "INSTALL_DIR=\"/usr/local/bin\" SUDO=\"\" $(curl -fsSL https://cog.run/install.sh)"
升级
如果您使用macOS并且之前使用Homebrew安装了Cog,请运行以下命令
brew upgrade cog
否则,您可以通过运行安装它时使用的相同命令来升级到最新版本。
下一步
- 从示例模型开始
- 使用您自己的模型开始
- 使用笔记本与Cog协同工作
- 使用Cog与Windows 11协同工作
- 看看Cog使用的一些示例
- 使用Cog部署模型
cog.yaml
参考文档 了解如何定义您的模型环境- 预测接口参考 了解
Predictor
接口的工作方式 - 训练接口参考 了解如何将微调API添加到您的模型
- HTTP API参考 了解如何使用模型提供的HTTP API
需要帮助?
贡献者 ✨
感谢这些优秀的人们 (表情符号键)
本项目遵循all-contributors规范。欢迎各种类型的贡献!
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源代码分发
构建分发
cog-0.9.24.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 7c28589ab80af1563f552cf6fe57b72d14fbc6fb087f22820ae193ce1aabab62 |
|
MD5 | d1aae6fb9992f968d51af01eb676d2e7 |
|
BLAKE2b-256 | 5f2de01e3a95e3a7a6cd92ae717835c308c515d6d132226b83cbe603a69a5ac5 |
cog-0.9.24-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | b3814bfc4c32c5e59fcc569c863a37c98a8ad6bac84ea7485f0b1299ff075e02 |
|
MD5 | 1938691bff5a6a602b4b018e8f6ea4d5 |
|
BLAKE2b-256 | b9f1a40b314b425667c8f0dbe9cc0289dd73055d9781619c09ea6a58cc9b4b2f |