>_ DevTrendsde

Sprache

Start

Sprachen

Bereiche

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embedded Sicherheit
Python

Vision für Hobbyprojekte ohne GPU-Cluster

Jedes Mal, wenn Sie Bild­er­ken­nung oder foto­ba­sierte Frage-Antwort-Funk­tio­nen zu einem Projekt hinzufügen müssen, greifen Ihre Hände zu Cloud-APIs. Aber für jeden OpenAI-Aufruf zu bezahlen oder Anfragen über Dritt­an­bie­ter-Dienste zu leiten, ist nicht immer wün­schens­wert. Ein schweres multimodales Modell lokal auszuführen ist ebenfalls nicht einfach: Die meisten Open-Source-Lösungen erfordern GPUs mit 24 GB Speicher oder mehr.

Repository moondream löst genau dieses Problem. Entwickler von m87-labs haben ein kompaktes multimodales Modell zusam­men­ge­stellt, das Bilder selbst­be­wusst parst, dabei nur wenige Giga­byte wiegt und selbst auf beschei­de­ner Hardware flüs­sig läuft.

Was moondream kann

Das Modell nimmt ein Bild zusammen mit einer Text­an­frage als Eingabe ent­ge­gen und gibt eine aus­sa­ge­kräf­tige Antwort in natür­li­cher Sprache zurück. Das Repository enthält zwei Versionen:

  • moondream 2B mit zwei Milliarden Para­me­tern für Standard­auf­ga­ben, einschließ­lich Caption-Gene­rie­rung, Visual Question Answering und Objekt­er­ken­nung
  • moondream 0.5B mit 500 Millionen Para­me­tern, kompri­miert durch Distil­lie­rung für den Betrieb auf Smart­pho­nes, Ein­pla­ti­nen­com­pu­tern und Micro­ser­vices mit minimalem RAM-Verbrauch

Hier sind einige Beispiele aus dem Repository:

A girl eating a hamburger

Wenn Sie das Modell fragen, was die Person auf dem Foto macht, antwortet es: "Das Mädchen sitzt an einem Tisch und isst einen großen Hamburger". Als nach der Haarfarbe gefragt wurde, gibt es klar an, dass sie weiß ist.

Das zweite Beispiel zeigt eine detail­lier­te Aufschlüs­se­lung der Umgebung:

Server rack

Als gefragt wurde "Was ist das?", erzeugt moondream einen detail­lier­ten Absatz: Es erkennt den Server-Rack, bemerkt die ange­schlos­se­nen Strom­ka­bel, den Teppich auf dem Boden und ein nahele­gen­des Sofa, sowie die Back­stein­wand im Hinter­grund.

Lokale Ausführung

Das Modell ist in Python geschrie­ben und inte­griert sich mit nur wenigen Code­zeilen in Projekte. Für die grund­le­gende Inferenz werden nur stan­dard­mä­ßige Hugging Face-Biblio­the­ken benötigt.

from PIL import Image
from transformers import AutoModelForCausalLM, AutoTokenizer

model_id = "vikhyatk/moondream2"
revision = "2024-08-26"

model = AutoModelForCausalLM.from_pretrained(
    model_id, 
    trust_remote_code=True, 
    revision=revision
)
tokenizer = AutoTokenizer.from_pretrained(model_id, revision=revision)

image = Image.open("photo.jpg")
enc_image = model.encode_image(image)

answer = model.answer_question(enc_image, "Describe this image in detail.", tokenizer)
print(answer)

Die 0.5B-Version läuft sogar auf bloßer CPU ohne kritische Verzö­ge­run­gen. Wenn lokale Ressourcen gar nicht verfügbar sind, haben die Autoren Deploy­ment-Beispiele über die server­lose Platt­form Modal vorbereitet.

Wo dies in der Praxis nützlich ist

Die geringe Größe eröffnet Szenarien, in denen große Modelle einfach nicht ins Budget oder die Latenz­an­for­de­run­gen passen:

  1. Auto­ma­ti­sches Tagging und Captioning in lokalen Medienarchiven.
  2. Inhalts­mo­de­ra­tion in Bots und Web­for­mu­la­ren direkt auf dem Anwen­dungs­ser­ver.
  3. Robotik und DIY-Geräte basie­rend auf Raspberry Pi, wo kein Zugang zu sta­bi­lem Internet besteht.
  4. Schnelle Bild­fil­te­rung vor dem Senden an schwe­re­re Nach­ver­ar­bei­tung.

Natürlich sollten Sie nicht erwarten, dass ein Modell mit halber Milliarde Para­me­ter komplexe Info­gra­fi­ken versteht oder hand­schrift­li­chen Text liest. Aber für grund­le­gende Bild­na­vi­ga­tion und Szenen­be­schrei­bung leis­tet moondream her­vor­ra­gende Arbeit.

Wenn Sie ein schnelles und leichtes VLM-Modul benötigen, das nicht das Budget für Server sprengt und sogar auf einem Laptop läuft, verdient moondream definitiv einen Test in einer Sandbox. Sie können das Modell direkt im Browser auf der offi­zi­el­len Website des Projekts im Playground-Bereich ausprobieren.

Ähnliche Projekte