Вивчення Zephyr 7B: вичерпний посібник із останньої великої мовної моделі - KDnuggets

Вивчення Zephyr 7B: вичерпний посібник із останньої великої мовної моделі – KDnuggets

Вихідний вузол: 3084992

Знайомство з Zephyr 7B: вичерпний посібник із останньої великої мовної моделі
Фото Google DeepMind
 

2023 рік став роком великих мовних моделей і відкритого коду. Багато стартапів і компаній відкрили свої моделі та ваги для боротьби з пропрієтарними LLM, такими як ChatGPT і Claude. Деякі з важливих компаній і моделей (з відкритим кодом) у 2023 році були:

  • Мета (LLama, LLamav2)
  • TII (Falcon 7B, 40B, 180B)
  • Містраль (Mistral 7B, Mixtral8x7B)

Однак модель 7B, яку відносно легко та дешево розгортати, не відповідає більшим моделям, таким як 70B. Найсильнішим конкурентом із відкритим вихідним кодом був Mistral 7B, який перевершив би багато більших моделей.

 

Знайомство з Zephyr 7B: вичерпний посібник із останньої великої мовної моделі
Порівняння Містраль-7Б від Mistral.ai
 

Однак ці маленькі моделі все ще погано реагують на природні підказки та вимагають якісної оперативної розробки. 

Zephyr 7B — це модель, створена командою HuggingFace H4 (Helpful, Honest, Harmless, Huggy), основною метою якої було створити меншу мовну модель, яка б відповідала намірам користувача та перевершувала навіть більші моделі.

Zephyr — це узгоджена версія Mistral-7B, створена в основному за допомогою потужності Distillation, і її можна порівняти з моделями 70B в академічних і розмовних тестах.

 

Знайомство з Zephyr 7B: вичерпний посібник із останньої великої мовної моделіПорівняння характеристик Zephyr-7B | Джерело: Зефірний папір

Ключові особливості

Причиною видатної продуктивності Zephyr є ці 4 ключові прийоми, які використала команда H4.

  1. Створення даних із самостійними інструкціями та DSFT (точне налаштування під контролем)
  2. Збір відгуків
  3. DDPO (Distilled Direct Preference Optimization) моделі DSFT

Створення даних для самостійного навчання та DSFT

Традиційно Контрольована точна настройка (SFT) виконується на моделі великої мови за допомогою високоякісної пари завершення інструкцій. Побудова цих даних є дорогою та потребує нагляду людини (Chung та ін., 2022; Sanh та ін., 2021). 

Одним із цікавих підходів тут є використання моделі вчителя (вже навченого магістра права) для створення інструкцій і відповідей. Ця техніка дистиляції вперше була використана на Альпаці (Taori et al., 2023), яка довела, що мала модель може перевершити більші моделі з Дистильована контрольована точна настройка.

 

Знайомство з Zephyr 7B: вичерпний посібник із останньої великої мовної моделі
Самонавчання трубопроводу | Джерело: Папір для самоінструктажу
 

Команда H4 використовувала Zephyr для створення високоякісних контрольованих (інструкції, завершення) наборів даних, які використовувалися для виконання DSFT. (Навчання моделі за згенерованими інструкціями/довершеннями є формою дистиляції, відомої як DSFT: дистилльована контрольована точна настройка).

Збір відгуків

Великі мовні моделі зазвичай вирівнюються за допомогою Навчання з підкріпленням на основі відгуків людини (RLHF). Натомість Zephyr використовує зворотній зв’язок від кращої моделі вчителя (наприклад, GPT-4), щоб узгодити інтереси моделі, дотримуючись підходу Ultra Feedback. 

 

Знайомство з Zephyr 7B: вичерпний посібник із останньої великої мовної моделі
Процес конструювання UltraFeedback | Джерело: Папір UltraFeedback
 

Принцип роботи полягає в тому, що кожне контрольоване повідомлення підказки від SFT передається до 4 моделей (Claude, LLama, Falcon тощо), і кожна з 4 відповідей на одне повідомлення оцінюється за допомогою GPT-4. Тепер у нас є набір даних із введенням (x), завершенням з найвищим балом (yw) і випадковою підказкою, позначеною як завершення з низьким балом (yl), тобто ми маємо триплет (x, yw, yl).

Оптимізація переваг

Метою цього останнього кроку є максимізація переваги моделі від yw (завершення з найвищою оцінкою) над yl (завершення з низькою оцінкою). Це робиться за допомогою DPO (Пряма оптимізація переваг). Використовувати DPO простіше, ніж використовувати звичайний RLHF, і інтуїтивно він працює краще, ніж RLHF. Підхід у цьому випадку відомий як dDPO оскільки він використовує дистильований набір даних, створений за допомогою моделі вчителя.

 

Знайомство з Zephyr 7B: вичерпний посібник із останньої великої мовної моделіDPO проти RLHF | Джерело: Зефірний папір
 

Загальний алгоритм виглядає приблизно так:

 

Знайомство з Zephyr 7B: вичерпний посібник із останньої великої мовної моделі
 

І це можна перевести на наступні кроки:

  1. Обчисліть імовірність для (x, yw) і (x, yl) за моделлю dSFT (тільки пряма).
  2. Обчисліть ймовірність для (x, yw) і (x, yl) на основі моделі dDPO.
  3. Обчисліть рівняння 1 і поширюйте назад для оновлення. Повторіть

Базовою моделлю, яку використовував Zephyr, є Mistral-7B, який на момент випуску був найсучаснішим із відкритим кодом. Вони використовували TRL бібліотека для точного налаштування та вирівнювання. Deep-Speed ​​Zero 3 і Flash-Attention 2 були використані для оптимізації та прискорення навчання та повного використання GPU. Моделі було навчено за допомогою оптимізатора AdamW, і розпад ваги не використовувався. Усі експерименти проводилися на 16 A100 з використанням точності bfloat16 і зазвичай займали 2–4 години. Ви можете звернутися до оригінальний папір для детальної інформації про процедуру навчання Zephyr.

Команда Zephyr поєднує найкращі методи для навчання великих мовних моделей, і вона зрівнялася з продуктивністю моделей 40B лише за параметрами 7B та збіглася з моделями чату 70B.

 

Знайомство з Zephyr 7B: вичерпний посібник із останньої великої мовної моделіПорівняння Zephyr з іншими LLM | Джерело: Зефірний папір
Знайомство з Zephyr 7B: вичерпний посібник із останньої великої мовної моделіПорівняння Zephyr з іншими LLM | Джерело: Зефірний папір

Моделі Zephyr є загальнодоступними на Hugging Face і можуть використовуватися так само, як і будь-яка інша мовна модель.

import torch
from transformers import pipeline

pipe = pipeline("text-generation",
                model="HuggingFaceH4/zephyr-7b-alpha",  # can also use the beta model
                torch_dtype=torch.bfloat16,
                device_map="auto")

# We use the tokenizer's chat template to format each message - see https://huggingface.co/docs/transformers/main/en/chat_templating
messages = [
   {
       "role": "system",
       "content": "You are a friendly chatbot who always responds in the style of a pirate",
   },
   {"role": "user", "content": "How many helicopters can a human eat in one sitting?"},
]
prompt = pipe.tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
outputs = pipe(prompt, max_new_tokens=256, do_sample=True, temperature=0.7, top_k=50, top_p=0.95)
print(outputs[0]["generated_text"])

вихід:

|system|>
You are a friendly chatbot who always responds in the style of a pirate.
|user|>
How many helicopters can a human eat in one sitting?
|assistant|>
Ah, me hearty matey! But yer question be a puzzler! A human cannot eat a helicopter in one sitting, as helicopters are not edible. They be made of metal, plastic, and other materials, not food!

Zephyr-7B — маленька модель, яка показала потужність перегонки від LLM до меншої моделі. Отримана модель ZEPHYR-7B, заснована на MISTRAL-7B, встановлює новий рівень техніки для моделей чату параметрів 7B і навіть перевершує LLAMA2-CHAT-70B на MT-Bench.

посилання

  1. Zephyr: пряма дистиляція вирівнювання LM (https://arxiv.org/abs/2310.16944)
  2. Блог HuggingFace Zephyr (https://huggingface.co/blog/Isamu136/understanding-zephyr)  
  3. Самонавчання: https://arxiv.org/abs/2212.10560
  4. UltraFeedback: https://arxiv.org/abs/2310.01377

 
 

Ахмад Аніс є пристрасним інженером машинного навчання та дослідником, який зараз працює в redbuffer.ai. Окрім повсякденної роботи, Ахмад активно співпрацює зі спільнотою машинного навчання. Він є регіональним лідером Cohere for AI, некомерційної організації, що займається відкритою наукою, і є розбудовником спільноти AWS. Ахмад є активним учасником Stackoverflow, де він має 2300+ балів. Він брав участь у багатьох відомих проектах з відкритим вихідним кодом, включаючи Shap-E від OpenAI.

Часова мітка:

Більше від KDnuggets