Начало работы с LlaMA 2 | Новый генеративный искусственный интеллект от Meta
LlaMA 2 | новый генеративный искусственный интеллект от Meta
Введение
С выпуском GPT от OpenAI многие компании вступили в гонку по созданию собственных надежных генеративных моделей естественного языка. Создание генеративного искусственного интеллекта с нуля может быть довольно трудоемким процессом, так как требуется проведение тщательного исследования в области генеративного искусственного интеллекта и выполнение многочисленных испытаний и ошибок. Это также включает в себя тщательное формирование высококачественного набора данных, так как эффективность больших языковых моделей в значительной степени зависит от данных, на которых они обучаются. И, наконец, для обучения этих моделей требуется огромная вычислительная мощность, к которой многие компании не имеют доступа. Поэтому на данный момент только несколько компаний могут создавать эти модели, включая OpenAI и Google, а теперь, наконец, Meta присоединилась к этой гонке с представлением LlaMA.
Цели обучения
- Узнать о новой версии LlaMA
- Понять версии, параметры и бенчмарки модели
- Получить доступ к семейству моделей Llama 2
- Попробовать LlaMA 2 с различными подсказками и наблюдать результаты
Эта статья была опубликована в рамках блогоатона по науке о данных.
Что такое Llama?
LlaMA (Large Language Model Meta AI) – это генеративная модель искусственного интеллекта, конкретно группа фундаментальных моделей больших языковых моделей, разработанных Meta AI, компанией, принадлежащей Meta (ранее Facebook). Meta объявила о Llama в феврале 2023 года. Meta выпустила Llama в разных размерах (на основе параметров), а именно, 7, 13, 33 и 65 миллиардов параметров с длиной контекста 2k токенов. Модель предназначена для помощи исследователям в продвижении их знаний в области искусственного интеллекта. Маленькие модели 7B позволяют исследователям с низкой вычислительной мощностью изучать эти модели.
С появлением LlaMa Meta вступила в пространство LLM и теперь конкурирует с моделями GPT от OpenAI и PaLM от Google. Meta считает, что повторное обучение или донастройка небольших моделей с ограниченными вычислительными ресурсами может достичь результатов, сравнимых с передовыми моделями в своих соответствующих областях. Семейство моделей LlaMa отличается от LLM OpenAI и Google тем, что полностью открытое и бесплатное для использования любым лицом, и даже были опубликованы веса LlaMA для исследователей для некоммерческого использования.
- Компания Cruise соглашается сократить автопарк беспилотных автомобилей в Сан-Франциско после аварии
- Лучшие инструменты AI для таблиц 2023 года
- Объяснение медицинских решений в клинических условиях с помощью Amazon SageMaker Clarify
Шаг вперед
LlaMA 2 превосходит предыдущую версию, LlaMA версии 1, которую Meta выпустила в июле 2023 года. Она была представлена в трех размерах: модели с параметрами 7B, 13B и 70B. При ее выпуске LlaMA 2 достигла самого высокого рейтинга на Hugging Face. Даже среди всех сегментов (7B, 13B и 70B) лучшая модель на Hugging Face происходит от LlaMA 2, была донастроена или переобучена.
Llama 2 была обучена на 2 трлн претренировочных токенов. Длина контекста для всех моделей Llama 2 составляет 4k (вдвое больше, чем у Llama 1). Llama 2 превзошла передовые модели с открытым исходным кодом, такие как Falcon и MPT, в различных бенчмарках, включая MMLU, TriviaQA, Natural Question, HumanEval и другие (полные бенчмарки можно найти на веб-сайте Meta AI). Кроме того, Llama 2 была донастроена для случаев использования связанных с чатами, включая обучение с помощью более 1 миллиона аннотаций от людей. Эти модели для чата готовы к использованию на веб-сайте Hugging Face.
Доступ к LlaMA 2
Исходный код для Llama 2 доступен на GitHub. Если вы хотите работать с оригинальными весами, они также доступны, но для этого вам нужно предоставить свое имя и адрес электронной почты на веб-сайте Meta AI. Так что перейдите на веб-сайт Meta AI, щелкнув здесь, затем введите свое имя, адрес электронной почты и организацию (студент, если вы не работаете). Затем прокрутите вниз и нажмите “принять и продолжить”. Теперь вы получите письмо, в котором будет указано, что вы можете загрузить веса модели. Форма будет выглядеть примерно так.
Теперь есть два способа работать с вашей моделью. Один – это непосредственная загрузка модели с помощью инструкций и ссылки, указанных в письме (сложный путь, и хорош только если у вас есть хорошая GPU), а другой – использовать Hugging Face и Google Colab. В этой статье я расскажу о простом способе, который может попробовать каждый. Прежде чем перейти к Google Colab, нам нужно создать учетную запись Hugging Face и создать API вывода. Затем нам нужно перейти к модели llama 2 в Hugging Face (что вы можете сделать, нажав здесь), а затем указать электронную почту, которую вы указали на веб-сайте Meta AI. Затем вы будете авторизованы и увидите что-то подобное ниже.
Теперь мы можем загрузить любую модель Llama 2 через Hugging Face и начать работать с ней.
LlaMA с Hugging Face и Colab
В последнем разделе мы видели предварительные требования перед тестированием модели Llama 2. Мы начнем с импорта необходимых библиотек в Google Colab, что можно сделать с помощью команды pip.
!pip install -q transformers einops accelerate langchain bitsandbytes
Нам нужно установить эти необходимые пакеты, чтобы начать работу с Llama 2. Также библиотеку transformers от hugging face для загрузки модели. Функция einops выполняет простые матричные умножения внутри модели (она использует обозначение операций/суммирования Эйнштейна), ускоряет биты и байты для ускорения вывода, а langchain интегрирует нашу ламу.
Затем, чтобы войти в Hugging Face через colab, используя ключ Hugging Face API Key, мы можем загрузить модель ламы; для этого мы делаем следующее.
!huggingface-cli login
Теперь мы предоставляем ключ Hugging Face Inference API, который мы создали ранее. Затем, если он предлагает “Add token as git credential? (Y/n)”, то можно ответить “n”. Теперь мы вошли в Hugging Face API Key и готовы загрузить модель.
Hugging Face API Key
Теперь, чтобы загрузить нашу модель, мы напишем следующее.
from langchain import HuggingFacePipeline
from transformers import AutoTokenizer
import transformers
import torch
model = "meta-llama/Llama-2-7b-chat-hf"
tokenizer = AutoTokenizer.from_pretrained(model)
pipeline = transformers.pipeline(
"text-generation",
model=model,
tokenizer=tokenizer,
torch_dtype=torch.bfloat16,
trust_remote_code=True,
device_map="auto",
max_length=1000,
eos_token_id=tokenizer.eos_token_id
)
- Здесь мы указываем путь к версии Llama 2 7B в Hugging Face в переменной model, которая отлично работает с бесплатной версией GPU Google Colab. Все, что превышает это требование, потребует дополнительной VRAM, что невозможно с бесплатной версией Colab.
- Затем мы загружаем токенизатор для модели Llama 2 7B, указав название модели в функции AutoTokenizer.from_pretrained().
- Затем мы используем функцию transformer pipeline и передаем все параметры, такие как модель, с которой мы будем работать. Параметр device_map = auto tokenizer позволяет модели использовать GPU в colab, если он есть.
- Мы также указываем максимальное количество выходных токенов (1000) и устанавливаем тип данных torch в float16. Наконец, мы передаем eos_token_id, который модель будет использовать для определения момента остановки при написании ответа.
- После запуска этого кода модель будет загружена в Colab, что займет некоторое время, так как она занимает около 10 ГБ. Теперь мы создадим HuggingFacePipeline с его помощью с помощью следующего кода.
llm = HuggingFacePipeline(pipeline = pipeline, model_kwargs = {'temperature':0})
Здесь мы устанавливаем температуру модели и передаем созданную нами конвейер в переменную pipeline. Этот HuggingFacePipeline теперь позволяет нам использовать загруженную модель.
Шаблон запроса
Мы создадим шаблон запроса для нашей модели, а затем протестируем его.
from langchain import PromptTemplate, LLMChain
template = """
Вы - интеллектуальный чат-бот, который предоставляет полезную информацию людям.
Вы возвращаете ответы в виде предложений с стрелками в начале каждого предложения
{query}
"""
prompt = PromptTemplate(template=template, input_variables=["query"])
llm_chain = LLMChain(prompt=prompt, llm=llm)
- Здесь шаблон простой. Мы хотим, чтобы модель Llama отвечала на запрос пользователя и возвращала его в виде пунктов с нумерацией.
- Затем мы передаем этот шаблон в функцию PrompTemplate и задаем параметры template и input_variable.
- Наконец, мы связываем нашу Llama LLM и шаблон, чтобы начать вывод модели. Давайте зададим вопрос о нашей модели.
print(llm_chain.run('Каковы 3 причины таяния ледников?'))
Так что мы попросили модель перечислить три возможные причины таяния ледников, и модель вернула следующее:
Мы видим, что модель справилась исключительно хорошо. Лучшая часть заключается в том, что она использовала эмодзи-нумерацию для представления пунктов и точно вернула 3 пункта в вывод. Она даже использовала эмодзи с изображением приливной воды, чтобы представить ледники. Таким образом, вы можете начать работу с Llama 2 от Hugging Face и Colab.
Заключение
В этой статье мы кратко рассмотрели созданные и выпущенные Meta AI модели LlaMA (Large Language Model Meta AI). Мы узнали о разных размерах моделей и увидели, как версия 2, то есть Llama 2, явно превосходит лидирующие модели с открытым исходным кодом на различных тестах. Наконец, мы проследили процесс получения доступа к обученным весам модели Llama 2. В конце концов, мы ознакомились с версией Llama-2 7B в чате в Google Colab с использованием библиотеки Hugging Face и LangChain.
Основные выводы
Некоторые из основных выводов из этой статьи включают:
- Meta разрабатывает модели ламы, чтобы помочь исследователям лучше понять искусственный интеллект.
- Модели ламы, особенно более маленькая версия 7B, могут быть эффективно обучены и показывать исключительные результаты.
- Через различные тесты было доказано, что Llama 2 опережает конкурентов по сравнению с другими передовыми моделями с открытым исходным кодом.
- Главное отличие между Llama 2 от Meta и GPT от OpenAI и PaLM от Google заключается в том, что Llama 2 является открытым исходным кодом, и любой может использовать его для коммерческих приложений.
Часто задаваемые вопросы
Изображения, показанные в этой статье, не принадлежат Analytics Vidhya и используются по усмотрению автора.