Wydawać by się mogło, że dzisiejsze wielkie modele AI są nierozłącznie związane z chmurą, więc też z brakiem prywatności - nic bardziej mylnego! Pokażę tutaj jak można łatwo pobrać i uruchomić 100% lokalnie interesującą alternatywę dla ChatGPT wraz z łudząco podobną formą strony internetowej oferującej wybór modelu LLM, historię chatów a nawet możliwość np. interpretacji podanych obrazów i plików.
Wszystko to oferuje projekt o nazwie Open-WebUI, link do strony domowej/repozytorium poniżej:
https://github.com/open-webui/open-webui
Instalacja Open-WebUI
Niby w Readme jest akapit "Quick Start With Docker", ale jak to zwykle bywa, w rzeczywistości instalacja jest trudniejsza niż deklarują to autorzy projektu.
Docker to jest takie środowisko do uruchomiania różnych projektów które cechuje konteneryzacja i izolacja oprogramowania, jak również jego przenośność.
Początkowo próbowałem zainstalować Docker 4.27.1 na moim Windows 10:
Niestety to nie zdało egzaminu - w spoilerze informacja czemu:
Spoiler:
Zdawać by się mogło, że instalacja powiodła się pomyślnie:
Uruchamiamy...
Konfigurujemy:
Logowanie jest opcjonalne:
No i pojawia się problem, coś jest nie tak z WSL, czyli z nakładką "Linuxową" na Windowsa:
Na forum dockera jest o tym kilka tematów:
https://forums.docker.com/t/updating-wsl-upda...-update-n-web-download-not-supported/138452/9
Poniżej zrzuty ekranu z moich prób naprawy problemu - bez rezultatu pozytywnego, więc bez komentarza:
Zdawać by się mogło, że instalacja powiodła się pomyślnie:
Uruchamiamy...
Konfigurujemy:
Logowanie jest opcjonalne:
No i pojawia się problem, coś jest nie tak z WSL, czyli z nakładką "Linuxową" na Windowsa:
Na forum dockera jest o tym kilka tematów:
https://forums.docker.com/t/updating-wsl-upda...-update-n-web-download-not-supported/138452/9
Poniżej zrzuty ekranu z moich prób naprawy problemu - bez rezultatu pozytywnego, więc bez komentarza:
Podsumowując, na najnowszym Dockerze u mnie Open-WebUI nie ruszyło, więc zacząłem sprawdzać poprzednie wersje Dockera i okazało się, że w 4.24.1 problem nie występuje:
Sukces - od razu mamy panel docker:
Docker jest gotowy. Teraz trzeba pobrać repozytorium, można to wykonać nawet przez przeglądarkę, nie jest konieczny GIT. Po prostu znajdujemy pobranie zip:
https://github.com/open-webui/open-webui
Następnie instalujemy całość poprzez docker, wybrałem wersję bez wsparcia GPU (wszystko będzie liczone na CPU, wymagana będzie też pamięć RAM):
Nareszcie bezbłędna instalacja:
Od tego momentu powinny być open webui w Dockerze:
Pierwsze uruchomienie
Uruchamiamy Open WebUI w Dockerze. Wchodzi na utworzą usługę webową (nasz lokalny IP + wybrany port) aby zobaczyć interfejs webowy modeli językowych:
Pierwsze zalogowanie się do WebUI wymagać będzie utworzenia konta, ale te konto tworzymy na naszym serwerze, wszystko jest lokalnie:
Potem wita nas panel WWW niczym ten znany z ChatGPT:
Na tym momencie nie da się nic uruchomić - brakuje nam modeli językowych:
Trzeba wklikać się w trybik i pobrać jakiś model.
Aby pobrać model, należy wyszukać jego nazwę tutaj:
https://ollama.com/library
A potem ją wkleić w pobieranie, jak niżej:
Po pobraniu model pojawi się na liście do wybrania:
Można zadawać mu pytania tak jak w przypadku ChatGPT, same zdolności zależą od modelu, tak samo jak np. wymóg pamięci RAM i szybkość generacji tokenów też zależy od tego co wybraliśmy, są "lżejsze" i "cięższe" modele.
Tekst i kod
Działające lokalnie modele są w stanie generować kod i uzupełniać tekst podobnie jak ChatGPT, chociaż końcowe efekty zależą od wybranego modelu. Oto kilka przykładów:
Powyższy przykład z mapowaniem wartości odczytanej z ADC na częstotliwość migania diody LED bardzo mocno przypomina ChatGPT.
Z innymi kodami podobnie:
Tu troszkę już pozmyślał - np. ten link nie prowadzi do istniejącej strony a sam kod jest co najmniej niekompletny.
Oczywiście modele też są podatne na halucynacje - tutaj np. tworzony jest kod do nieistniejącego układu MCP237017 który powstał na skutek popełnienia przeze mnie literówki:
Analiza obrazów
Niektóre modele potrafią też opisywać obrazy. Przykładem może być llava, która radzi sobie np. z opisaniem jabłka:
Trudniejsze zadania też nie są jej straszne - tutaj opisuje "żarówkę" LED:
Niestety przy nieco mniej popularnych kwestiach model już się gubi, tworzy halucynacje:
Jeśli chcecie bym wrzucił do tego modelu jakiś obraz to proszę o umieszczenie obrazu w temacie, jeśli będę mieć chwilę to sprawdzę rezultaty.
Zaawansowane ustawienia
Intefejs Webowy Open WebUI oferuje znacznie więcej niż strona od OpenAI - możemy tutaj zmieniać zaawansowane ustawienia modeli językowych, takie jak: Temperature, Mirostat, Top K, Stop Sequence, Max Tokens, Context Length i wiele więcej - po ich wyjaśnienia odsyłam do materiałów z sieci.
Wymagania sprzętowe?
Wszystko zależy od tego czy używamy wersji na GPU czy CPU oraz jaki model chcemy uruchomić, ale ogólnie nie jest to zbyt szybkie, RAMu tez zajmuje dużo, tu zrzut ekranu ode mnie po godzinie zabawy:
A co do czasu reakcji... to zmierzymy, dla przykładu na mistral:7b:
Powyższa odpowiedź generowała się 45 sekund na:
Podsumowanie
Raczej komercyjnych modeli językowych te darmowe, lokalne odpowiedniki nie przebiją ale rzeczywiście dają nawet więcej niż namiastkę popularnego ChatGPT lokalnie. Dodatkowo tych modeli jest mnóstwo i oferują dużą możliwość parametryzacji i tuningu, co pozwala dostosować je do naszych potrzeb. W przyszłości zamierzam spróbować lepiej je przyrównać i zbadać ich możliwości, ale jeszcze nie wiem jak się za to zabrać a olbrzymi wybór LLM'ów do pobrania tego nie ułatwia.
Instalacja całości jest dość prosta o ile nie wpadniemy "w pułapkę" nowego Dockera, ale o tym napisałem na początku, wedle moich wskazówek zainstalujemy całość bezproblemowo.
Nie wiem natomiast jak wygląda uruchomienie tego na słabszym sprzęcie - jak ktoś chce się pobawić, to zapraszam do testowania i do podzielenia się rezutlatami!
Czy próbowaliście już może uruchamiać modele językowe LLM lokalnie, a jeśli tak to z jakim rezultatem? Zapraszam do dyskusji.
Fajne? Ranking DIY Pomogłem? Kup mi kawę.