Модели и платформы ИИ

Llama 2: Глубокое погружение в открытую модель, конкурирующую с ChatGPT

mm
Добавьте Unite.AI в избранные источники в Google

Большие языковые модели (LLM) способны выполнять сложные задачи рассуждения и показали свою эффективность в специализированных областях, таких как программирование и творческое письмо. Однако мир LLM не является просто плагином и игрой; существуют проблемы с удобством использования, безопасностью и вычислительными требованиями. В этой статье мы глубоко погрузимся в возможности Llama 2, а также предоставим подробное руководство по настройке этой высокопроизводительной LLM через Hugging Face и T4 GPU на Google Colab.

Разработанная компанией Meta в партнерстве с Microsoft (MSFT ), эта открытая большая языковая модель направлена на переопределение границ генеративного ИИ и понимания естественного языка. Llama 2 не является просто еще одной статистической моделью, обученной на терабайтах данных; это воплощение философии, которая подчеркивает открытый подход как основу разработки ИИ, особенно в области генеративного ИИ.

Llama 2 и ее диалог-оптимизированная замена, Llama 2-Chat, оснащены до 70 миллиардов параметров. Они проходят процесс тонкой настройки, предназначенный для того, чтобы они были как можно ближе к человеческим предпочтениям, что делает их более безопасными и эффективными, чем многие другие публично доступные модели. Этот уровень детализации в тонкой настройке обычно зарезервирован для закрытых “продуктов” LLM, таких как ChatGPT и BARD, которые обычно не доступны для публичного анализа или настройки.

Технический анализ Llama 2

Для обучения модели Llama 2 используется автoregressive архитектура трансформера, предварительно обученная на обширном корпусе самообученных данных. Однако она добавляет дополнительный слой сложности, используя обучение с подкреплением и обратной связью человека (RLHF), чтобы лучше соответствовать человеческому поведению и предпочтениям. Это вычислительно дорого, но важно для улучшения безопасности и эффективности модели.

Архитектура обучения Meta Llama 2

Архитектура обучения Meta Llama 2

Предобучение и эффективность данных

Основной инновацией Llama 2 является ее режим предобучения. Модель берет сигналы от своего предшественника, Llama 1, но вводит несколько важных улучшений, чтобы повысить свою производительность. Заметно, что увеличение на 40% общего количества токенов, обученных на модели, и двукратное расширение длины контекста выделяются. Кроме того, модель использует группированное внимание к запросам (GQA), чтобы усилить масштабируемость вывода.

Надзорная тонкая настройка (SFT) и обучение с подкреплением и обратной связью человека (RLHF)

Llama-2-Chat была тщательно отточена с помощью SFT и RLHF. В этом контексте SFT служит неотъемлемой частью рамки RLHF, уточняя ответы модели, чтобы они были как можно ближе к человеческим предпочтениям и ожиданиям.

OpenAI предоставила проницательную иллюстрацию, объясняющую методологии SFT и RLHF, используемые в InstructGPT. Аналогично LLaMa 2, InstructGPT также использует эти продвинутые методы обучения, чтобы оптимизировать производительность модели.

Шаг 1 на изображении ниже фокусируется на надзорной тонкой настройке (SFT), в то время как последующие шаги завершают процесс обучения с подкреплением и обратной связью человека (RLHF).

Надзорная тонкая настройка (SFT) – это специализированный процесс, направленный на оптимизацию предварительно обученной большой языковой модели (LLM) для конкретной задачи. В отличие от ненадзорных методов, которые не требуют проверки данных, SFT использует набор данных, который был предварительно проверен и помечен.

Обычно создание этих наборов данных является дорогим и трудоемким. Подход Llama 2 был сосредоточен на качестве над количеством. С помощью всего 27 540 аннотаций команда Meta достигла уровня производительности, конкурирующего с человеческими аннотаторами. Это соответствует недавним исследованиям, показывающим, что даже ограниченные, но чистые наборы данных могут стимулировать высококачественные результаты.

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

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

Обучение с подкреплением является следующим шагом, направленным на более близкое соответствие поведения модели человеческим предпочтениям.

Фаза настройки использовала обучение с подкреплением и обратной связью человека (RLHF), используя методы, такие как импортанс-сэмплинг и проксимальную оптимизацию политики, чтобы ввести алгоритмический шум, тем самым избегая локальных оптимумов. Этот итеративный процесс тонкой настройки не только улучшил модель, но и выровнял ее выход с человеческими ожиданиями.

Llama 2-Chat использовала бинарный протокол сравнения для сбора данных о предпочтениях человека, отмечая заметную тенденцию к более качественным подходам. Этот механизм проинформировал модели вознаграждения, которые затем использовались для тонкой настройки модели разговорного ИИ.

Призрачное внимание: многоходовые диалоги

Meta представила новую функцию, Призрачное внимание (GAtt), предназначенную для улучшения производительности Llama 2 в многоходовых диалогах. Это эффективно решает постоянную проблему потери контекста в продолжающихся разговорах. GAtt действует как якорь, связывающий первоначальные инструкции со всеми последующими сообщениями пользователя. В сочетании с методами обучения с подкреплением это помогает производить последовательные, релевантные и соответствующие пользователю ответы на протяжении более длинных диалогов.

Из репозитория Meta Git с помощью download.sh

  1. Посетите сайт Meta: Перейдите на официальный сайт Llama 2 от Meta и нажмите ‘Скачать модель’
  2. Заполните форму: Прочитайте и примите условия и положения, чтобы продолжить.
  3. Подтверждение по электронной почте: После отправки формы вы получите электронное письмо от Meta с ссылкой на скачивание модели из их репозитория Git.
  4. Выполните download.sh: Клонируйте репозиторий Git и выполните скрипт download.sh. Этот скрипт запросит у вас аутентификацию с помощью URL от Meta, который истекает через 24 часа. Вы также выберете размер модели – 7B, 13B или 70B.

Из Hugging

  1. Получите письмо с подтверждением: После получения доступа от Meta перейдите на Hugging Face.
  2. Запросите доступ: Выберите желаемую модель и отправьте запрос на предоставление доступа.
  3. Подтверждение: Ожидайте письмо с подтверждением доступа в течение 1-2 дней.
  4. Сгенерируйте токены доступа: Перейдите в раздел ‘Настройки’ в вашем аккаунте Hugging Face, чтобы создать токены доступа.

Выпуск Transformers 4.31 полностью совместим с LLaMa 2 и открывает многие инструменты и функции внутри экосистемы Hugging Face. От скриптов обучения и вывода до 4-битной квантования с bitsandbytes и эффективной тонкой настройки (PEFT) набор инструментов обширен. Чтобы начать работу, убедитесь, что вы используете последний выпуск Transformers и авторизованы в вашем аккаунте Hugging Face.

Вот упрощенное руководство по запуску модели LLaMa 2 в окружении Google Colab, используя GPU-окружение:

Модель Google Colab - T4 GPU

Модель Google Colab – T4 GPU

 

 

 

 

 

 

Установка пакетов


<p>!pip install transformers
!huggingface-cli login

Импорт необходимых библиотек Python.

from transformers import AutoTokenizer
import transformers
import torch

Инициализация модели и токенизатора

На этом этапе укажите, какую модель Llama 2 вы будете использовать. Для этого руководства мы используем meta-llama/Llama-2-7b-chat-hf.

model = "meta-llama/Llama-2-7b-chat-hf"
tokenizer = AutoTokenizer.from_pretrained(model)

Настройка конвейера

Используйте конвейер Hugging Face для генерации текста с конкретными настройками:

pipeline = transformers.pipeline(
"text-generation",
model=model,
torch_dtype=torch.float16,
device_map="auto")

Генерация последовательностей текста

Наконец, запустите конвейер и сгенерируйте последовательность текста на основе вашего ввода:

sequences = pipeline(
'Кто являются ключевыми вкладчиками в область искусственного интеллекта?\n',
do_sample=True,
top_k=10,
num_return_sequences=1,
eos_token_id=tokenizer.eos_token_id,
max_length=200)
for seq in sequences:
print(f"Результат: {seq['generated_text']}")

Интерфейс A16Z для LLaMa 2

Andreessen Horowitz (A16Z) недавно запустила передовой интерфейс на основе Streamlit для Llama 2. Размещенный на GitHub, этот интерфейс сохраняет историю сеанса чата и также предоставляет гибкость выбора из нескольких конечных точек API Llama 2, размещенных на Replicate. Этот пользовательский дизайн направлен на упрощение взаимодействия с Llama 2, что делает его идеальным инструментом как для разработчиков, так и для конечных пользователей. Для тех, кто заинтересован в этом, доступна живая демонстрация на Llama2.ai.

Llama 2: Что отличает ее от моделей GPT и ее предшественника Llama 1?

Разнообразие в масштабе

В отличие от многих языковых моделей, которые предлагают ограниченную масштабируемость, Llama 2 предлагает несколько вариантов моделей с разными параметрами. Модель масштабируется от 7 миллиардов до 70 миллиардов параметров, обеспечивая ряд конфигураций для удовлетворения различных вычислительных потребностей.

Улучшенная длина контекста

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

Группированное внимание к запросам (GQA)

Архитектура использует концепцию GQA, предназначенную для ускорения процесса вычисления внимания путем кэширования предыдущих пар токенов. Это эффективно улучшает масштабируемость вывода модели, повышая доступность.

Показатели производительности

Сравнительный анализ производительности моделей Llama 2-Chat с ChatGPT и другими конкурентами

Производительность моделей Llama 2-Chat и других конкурентов

Llama 2 установила новый стандарт в показателях производительности. Она не только превосходит своего предшественника, Llama 1, но и предлагает значительную конкуренцию другим моделям, таким как Falcon и GPT-3.5.

Самая большая модель Llama 2-Chat, 70B, также превосходит ChatGPT в 36% случаев и соответствует производительности в еще 31,5% случаев. Источник: Статья

Открытый исходный код: Сила сообщества

Meta и Microsoft намерены сделать Llama 2 не просто продуктом, а инструментом, управляемым сообществом. Llama 2 доступна бесплатно для исследований и некоммерческих целей. Они стремятся демократизировать возможности ИИ, делая их доступными для стартапов, исследователей и бизнеса. Открытый подход позволяет для “кроваточной” отладки модели. Разработчики и этики ИИ могут тестировать, выявлять уязвимости и предлагать решения ускоренным темпом.

Хотя условия лицензирования LLaMa 2 в целом являются пермиссивными, исключения существуют. Крупные предприятия с более чем 700 миллионами пользователей в месяц, такие как Google, требуют явственного разрешения от Meta для ее использования. Кроме того, лицензия запрещает использование LLaMa 2 для улучшения других языковых моделей.

Текущие проблемы с Llama 2

  1. Обобщение данных: И Llama 2, и GPT-4 иногда терпят неудачу в равномерно высокой производительности в различных задачах. Качество и разнообразие данных столь же важны, как и объем в этих сценариях.
  2. Прозрачность модели: Учитывая предыдущие неудачи с ИИ, производящим вводящую в заблуждение информацию, исследование основной логики принятия решений за этими сложными моделями имеет первостепенное значение.

Code Llama – Последний запуск Meta

Meta недавно объявила о Code Llama, который представляет собой большую языковую модель, специализирующуюся на программировании, с размерами параметров от 7B до 34B. Аналогично ChatGPT Code Interpreter; Code Llama может оптимизировать рабочие процессы разработчиков и сделать программирование более доступным. Она поддерживает различные языки программирования и поставляется в специализированных вариантах, таких как Code Llama – Python для задач, специфичных для Python. Модель также предлагает различные уровни производительности, чтобы удовлетворить разные требования к задержке. Открыто лицензирована, Code Llama приглашает сообщество к постоянному совершенствованию.

https://about.fb.com/news/2023/08/code-llama-ai-for-coding/

Заключение

Эта статья провела вас через процесс настройки модели Llama 2 для генерации текста на Google Colab с поддержкой Hugging Face. Производительность Llama 2 обусловлена рядом продвинутых методов, от автoregressive архитектур трансформеров до обучения с подкреплением и обратной связью человека (RLHF). С до 70 миллиардами параметров и функциями, такими как Призрачное внимание, эта модель превосходит текущие отраслевые стандарты в определенных областях, и с ее открытым характером она открывает путь для новой эры в понимании естественного языка и генеративном ИИ.

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