class: center, middle ![img33l](gfx/KI-Werkzeugkasten.webp) ## Praktische KI-Anwendungen auf dem eigenen Rechner #### Hauke Goos-Habermann --- ### Über mich / den Vortrag ![img33r](../../gfx/ndwls-logo.png) - Bin Entwickler des Softwareverteilungssystems m23, biete Support zu Linux und Freier Software - YouTuber/PeerTuber: https://weisheit.goos-habermann.de - Bin am Thema "KI" interessiert und verwende einige **lokale KI-Anwendungen** ![img20r](gfx/qrcode-goos-habermann.de.png) - Cloud-Anwendungen oder geschlossene KI-Systeme interessieren mich nicht ;-) --- class: center, middle ![img33l](gfx/mehr_computer.webp) ## Hardwarefragen #### Beschleunigung per GPU --- ### NVIDIA-Treiber unter Debian 12 Mit ***root-Rechten*** installiert Ihr unter Debian 12 die NVIDIA/CUDA-Treiber mit: ```bash # Zweige für nicht-freie Software aktivieren sed -i 's/main/main contrib non-free/g' /etc/apt/sources.list # Liste mit verfügbaren Paketen aktualisieren apt update # NVIDIA-Grafikkartenerkennungsprogramm installieren apt install -y nvidia-detect # Ausführen nvidia-detect # Empfohlenes Treiber-Paket installieren apt install -y nvidia-driver firmware-misc-nonfree nvidia-cuda-toolkit # Optimierung für CPU-Nutzung (z.B. bei Stable Diffusion) apt install -y libtcmalloc-minimal4 # System neustarten reboot ``` --- class: center, middle ![img33l](gfx/pinguin-fee.webp) ## Stable Diffusion: Bilder generieren #### Ein ausführliches Video zu dem Thema gibt es unter ⇒ https://weisheit.goos-habermann.de --- ### Text-zu-Bildgeneratoren ![img33r](gfx/fake-Elon_Musk_with_bob_haircut_Seed-266571_Steps-25_Guidance-7.5.jpeg) Je nach **KNN-Modell** und Prompt (Textbeschreibung) können die generierten Bilder sehr überzeugend sein. * Es gibt **spezielle** (z.B. Mikroskopbilder) und sehr **allgemeine Netze**. * Modelle basieren (üblicherweise) auf **Bildern aus dem Internet** und den **dazugehörigen Beschreibungen**. * Es können **positive** (z.B. photo, hyper realistic 8k, ultra-detailed, ultra-realistic, ...) und **negative** (z.B. disfigured, ugly, bad, two heads, ...) **Prompts** angegeben werden * Vorhandene Modelle können **live angepaßt** oder **miteinander kombiniert** werden, um einen besonderen Bildstil oder Elemente zu erzeugen. * Meine 100-5-2-Regel * 100 Bilder generieren lassen * 5 sind ok * 2 sind gut --- ### Welche Hardware/Software benötige ich? ![img33r](gfx/mehr_computer.png) * **NVIDIA**-Grafikkarte mit **CUDA**-Treibern * 6GB VRAM reicht für Bilder mit bis zu 1024x768 * Soll aber auch schon mit 4GB VRAM (und ggf. 2GB VRAM) nutzbar sein. * **AMD**-Grafikkarte mit **AMD-ROCm**-Unterstützung * Von https://github.com/hydrian/stable-diffusion-webui-rocm: 8GB VRAM für Bilder mit 512x512 * Intel Arc: Soll auch gehen Benchmarkergebnisse: https://www.tomshardware.com/news/stable-diffusion-gpu-benchmarks --- ### Stable Diffusion web UI Die Oberfläche ist zwar komplizierter als
Easy Diffusion
, bietet aber auch deutlich mehr Funktionen. ```bash # Abhängigkeiten installieren sudo apt install wget git python3 python3-venv # Installationsskript herunterladen wget https://raw.githubusercontent.com/AUTOMATIC1111/\ stable-diffusion-webui/master/webui.sh -O webui.sh # Installieren (und Installationspfad angeben) install_dir=/media/ssd bash webui.sh # Starten mit cd /media/ssd/stable-diffusion-webui # Optimieren der GPU-Speichernutzung export 'PYTORCH_CUDA_ALLOC_CONF=max_split_size_mb:128' # xformers zur Beschleunigung verwenden ./webui.sh --xformers ``` * Informationen: https://github.com/AUTOMATIC1111/stable-diffusion-webui --- class: center, middle ![img33l](gfx/kobold.webp) ## Koboldcpp: Interaktive Chats mit fiktiven Charaktären(und mehr) ### Neu! Neu! Neu! Neu! Neu! --- ### Koboldcpp bauen Koboldcpp ist in C und C++ geschrieben und muß vor dem Starten kompiliert werden. ```bash # Abhängigkeiten zum Bauen, Installieren und Ausführen installieren sudo apt install libclblast-dev libopenblas-dev python3-tk git build-essential # Quelltext holen git clone https://github.com/LostRuins/koboldcpp cd koboldcpp # Bauen mit OpenCl- und CUDA-Unterstützung make -j LLAMA_OPENBLAS=1 LLAMA_CLBLAST=1 LLAMA_CUBLAS=1 ``` Wissensteil: BLAS steht für **B**asic **L**inear **A**lgebra **S**ubroutines. Mehr Informationen unter: https://github.com/LostRuins/koboldcpp --- ### Sprachmodelle ![img33r](gfx/bibliothek.webp) Es gibt verschiedene Sprachmodelle, die oftmals mit **sehr großen Textdatenbanken trainiert** wurden. Je nach Anwendungsfall oder Hardware eignet sich Mal das eine besser, Mal das andere. Große Sprachmodelle sind ***Generalisten***, beinhalten viel ***unscharfes Wissen***, ***Wahrscheinlichkeiten*** für Wortzusammenhänge und können ***verblüffende Texte*** (mit **zweifelhaftem Wahrheitsgehalt**) generieren. Koboldcpp unterstützt **Modelle in vielen Formaten**: LLAMA(2), GPT-2/Cerebras, GPT-J, RWKV, GPT-NeoX, MPT und Falcon. Ein sehr **umfangreiches unzensiertes Modell** ist ***llama-30b-superhotcot.ggmlv3.q4_0***, welches aus
SuperCot
und
SuperHOT
**zusammengemischt** wurde. Das Modell *"spricht"* auch Deutsch, wobei es auf Englisch deutlich besser funktioniert. Download: https://huggingface.co/ausboss/llama-30b-superhotcot.ggmlv3.q4_0 --- ### Deutsche Sprachmodelle ![img33r](gfx/bibliothek.webp) Die **meisten Sprachmodelle** werden mit **überwiegend englischen Texten** trainiert. In der Datenbasis kommen aber auch **anderssprachige Texte** vor, sodaß diese Modelle auch **deutsche Eingaben** verstehen und **deutsche Antworten** von minderer Qualität generieren können. Für deutsche Sprache optimierte Modelle findet Ihr mit: https://huggingface.co/models?pipeline_tag=text-generation&library=pytorch&language=de&sort=trending Z.B. * Information: https://huggingface.co/TheBloke/em_german_leo_mistral-GGUF * Download: https://huggingface.co/TheBloke/em_german_leo_mistral-GGUF/blob/main/em_german_leo_mistral.Q5_K_M.gguf --- ### Starten Koboldcpp wird über eine **Webseite gesteuert**, aber auf der **Kommandozeile** oder über ein kleines grafisches Programm **konfiguriert**, um möglichst gut zur Hardware zu passen. ```bash # Starten (CUDA, Cache und 22 Ebenen des Sprachmodells auf die GPU auslagern) python3 koboldcpp.py --usecublas --smartcontext --gpulayers 22\ --model llama-30b-superHotCot.ggmlv3.q4_0.bin ``` Oberfläche im Browser öffen: http://localhost:5001 PS An das **Maximum** für die auszulagernden Ebenen könnt Ihr Euch herantasten: Werden zuviele Ebenen ausgelagert, **stürzt** Koboldcpp **sofort** oder spätestens **beim Starten eines Chat** ab. Geht dann mit der Anzahl herunter, bis Koboldcpp stabil läuft. --- ### Anweisungs-Modus Ihr könnt eine Anweisung vorgeben, die eine Aufgabe umschreibt und dazu passende Beispiele für Ein- und Ausgaben mitgeben, um dem Sprachmodell mitzuteilen, was Ihr erwartet. ``` ### Instruction: Anweisung ### Input: Eingabetext (Kann auch weggelassen werden, wenn die Anweisung schon für gute Resultate sorgt) ### Response: Ausgabetext ``` --- ### Chat-Modus Im Chat-Modus führt Ihr "Gespräche" mit fiktiven Charaktären, die sich (in gewissen Grenzen) an Eure Vorgaben halten und Zusammenhänge aus dem Sprachmodell einbinden. ``` mode: chat characters: Name des 1. Charakters: Rollenbeschreibung Name des 2. Charakters: Rollenbeschreibung summary: Geschichte (z.B. Zusammenfassung vorangegangener Gespräche, Örtlichkeiten, etc.) Weitere Informationen, die eine Szene beschreiben ``` --- ### Szenario: Interview mit Professor Moriarty ![img33l](gfx/Moriarty.webp) ``` mode: chat characters: Reporter: Ein Reporter des Strand Magazines Moriarty: Verbrecherisches Genie. Der Napoleon des Verbrechens. Größter Widersacher Sherlock Holmes. summary: Moriarty gibt dem Reporter ein Exklusivinterview, um seine Sicht auf seine größten Verbrechen darzulegen. ``` Rollen-/Szenenbeschreibung als
moriarty.txt
herunterladen. --- ### Szenario: Der allwissende Computer ![img33l](gfx/computerterminal.webp) ``` mode: chat characters: Info: Ein Androide Computer: Der allwissende Computer eines Raumschiffes, das lange Antworten auch zu schwierigen Sachverhalten und spekulativen Ereignissen geben kann. summary: Info und der Computer unterhalten sich über verschiedene Themen. Der Computer ist immer hilfreich. ``` Rollen-/Szenenbeschreibung als
info.txt
herunterladen. --- class: center, middle ![img33l](gfx/Kreativitaetsmaschine.webp) ## Upscayl: Bilder hochskalieren #### Ein ausführliches Video zu dem Thema gibt es unter ⇒ https://goos-habermann.de/weisheit-10093-Meine-Linux-Anwendungen-2022 --- ### Upscaly * Skaliert Bilder hoch und ergänzt Details aus einem neuronalen Netzwerk * Verschiedene Modi für verschiedene Arten von Bildern * Benötigt eine
Vulkan-kompatible
Grafikkarte * Als AppImage verfügbar * Freie Software unter
AGPLv3
* Modell unter
BSD 3-Clause
Projektseite: https://github.com/upscayl/upscayl --- class: center, middle ![img33l](gfx/Whisper.webp) ## Whisper: Spracherkennung #### Ein ausführliches Video zu dem Thema gibt es unter ⇒ https://weisheit.goos-habermann.de --- ### Whisper? **Whisper** ist eine freie **Spracherkennung** von OpenAI, die Audiospuren von Videodateien oder Tondateien mit Sprache in Text umwandelt. Whisper verwendet ffmpeg, um die Audioinformation aus der Eingabedatei zu lesen. Es können **verschiedene Ausgabeformate** (z.B. srt-Untertiteldateien) erstellt und auch gleich in eine **andere Sprache übersetzt** werden. Die Ausführung erfolgt **lokal** auf Eurem eigenen Rechner. Das gewählte **Sprachmodell** wird vor der ersten Nutzung automatisch **heruntergeladen**. Informationen (z.B. RAM-Bedarf und Funktionsweise): https://github.com/openai/whisper --- class: center, middle ![img33l](gfx/anti-rausch-maschine.webp) ## RNNoise: Rauschunterdrückung ### Neu! Neu! Neu! Neu! Neu! --- ### RNNoise? RNNoise ist ein Audio-Plugin (in den Formaten VST2, VST3, **LV2**, **LADSPA**, AU, AUv3), das Rauschen aus Tonspuren herausfiltert und hierfür ein **R**ekurrentes **N**euronales **N**etzwerk verwendet. Installation der Plugins als LV2- und LADSPA-Version: ```bash # Pluginverzeichnisse anlegen sudo mkdir -p /usr/lib/lv2 /usr/lib/ladspa # Herunterladen cd /tmp wget https://github.com/werman/noise-suppression-for-voice/releases/download/\ v1.03/linux-rnnoise.zip # Entpacken unzip linux-rnnoise.zip # LV2- und LAPSPA- Plugins an die richtige Stelle verschieben sudo mv linux-rnnoise/rnnoise_mono.lv2 linux-rnnoise/rnnoise_stereo.lv2\ /usr/lib/lv2/ sudo mv linux-rnnoise/ladspa/librnnoise_ladspa.so /usr/lib/ladspa ``` PS Ggf. den Link vom ***linux-rnnoise.zip*** mit neuem von https://github.com/werman/noise-suppression-for-voice/releases austauschen. Mehr Informationen: https://github.com/werman/noise-suppression-for-voice --- ### RNNoise nutzen Anschließend eine Audioanwendung (z.B. Audacity) starten, die Audio-Plugins verwendet. In dieser ggf. **nach neuen Plugins suchen**. RNNoise wird dort aufgelistet als: * Noise Suppressior for Voice (Mono) * Noise Suppressior for Voice (Stereo) Wissensteil: * LADSPA steht für **L**inux **A**udio **D**eveloper's **S**imple **P**lugin **A**PI * LV2 ist der Nachfolger von LADSPA --- ### Mehr KI-Videos von/mit mir ![img33r](gfx/kino.png)
08.05.2023 Nicht der Weisheit letzter Schluß
***Künstliche Intelligenz - Zwischen Faszination und Ernüchterung*** ⇒ https://goos-habermann.de/weisheit-10117-Kuenstliche-Intelligenz---Zwischen-Faszination-und-Ernuechterung
13.06.2023 Nicht der Weisheit letzter Schluß
***Kochen mit KI: Was soll da schon schiefgehen?*** ⇒ https://goos-habermann.de/weisheit-10124-Kochen-mit-KI-Was-soll-da-schon-schiefgehen
19.09.2023 Nicht der Weisheit letzter Schluß
***Faszinierend und enttäuschend: KI-Bildgeneratoren*** ⇒ https://goos-habermann.de/weisheit-10138-Faszinierend-und-enttaeuschend-KI-Bildgeneratoren
25.09.2023 Nicht der Weisheit letzter Schluß
***Automatische Untertitel mit der Spracherkennung "Whisper"*** ⇒ https://goos-habermann.de/weisheit-10139-Automatische-Untertitel-mit-der-Spracherkennung-Whisper --- class: center, middle ### Weiterhin viel Spaẞ bei den Tux Tagen und abonniert meinen Kanal ;-) ![img33r](gfx/qrcode-goos-habermann.de.png) Mehr zur "Künstlicher Intelligenz" und weiteren Themen zu **beruflichen** und **privaten Projekten** aus dem Linux- und OpenSource-Bereich gibt es in meinem YouTube/PeerTube-Kanal. ![img50](../../gfx/ndwls-logo.png) Alle Informationen unter ⇒
weisheit.goos-habermann.de
⇐