Używanie plików Llamafile do uproszczenia wykonywania LLM

Używanie plików Llamafile do uproszczenia wykonywania LLM

Węzeł źródłowy: 3068075

Wprowadzenie

Uruchamianie dużych modeli językowych zawsze było żmudnym procesem. Aby załadować te LLM, należy pobrać zestaw oprogramowania innej firmy lub pobrać Python i utworzyć środowisko, pobierając wiele bibliotek Pytorch i HuggingFace. Jeśli korzystasz z podejścia Pythonic, musisz przejść przez proces pisania kodu, aby pobrać i uruchomić model. W tym przewodniku przyjrzymy się łatwiejszemu podejściu do prowadzenia tych LLM.

Cele kształcenia

  • Zrozum wyzwania związane z tradycyjną realizacją LLM
  • Poznaj innowacyjną koncepcję Llamafiles
  • Dowiedz się, jak z łatwością pobierać i uruchamiać własne pliki wykonywalne Llamafile
  • Nauka tworzenia plików Llam ze skwantowanych LLM
  • Zidentyfikuj ograniczenia tego podejścia

Ten artykuł został opublikowany jako część Blogathon nauki o danych.

Spis treści

Problemy z modelami wielkojęzykowymi

Modele wielkojęzykowe (LLM) zrewolucjonizowały sposób, w jaki współpracujemy z komputerami, generując tekst, tłumacząc języki, pisząc różnego rodzaju kreatywne treści, a nawet odpowiadając na pytania w sposób informacyjny. Jednak uruchomienie tych potężnych modeli na komputerze często stanowiło wyzwanie.

Aby uruchomić LLM, musimy pobrać Pythona i wiele zależności AI, a na dodatek musimy nawet napisać kod, aby je pobrać i uruchomić. Nawet w przypadku instalowania gotowych do użycia interfejsów użytkownika dla modeli wielkojęzycznych wiąże się to z wieloma konfiguracjami, które mogą łatwo zakończyć się niepowodzeniem. Instalowanie i uruchamianie ich jak pliku wykonywalnego nie było prostym procesem.

Co to są pliki Llama?

Pliki Lama są tworzone tak, aby łatwo współpracowały z popularnymi modelami dużych języków typu open source. Są to jednoplikowe pliki wykonywalne. To tak, jakby pobrać plik LLM i uruchomić go jako plik wykonywalny. Nie ma potrzeby wstępnej instalacji bibliotek. Wszystko to było możliwe dzięki llama.cpp i kosmopolitycznej bibliotece libc, która sprawia, że ​​LLM działają na różnych systemach operacyjnych.

Plik llama.cpp został opracowany przez Georgi Gerganova w celu uruchamiania dużych modeli językowych w formacie skwantowanym, dzięki czemu mogą działać na procesorze. Lama.cpp to biblioteka C, która umożliwia uruchamianie skwantowanych LLM na sprzęcie konsumenckim. Z drugiej strony kosmopolityczna biblioteka libc to kolejna biblioteka C, która tworzy plik binarny, który można uruchomić na dowolnym systemie operacyjnym (Windows, Mac, Ubuntu) bez potrzeby stosowania interpretera. Zatem plik Llamafile jest zbudowany na tych bibliotekach, co pozwala mu tworzyć jednoplikowe pliki wykonywalne LLM

Dostępne modele są w formacie skwantowanym GGUF. GGUF to format pliku dla dużych modeli językowych opracowany przez Georgi Gerganowa, twórcę pliku llama.cpp. GGUF to format umożliwiający efektywne i wydajne przechowywanie, udostępnianie i ładowanie modeli wielkojęzycznych na procesorach CPU i GPU. GGUF wykorzystuje technikę kwantyzacji do kompresji modeli z ich oryginalnego 16-bitowego formatu zmiennoprzecinkowego do 4-bitowego lub 8-bitowego formatu liczb całkowitych. Wagi tego skwantowanego modelu można przechowywać w formacie GGUF

Ułatwia to pracę modeli 7 Billion Parameter na komputerze z 16 GB pamięci VRAM. Możemy uruchamiać duże modele językowe bez konieczności stosowania procesora graficznego (chociaż Llamafile pozwala nam nawet uruchamiać modele LLM na procesorze graficznym). W tej chwili pliki lamy popularnych modeli wielkojęzykowych Open Source, takich jak LlaVa, Mistral i WizardCoder, są łatwo dostępne do pobrania i uruchomienia

Pliki wykonywalne One Shot

W tej sekcji pobierzemy i spróbujemy uruchomić multimodalny plik LlaVa Llamafile. Tutaj nie będziemy pracować z GPU i uruchamiać model na CPU. Przejdź do oficjalnego repozytorium Llamafile GitHub, klikając tutaj i pobranie modelu LlaVa 1.5.

Pliki wykonywalne jednym strzałem | Pliki lam

Pobierz model

Powyższy obrazek przedstawia wszystkie dostępne modele wraz z ich nazwami, rozmiarami i linkami do pobrania. LlaVa 1.5 ma około 4 GB i jest potężnym multimodelem, który potrafi rozumieć obrazy. Pobrany model to model zawierający 7 miliardów parametrów, skwantowany do 4 bitów. Po pobraniu modelu przejdź do folderu, w którym został pobrany.

"

Następnie otwórz CMD, przejdź do folderu, w którym pobrany jest ten model, wpisz nazwę pliku, który pobraliśmy i naciśnij Enter.

llava-v1.5-7b-q4.llamafile
"

Dla użytkowników komputerów Mac i Linux

W przypadku komputerów Mac i Linux uprawnienia do wykonywania tego pliku są domyślnie wyłączone. Dlatego musimy zapewnić pozwolenie na wykonanie pliku lama, co możemy zrobić, uruchamiając poniższe polecenie.

chmod +x llava-v1.5-7b-q4.llamafile

Ma to na celu aktywację pozwolenia na wykonanie pliku llava-v1.5-7b-q4.llama. Dodaj także „./” przed nazwą pliku, aby uruchomić plik na komputerach Mac i Linux. Po naciśnięciu klawisza Enter model zostanie wypchnięty do systemowej pamięci RAM i wyświetli następujące dane wyjściowe.

Dla użytkowników komputerów Mac i Linux | Pliki lam

Następnie wyświetli się przeglądarka i model będzie działał pod adresem URL http://127.0.0.1:8080/

"
"

Powyższe zdjęcie pokazuje domyślny monit, nazwę użytkownika, nazwę LLM, szablon podpowiedzi i szablon historii czatów. Można je skonfigurować, ale na razie skorzystamy z wartości domyślnych.

Poniżej możemy nawet sprawdzić konfigurowalne hiperparametry LLM, takie jak Top P, Top K, Temperatura i inne. Nawet te, na razie pozwolimy im być domyślnymi. Teraz napiszmy coś i kliknij wyślij.

"

Na powyższym zdjęciu widać, że napisaliśmy wiadomość i nawet otrzymaliśmy odpowiedź. Poniżej możemy sprawdzić, czy uzyskujemy około 6 tokenów na sekundę, co jest dobrym tokenem na sekundę, biorąc pod uwagę, że uruchamiamy go wyłącznie na procesorze. Tym razem spróbujmy z obrazem.

Procesor | MalutkaLama

Chociaż nie jest to w 100% poprawne, model prawie mógł uzyskać większość rzeczy bezpośrednio z Obrazu. Przeprowadźmy teraz wieloetapową rozmowę z LlaVą, aby sprawdzić, czy pamięta historię czatów.

Na powyższym zdjęciu widać, że LlaVa LLM była w stanie dobrze dotrzymać konwoju. Może przeprowadzić rozmowę na temat historii, a następnie wygenerować odpowiedzi. Chociaż ostatnia wygenerowana odpowiedź nie jest do końca prawdziwa, zebrano poprzednią rozmowę, aby ją wygenerować. W ten sposób możemy pobrać plik lam, po prostu uruchomić go jak oprogramowanie i pracować z pobranymi modelami.

Tworzenie plików Lama

Widzieliśmy wersję demonstracyjną Llamafile, która była już dostępna na oficjalnym GitHubie. Często nie mamy ochoty pracować z tymi modelami. Zamiast tego chcemy tworzyć jednoplikowe pliki wykonywalne naszych dużych modeli językowych. W tej sekcji przejdziemy przez proces tworzenia jednoplikowych plików wykonywalnych, tj. plików lam ze skwantowanych LLM.

Wybierz LLM

Najpierw zaczniemy od wybrania modelu dużego języka. Na potrzeby tego demo wybierzemy skwantyzowaną wersję TinyLlama. Tutaj będziemy pobierać 8-bitowy, skwantowany model GGUF TinyLlama (możesz kliknąć tutaj aby przejść do HuggingFace i pobrać model)

MalutkaLama

Pobierz najnowszy plik Llamafile

Najnowszy plik zip z llamafile można pobrać z oficjalnego łącza GitHub. Pobierz także zip i wyodrębnij plik zip. Aktualna wersja tego artykułu to plik lamy-0.6. Po rozpakowaniu lamy folder bin z folderem plików będzie zawierał pliki takie jak na obrazku poniżej.

"

Teraz przenieś pobrany 8-bitowy, skwantowany model TinyLlama do tego folderu bin. Aby utworzyć jednoplikowe pliki wykonywalne, musimy utworzyć plik .args w folderze bin pliku llamafile. Do tego pliku musimy dodać następującą treść:

-m
tinyllama-1.1b-chat-v0.3.Q8_0.gguf
--host
0.0.0.0
...
  • Pierwsza linia wskazuje flagę -m. To informuje plik lam, że ładujemy wagi modelu.
  • W drugiej linii podajemy nazwę modelu, który pobraliśmy, który znajduje się w tym samym katalogu, w którym znajduje się plik .args, czyli w folderze bin pliku llama.
  • W trzeciej linii dodajemy flagę hosta, wskazującą, że uruchamiamy plik wykonywalny i chcemy umieścić go na serwerze WWW.
  • Na koniec w ostatniej linijce podajemy adres, pod którym chcemy hostować, który jest mapowany na localhost. Po nim znajdują się trzy kropki, które określają, że możemy przekazywać argumenty do naszego pliku lamy po jego utworzeniu.
  • Dodaj te linie do pliku .args i zapisz go.

Dla użytkowników systemu Windows

Teraz następny krok należy do użytkowników systemu Windows. Jeśli pracowaliśmy w systemie Windows, musieliśmy zainstalować Linuksa za pośrednictwem WSL. Jeśli nie, kliknij tutaj aby przejść przez kolejne etapy instalacji Linuksa poprzez WSL. W systemach Mac i Linux nie są wymagane żadne dodatkowe kroki. Teraz otwórz folder bin folderu llamafile w terminalu (jeśli pracujesz w systemie Windows, otwórz ten katalog w WSL) i wpisz następujące polecenia.

cp llamafile tinyllama-1.1b-chat-v0.3.Q8_0.llamafile

Tutaj tworzymy nowy plik o nazwie tinyllama-1.1b-chat-v0.3.Q3_0.llamafile; to znaczy tworzymy plik z rozszerzeniem .llamafile i przenosimy plik llamafile do tego nowego pliku. Teraz, po tym, wpiszemy kolejne polecenie.

./zipalign -j0 tinyllama-1.1b-chat-v0.3.Q8_0.llamafile tinyllama-1.1b-chat-v0.3.Q8_0.gguf .args

Tutaj pracujemy z plikiem zipalign, który otrzymaliśmy po pobraniu pliku zip llamafile z GitHub. Pracujemy z tym poleceniem, aby utworzyć plik lam dla naszej skwantowanej TinyLlama. Do tego polecenia zipalign przekazujemy plik tinyllama-1.1b-chat-v0.3.Q8_0.llama, który utworzyliśmy w poprzednim kroku, a następnie przekazujemy plik tinyllama-1.1b-chat-v0.3.Q8_0.llama model, który mamy w folderze bin i na koniec przekazujemy utworzony wcześniej plik .args.

To w końcu wygeneruje nasz pojedynczy plik wykonywalny tinyllama-1.1b-chat-v0.3.Q8_0.llamafile. Aby mieć pewność, że jesteśmy na tej samej stronie, folder bin zawiera teraz następujące pliki.

Pliki wykonywalne | Pliki lam

Teraz możemy uruchomić plik tinyllama-1.1b-chat-v0.3.Q8_0.llama w taki sam sposób, jak robiliśmy to wcześniej. W systemie Windows możesz nawet zmienić nazwę pliku .llama na .exe i uruchomić go, klikając go dwukrotnie.

Serwer zgodny z OpenAI

W tej sekcji omówimy, jak serwerować LLM za pośrednictwem pliku Llam. Zauważyliśmy, że po uruchomieniu pliku lamy otwiera się przeglądarka i możemy wchodzić w interakcję z LLM poprzez WebUI. Zasadniczo nazywamy to hostingiem modelu dużego języka.

Po uruchomieniu pliku Llamafile możemy wchodzić w interakcję z odpowiednim LLM jako punktem końcowym, ponieważ model jest obsługiwany na lokalnym hoście na porcie 8080. Serwer korzysta z protokołu OpenAI API, tj. jest podobny do punktu końcowego OpenAI GPT, dzięki czemu łatwo jest przełączać się między modelem OpenAI GPT a LLM działającym z Llamafile.

Tutaj uruchomimy wcześniej utworzony plik llama TinyLlama. Teraz musi to działać na serwerze localhost 8080. Przetestujemy to teraz za pomocą samego interfejsu API OpenAI w Pythonie

from openai import OpenAI
client = OpenAI(
    base_url="http://localhost:8080/v1", 
    api_key = "sk-no-key-required"
)
completion = client.chat.completions.create(
    model="TinyLlama",
    messages=[
        {"role": "system", "content": "You are a usefull AI 
        Assistant who helps answering user questions"},
        {"role": "user", "content": "Distance between earth to moon?"}
    ]
)
print(completion.choices[0].message.content)
  • Tutaj pracujemy z biblioteką OpenAI. Zamiast jednak określać punkt końcowy OpenAI, podajemy adres URL, pod którym hostowana jest nasza TinyLlama i podajemy „sk-nie–wymagany token” dla klucza api
  • Następnie klient zostanie podłączony do naszego punktu końcowego TinyLlama
  • Teraz, podobnie jak pracujemy z OpenAI, możemy użyć kodu do rozmowy z naszą TinyLlamą.
  • W tym celu współpracujemy z uzupełnienia klasa OpenAI. Tworzymy nowe uzupełnienia z .tworzyć() obiekt i przekaż szczegóły, takie jak nazwa modelu i komunikaty.
  • Wiadomości mają formę listy słowników, w których mamy rolę (może to być system, użytkownik lub asystent) i mamy treść.
  • Wreszcie możemy pobrać informacje wygenerowane za pomocą powyższej instrukcji print.

Wynik powyższego można zobaczyć poniżej.

Pliki lam | Wyjście

W ten sposób możemy wykorzystać pliki lam i łatwo zastąpić interfejs API OpenAI plikiem lam, który wybraliśmy do uruchomienia.

Ograniczenia plików Llama

Choć rewolucyjne, pliki lam są wciąż w fazie rozwoju. Niektóre ograniczenia obejmują:

  • Ograniczony wybór modeli: Obecnie nie wszystkie LLM są dostępne w formie plików lam. Obecny wybór gotowych plików Llamafiles wciąż rośnie. Obecnie pliki Llamafiles są dostępne dla Llama 2, LlaVa, Mistral i Wizard Coder.
  • Wymagania sprzętowe: Uruchamianie LLM, nawet za pośrednictwem plików Llamafile, nadal wymaga dużych zasobów obliczeniowych. Chociaż są one łatwiejsze w obsłudze niż metody tradycyjne, starsze lub słabsze komputery mogą potrzebować pomocy, aby zapewnić ich płynne działanie.
  • Względy bezpieczeństwa: Pobieranie i uruchamianie plików wykonywalnych z niezaufanych źródeł niesie ze sobą nieodłączne ryzyko. Musi więc istnieć godna zaufania platforma, z której możemy pobrać te pliki lam.

Lamafile kontra reszta

Przed Llamafiles istniały różne sposoby uruchamiania dużych modeli językowych. Jeden był przez lama_cpp_python. To jest wersja llama.cpp w języku Python, która umożliwia uruchamianie skwantowanych modeli wielkojęzykowych na sprzęcie konsumenckim, takim jak laptopy i komputery stacjonarne. Ale aby go uruchomić, musimy pobrać i zainstalować Pythona, a nawet biblioteki głębokiego uczenia się, takie jak torch, huggingface, transformatory i wiele innych. Następnie trzeba było napisać wiele linii kodu uruchamiającego model.

Nawet wtedy czasami możemy napotkać problemy wynikające z problemów z zależnościami (to znaczy, że niektóre biblioteki mają wersje niższe lub wyższe niż to konieczne). Jest też CTransformatory biblioteka, która pozwala nam uruchamiać skwantowane LLM. Nawet to wymaga tego samego procesu, który omówiliśmy dla llama_cpp_python

A potem jest Ollama. Ollama odniosła duży sukces w społeczności sztucznej inteligencji ze względu na łatwość użycia do łatwego ładowania i uruchamiania dużych modeli językowych, zwłaszcza tych skwantowanych. Ollama to rodzaj TUI (interfejsu użytkownika terminala) dla LLM. Jedyną różnicą między Ollamą i Llamafile jest możliwość udostępniania. Oznacza to, że jeśli chcę, mogę udostępnić mój plik model.llama każdemu, aby mógł go uruchomić bez konieczności pobierania dodatkowego oprogramowania. Ale w przypadku Ollama muszę udostępnić plik model.gguf, który druga osoba może uruchomić tylko po zainstalowaniu oprogramowania Ollama lub poprzez powyższe biblioteki Pythona.

Jeśli chodzi o zasoby, wszystkie wymagają tej samej ilości zasobów, ponieważ wszystkie te metody wykorzystują plik llama.cpp znajdujący się poniżej do uruchamiania modeli skwantowanych. Chodzi tylko o łatwość obsługi tam, gdzie istnieją różnice między nimi.

Wnioski

Pliki Llama stanowią kluczowy krok naprzód w ułatwianiu obsługi LLM. Ich łatwość użycia i przenośność otwierają świat możliwości dla programistów, badaczy i zwykłych użytkowników. Chociaż istnieją ograniczenia, potencjał plików lam w zakresie demokratyzacji dostępu LLM jest oczywisty. Niezależnie od tego, czy jesteś doświadczonym programistą, czy ciekawym nowicjuszem, Llamafiles otwiera ekscytujące możliwości odkrywania świata LLM. W tym przewodniku przyjrzeliśmy się, jak pobierać Llamafiles, a nawet jak tworzyć własne Llamafiles za pomocą naszych skwantowanych modeli . Przyjrzeliśmy się nawet serwerowi kompatybilnemu z OpenAI, który jest tworzony podczas uruchamiania Llamafiles.

Na wynos

  • Pliki lam to jednoplikowe pliki wykonywalne, dzięki którym uruchamianie dużych modeli językowych (LLM) jest łatwiejsze i łatwiej dostępne.
  • Eliminują potrzebę skomplikowanych instalacji i konfiguracji, umożliwiając użytkownikom pobieranie i uruchamianie LLM bezpośrednio, bez wymagań Pythona lub GPU.
  • Pliki Llama są już dostępne dla ograniczonej liczby programów LLM typu open source, w tym LlaVa, Mistral i WizardCoder.
  • Chociaż pliki Llamafile są wygodne, nadal mają ograniczenia, takie jak wymagania sprzętowe i obawy dotyczące bezpieczeństwa związane z pobieraniem plików wykonywalnych z niezaufanych źródeł.
  • Pomimo tych ograniczeń Llamafiles stanowi ważny krok w kierunku demokratyzacji dostępu LLM dla programistów, badaczy, a nawet zwykłych użytkowników.

Często Zadawane Pytania

Pytanie 1. Jakie są zalety korzystania z Llamafiles?

O. Pliki Llama zapewniają kilka zalet w porównaniu z tradycyjnymi metodami konfiguracji LLM. Sprawiają, że LLM jest łatwiejszy i szybszy w konfiguracji i uruchomieniu, ponieważ nie musisz instalować Pythona ani mieć procesora graficznego. Dzięki temu LLM są łatwiej dostępne dla szerszego grona odbiorców. Ponadto pliki Llamafiles mogą działać w różnych systemach operacyjnych.

Pytanie 2. Jakie są ograniczenia Llamafiles?

O. Choć pliki Llamafile zapewniają wiele korzyści, mają też pewne ograniczenia. Wybór LLM dostępnych w Llamafiles jest ograniczony w porównaniu z tradycyjnymi metodami. Ponadto uruchamianie LLM za pośrednictwem plików Llamafiles nadal wymaga dużej ilości zasobów sprzętowych, a starsze lub słabsze komputery mogą tego nie obsługiwać. Wreszcie obawy związane z bezpieczeństwem są związane z pobieraniem i uruchamianiem plików wykonywalnych z niezaufanych źródeł.

Pytanie 3. Jak mogę zacząć korzystać z Llamafiles?

O. Aby rozpocząć korzystanie z Llamafiles, możesz odwiedzić oficjalne repozytorium Llamafile na GitHubie. Tam możesz pobrać plik Llama dla modelu LLM, którego chcesz użyć. Po pobraniu pliku możesz go uruchomić bezpośrednio jako plik wykonywalny.

Pytanie 4. Czy mogę używać własnego modelu LLM z Llamafiles?

O. Nie. Obecnie Llamafiles obsługuje tylko określone, gotowe modele. W przyszłych wersjach planowane jest tworzenie własnych plików Llamafile.

Pytanie 5. Jakie są perspektywy Llamafiles?

O. Twórcy Llamafiles pracują nad rozszerzeniem wyboru dostępnych modeli LLM, wydajniejszym ich uruchamianiem i wdrożeniem środków bezpieczeństwa. Udoskonalenia te mają na celu uczynienie plików Llamafile jeszcze bardziej dostępnymi i bezpiecznymi dla większej liczby osób o niewielkim zapleczu technicznym.

Media pokazane w tym artykule nie są własnością Analytics Vidhya i są wykorzystywane według uznania Autora.

Znak czasu:

Więcej z Analityka Widhja