Исследование альтернатив с открытым исходным кодом для моделей OpenAI

Исследование доступных альтернатив с открытым исходным кодом для моделей OpenAI

Введение

Ноябрь был драматичным в области искусственного интеллекта. С момента запуска магазинов GPT, GPT-4-turbo, и до скандала OpenAI, был необычайный путь. Но это порождает важный вопрос: насколько надежны закрытые модели и люди, стоящие за ними? Не будет приятно, если модель, которую вы используете в производстве, ляжет из-за какой-то корпоративной драмы. В этом нет проблемы с открытыми моделями. У вас полный контроль над развернутыми вами моделями. Вы имеете полный контроль над своими данными и моделями. Но можно ли заменить ОС-модель на GPT? К счастью, уже существуют множество открытых моделей, которые выполняют не хуже или даже лучше моделей GPT-3.5. В этой статье будут рассмотрены некоторые из лучших альтернатив для открытых LLM и LMM.

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

  • Обсудить открытые языковые модели с открытым исходным кодом.
  • Изучить передовые языковые модели с открытым исходным кодом и мульти-модальные модели.
  • Предоставить краткое введение в квантование больших языковых моделей.
  • Узнать о инструментах и службах для запуска LLM локально и в облаке.

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

Что такое модель с открытым исходным кодом?

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

Но они открытые? А что насчет данных? Большинство научных лабораторий не публикуют данные, используемые для обучения базовых моделей, из-за многих проблем, связанных с авторскими правами и конфиденциальностью данных. Это также приводит нас к части лицензирования моделей. Каждая модель с открытым исходным кодом поставляется с лицензией, аналогичной любому другому программному обеспечению с открытым исходным кодом. Многие базовые модели, такие как Llama-1, поставляются с не коммерческой лицензией, что означает, что вы не можете использовать эти модели для заработка денег. Но модели, такие как Mistral7B и Zephyr7B, поставляются с лицензиями Apche-2.0 и MIT, которые можно использовать везде без ограничений.

Альтернативы с открытым исходным кодом

С момента запуска Llama началась гонка в открытом пространстве, чтобы догнать модели OpenAI. И результаты до сих пор внушают оптимизм. В течение года после GPT-3.5 у нас есть модели, выполняющие не хуже или даже лучше GPT-3.5 с меньшим количеством параметров. Но GPT-4 по-прежнему остается лучшей моделью для выполнения общих задач, от рассуждений и математики до генерации кода. Рассмотрев темпы инноваций и финансирования в моделях с открытым исходным кодом, мы скоро получим модели, приближающиеся к производительности GPT-4. На данный момент давайте обсудим несколько превосходных альтернатив с открытым исходным кодом для этих моделей.

Llama Meta 2

Компания Meta выпустила свою лучшую модель Llama-2 в июле этого года, и она сразу же стала популярной благодаря своим впечатляющим возможностям. Meta выпустила четыре модели Llama-2 с разными размерами параметров. Llama-7b, 13b, 34b и 70b. Модели оказались достаточно хорошими, чтобы превзойти другие открытые модели в своих категориях. Но сейчас множество моделей, таких как mistral-7b и Zephyr-7b, превосходят более маленькие модели Llama во многих тестах. Llama-2 70b по-прежнему является одной из лучших моделей в своей категории и является достойной альтернативой GPT-4 для задач, таких как составление резюме, машинный перевод и т.д.

На нескольких тестах Llama-2 показала лучшие результаты, чем GPT-3.5, и смогла приблизиться к GPT-4, что делает ее достойной замены GPT-3.5 и в некоторых случаях GPT-4. На следующем графике показано сравнение производительности моделей Llama и GPT от Anyscale.

Для получения дополнительной информации о Llama-2 обратитесь к блогу на HuggingFace. Эти LLM показали хорошие результаты после настройки на пользовательских наборах данных. Мы можем настроить модели для лучшей производительности в различных задачах.

Различные исследовательские лаборатории также выпустили настроенные версии Llama-2. Эти модели показали лучшие результаты, чем оригинальные модели на многих тестовых наборах данных. Эта настроенная модель Llama-2, Nous-Hermes-Llama2-70b от Nous Research, была настроена на более чем 300 000 пользовательских инструкций, что делает ее лучше, чем оригинальная meta-llama/Llama-2-70b-chat-hf.

Ознакомьтесь с рейтингом HuggingFace. Вы можете найти настроенные модели Llama-2 с лучшими результатами по сравнению с оригинальными моделями. Это одно из преимуществ открытых моделей. Есть много моделей, из которых можно выбрать в соответствии с требованиями.

Mistral-7B

С момента выпуска Mistral-7B она стала любимицей open-source сообщества. У нее показаны гораздо лучшие результаты, чем у любых других моделей в этой категории, и она приближается к возможностям GPT-3.5. Эта модель может быть альтернативой Gpt-3.5 во многих случаях, таких как краткое изложение, перефразирование, классификация и т. д.

Несколько параметров модели обеспечивают более компактную модель, которую можно запускать локально или хостить по более низкой цене, чем более крупные модели. Вот оригинальное пространство HuggingFace для Mistral-7b. Одно из отличительных качеств Mistral-7B – это то, что она является исходной моделью без какой-либо цензуры. Большинство моделей обрезаются с использованием тяжелой RLHF перед выпуском, что делает их нежелательными для многих задач. Но это делает Mistral-7B желательной для выполнения реальных задач в конкретных областях.

Благодаря активному открытому сообществу существует несколько альтернативных настроенных моделей с лучшей производительностью по сравнению с исходными моделями Mistral7b.

OpenHermes-2.5

OpenHermes-2.5 – это настроенная модель Mistral. Она показала поразительные результаты по всем метрикам оценки (GPT4ALL, TruthfullQA, AgiEval, BigBench). Для многих задач она неотличима от GPT-3.5. Дополнительную информацию о OpenHermes вы можете найти в репозитории HF: teknium/OpenHermes-2.5-Mistral-7B.

Zephyr-7B

Zephyr-7B – это еще одна настроенная модель Mistral-7B от HuggingFace. HuggingFace полностью настроили Mistral-7B, используя DPO (Direct Preference Optimization). Zephyr-7b-beta производит результаты на уровне более крупных моделей, таких как GPT-3.5 и Llama-2-70b, во многих задачах, включая написание, гуманитарные науки и ролевые игры. Ниже приведено сравнение Zephyr-7b с другими моделями на MTbench. Она может быть хорошей заменой GPT-3.5 во многих случаях.

Вот официальный репозиторий HuggingFace: HuggingFaceH4/zephyr-7b-beta.

Intel Neural Chat

Neural Chat – это 7B модель LLM, настроенная на основе Mistral-7B компанией Intel. Она показала впечатляющую производительность и занимает первое место в рейтинге HuggingFace среди всех 7B моделей. NeuralChat-7b настроена и обучена на базе Gaudi-2, чипа Intel для более быстрого выполнения задач искусственного интеллекта. Отличная производительность NeuralChat является результатом надзорного настройки и оптимизации прямых предпочтений (DPO) на наборах данных Orca и slim-orca.

Вот репозиторий HuggingFace NeuralChat: Intel/neural-chat-7b-v3-1.

Открытые большие мультимодальные модели

После выпуска GPT-4 Vision возрос интерес к мультимодальным моделям. Большие языковые модели с визуальной составляющей могут быть полезны во многих реальных ситуациях, таких как ответы на вопросы на изображениях и описание видео. В одном из таких примеров, Tldraw выпустил белую доску ИИ, которая позволяет создавать веб-компоненты из рисунков на доске с использованием невероятной способности GPT-4V интерпретировать изображения в коды.

Но общество с открытым исходным кодом движется быстрее. Многие исследовательские лаборатории выпустили большие мультимодальные модели, такие как Llava, Baklava, Fuyu-8b и др.

Llava

Llava (Large language and vision Assistant) – это мультимодальная модель с 13 миллиардами параметров. Llava соединяет Vicuna-13b LLM и предварительно обученный визуальный кодировщикCLIP ViT-L/14. Он был донастроен на наборе данных Visual Chat и Science QA для достижения производительности, подобной GPT-4V во многих случаях. Его можно использовать в задачах визуального вопросно-ответного взаимодействия.

BakLlava

BakLlava от SkunkWorksAI – еще одна большая мультимодальная модель. Она имеет базовую LLM Mistral-7b, дополненную архитектурой Llava-1.5. Она показала многообещающие результаты, сопоставимые с Llava-13b, несмотря на то, что она меньше по размеру. Это модель, на которую стоит обратить внимание, если вам нужна более компактная модель с хорошими возможностями по визуальному выводу.

Fuyu-8b

Еще одна альтернатива с открытым исходным кодом – это Fuyu-8b. Это мощная мультимодальная языковая модель от Adept. Fuyu – это декодерная трансформаторная модель без визуализации, что отличается от Llava, где используется CLIP.

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

Дополнительную информацию о Fuyu-8b можно найти в этой статье. Репозиторий HuggingFace adept/fuyu-8b

Как использовать открытые LLMs?

Теперь, когда мы знакомы с лучшими моделями с открытым исходным кодом LLM и LMM, вопрос в том, как получить выводы из открытой модели. Есть два способа получить выводы из моделей с открытым исходным кодом. Мы можем либо скачать модели на личное оборудование, либо подписаться на облачного провайдера. Теперь все зависит от вашего случая использования. Даже более компактные модели требуют мощности вычислений и высоких объемов оперативной и видеопамяти. Вычисление выводов с использованием таких базовых моделей на коммерческом оборудовании является очень сложной задачей. Чтобы упростить эту задачу, модели должны быть квантованы. Итак, давайте разберемся, что такое квантование модели.

Квантование

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

Модели SOTA обычно имеют точность float32. В квантовании существуют различные случаи, от fp32 -> fp16, fp-32 -> int8, fp32 -> fp8 и fp32 -> fp4. В этом разделе будет рассмотрено только квантование до int8 или 8-битного целочисленного квантования.

Квантование до int8

Представление int8 может вместить только 256 символов (со знаком [-128,127], без знака [0, 256]), в то время как fp32 может иметь широкий диапазон чисел. Идея заключается в нахождении эквивалентной проекции значений fp32 в [a,b] в формат int8.

Если X – это число fp32 в диапазоне [a,b], то схема квантования будет

X = S*(X_q – z)

  • X_q – это квантованное значение, связанное с X
  • S – это параметр масштабирования. Положительное число fp32.
  • z – это нулевая точка. Это целочисленное значение int8, соответствующее значению 0 в fp32.

Таким образом, X_q = round(X/S + z) для всех X ∈ [a,b]

Для значений fp3,2, вне [a,b] они обрезаются до ближайшего представления

X_q = clip( X_q = round(a/S + z) + round(X/S + z) + X_q = round(b/S + z) )

  • round(a/S + z) – самое маленькое и round(b/S + z) – самое большое число в данном числовом формате.

Это уравнение для аффинного или нулевого квантования. Это было о 8-битном целочисленном квантовании; также существуют схемы квантования для 8-битного fp8, 4-битного (fp4, nf4) и 2-битного (fp2). Для получения дополнительной информации о квантовании обратитесь к этой статье на сайте HuggingFace.

Квантование моделей – это сложная задача. Существует множество инструментов с открытым исходным кодом для квантования LLM-моделей, таких как Llama.cpp, AutoGPTQ, llm-awq и т. д. Llama cpp квантование моделей с использованием GGUF, AutoGPTQ использует GPTQ, а llm-awq использует формат AWQ. Это различные методы квантования для сокращения размера модели.

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

Ознакомьтесь с этим репозиторием HuggingFace для квантованных моделей: https://huggingface.co/TheBloke

Запуск моделей локально

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

Существует множество инструментов для запуска моделей локально. Самые популярные из них – это vLLM, Ollama и LMstudio.

VLLM

VLLM – это альтернативная программа с открытым исходным кодом, написанная на Python, позволяющая запускать LLM-модели локально. Чтобы запустить модели на vLLM, требуются определенные аппаратные характеристики, обычно с вычислительной способностью vRAM более семи и ОЗУ свыше 16 ГБ. Вы должны иметь возможность запускать тесты в Collab. VLLM в настоящее время поддерживает формат квантования AWQ. Вот модели, которые вы можете использовать с vLLM. И вот как мы можем запустить модель локально.

из vllm импортируйте LLM, SamplingParamsprompts = [    "Привет, меня зовут",    "Президент Соединенных Штатов",    "Столицей Франции является",    "Будущее искусственного интеллекта",]sampling_params = SamplingParams(temperature=0.8, top_p=0.95)llm = LLM(model="mistralai/Mistral-7B-v0.1")outputs = llm.generate(prompts, sampling_params)for output in outputs:    prompt = output.prompt    generated_text = output.outputs[0].text    print(f"Промпт: {prompt!r}, Сгенерированный текст: {generated_text!r}")

ВLLM также поддерживает точки доступа OpenAI. Следовательно, вы можете использовать модель в качестве замены существующей реализации OpenAI.

импорт openai# Измените API-ключ и базу API OpenAI для использования сервера API vLLM.openai.api_key = "EMPTY"openai.api_base = "http://localhost:8000/v1"completion = openai.Completion.create(model="mistralai/Mistral-7B-v0.1",                                      prompt="San Francisco")print("Результат завершения:", completion)

Здесь мы будем делать вывод из локальной модели, используя SDK OpenAI.

Ollama

Ollama – это еще один альтернативный инструмент командной строки с открытым исходным кодом на языке Go, который позволяет запускать модели с открытым исходным кодом на локальном оборудовании. Ollama поддерживает квантованные модели GGUF.

Создайте файл модели в своем каталоге и выполните следующую команду:

FROM ./mistral-7b-v0.1.Q4_0.gguf

Создайте модель Ollama из файла модели.

ollama create example -f Modelfile

Теперь запустите вашу модель.

ollama run example "Как убить процесс Python?"

Ollama также позволяет запускать модели Pytorch и HuggingFace. Подробнее см. в их официальном репозитории.

LMstudio

LMstudio – это закрытое программное обеспечение, которое позволяет удобно запускать любую модель на вашем ПК. Это идеально подходит, если вы хотите использовать специальное программное обеспечение для запуска моделей. У него есть удобный пользовательский интерфейс для использования локальных моделей. Оно доступно на компьютерах Mac (M1, M2), Linux (бета-версия) и Windows.

LMstudio также поддерживает модели в формате GGUF. По ссылке официальной страницы вы найдете дополнительную информацию. Убедитесь, что оно поддерживает требования вашего оборудования.

Модели от облачных провайдеров

Запуск моделей локально отлично подходит для экспериментов и индивидуальных случаев использования, но для использования их в приложениях модели должны находиться в облаке. Вы можете разместить свою модель в облаке с помощью специализированных провайдеров моделей LLM, таких как Replicate и Brev Dev. Они предоставляют упругий масштабируемый сервис для размещения моделей LLM. Выделение ресурсов будет изменяться в зависимости от нагрузки на вашу модель.

Заключение

Развитие моделей с открытым исходным кодом происходит на поразительно быстрых темпах. В течение года после ChatGPT модели, значительно меньшие и превосходящие его по многим показателям, вышли вперед. Это только начало, и модель, превосходящая GPT-4, может быть уже на подходе. В последнее время возникли вопросы относительно надежности организаций, стоящих за закрытыми моделями. В качестве разработчика вы не захотите, чтобы ваша модель и связанные с ней услуги стали уязвимыми. В этом помогает открытый исходный код. Вы знаете свою модель, и она принадлежит вам. Модели с открытым исходным кодом предоставляют много свободы. Вы также можете иметь гибридную структуру с ОС и моделями OpenAI, чтобы снизить затраты и зависимость. Итак, в данной статье рассмотрены введение в некоторые отлично функционирующие модели с открытым исходным кодом и связанные с ними концепции запуска моделей.

Итак, вот основные выводы:

  • Открытые модели синонимичны суверенитету. Модели с открытым исходным кодом обеспечивают необходимую доверительность, которой не часто бывают закрытые модели.
  • Большие языковые модели, такие как Llama-2 и Mistral, а также их доработки, превзошли GPT-3.5 по многим задачам, что делает их идеальными заменителями.
  • Большие мультимодальные модели, такие как Llava, BakLlava и Fuyu-8b, обещают быть полезными во многих задачах вопросов и классификации.
  • LLM-модели являются крупными и потребляют много ресурсов. Поэтому для их локального запуска необходима квантизация.
  • Квантизация – это техника сокращения размера модели путем приведения весов и активационных значений к меньшим битам.
  • Для развертывания и вывода на локальной основе моделей с открытым исходным кодом используются инструменты, такие как LMstudio, Ollama и vLLM. Для развертывания в облаке используйте сервисы, такие как Replicate и Brev.

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

Показанные в этой статье материалы не являются собственностью Analytics Vidhya и используются по усмотрению автора.