cog - Cog は、機械学習モデルを標準の運用対応コンテナーにパッケージ化できるオープン ソース ツールです。

(Containers for machine learning)

Created at: 2021-02-27 07:43:09
Language: Go
License: Apache-2.0

Cog:機械学習用のコンテナ

Cogは、機械学習モデルを標準の本番環境対応コンテナにパッケージ化できるオープンソースツールです。

パッケージ化されたモデルを独自のインフラストラクチャまたは複製にデプロイできます。

ハイライト

  • 📦 苦痛のないDockerコンテナ。あなた自身

    Dockerfile
    を書くことは当惑するプロセスである場合があります。Cogを使用すると、単純な構成ファイルを使用して環境を定義し、Nvidiaベースイメージ、依存関係の効率的なキャッシュ、特定のPythonバージョンのインストール、適切な環境変数のデフォルトなど、すべてのベストプラクティスを備えたDockerイメージを生成します。

  • 🤬️ これ以上のCUDA地獄はありません。Cogは、互換性のあるCUDA / cuDNN / PyTorch / Tensorflow / Pythonコンボを認識しており、すべてを正しく設定します。

  • 標準のPythonを使用してモデルの入力と出力を定義します。次に、CogはOpenAPIスキーマを生成し、Pydanticを使用して入力と出力を検証します。

  • 🎁 自動HTTP予測サーバー:モデルのタイプは、FastAPIを使用してRESTfulHTTPAPIを動的に生成するために使用されます。

  • 🥞 自動キューワーカー。長時間実行される深層学習モデルまたはバッチ処理は、キューを使用して設計するのが最適です。コグモデルはこれを箱から出して行います。Redisは現在サポートされており、さらに多くのパイプラインがあります。

  • ☁️ クラウドストレージ。ファイルは、AmazonS3およびGoogleCloudStorageに直接読み書きできます。(近日公開。)

  • 🚀 生産の準備ができました。Dockerイメージが実行される場所にモデルをデプロイします。独自のインフラストラクチャ、または複製

使い方

モデルを実行するDocker環境を次のように定義します

cog.yaml

build:
  gpu: true
  system_packages:
    - "libgl1-mesa-glx"
    - "libglib2.0-0"
  python_version: "3.8"
  python_packages:
    - "torch==1.8.1"
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,
          input: Path = Input(title="Grayscale input image")
    ) -> Path:
        """Run a single prediction on the model"""
        processed_input = preprocess(input)
        output = self.model(processed_input)
        return postprocess(output)

これで、このモデルで予測を実行できます。

$ cog predict -i @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ですが、それを機能させるのは非常に複雑です:Dockerfiles、前処理/後処理、Flaskサーバー、CUDAバージョン。多くの場合、研究者はエンジニアと一緒に座って、気の毒なものを配備する必要があります。

アンドレアスベンはコグを作成しました。AndreasはSpotifyで働いていました。そこでは、Dockerを使用してMLモデルを構築およびデプロイするためのツールを構築しました。ベンはDockerで働き、DockerComposeを作成しました。

Spotifyに加えて、他の企業もDockerを使用して機械学習モデルを構築およびデプロイしていることに気付きました。Uberなども同様のシステムを構築しています。そこで、他の人もこれを行えるように、オープンソースバージョンを作成しています。

使用に興味がある場合、または私たちと協力したい場合は、私たちに連絡してください。私たちはDiscordに参加しているか、 [email protected]にメールを送信します。

前提条件

  • macOSまたはLinux。CogはmacOSとLinuxで動作しますが、現在Windowsをサポートしていません。
  • Docker。CogはDockerを使用してモデルのコンテナーを作成します。Cogを実行する前に、Dockerをインストールする必要があります。

インストール

まず、Dockerをまだインストールしていない場合はインストールします。次に、これをターミナルで実行します。

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がインストールされていて、新しいバージョンに更新したい場合:

sudo rm $(which 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

次のステップ

助けが必要?

#cogonDiscordにご参加ください。

寄稿者

これらの素晴らしい人々に感謝します(絵文字キー):


ベン・ファーシュマン

💻 📖

アンドレアス・ヤンソン

💻 📖

Zeke Sikelianos

💻 📖 🔧

ロリー・バーン

💻 📖 ⚠️

Michael Floering

💻 📖 🤔

ベン・エヴァンス

📖

シャシャンクアガルワル

💻 📖

VictorXLR

💻 📖 ⚠️

ハングアンナ

🐛

ブライアンホイットマン

🐛

JimothyJohn

🐛

ericguizzo

🐛

ドミニク・バゴット

💻 ⚠️

ダシールスタンダー

🐛 💻 ⚠️

Shuwei Liang

🐛 💬

エリック・アラム

🤔

IvánPerdomo

🐛

このプロジェクトは、すべての貢献者の仕様に従います。どんな種類の貢献も歓迎します!