Rust Ai Stream Analyzer Twitch Bot
RSLLM est un pipeline AI à 100% dans la rouille pour le code transformateur / tensor qui tire parti du cadre de bougies de Huggingface. Il représente une approche de langage de programmation de systèmes pour l'interaction du modèle d'IA et l'analyse des flux. Il peut s'exécuter localement sur des GPU, il se concentre sur la prise en charge des périphériques macOS équipés de GPU M1 / M2 / M3 ARM. Ce pipeline d'IA est conçu pour les développeurs et les chercheurs visant à intégrer des modèles locaux de grande langue (LLM) avec la rouille, en contournant le besoin de dépendances externes et de code Python pour les chatbots et autres programmes d'IA. À la base, RSLLM met l'accent sur l'utilisation des LLM locaux pour générer du texte, des images et des discours dans un environnement de rouille, offrant une suite robuste de fonctionnalités pour l'analyse de flux de données en temps réel et la création de contenu axée sur l'IA. RSLLM peut exécuter un bot de chat Twitch Channell et une vidéo / audio NDI avec des images de diffusion stables générées et une sortie de la parole TTS via un logiciel compatible avec NDI. Vous pouvez configurer OBS pour prendre le flux NDI et configurer votre canal Twitch, puis avoir un canal Twitch personnalisable de chat et de parole / d'image. Entièrement axé sur l'IA, vous pouvez automatiser un streamer Twitch quelque peu. Vous pouvez également analyser les flux MPEGTS ou les statistiques du système de système d'exploitation, si vous le souhaitez, vous pouvez combiner les deux et faire commenter et interroger le flux en l'analyse efficacement.
Caractéristiques clés
- LLM local : utilise les LLMS à base de rouille de Candle, Mistral et Gemma, pour les interactions d'IA directes et efficaces, hiérarchisant l'exécution locale pour exploiter la pleine puissance des GPU métalliques macOS.
- Analyseur d'IA complet : intégré un analyseur d'IA sophistiqué capable de traiter les entrées et de générer des sorties à travers le texte, la voix, la parole et les images, facilitant un flux transparent de contenu généré par l'IA. (Travail en cours)
- Intégration vocale et vocale : prévoit d'incorporer des chuchotements pour les interactions vocales, semblables à Alexa, permettant aux utilisateurs de communiquer avec la boîte à outils à l'aide de commandes vocales et de recevoir des entrées de texte en streaming en réponse. (Fonctionnalité planifiée)
- Génération d'images et sortie NDI : prend en charge la génération d'images à partir de descriptions de texte et la sortie via NDI pour un large éventail d'applications, y compris la création et la diffusion de contenu en temps réel. (Dans les tests bêta)
- Prise en charge TTS : Candle implémente TTS en utilisant MetaVoice (par défaut, WIP), OpenAI TTS API (haute qualité, en temps réel) et API TTS Mimic3 (local, gratuit). Metavoice est optimisé pour les GPU métalliques, tandis que l'API OpenAI TTS génère une parole premium à un coût. L'API MIMIC3 TTS nécessite l'exécution du serveur Mimic3 mais offre une bonne alternative à l'OpenAi TTS. Mimic3 github
- Twitch Chat Interactive AI : chat Twitch intégré pour les interactions AI en temps réel, permettant aux utilisateurs de s'engager avec la boîte à outils via les commandes de chat et de recevoir des réponses générées par l'AI.
- Génération d'images de diffusion stable : prend en charge la diffusion stable de bougie ou le serveur API Automatic111111. https://github.com/automatic1111/stable-diffusion-webui/
Composants de base
Intégration du cadre de bougies
Candle, un projet de Hugging Face, propose des LLMS de rouille native comme Mistral et Gemma, optimisées pour les GPU métalliques sur macOS. Cette intégration facilite l'exécution locale des LLM, garantissant des performances élevées et une faible latence dans les interactions du modèle IA.
Prise en charge de l'API OpenAI pour le backend du serveur LLAMA.CPP LLM
Bien que RSLLM se concentre principalement sur l'exécution des LLM locaux, il prend également en charge l'API OpenAI, permettant aux utilisateurs de tirer parti des modèles d'IA externes si nécessaire. Cette fonctionnalité assure la polyvalence et l'applicabilité large dans divers projets dirigés par l'IA à l'aide de modèles personnalisés.
Analyse d'IA en temps réel et génération de contenu
RSLLM excelle dans l'analyse des flux de données en temps réel et la génération de contenu axé sur l'IA, y compris le texte, les images et la parole. Il vise à créer un modèle d'interaction dynamique où les entrées vocales peuvent être converties en commandes de texte pour le LLM, et les sorties générées peuvent être diffusées en arrière en tant que contenu vocal ou visuel.
Installation et configuration
Condition préalable
- Assurez-vous que la rouille et la cargaison sont installées. Guide d'installation de la rouille.
- Idéalement un système macOS avec un GPU ARM M1 / M2 / M3. Nvidia peut fonctionner, a besoin de quelqu'un pour le réparer car je n'ai pas de GPU NVIDIA.
- Bibliothèque NDI pour la sortie de streaming Obs ndi. C'est facultatif.
Guide de configuration
Clone le référentiel :
git clone https://github.com/groovybits/rsllm.git
Accédez au répertoire du projet :
Compiler avec le support GPU en métal et le support SDK NDI :
./scripts/compile.sh # Script handles NDI SDK dependency and DYLD_LIBRARY_PATH
Configuration
- Copiez
.env.example sur .env et personnalisez les paramètres, y compris la clé API OpenAI si elle avait l'intention d'utiliser des modèles AI externes.
Usage
RSLLM est conçu pour faciliter une large gamme d'opérations pilotées par l'IA, de la génération de contenu textuel à l'analyse des flux de réseau et au traitement des entrées visuelles et audio. Des fonctionnalités avancées comme la sortie audio NDI et le traitement d'entrée vocale à texte sont en développement, visant à améliorer les capacités interactives de la boîte à outils.
Exemples de commandes
Utilisez les scripts dans le répertoire ./Scripts.
./scripts/compile.sh # Build RsLLM
./scripts/broadcast_personality.sh # Full command line shown for most features (use personalities in ./personalities dir as an arg)
./scripts/mpeg_analyzer.sh # Experimental MpegTS Analyzer mode (WIP)
./scripts/mpeg_poetry.sh # Fun poetry about MpegTS Broadcasting with stream input prompt injection
./scripts/system_health.sh # System health status from OS Stats prompt injection
Diffusé à OBS avec NDI avec pipeline complet :
./scripts/broadcast_personality.sh buddha
Exécution avec les statistiques des bougies et du système d'exploitation pour l'analyse du système d'IA :
cargo run --release --features fonts,ndi,mps,metavoice,audioplayer --
--candle_llm gemma
--model-id " 2b-it "
--max-tokens 800
--temperature 0.8
--ai-os-stats
--sd-image
--ndi-images
--ndi-audio
--system-prompt " You create image prompts from OS system stats health state. "
--query " How is my system doing? Create a report on the system health as visual image descriptions. "
Capacités de sortie améliorées et fonctionnalités à venir
Sortie NDI pour les images et l'audio de la parole TTS
RSLLM améliore ses capacités de sortie pour inclure la prise en charge de la prise en charge de NDI (Interface du périphérique réseau) pour les images et l'audio TTS (texte-vocation), facilitant le streaming vidéo de haute qualité et de faible latence sur les réseaux IP.
- (Facultatif) Installation du SDK NDI : Le script compile.sh téléchargera le libndi.dylib pour vous. Si vous le souhaitez, vous pouvez télécharger et installer le SDK NDI à partir d'ici. Ce SDK est utile pour visualiser la sortie NDI et explorer d'autres outils.
- Étapes de configuration :
- Ajoutez
--features ndi à la commande de construction de cargaison pour inclure le support NDI dans votre version. - Exécutez
scripts/compile.sh , qui récupérera le libndi.dylib qui fonctionne mieux pour MacOS. - Pour s'assurer que la bibliothèque est correctement reconnue lors de la construction avec
cargo --features=ndi , définissez la variable d'environnement DYLD_LIBRARY_PATH :
export DYLD_LIBRARY_PATH= ` pwd ` : $DYLD_LIBRARY_PATH
- Configuration supplémentaire : La connexion dans le centre de câlins via la CLI peut résoudre certains avertissements potentiels. Exécutez
huggingface-cli login pour authentifier.
Metavoice TTS Text to Speech (WIP)
Candle, notre cadre de rouille de base pour l'interaction LLM, comprend désormais MetaVoice, une technologie révolutionnaire de texte vocale (TTS). À mesure que cette caractéristique s'améliore, elle permettra des fonctionnalités LLM basées sur la rouille pure, TTI (texte-image) et TTS, intégrée de manière transparente aux optimisations GPU en métal pour macOS.
- État du développement : L'intégration Metavoice est effectuée et optimisée dans la bougie pour correspondre à la qualité de l'implémentation de référence.
- Avantages prévus : Une fois entièrement optimisée, Metavoice améliorera considérablement la capacité de la boîte à outils à générer une parole réaliste à partir de texte sans coût et avec une faible latence sur un LLM local. Il fournira également la possibilité d'apprendre une voix à partir d'un petit clip et de générer une parole à partir de celui-ci. Pour l'instant, vous voudrez peut-être utiliser OpenAI pour la génération de la qualité / en temps réel d'audio de la parole.
La mission de RSLLM est de rechercher et d'explorer la mise en œuvre d'une boîte à outils polyvalente et haute performance pour la création et l'analyse du contenu axées sur l'IA, en tirant parti du plein potentiel des GPU métalliques et de l'efficacité de Rust.
Feuille de route
Priorité:
- Préservez l'historique à l'aide d'une base de données locale (par exemple, SQLite ou MongoDB) et alimentez-le dans une DB de chrome pour RAG.
- MPEGTS CHAT pour l'analyse de forme libre sur les données actuelles et historiques du flux MPEG-TS.
- Améliorez la latence d'image / TTS et la coordination asynchrone de la sortie. Utilisez une pré-file d'attente NDI pour les images et l'audio pour assurer la synchronisation et minimiser la latence.
- Implémentez le RAG (récupération de génération augmentée) à l'aide de Chromium pour la mise en cache des documents et les intégres, fournissant un contexte LLM basé sur la documentation augmentée.
- Fusionner les correctifs de métaVoice de la bougie à mesure qu'ils deviennent disponibles (WIP).
- Implémentez les hachages perceptuels (basés sur DCT64) pour l'empreinte du cadre pour détecter les changements dans les trames vidéo, reconnaître et apprendre les séquences de contenu répétitives, vérifier les ruptures commerciales et détecter les insertions d'annonces. Intégrez SCTE-35 et maintenez une base de données de contenu empreinte digitale pour diverses vérifications de qualité, confirmation de fidélité de pause / logo et détection de présence.
- Activez le mode Daemon pour exécuter et écouter les demandes via l'entrée Zeromq et passer à la sortie.
- Développez les options pour LLMS et l'API OpenAI.
Améliorations futures:
- Utilisez ffmpeg-next-sys pour traiter la vidéo et l'audio en temps réel pour générer des cadres, un audio et du texte à la vidéo, ainsi que pour transformer la vidéo et créer des vidéos d'humeur ou des histoires sur le thème. Explorez les possibilités de combiner un LLM avec FFMPEG.
- Améliorez l'analyseur MPEGTS pour l'analyse en temps réel des flux MPEG-TS, les rapports et la détection de problèmes dirigés par l'IA.
- Améliorez les analyseurs de réseau et de système.
- Utilisez Chroma DB pour RAG avec des documents pour augmenter les invites avec des informations pertinentes.
- Implémentez Cap'n Proto pour la sérialisation, la désérialisation et la communication modulaire du protocole Zeromq.
- Intégrez Metamusic pour la génération de musique basée sur l'humeur en fonction des résultats.
- Développer la génération de vidéos parlante avec un contexte de trame cohérent, garantissant que les objets restent les mêmes dans les cadres.
- Implémentez la parole en texte à l'aide de la bougie Whisper pour la saisie audio, l'ingestion LLM et le sous-titrage vidéo.
- Autorisez les options d'entrée FreeForm pour que le LLM interprète les intentions des utilisateurs.
- Explorez la génération de code dynamique dans Python pour de nouvelles tâches comme le traitement vidéo (considérez les risques).
- Implémentez la sortie itérative et multi-générationnelle avec des contours conduisant à plusieurs passes jusqu'à ce qu'un résultat final soit atteint.
- Utilisez la parole en texte avec Whisper Candle pour l'entrée audio, permettant des commandes vocales au LLM pour l'IA conversationnelle.
Contributif
Les contributions sont chaleureusement accueillies, en particulier dans des domaines tels que le développement des caractéristiques, l'optimisation des performances et la documentation. Votre expertise peut améliorer considérablement les capacités de la boîte à outils et l'expérience utilisateur.
Licence
Ce projet est autorisé sous la licence du MIT. Voir le fichier de licence pour des informations détaillées.
Remerciements
- Transformers / tenseurs de rouille de bougie en étreignant la bougie: bougie
- Openai pour les spécifications de l'API: OpenAI
- Openai pour l'intégration TTS: OpenAI
- MetAVoice pour l'intégration TTS: Metavoice
- Mimic3 pour l'intégration TTS: Mimic3
- Chuchotement pour la parole au texte: chuchoter
- Google Gemini LLM: Gemini
- Mistral LLM: Mistral
Auteur
Chris Kennedy, dirigeant le développement de solutions d'IA innovantes avec la boîte à outils MacOS Metal GPU Rust LLM. Février 2024.
Nous nous engageons à repousser les limites de l'intégration de l'IA avec la technologie vidéo et les entrées / sorties multimodales sur les processeurs ARM macOS dans la rouille pure, en veillant à ce que les développeurs de médias et les chercheurs aient accès à des outils puissants, efficaces et polyvalents pour leurs projets axés sur l'IA.