Cog ist ein Open-Source-Tool, mit dem Sie Modelle für maschinelles Lernen in einen standardmäßigen, produktionsbereiten Container packen können.
Sie können Ihr Paketmodell in Ihrer eigenen Infrastruktur oder zum Replizieren bereitstellen.
Docker-Container ohne Probleme. Das Schreiben einer eigenen Dockerfile
kann ein verwirrender Prozess sein. Mit Cog definieren Sie Ihre Umgebung mit einer einfachen Konfigurationsdatei und es generiert ein Docker-Image mit allen Best Practices: Nvidia-Basisimages, effizientes Caching von Abhängigkeiten, Installation bestimmter Python-Versionen, sinnvolle Standardeinstellungen für Umgebungsvariablen und so weiter.
Keine CUDA-Hölle mehr. Cog weiß, welche CUDA/cuDNN/PyTorch/Tensorflow/Python-Kombinationen kompatibel sind und richtet alles richtig für Sie ein.
Definieren Sie die Ein- und Ausgaben für Ihr Modell mit Standard-Python. Anschließend generiert Cog ein OpenAPI-Schema und validiert die Ein- und Ausgaben mit Pydantic.
Automatischer HTTP-Vorhersageserver : Die Typen Ihres Modells werden verwendet, um mithilfe von FastAPI dynamisch eine RESTful-HTTP-API zu generieren.
Automatischer Warteschlangenarbeiter. Langfristige Deep-Learning-Modelle oder Stapelverarbeitung lassen sich am besten mit einer Warteschlange gestalten. Zahnradmodelle erledigen dies sofort. Redis wird derzeit unterstützt, weitere sind in Vorbereitung.
Cloud-Speicher. Dateien können direkt in Amazon S3 und Google Cloud Storage gelesen und geschrieben werden. (Kommt bald.)
Bereit für die Produktion. Stellen Sie Ihr Modell überall dort bereit, wo Docker-Images ausgeführt werden. Ihre eigene Infrastruktur oder Replizieren.
Definieren Sie mit cog.yaml
die Docker-Umgebung, in der Ihr Modell ausgeführt wird:
build: gpu: true system_packages: - „libgl1-mesa-glx“ - „libglib2.0-0“ python_version: „3.12“ python_packages: - „torch==2.3“predict: „predict.py:Predictor“
Definieren Sie mit predict.py
wie Vorhersagen für Ihr Modell ausgeführt werden:
from cog import BasePredictor, Input, Pathimport Torchclass Predictor(BasePredictor): def setup(self): """Laden Sie das Modell in den Speicher, um die Ausführung mehrerer Vorhersagen effizient zu gestalten""" self.model = Torch.load("./weights. pth") # Die Argumente und Typen, die das Modell als Eingabe verwendet def Predict(self, image: Path = Input(description="Grayscale input image") ) -> Pfad: „Eine einzelne Vorhersage für das Modell ausführen““ „processed_image = preprocess(image) output = self.model(processed_image) return postprocess(output)“
Jetzt können Sie Vorhersagen für dieses Modell ausführen:
$ cog predict -i [email protected]> Docker-Image erstellen...--> Vorhersage ausführen...--> Ausgabe in Output.jpg geschrieben
Oder erstellen Sie ein Docker-Image für die Bereitstellung:
$ cog build -t my-colorization-model--> Docker-Image erstellen...--> My-colorization-model erstellt: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"}}'
Für Forscher ist es wirklich schwierig, Modelle für maschinelles Lernen in die Produktion zu überführen.
Ein Teil der Lösung ist Docker, aber es ist so komplex, es zum Laufen zu bringen: Docker-Dateien, Vor-/Nachbearbeitung, Flask-Server, CUDA-Versionen. Meistens muss sich der Forscher mit einem Ingenieur zusammensetzen, um das verdammte Ding zum Einsatz zu bringen.
Andreas und Ben haben Cog gegründet. Andreas arbeitete früher bei Spotify, wo er Tools zum Erstellen und Bereitstellen von ML-Modellen mit Docker entwickelte. Ben arbeitete bei Docker, wo er Docker Compose entwickelte.
Wir stellten fest, dass neben Spotify auch andere Unternehmen Docker zum Erstellen und Bereitstellen von Modellen für maschinelles Lernen verwendeten. Uber und andere haben ähnliche Systeme gebaut. Deshalb erstellen wir eine Open-Source-Version, damit auch andere Leute dies tun können.
Sprechen Sie uns an, wenn Sie daran interessiert sind, es zu nutzen oder mit uns zusammenarbeiten möchten. Wir sind auf Discord oder senden Sie uns eine E-Mail an [email protected].
macOS, Linux oder Windows 11 . Cog funktioniert auf macOS, Linux und Windows 11 mit WSL 2
Docker . Cog verwendet Docker, um einen Container für Ihr Modell zu erstellen. Sie müssen Docker installieren, bevor Sie Cog ausführen können. Wenn Sie Docker Engine anstelle von Docker Desktop installieren, müssen Sie auch Buildx installieren.
Wenn Sie macOS verwenden, können Sie Cog mit Homebrew installieren:
Brauen, Zahnrad einbauen
Sie können die neueste Version auch mit unserem Installationsskript herunterladen und installieren:
# Fish Shellsh (curl -fsSL https://cog.run/install.sh | psub)# Bash, ZSH und andere Shellssh <(curl -fsSL https://cog.run/install.sh)# mit wget herunterladen und in einem separaten Befehl ausführenwget -qO- https://cog.run/install.sh sh ./install.sh
Sie können die neueste Version von Cog manuell direkt von GitHub installieren, indem Sie die folgenden Befehle in einem Terminal ausführen:
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
Alternativ können Sie Cog aus dem Quellcode erstellen und mit den folgenden Befehlen installieren:
makesudo make install
Oder wenn Sie Docker verwenden:
RUN sh -c "INSTALL_DIR="/usr/local/bin" SUDO="" $(curl -fsSL https://cog.run/install.sh)"
Wenn Sie macOS verwenden und Cog zuvor mit Homebrew installiert haben, führen Sie Folgendes aus:
Brauen-Upgrade-Zahnrad
Andernfalls können Sie ein Upgrade auf die neueste Version durchführen, indem Sie dieselben Befehle ausführen, mit denen Sie sie installiert haben.
Beginnen Sie mit einem Beispielmodell
Beginnen Sie mit Ihrem eigenen Modell
Verwendung von Cog mit Notebooks
Verwendung von Cog mit Windows 11
Schauen Sie sich einige Beispiele für die Verwendung von Cog an
Stellen Sie Modelle mit Cog bereit
cog.yaml
Referenz erfahren Sie, wie Sie die Umgebung Ihres Modells definieren
Referenz zur Predictor-Schnittstelle, um zu erfahren, wie die Predictor
Schnittstelle funktioniert
Referenz zur Trainingsschnittstelle, um zu erfahren, wie Sie Ihrem Modell eine Feinabstimmungs-API hinzufügen
HTTP-API-Referenz, um zu erfahren, wie Sie die HTTP-API verwenden, die von Modellen bereitgestellt wird
Begleiten Sie uns bei #cog auf Discord.