Использование Llamafiles для упрощения выполнения LLM

Использование Llamafiles для упрощения выполнения LLM

Исходный узел: 3068075

Введение

Запуск больших языковых моделей всегда был утомительным процессом. Чтобы загрузить эти LLM, необходимо загрузить набор стороннего программного обеспечения или загрузить Python и создать среду, загрузив множество библиотек Pytorch и HuggingFace. При использовании питонического подхода необходимо пройти процесс написания кода для загрузки и запуска модели. В этом руководстве будет рассмотрен более простой подход к запуску этих программ LLM.

Цели обучения

  • Поймите проблемы традиционного исполнения LLM
  • Освойте инновационную концепцию Llamafiles
  • Научитесь с легкостью загружать и запускать собственные исполняемые файлы Llamafile.
  • Учимся создавать Llamfiles из квантованных LLM
  • Определить ограничения этого подхода

Эта статья была опубликована в рамках Блогатон по Data Science.

Содержание

Проблемы с большими языковыми моделями

Модели больших языков (LLM) произвели революцию в том, как мы взаимодействуем с компьютерами, генерируем текст, переводим языки, пишем различные виды творческого контента и даже информативно отвечаем на ваши вопросы. Однако запуск этих мощных моделей на вашем компьютере часто бывает затруднительным.

Чтобы запустить LLM, нам нужно загрузить Python и множество зависимостей ИИ, а кроме того, нам даже нужно написать код для их загрузки и запуска. Даже при установке готовых к использованию пользовательских интерфейсов для больших языковых моделей требуется множество настроек, которые легко могут пойти не так. Установка и запуск их как исполняемого файла не был простым процессом.

Что такое Ламафайлы?

Файлы Llamafiles созданы для удобной работы с популярными моделями больших языков с открытым исходным кодом. Это однофайловые исполняемые файлы. Это все равно, что загрузить LLM и запустить его как исполняемый файл. Нет необходимости в первоначальной установке библиотек. Все это стало возможным благодаря llama.cpp и космополитической библиотеке libc, которая позволяет LLM работать на разных ОС.

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

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

Это упрощает запуск моделей с 7 миллиардами параметров на компьютере с видеопамятью 16 ГБ. Мы можем запускать модели большого языка без использования графического процессора (хотя Llamafile даже позволяет нам запускать LLM на графическом процессоре). Прямо сейчас лама-файлы популярных больших языковых моделей с открытым исходным кодом, таких как LlaVa, Mistral и WizardCoder, легко доступны для загрузки и запуска.

Одноразовые исполняемые файлы

В этом разделе мы скачаем и попробуем запустить мультимодальный LlaVa Llamafile. Здесь мы не будем работать с графическим процессором и запустим модель на процессоре. Перейдите в официальный репозиторий 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, Температура и другие. Даже для них мы пока оставим их по умолчанию. Теперь давайте что-нибудь напечатаем и нажмем «Отправить».

"

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

процессор | КрошечныйЛама

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

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

Создание ламафайлов

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

Выберите LLM

Сначала мы начнем с выбора большой языковой модели. Для этой демонстрации мы выберем квантованную версию TinyLlama. Здесь мы будем загружать 8-битную квантованную модель TinyLlama в формате GGUF (вы можете нажать здесь зайти на HuggingFace и скачать модель)

КрошечныйЛама

Загрузите последний файл ламы

Последний zip-архив llamafile можно скачать по официальной ссылке на GitHub. Кроме того, загрузите zip-архив и распакуйте zip-файл. Текущая версия этой статьи — lama file-0.6. После извлечения ламы папка 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 файла llamafile.
  • В третьей строке мы добавляем флаг хоста, указывающий, что мы запускаем исполняемый файл и хотим разместить его на веб-сервере.
  • Наконец, в последней строке мы указываем адрес, на котором мы хотим разместить хост, который соответствует 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, который появился, когда мы скачали zip-архив llamafile с 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 через веб-интерфейс. По сути, это то, что мы называем размещением большой языковой модели.

Запустив файл Llamafile, мы можем взаимодействовать с соответствующим LLM в качестве конечной точки, поскольку модель обслуживается на локальном хосте по порту 8080. Сервер следует протоколу API OpenAI, т. е. аналогично конечной точке OpenAI GPT, что делает легко переключаться между моделью OpenAI GPT и LLM, работающим с 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. Мы создаем новые пополнения с .создавать() возражайте и передайте такие данные, как имя модели и сообщения.
  • Сообщения представляют собой список словарей, где у нас есть роль, которая может быть системой, пользователем или помощником, и у нас есть контент.
  • Наконец, мы можем получить информацию, сгенерированную с помощью приведенного выше оператора печати.

Результат вышеизложенного можно увидеть ниже.

Ламафайлы | Выход

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

Ограничения ламафайлов

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

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

Ламафайлы против остальных

До Llamafiles существовали разные способы запуска больших языковых моделей. Один прошел через llama_cpp_python. Это версия llama.cpp для Python, которая позволяет нам запускать квантованные модели большого языка на потребительском оборудовании, таком как ноутбуки и настольные ПК. Но чтобы запустить его, мы должны загрузить и установить Python и даже библиотеки глубокого обучения, такие как Torch, HuggingFace, Transformers и многие другие. И после этого потребовалось написать множество строк кода для запуска модели.

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

И затем, есть Оллама. Ollama пользуется большим успехом в сообществе искусственного интеллекта благодаря простоте использования, позволяющей легко загружать и запускать большие языковые модели, особенно квантовые. Ollama — это своего рода TUI (пользовательский интерфейс терминала) для LLM. Единственная разница между Ollama и Llamafile — возможность совместного использования. То есть, если захочу, то я могу поделиться своим файлом model.llama с кем угодно, и они смогут его запустить, не скачивая никакого дополнительного ПО. Но в случае с Ollama мне нужно поделиться файлом model.gguf, который другой человек сможет запустить только после установки программного обеспечения Ollama или через вышеуказанные библиотеки Python.

Что касается ресурсов, то всем им требуется одинаковое количество ресурсов, поскольку все эти методы используют расположенный ниже файл llama.cpp для запуска квантованных моделей. Там, где между ними есть различия, речь идет только о простоте использования.

Заключение

Ламафайлы знаменуют собой решающий шаг вперед в обеспечении простоты использования LLM. Их простота использования и портативность открывают мир возможностей для разработчиков, исследователей и обычных пользователей. Несмотря на наличие ограничений, потенциал ламафайлов для демократизации доступа к LLM очевиден. Являетесь ли вы опытным разработчиком или любопытным новичком, Llamafiles открывает захватывающие возможности для изучения мира LLM. В этом руководстве мы рассмотрели, как загружать Llamafiles и даже как создавать свои собственные Llamafiles с нашими квантованными моделями. . Мы даже рассмотрели OpenAI-совместимый сервер, который создается при запуске Llamafiles.

Основные выводы

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

Часто задаваемые вопросы

Вопрос 1. Каковы преимущества использования Llamafiles?

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

В2. Каковы ограничения Llamafiles?

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

Вопрос 3. Как мне начать работу с Llamafiles?

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

Вопрос 4. Могу ли я использовать свою собственную модель LLM с Llamafiles?

О. Нет. В настоящее время Llamafiles поддерживает только определенные предварительно созданные модели. Создание наших собственных файлов Llamafiles запланировано в будущих версиях.

Вопрос 5. Каковы перспективы Llamafiles?

О. Разработчики Llamafiles работают над расширением выбора доступных моделей LLM, более эффективным их запуском и внедрением мер безопасности. Эти достижения направлены на то, чтобы сделать Llamafiles еще более доступным и безопасным для большего числа людей с небольшим техническим образованием.

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

Отметка времени:

Больше от Аналитика Видхья