Allgemeine Einführung
Aana SDK ist ein von Mobius Labs entwickeltes Open-Source-Framework, benannt nach dem Malayalam-Wort "ആന" (Elefant). Es hilft Entwicklern bei der schnellen Bereitstellung und Verwaltung multimodaler KI-Modelle, die unter anderem die Verarbeitung von Text, Bildern, Audio und Video unterstützen.Aana SDK basiert auf dem Ray-Framework für verteiltes Rechnen und ist auf Zuverlässigkeit, Skalierbarkeit und Effizienz ausgelegt. Entwickler können damit auf einfache Weise Anwendungen von Standalone- bis hin zu Cluster-Anwendungen erstellen, wie z. B. Videotranskription, Bildbeschreibung oder intelligente Chat-Tools.
Funktionsliste
- Unterstützung für multimodale Daten: die Fähigkeit, Text, Bilder, Audio und Video gleichzeitig zu verarbeiten.
- Modellbereitstellung und Skalierung: Modelle für maschinelles Lernen können auf einer einzelnen Maschine oder in einem Cluster bereitgestellt werden.
- Automatisch generierte APIs: Automatisches Erstellen und Validieren von APIs auf der Grundlage definierter Endpunkte.
- Streaming-Ausgabe in Echtzeit: unterstützt Streaming-Ergebnisse für Echtzeitanwendungen und große Sprachmodelle.
- Vordefinierte Datentypen: Integrierte Unterstützung für gängige Datentypen wie Bild, Video usw.
- Warteschlange für Hintergrundaufgaben: Endpunktaufgaben laufen automatisch im Hintergrund ohne zusätzliche Konfiguration.
- Integration mehrerer Modelle: Whisper, vLLM, Hugging Face Transformers, etc. werden unterstützt.
- Automatische Dokumentationserstellung: Automatische Erstellung von Anwendungsdokumentation auf der Grundlage von Endpunkten.
Hilfe verwenden
Einbauverfahren
Es gibt zwei Möglichkeiten, Aana SDK zu installieren, PyPI und GitHub, hier sind die Schritte:
- Vorbereiten der Umgebung
- Benötigt Python 3.8 oder höher.
- Es wird empfohlen, PyTorch manuell zu installieren (>= 2.1) und dabei die passende Version für Ihr System zu wählen (siehe https://pytorch.org/get-started/locally/). Andernfalls kann es sein, dass die Standardinstallation die Vorteile des Grafikprozessors nicht voll ausschöpft.
- Wenn Sie einen Grafikprozessor verwenden, empfiehlt es sich, die Flash Attention Bibliothek zu installieren, um die Leistung zu verbessern (siehe https://github.com/Dao-AILab/flash-attention).
- Installation über PyPI
- Führen Sie den folgenden Befehl aus, um die Kernabhängigkeiten zu installieren:
pip install aana
- Installieren Sie alle zusätzlichen Abhängigkeiten, um die volle Funktionalität zu gewährleisten:
pip install aana[all]
- Weitere Optionen sind
vllm
(Sprachmodellierung),asr
(Spracherkennung),transformers
(Wandlermodell), usw., je nach Bedarf.
- Führen Sie den folgenden Befehl aus, um die Kernabhängigkeiten zu installieren:
- Installation über GitHub
- Klon-Lagerhaus:
git clone https://github.com/mobiusml/aana_sdk.git cd aana_sdk
- Installation mit Poetry (Poetry >= 2.0 empfohlen, siehe https://python-poetry.org/docs/#installation):
poetry install --extras all
- Entwicklungsumgebungen können Testabhängigkeiten hinzufügen:
poetry install --extras all --with dev,tests
- Klon-Lagerhaus:
- Überprüfen der Installation
- Einfuhr
python -c "import aana; print(aana.__version__)"
Wenn die Versionsnummer zurückgegeben wird, ist der Vorgang erfolgreich.
- Einfuhr
Wie zu verwenden
Das Herzstück des Aana SDK sind Deployments und Endpoints. Deployments laden das Modell und Endpunkte definieren die Funktionalität. Im Folgenden finden Sie ein Beispiel für die Videotranskription:
- Erstellen einer neuen Anwendung
- Neuer Ordner (z.B.
my_app
), erstellenapp.py
. - Empfehlenswerte Vorlagen https://github.com/mobiusml/aana_app_template Schnellstart.
- Neuer Ordner (z.B.
- Bereitstellung der Konfiguration
- existieren
app.py
Laden Flüstern Modelle:from aana.sdk import AanaSDK from aana.deployments.whisper_deployment import WhisperDeployment, WhisperConfig, WhisperModelSize, WhisperComputeType app = AanaSDK(name="video_app") app.register_deployment( "whisper", WhisperDeployment.options( num_replicas=1, ray_actor_options={"num_gpus": 0.25}, # 若无GPU可删除此行 user_config=WhisperConfig( model_size=WhisperModelSize.MEDIUM, compute_type=WhisperComputeType.FLOAT16 ).model_dump(mode="json") ) )
- existieren
- Definieren von Endpunkten
- Transkriptionsendpunkte hinzufügen:
from aana.core.models.video import VideoInput @app.aana_endpoint(name="transcribe_video") async def transcribe_video(self, video: VideoInput): audio = await self.download(video.url) # 下载并提取音频 transcription = await self.whisper.transcribe(audio) # 转录 return {"transcription": transcription}
- Transkriptionsendpunkte hinzufügen:
- Ausführen der Anwendung
- Läuft im Terminal:
python app.py serve
- oder mit der Aana CLI:
aana deploy app:app --host 127.0.0.1 --port 8000
- Wenn die Anwendung startet, lautet die Standardadresse
http://127.0.0.1:8000
.
- Läuft im Terminal:
- Testfunktion
- Sendet eine Anfrage mit cURL:
curl -X POST http://127.0.0.1:8000/transcribe_video -F body='{"url":"https://www.youtube.com/watch?v=VhJFyyukAzA"}'
- Oder besuchen Sie die Swagger-Benutzeroberfläche (
http://127.0.0.1:8000/docs
) Prüfung.
- Sendet eine Anfrage mit cURL:
Featured Function Bedienung
- multimodale Verarbeitung
Neben der Sprachtranskription können auch Bildmodelle (z.B. Blip2) integriert werden, um Beschreibungen zu generieren:captions = await self.blip2.generate_captions(video.frames)
- Streaming-Ausgang
Unterstützt die Rückgabe von Ergebnissen in Echtzeit, zum Beispiel:@app.aana_endpoint(name="chat", streaming=True) async def chat(self, question: str): async for chunk in self.llm.generate_stream(question): yield chunk
- Cluster-Erweiterung
Um mit einem Ray-Cluster zu arbeiten, ändern Sie dieapp.connect()
Geben Sie einfach die Adresse des Clusters an.
Zusätzliche Tools
- Strahlen DashboardPost-Run-Zugang
http://127.0.0.1:8265
können Sie den Cluster-Status und die Protokolle einsehen. - Docker-Bereitstellung: Siehe https://mobiusml.github.io/aana_sdk/pages/docker/.
Anwendungsszenario
- Zusammenstellung von Videoinhalten
Generieren Sie Untertitel und Zusammenfassungen für Lehrvideos zur einfachen Archivierung und Suche. - intelligentes Frage- und Antwortsystem (Q&A)
Der Nutzer lädt ein Video hoch und stellt dann eine Frage, die das System auf der Grundlage des Audio- und Videoinhalts beantwortet. - Analyse von Unternehmensdaten
Extrahieren Sie Schlüsselinformationen aus Meeting-Aufzeichnungen und Videos, um Berichte zu erstellen.
QA
- Brauchen Sie eine GPU?
Es ist nicht zwingend erforderlich; die CPU kann es auch ausführen, aber die GPU (40 GB RAM empfohlen) wird die Effizienz erheblich verbessern. - Wie gehe ich mit Installationsfehlern um?
Prüfen Sie, ob die Python-Version und die Abhängigkeiten übereinstimmen, indem Sie die--log-level DEBUG
Detaillierte Protokolle anzeigen. - Welche Sprachmodelle werden unterstützt?
Eingebautes vLLM, Whisper, etc. für mehr Integration von Hugging Face Modellen durch Transformers.