Використання Llamafiles для спрощення виконання LLM

Використання Llamafiles для спрощення виконання LLM

Вихідний вузол: 3068075

Вступ

Запуск великих мовних моделей завжди був виснажливим процесом. Потрібно завантажити набір стороннього програмного забезпечення, щоб завантажити ці LLM, або завантажити Python і створити середовище, завантаживши багато бібліотек Pytorch і HuggingFace. Якщо ви використовуєте підхід Pythonic, потрібно пройти процес написання коду, щоб завантажити та запустити модель. Цей посібник розгляне простіший підхід до запуску цих LLM.

Мета навчання

  • Зрозумійте проблеми традиційного виконання LLM
  • Зрозумійте інноваційну концепцію Llamafiles
  • Навчіться з легкістю завантажувати та запускати власні виконувані файли Llamafile
  • Навчання створювати Llam-файли з квантованих LLM
  • Визначте обмеження цього підходу

Ця стаття була опублікована як частина Blogathon Data Science.

Зміст

Проблеми з моделями великих мов

Великі мовні моделі (LLM) зробили революцію в тому, як ми взаємодіємо з комп’ютерами, генеруючи текст, перекладаючи мови, створюючи різний творчий вміст і навіть відповідаючи на ваші запитання інформативно. Однак запустити ці потужні моделі на комп’ютері часто було складно.

Щоб запустити LLMs, нам потрібно завантажити Python і багато залежностей AI, а крім того, нам навіть потрібно написати код для їх завантаження та запуску. Навіть під час встановлення готових інтерфейсів користувача для великих мовних моделей це передбачає багато налаштувань, які легко можуть піти не так. Встановити та запустити їх як виконуваний файл не було простим процесом.

Що таке Llamafiles?

Llamafiles створено для легкої роботи з популярними великими мовними моделями з відкритим кодом. Це однофайлові виконувані файли. Це все одно, що завантажити LLM і запустити його як виконуваний файл. Початкова інсталяція бібліотек не потрібна. Все це стало можливим завдяки llama.cpp і космополітичній бібліотеці libc, завдяки якій LLM працюють на різних ОС.

llama.cpp був розроблений Георгієм Гергановим для запуску великих мовних моделей у квантованому форматі, щоб вони могли працювати на ЦП. llama.cpp — це бібліотека C, яка дозволяє нам запускати квантовані LLM на споживчому обладнанні. З іншого боку, cosmopolitan libc — це ще одна бібліотека C, яка створює двійковий файл, який може працювати на будь-якій ОС (Windows, Mac, Ubuntu) без інтерпретатора. Отже, Llamafile створено на основі цих бібліотек, що дозволяє створювати однофайлові виконувані LLM

Доступні моделі в квантованому форматі GGUF. GGUF — це формат файлів для великих мовних моделей, розроблений Георгієм Гергановим, творцем llama.cpp. GGUF — це формат для ефективного та ефективного зберігання, спільного використання та завантаження великих мовних моделей на центральних і графічних процесорах. GGUF використовує техніку квантування, щоб стиснути моделі з їх оригінального 16-бітного числа з плаваючою крапкою до 4-бітного або 8-бітного цілочисельного формату. Ваги цієї квантованої моделі можна зберігати в цьому форматі GGUF

Це спрощує роботу моделей 7 Billion Parameter на комп’ютері з 16 ГБ VRAM. Ми можемо запускати великі мовні моделі, не потребуючи графічного процесора (хоча Llamafile навіть дозволяє нам запускати LLM на графічному процесорі). Наразі llama-файли популярних моделей великої мови з відкритим кодом, таких як LlaVa, Mistral і WizardCoder, доступні для завантаження та запуску

One Shot Виконувані файли

У цьому розділі ми завантажимо та спробуємо запустити мультимодальний LlaVa Llamafile. Тут ми не будемо працювати з GPU і запускати модель на CPU. Перейдіть до офіційного репозиторію Llamafile GitHub, клацнувши тут і завантаження моделі LlaVa 1.5.

Одноразовий виконуваний | Ламафайли

Завантажте модель

На зображенні вище показано всі доступні моделі з їх назвами, розмірами та посиланнями для завантаження. LlaVa 1.5 має лише близько 4 ГБ і є потужною мультимоделлю, яка може сприймати зображення. Завантажена модель — це модель із 7 мільярдів параметрів, квантована до 4 бітів. Після завантаження моделі перейдіть до папки, куди вона була завантажена.

"

Потім відкрийте CMD, перейдіть до папки, куди завантажено цю модель, введіть назву файлу, який ми завантажили, і натисніть enter.

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

Для користувачів Mac і Linux

Для Mac і Linux за замовчуванням дозвіл на виконання для цього файлу вимкнено. Отже, ми повинні надати дозвіл на виконання для llamafile, що ми можемо зробити, виконавши команду нижче.

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

Це потрібно для активації дозволу на виконання для файлу llava-v1.5-7b-q4.llama. Крім того, додайте «./» перед назвою файлу, щоб запустити файл на Mac і Linux. Після натискання ключового слова enter модель буде перенесено в оперативну пам’ять системи та покаже наступний результат.

Для користувачів Mac і Linux | Ламафайли

Потім з’явиться вікно браузера, і модель буде працювати за URL-адресою http://127.0.0.1:8080/

"
"

На зображенні вище показано стандартне підказка, ім’я користувача, ім’я LLM, шаблон підказки та шаблон історії чату. Їх можна налаштувати, але поки що ми будемо використовувати значення за замовчуванням.

Нижче ми навіть можемо перевірити настроювані гіперпараметри LLM, такі як Top P, Top K, Temperature та інші. Навіть ці, поки що ми залишимо їх типовими. Тепер давайте введемо щось і натиснемо «Надіслати».

"

На зображенні вище ми бачимо, що ми ввели повідомлення та навіть отримали відповідь. Нижче ми можемо перевірити, що ми отримуємо близько 6 жетонів за секунду, що є хорошим маркером за секунду, враховуючи, що ми працюємо повністю на ЦП. Цього разу давайте спробуємо це за допомогою зображення.

ЦП | TinyLlama

Хоча це не на 100% правильно, модель майже могла отримати більшість речей правильно із зображення. Тепер давайте проведемо багатоступеневу розмову з LlaVa, щоб перевірити, чи пам’ятає він історію чату.

На наведеному вище зображенні ми бачимо, що LlaVa LLM зміг добре підтримувати конво. Він може взяти історію розмови, а потім створити відповіді. Хоча остання згенерована відповідь не зовсім правдива, для її створення було зібрано попередню розмову. Отже, таким чином ми можемо завантажити файл llama і просто запустити їх як програмне забезпечення та працювати з цими завантаженими моделями.

Створення Llamafiles

Ми бачили демонстрацію Llamafile, яка вже була присутня на офіційному GitHub. Часто ми не хочемо працювати з цими моделями. Натомість ми хочемо створити однофайлові виконувані файли наших великих мовних моделей. У цьому розділі ми розглянемо процес створення однофайлових виконуваних файлів, тобто llama-файлів із квантованих LLM.

Виберіть LLM

Спочатку ми почнемо з вибору великої мовної моделі. Для цієї демонстрації ми виберемо квантовану версію TinyLlama. Тут ми будемо завантажувати 8-бітну квантовану модель GGUF TinyLlama (ви можете натиснути тут перейти на HuggingFace і завантажити модель)

TinyLlama

Завантажте найновіший файл Llamafile

Останній архів llamafile zip можна завантажити за офіційним посиланням GitHub. Також завантажте zip та розпакуйте файл zip. Поточна версія цієї статті — llama file-0.6. Після вилучення llama папка bin із папкою файлів міститиме файли, як показано на малюнку нижче.

"

Тепер перемістіть завантажену 8-розрядну квантовану модель TinyLlama до цієї папки bin. Щоб створити однофайлові виконувані файли, нам потрібно створити файл .args у папці bin файлу llamafile. До цього файлу нам потрібно додати такий вміст:

-m
tinyllama-1.1b-chat-v0.3.Q8_0.gguf
--host
0.0.0.0
...
  • Перший рядок вказує на прапор -m. Це повідомляє llamafile, що ми завантажуємо ваги моделі.
  • У другому рядку ми вказуємо назву моделі, яку ми завантажили, яка знаходиться в тому самому каталозі, де присутній файл .args, тобто папка bin файлу llama.
  • У третьому рядку ми додаємо прапор хоста, який вказує, що ми запускаємо виконуваний файл і хочемо розмістити його на веб-сервері.
  • Нарешті, в останньому рядку ми згадуємо адресу, де ми хочемо розмістити, яка відображається на localhost. Далі йдуть три крапки, які вказують на те, що ми можемо передавати аргументи до нашого llamafile після його створення.
  • Додайте ці рядки до файлу .args і збережіть його.

Для користувачів Windows

Тепер наступний крок для користувачів Windows. Якщо ми працюємо в Windows, нам потрібно було встановити Linux через WSL. Якщо ні, натисніть тут щоб пройти кроки встановлення Linux через WSL. У Mac і Linux додаткові дії не потрібні. Тепер відкрийте папку bin папки llamafile у терміналі (якщо працюєте в Windows, відкрийте цей каталог у WSL) і введіть наступні команди.

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

Тут ми створюємо новий файл під назвою tinyllama-1.1b-chat-v0.3.Q3_0.llamafile; тобто ми створюємо файл із розширенням .llamafile і переміщуємо файл llamafile у цей новий файл. Після цього ми введемо наступну команду.

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

Тут ми працюємо з файлом zipalign, який надійшов, коли ми завантажили файл llamafile zip з GitHub. Ми працюємо з цією командою, щоб створити файл llama для нашого квантованого TinyLlama. У цю команду zipalign ми передаємо файл tinyllama-1.1b-chat-v0.3.Q8_0.llama, створений на попередньому кроці, а потім передаємо файл tinyllama-1.1b-chat-v0.3.Q8_0.llama модель, яку ми маємо в папці bin, і нарешті передаємо файл .args, який ми створили раніше.

Це нарешті створить наш єдиний виконуваний файл tinyllama-1.1b-chat-v0.3.Q8_0.llamafile. Щоб переконатися, що ми знаходимося на одній сторінці, папка bin тепер містить такі файли.

Виконувані файли | Ламафайли

Тепер ми можемо запустити файл tinyllama-1.1b-chat-v0.3.Q8_0.llama так само, як і раніше. У Windows ви навіть можете перейменувати файл .llama на .exe та запустити його, двічі клацнувши його.

Сервер, сумісний з OpenAI

У цьому розділі буде розглянуто, як сервер LLM через Llamfile. Ми помітили, що коли ми запускаємо файл llama, відкривається браузер, і ми можемо взаємодіяти з LLM через WebUI. По суті, це те, що ми називаємо розміщенням великої мовної моделі.

Після запуску Llamafile ми можемо взаємодіяти з відповідним LLM як кінцевою точкою, оскільки модель обслуговується на локальному хості в порту 8080. Сервер працює за протоколом OpenAI API, тобто подібно до кінцевої точки OpenAI GPT, таким чином роблячи легко перемикатися між моделлю OpenAI GPT і LLM, що працює з Llamafile.

Тут ми запустимо раніше створений llamafile TinyLlama. Тепер це має бути запущено на локальному хості 8080. Тепер ми перевіримо це через сам API OpenAI у Python

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)
  • Тут ми працюємо з бібліотекою OpenAI. Але замість того, щоб вказувати кінцеву точку OpenAI, ми вказуємо URL-адресу, де розміщено наш TinyLlama, і надаємо «sk-no–потрібен маркер» для api_key
  • Потім клієнт підключиться до нашої кінцевої точки TinyLlama
  • Тепер, подібно до того, як ми працюємо з OpenAI, ми можемо використовувати код для спілкування з нашим TinyLlama.
  • Для цього ми співпрацюємо з доповнення клас OpenAI. Ми створюємо нове доповнення з .create() об’єкт і передайте такі деталі, як назва моделі та повідомлення.
  • Повідомлення мають форму списку словників, де ми маємо роль, яка може бути системою, користувачем або помічником, і ми маємо вміст.
  • Нарешті, ми можемо отримати інформацію, згенеровану за допомогою наведеного вище оператора друку.

Вихід для вищезазначеного можна побачити нижче.

Llamafiles | Вихід

Таким чином ми можемо використовувати файли llama та легко замінити API OpenAI на файл llama, який ми вибрали для запуску.

Обмеження Llamafiles

Незважаючи на революцію, файли llamafiles все ще знаходяться в стадії розробки. Деякі обмеження включають:

  • Обмежений вибір моделей: Наразі не всі LLM доступні у формі llamafiles. Поточний вибір попередньо зібраних файлів Llamafiles продовжує зростати. Наразі Llamafiles доступні для Llama 2, LlaVa, Mistral і Wizard Coder.
  • Вимоги до обладнання: Запуск LLM, навіть через Llamafiles, все ще вимагає багато обчислювальних ресурсів. Хоча їх легше запустити, ніж традиційні методи, старішим або менш потужним комп’ютерам може знадобитися допомога, щоб працювати безперебійно.
  • Питання безпеки: Завантаження та запуск виконуваних файлів із ненадійних джерел несе в собі невід’ємний ризик. Тому має бути надійна платформа, де ми можемо завантажити ці llamafiles.

Ламафайли проти решти

До Llamafiles існували різні способи запуску великих мовних моделей. Один був через llama_cpp_python. Це версія llama.cpp для Python, яка дозволяє нам запускати квантовані моделі великої мови на споживчому апаратному забезпеченні, наприклад ноутбуках і настільних ПК. Але щоб його запустити, ми повинні завантажити та встановити Python і навіть бібліотеки глибокого навчання, такі як torch, huggingface, transformers та багато інших. А після цього потрібно було написати багато рядків коду для запуску моделі.

Навіть тоді іноді ми можемо зіткнутися з проблемами через проблеми із залежностями (тобто деякі бібліотеки мають нижчі або вищі версії, ніж це необхідно). А ще є КТ-трансформатори бібліотека, яка дозволяє нам запускати квантовані LLM. Навіть для цього потрібен той самий процес, який ми обговорювали для llama_cpp_python

А далі, є Оллама. Ollama користується великим успіхом у спільноті штучного інтелекту завдяки простоті використання для легкого завантаження та запуску великих мовних моделей, особливо квантованих. Ollama — це свого роду TUI (термінальний інтерфейс користувача) для LLM. Єдина відмінність між Ollama та Llamafile полягає в можливості спільного використання. Тобто, якщо хочу, я можу поділитися своїм файлом model.llama з ким завгодно, і вони зможуть запустити його без завантаження будь-якого додаткового програмного забезпечення. Але у випадку Ollama мені потрібно поділитися файлом model.gguf, який інша особа може запустити лише після встановлення програмного забезпечення Ollama або через бібліотеки Python, наведені вище.

Що стосується ресурсів, то всі вони вимагають однакову кількість ресурсів, оскільки всі ці методи використовують llama.cpp під ним для запуску квантованих моделей. Ідеться лише про зручність використання, де є відмінності між ними.

Висновок

Llamafiles знаменують важливий крок вперед у тому, щоб зробити LLM готовими до запуску. Їх легкість у використанні та портативність відкриває цілий світ можливостей для розробників, дослідників і звичайних користувачів. Хоча існують обмеження, потенціал llamafiles для демократизації доступу до LLM очевидний. Незалежно від того, чи є ви досвідченим розробником чи допитливим новачком, Llamafiles відкриває захоплюючі можливості для дослідження світу LLM. У цьому посібнику ми розглянемо, як завантажити Llamafiles і навіть як створити наші власні Llamafiles за допомогою наших квантованих моделей. . Ми навіть подивилися на OpenAI-сумісний сервер, який створюється під час запуску Llamafiles.

Ключові винесення

  • Llamafiles — це однофайлові виконувані файли, які роблять запуск великих мовних моделей (LLM) простішим і доступнішим.
  • Вони усувають потребу в складних установках і конфігураціях, дозволяючи користувачам завантажувати та запускати LLM безпосередньо без вимог Python або GPU.
  • Файли Llamafiles уже доступні для обмеженої кількості LLM з відкритим кодом, зокрема LlaVa, Mistral і WizardCoder.
  • Незважаючи на те, що файли Llamafiles зручні, вони все ще мають обмеження, наприклад вимоги до апаратного забезпечення та проблеми безпеки, пов’язані із завантаженням виконуваних файлів із ненадійних джерел.
  • Незважаючи на ці обмеження, Llamafiles є важливим кроком до демократизації доступу до LLM для розробників, дослідників і навіть звичайних користувачів.

ЧАСТІ ЗАПИТАННЯ

Q1. Які переваги використання Llamafiles?

A. Llamafiles надають декілька переваг перед традиційними методами налаштування LLM. Вони полегшують і пришвидшують налаштування та виконання LLM, оскільки вам не потрібно встановлювати Python або мати графічний процесор. Це робить LLM більш доступними для ширшої аудиторії. Крім того, Llamafiles може працювати в різних операційних системах.

Q2. Які обмеження Llamafiles?

A. Хоча Llamafiles надають багато переваг, вони також мають деякі обмеження. Вибір LLM, доступних у Llamafiles, обмежений порівняно з традиційними методами. Крім того, запуск LLM через Llamafiles все ще потребує значної кількості апаратних ресурсів, і старіші чи менш потужні комп’ютери можуть не підтримувати це. Нарешті, проблеми безпеки пов’язані із завантаженням і запуском виконуваних файлів із ненадійних джерел.

Q3. Як я можу почати роботу з Llamafiles?

A. Щоб розпочати роботу з Llamafiles, ви можете відвідати офіційний репозиторій Llamafile GitHub. Там ви можете завантажити Llamafile для моделі LLM, яку ви хочете використовувати. Після завантаження файлу ви можете запустити його безпосередньо як виконуваний файл.

Q4. Чи можу я використовувати власну модель LLM з Llamafiles?

A. Ні. Наразі Llamafiles підтримує лише певні попередньо зібрані моделі. Створення наших власних Llamafiles планується для майбутніх версій.

Q5. Які перспективи Llamafiles?

A. Розробники Llamafiles працюють над розширенням вибору доступних моделей LLM, їх більш ефективним запуском і впровадженням заходів безпеки. Ці досягнення спрямовані на те, щоб зробити Llamafiles ще доступнішим і безпечнішим для більшої кількості людей, які не мають технічного досвіду.

Медіафайли, показані в цій статті, не належать Analytics Vidhya та використовуються на розсуд Автора.

Часова мітка:

Більше від Аналітика Vidhya