Один рядок коду покращує продуктивність великої моделі на 10%, розробник: безкоштовний обід

Першоджерело: Qubits

Джерело зображення: Створено Unbounded AI

Для тонкої настройки великих моделей є «безкоштовний обід», де один рядок коду може підвищити продуктивність мінімум на 10%.

На Llama 2 з параметрами 7B навіть подвоїлася продуктивність, а в Mistral також спостерігалося збільшення на чверть.

Незважаючи на те, що цей метод використовується на етапі контрольованого тонкого налаштування, моделі RLHF також можуть отримати від нього користь.

来自马里兰州大学、纽约大学等机构的研究人员提出了名为NEFT(une) Метод тонкої настройки.

Це нова техніка регуляризації, яка може бути використана для підвищення продуктивності моделей з точним налаштуванням під наглядом (SFT).

Цей метод був включений в бібліотеку TRL компанією HuggingFace і може бути викликаний додаванням додаткового рядка коду для імпорту.

NEFT не тільки проста в експлуатації, але й не додає значних витрат, і автори називають її «безкоштовним обідом».

Деякі користувачі мережі намагалися таким чином доопрацювати Mistral-7B на базі Guanaco (модель сімейства альпак), і покращення продуктивності було очевидним.

Отже, як NEFTune «кров'ює» велику кількість великих моделей одним рядком коду?

Додавання шуму до моделі

Повна назва NEFTune - Noisy Embedding Fine Tuning, що розшифровується як "Embedded Tuning with Noise".

Розробники вважають, що перенавчання є основним фактором, що обмежує продуктивність великих моделей, тому прийнятий метод додавання шуму до шару вбудовування під час тренувальної фази, щоб уникнути виникнення перенавчання, тим самим покращуючи продуктивність.

Зокрема, текст у навчальній базі даних спочатку токенізується та перетворюється на вектор вбудовування.

Потім система випадковим чином генерує вектор шуму та регулює шум до заданої інтенсивності за допомогою скейлера.

Масштабований шум додається до вектора вбудовування як вхідні дані в модель, і починається навчання.

З кожною навчальною ітерацією генерується новий шум і додається до шару вбудовування.

з torch.nn import функціонує як F

def NEFTune(модель, noise_alpha=5)
def noised_embed(orig_embed, noise_alpha):
def new_func(x):
Якщо model.training:
embed_init = orig_embed(х)
dims = torch.tensor(embed_init.size(1) * embed_init.size(2))
mag_norm = noise_alpha/torch.sqrt(затемнення)
return embed_init + torch.zeros_like(embed_init).uniform_(-mag_norm, mag_norm)
ще:
повернення orig_embed(x)
повернути new_func
model.base_model.model.model.embed_tokens.forward = noised_embed(model.base_model.model.model.embed_tokens, noise_alpha)
Модель повернення

У цьому коді параметром noise_alpha у функції NEFTune є інтенсивність шуму (коефіцієнт), а mag_norm – діапазоном шуму в реальному процесі.

NEFT лише додає шуму в модель в процесі навчання, а на стадії логічного висновку такого процесу немає, і оператор if в коді грає цю роль.

У режимі навчання значенням, що повертається функцією new_func є шар вбудовування після додавання шуму.

Цей код розміщений, щоб пояснити необхідність, якщо ви просто хочете викликати NEFT, ви можете викликати його безпосередньо з бібліотеки TRL, не використовуючи повний код вище.

Прикладом тонкої настройки моделі ОПТ-350М є наступний код:

з наборів даних імпорт load_dataset
з trl import SFTTrainer

dataset = load_dataset("imdb", split="train")

trainer = SFTTrainer(
"Фейсбук/ОПТ-350М",
train_dataset=набір даних,
dataset_text_field="текст",
max_seq_length=512,
)
trainer.train()

Що стосується наборів даних, розробники використовували загалом чотири різні набори даних, такі як Alpaca та ShareGPT, щоб точно налаштувати їх.

На думку авторів, до причин вибору цих даних можна віднести те, що вони більш відомі, були SOTA, і так далі.

Крім того, з міркувань продуктивності апаратного забезпечення, під час експерименту були обрані однораундові діалогові набори даних.

Отже, як показує себе велика модель після тюнінгу методом NEFT?

До 1 разів краща продуктивність

Дослідницька група в основному перевіряла якість тексту та здатність до діалогів, згенеровані до та після налаштування моделі.

Його китайська якість в першу чергу базується на наборі даних Aplaca, оціненому за допомогою ChatGPT і GPT-4.

Як еталон використовується модель Text-Davinci-003, а частка навченої моделі, яка перевершує TD3, є індексом оцінки.

Щоб заощадити ресурси, дослідницька група спочатку використовувала ChatGPT, щоб визначити, чи оцінювати чи викликати GPT-4 самостійно, а в деяких випадках оцінювала вручну.

Результати У різних наборах тренувальних даних Llama 2 має покращення продуктивності принаймні на 10% після коригування, і воно безпосередньо подвоюється на наборі даних Alpaca.

Розгорнутий на OPT і Llama 1, підхід NEFT також може принести деяке підвищення продуктивності.

Завданням, яке використовується для оцінки чату моделі, є OpenLLM Leadorboard.

З'ясовано, що можливості чату скоригованої моделі NEFT також ще більше покращені порівняно з Evol-Instruct.

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

Отримані результати свідчать, що метод NEFT не має суттєвого впливу на інші можливості моделі на різних наборах даних та моделях.

Під час експерименту автори також виявили, що текст, згенерований моделлю, не копіює навчальні дані, що свідчить про те, що модель має певні можливості узагальнення.

Щоб підтвердити це, автори оцінили втрати моделі та виявили, що втрата тестового набору даних була нижчою, ніж навчальні дані, що підтверджує цю точку зору.

Крім того, автори з'ясували, що після коригувань NEFT текст, згенерований моделлю, не тільки збільшився за якістю та обсягом, але й збільшив зміст без повторень.

Для того, щоб підтвердити, що поліпшення якості тексту було викликано додаванням шуму, а не збільшенням довжини тексту, дослідники також провели експерименти з абляцією.

Результати показують, що просте змушування моделі генерувати довший текст не може досягти ефекту NEFT.

Паперова адреса:

Переглянути оригінал
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
  • Нагородити
  • Прокоментувати
  • Поділіться
Прокоментувати
0/400
Немає коментарів
  • Закріпити