Расправьте крылья Falcon 180B здесь

Расправьте крылья Falcon 180B

Введение

Сегодня мы с радостью приветствуем Falcon 180B от TII на HuggingFace! Falcon 180B устанавливает новый уровень для открытых моделей. Это самая большая открыто доступная языковая модель с 180 миллиардами параметров, обученная на огромном наборе данных RefinedWeb от TII, содержащем 3,5 трлн токенов. Это представляет собой самое длительное предварительное обучение для открытой модели.

Вы можете найти эту модель на Hugging Face Hub (базовая модель и модель для чата) и взаимодействовать с ней на Falcon Chat Demo Space.

По возможностям Falcon 180B достигает лучших результатов в естественноязыковых задачах. Она занимает первое место в списке лидеров среди (предварительно обученных) моделей с открытым доступом и состязается с проприетарными моделями, такими как PaLM-2. Хотя пока сложно точно определить ее ранжирование, она считается наравне с PaLM-2 Large, что делает Falcon 180B одной из самых мощных LLM, известных публично.

В этом блоге мы исследуем, что делает Falcon 180B такой хорошей, рассматривая некоторые результаты оценки, и покажем, как вы можете использовать эту модель.

  • Что такое Falcon-180B?
  • На сколько хороша Falcon 180B?
  • Как использовать Falcon 180B?
    • Демо
    • Требования к аппаратному обеспечению
    • Формат запроса
    • Transformers
  • Дополнительные ресурсы

Что такое Falcon-180B?

Falcon 180B – модель, выпущенная TII, которая продолжает предыдущие релизы семейства Falcon.

Архитектурно, Falcon 180B является увеличенной версией Falcon 40B и основана на его инновациях, таких как мультиточечное внимание для улучшенной масштабируемости. Мы рекомендуем ознакомиться с первым блог-постом, в котором представлен Falcon, чтобы погрузиться в архитектуру. Falcon 180B обучалась на 3,5 трлн токенов с использованием до 4096 GPU одновременно, используя Amazon SageMaker, что составляет примерно 7 000 000 GPU-часов. Это означает, что Falcon 180B в 2,5 раза больше, чем Llama 2, и была обучена с использованием в 4 раза большего объема вычислительных ресурсов.

Набор данных для Falcon 180B в основном состоит из веб-данных из набора данных RefinedWeb (~85%). Кроме того, он был обучен на смеси отобранных данных, таких как разговоры, технические документы и небольшая доля кода (~3%). Данный предварительный набор данных достаточно большой, и даже 3,5 трлн токенов составляют менее одной эпохи.

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

‼️ Коммерческое использование: Falcon 180B может использоваться в коммерческих целях, но при очень ограниченных условиях, исключая любое “хостинговое использование”. Рекомендуется проверить лицензию и проконсультироваться с юридической службой, если вас интересует его использование в коммерческих целях.

На сколько хороша Falcon 180B?

Falcon 180B – это лучшая открыто доступная LLM на сегодняшний день, превосходящая Llama 2 70B и GPT-3.5 от OpenAI в MMLU и наравне с PaLM 2-Large от Google в HellaSwag, LAMBADA, WebQuestions, Winogrande, PIQA, ARC, BoolQ, CB, COPA, RTE, WiC, WSC, ReCoRD. Falcon 180B обычно находится между GPT 3.5 и GPT4, в зависимости от оценочного критерия, и дальнейшая донастройка со стороны сообщества будет очень интересна теперь, когда она открыто доступна.

С результатом 68,74 в лидерборде Hugging Face, Falcon 180B является самой высоко оцененной открыто доступной предварительно обученной LLM, превосходящей LLaMA 2 от Meta (67,35).

Как использовать Falcon 180B?

Falcon 180B доступна в экосистеме Hugging Face, начиная с версии Transformers 4.33.

Демо

Вы можете легко попробовать модель Big Falcon (180 миллиардов параметров!) в этом пространстве или во встроенной площадке ниже:

Требования к аппаратному обеспечению

Формат подсказки

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

Система: Добавьте здесь необязательную системную подсказку
Пользователь: Это ввод пользователя
Falcon: Это то, что модель генерирует
Пользователь: Это может быть второй ввод
Falcon: и так далее

Трансформеры

С выпуском Transformers 4.33 вы можете использовать Falcon 180B и использовать все инструменты в экосистеме HF, такие как:

  • скрипты и примеры обучения и вывода
  • безопасный формат файла (safetensors)
  • интеграции с инструментами, такими как bitsandbytes (4-битное квантование), PEFT (параметрическая эффективная настройка) и GPTQ
  • помощь в генерации (также известная как “спекулятивная декодирование”)
  • поддержка масштабирования RoPE для более длинных контекстов
  • богатые и мощные параметры генерации

Для использования модели вам необходимо принять ее лицензию и условия использования. Пожалуйста, убедитесь, что вы вошли в свою учетную запись Hugging Face и у вас установлена последняя версия transformers:

pip install --upgrade transformers
huggingface-cli login

bfloat16

Вот как вы можете использовать базовую модель в bfloat16. Falcon 180B – это большая модель, поэтому учтите требования аппаратного обеспечения, которые приведены в таблице выше.

from transformers import AutoTokenizer, AutoModelForCausalLM
import transformers
import torch

model_id = "tiiuae/falcon-180B"

tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
    model_id,
    torch_dtype=torch.bfloat16,
    device_map="auto",
)

prompt = "Меня зовут Педро, я живу в"
inputs = tokenizer(prompt, return_tensors="pt").to("cuda")

output = model.generate(
    input_ids=inputs["input_ids"],
    attention_mask=inputs["attention_mask"],
    do_sample=True,
    temperature=0.6,
    top_p=0.9,
    max_new_tokens=50,
)
output = output[0].to("cpu")
print(tokenizer.decode(output)

Это может привести к такому выводу:

Меня зовут Педро, я живу в Португалии и мне 25 лет. Я графический дизайнер, но также увлекаюсь фотографией и видео.
Я люблю путешествовать и всегда ищу новые приключения. Я люблю знакомиться с новыми людьми и исследовать новые места.

8-битное и 4-битное с bitsandbytes

8-битные и 4-битные квантованные версии Falcon 180B практически не отличаются при оценке по сравнению с ссылочным bfloat16! Это очень хорошие новости для вывода, поскольку вы можете уверенно использовать квантованную версию для сокращения требований к аппаратному обеспечению. Однако имейте в виду, что вывод в 8 бит гораздо быстрее, чем выполнение модели в 4-битном режиме.

Чтобы использовать квантование, вам необходимо установить библиотеку bitsandbytes и просто включить соответствующий флаг при загрузке модели:

model = AutoModelForCausalLM.from_pretrained(
    model_id,
    torch_dtype=torch.bfloat16,
    load_in_8bit=True,
    device_map="auto",
)

Модель “Чат”

Как уже упоминалось выше, версия модели, настроенная на следование разговорам, использует очень простой шаблон обучения. Чтобы выполнять вывод в стиле чата, мы должны следовать тому же шаблону. Для справки вы можете посмотреть функцию format_prompt в демонстрационном примере “Чат”, которая выглядит так:

def format_prompt(message, history, system_prompt):
    prompt = ""
    if system_prompt:
        prompt += f"Система: {system_prompt}\n"
    for user_prompt, bot_response in history:
        prompt += f"Пользователь: {user_prompt}\n"
        prompt += f"Falcon: {bot_response}\n"
        prompt += f"Пользователь: {message}\nFalcon:"
    return prompt

Как вы можете видеть, взаимодействия от пользователя и ответы модели предшествуют разделителям User: и Falcon:. Мы объединяем их вместе, чтобы сформировать подсказку, содержащую всю историю беседы. Мы можем предоставить системную подсказку для настройки стиля генерации.

Дополнительные ресурсы

  • Модели
  • Демо
  • Сокол приземлился в экосистеме Hugging Face
  • Официальное объявление

Благодарности

Выпуск такой модели с поддержкой и оценками в экосистеме не был бы возможен без вклада многих членов сообщества, включая Клементину и Eleuther Evaluation Harness для оценки LLM; Лубну и BigCode для оценки кода; Николя для поддержки вывода; Лизандра, Мэтта, Даниэля, Эми, Жоао и Артура для интеграции Сокола в transformers. Спасибо Баптисту и Патрику за демо-версию с открытым исходным кодом. Благодарим Тома, Льюиса, TheBloke, Ноуамана и Тима Деттмерса за множество вкладов, которые позволили этому проекту увидеть свет. Наконец, благодарим HF Cluster за возможность запуска оценок LLM и предоставление вывода для бесплатного демо-версии модели с открытым исходным кодом.