Прискоріть навчання моделі глибокого навчання до 35% за допомогою інтелектуального просіювання Amazon SageMaker | Веб-сервіси Amazon

Прискоріть навчання моделі глибокого навчання до 35% за допомогою інтелектуального просіювання Amazon SageMaker | Веб-сервіси Amazon

У сучасному середовищі штучного інтелекту, що швидко розвивається, моделі глибокого навчання опинилися в авангарді інновацій із застосуваннями, що охоплюють комп’ютерне бачення (CV), обробку природної мови (NLP) і системи рекомендацій. Однак зростаючі витрати, пов’язані з навчанням і налагодженням цих моделей, створюють проблеми для підприємств. Ця вартість в першу чергу зумовлена ​​величезним обсягом даних, які використовуються для навчання моделей глибокого навчання. Сьогодні великі моделі часто навчаються на терабайтах даних, і навчання може тривати тижнями навіть із потужним графічним процесором або AWS Trainiumобладнання на основі. Як правило, клієнти покладаються на методи й оптимізацію, які підвищують ефективність циклу навчання моделі, наприклад оптимізоване ядро ​​або шари, змішане точне навчання або такі функції, як Amazon SageMaker розподілені навчальні бібліотеки. Проте сьогодні менше уваги приділяється ефективності самих навчальних даних. Не всі дані однаково сприяють процесу навчання під час навчання моделі: значна частка обчислювальних ресурсів може бути витрачена на обробку простих прикладів, які не вносять істотного внеску в загальну точність моделі.

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

Як інакше можна подолати цю неефективність, пов’язану з малоінформативними вибірками даних під час навчання моделі?

Ми раді оголосити про публічну попередню версію інтелектуального відсіву, нової можливості SageMaker, яка може знизити витрати на навчання моделей глибокого навчання до 35%. Інтелектуальне відсіювання – це нова техніка ефективності даних, яка активно аналізує ваші зразки даних під час навчання та відфільтровує зразки, які є менш інформативними для моделі. Завдяки навчанню на меншій підмножині даних лише з тими зразками, які найбільше сприяють конвергенції моделі, загальне навчання та витрати зменшуються з мінімальним впливом на точність або без нього. Крім того, оскільки ця функція працює в режимі онлайн під час навчання моделі, інтелектуальне відсіювання не потребує змін у ваших вихідних даних або конвеєрі подальшого навчання.

У цій публікації ми обговорюємо такі теми:

  • Нова функція розумного просіювання в SageMaker і як вона працює
  • Як використовувати розумне відсіювання з навчальними навантаженнями PyTorch

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

Як працює розумне просіювання SageMaker

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

Завдання інтелектуального відсіву полягає в тому, щоб відсіяти ваші тренувальні дані під час тренувального процесу та ввести в модель лише більш інформативні зразки. Під час типового навчання з PyTorch дані ітеративно надсилаються пакетами до навчального циклу та до прискорювальних пристроїв (наприклад, графічних процесорів або мікросхем Trainium). Завантажувач даних PyTorch. Інтелектуальне відсіювання реалізовано на цьому етапі завантаження даних і тому не залежить від будь-якої попередньої обробки даних у вашому навчальному конвеєрі.

Інтелектуальне відсіювання використовує вашу модель і визначену користувачем функцію втрат для здійснення оціночної прямої передачі кожного зразка даних під час його завантаження. Зразки з високими втратами суттєво впливатимуть на навчання моделі, тому їх використовують у навчанні; зразки даних з відносно низькими втратами відкладаються та виключаються з навчання.

Ключовою вхідною інформацією для інтелектуального відсіву є частка даних, які потрібно виключити: наприклад, якщо встановити пропорцію на 33% (beta_value=0.5), зразки приблизно в нижній третині втрати кожної партії будуть виключені з навчання. Коли виявлено достатню кількість зразків із високими втратами для завершення партії, дані надсилаються через повний цикл навчання, і модель навчається та тренується в звичайному режимі. Вам не потрібно вносити жодних змін у цикл навчання, коли ввімкнено інтелектуальне відсіювання.

Наступна діаграма ілюструє цей робочий процес.

Прискоріть навчання моделі глибокого навчання до 35% за допомогою інтелектуального просіювання Amazon SageMaker | Amazon Web Services PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Включаючи лише частину ваших навчальних даних, інтелектуальне відсіювання скорочує час і обчислення, необхідні для навчання моделі. У наших тестах ми досягли майже 40% скорочення загального часу навчання та вартості. Завдяки інтелектуальному відсіву даних вплив на точність моделі може бути мінімальним або взагалі відсутнім, оскільки виключені зразки мали відносно низькі втрати для моделі. У наведеній нижче таблиці ми включаємо набір експериментальних результатів, які демонструють підвищення продуктивності, можливе за допомогою розумного просіювання SageMaker.

Прискоріть навчання моделі глибокого навчання до 35% за допомогою інтелектуального просіювання Amazon SageMaker | Amazon Web Services PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

У таблиці стовпець % прийнятих вказує на частку даних, які включено та використовується в навчальному циклі. Збільшення цього настроюваного параметра зменшує вартість (як показано в стовпці IMR Savings %), але це також може вплинути на точність. Відповідне налаштування % прийнято залежить від вашого набору даних і моделі; вам слід поекспериментувати з цим параметром і налаштувати його, щоб досягти найкращого балансу між зниженням вартості та впливом на точність.

Огляд рішення

У наступних розділах ми розглянемо практичний приклад увімкнення розумного відсіву за допомогою навчального завдання PyTorch на SageMaker. Якщо ви хочете почати швидко, ви можете перейти до Приклади PyTorch або PyTorch Lightning.

Передумови

Ми припускаємо, що ви вже знаєте, як навчити модель за допомогою PyTorch або PyTorch Lightning за допомогою SDK SageMaker Python і класу Estimator за допомогою контейнерів глибокого навчання SageMaker для навчання. Якщо ні, зверніться до Використання SageMaker Python SDK перед тим, як продовжити.

Почніть роботу з розумним просіюванням SageMaker

У типовому навчанні PyTorch ви ініціалізуєте навчання PyTorch DataLoader з вашим набором даних та іншими необхідними параметрами, що забезпечує вхідні пакети в ході навчання. Щоб увімкнути інтелектуальне відсіювання ваших тренувальних даних, скористайтеся новою DataLoader клас: smart_sifting.dataloader.sift_dataloader.SiftingDataloader. Цей клас використовується як оболонка поверх вашого існуючого PyTorch DataLoader а навчальний процес натомість використовуватиме SiftingDataloader щоб отримати вхідні партії. The SiftingDataLoader отримує вхідний пакет із вашого оригінального PyTorch DataLoader, оцінює важливість зразків у партії та створює просіяну партію із зразками з високими втратами, які потім передаються на етап навчання. Обгортка виглядає так:

from smart_sifting.dataloader.sift_dataloader import SiftingDataloader train_dataloader = SiftingDataloader( sift_config = sift_config, orig_dataloader=DataLoader(self.train, self.batch_size, shuffle=True), loss_impl=BertLoss(), model=self.model
)

Команда SiftingDataloader вимагає деяких додаткових параметрів для аналізу ваших тренувальних даних, які ви можете вказати за допомогою sift_config параметр. Спочатку створіть a smart_sifting.sift_config.sift_configs.RelativeProbabilisticSiftConfig об'єкт. Цей об’єкт містить настроювані та необхідні beta_value та loss_history_length, які відповідно визначають частку зразків для збереження та вікно зразків для включення під час оцінювання відносної втрати. Зауважте, що оскільки інтелектуальне відсіювання використовує вашу модель для визначення важливості вибірки, використання моделі з абсолютно випадковими вагами може мати негативні наслідки. Замість цього можна використовувати loss_based_sift_config і sift_delay щоб затримати процес просіювання, доки ваги параметрів у моделі не оновляться за межі випадкових значень. (Для отримання додаткової інформації див Застосуйте інтелектуальне відсіювання до свого навчального сценарію.) У наступному коді ми визначаємо sift_config і вкажіть beta_value та loss_history_length, а також відкласти початок просіювання використовуючи loss_based_sift_config:

from smart_sifting.sift_config.sift_configs import RelativeProbabilisticSiftConfig, LossConfig, SiftingBaseConfig sift_config = RelativeProbabilisticSiftConfig( beta_value=3, loss_history_length=500, loss_based_sift_config=LossConfig( sift_config=SiftingBaseConfig(sift_delay=10) )
)

Далі ви також повинні включити a loss_impl параметр у SiftingDataloader об'єкт. Інтелектуальне відсіювання працює на рівні окремої вибірки, і дуже важливо мати доступ до методу розрахунку втрат, щоб визначити важливість вибірки. Ви повинні реалізувати метод відсіву втрат, який повертає тензор nx1, який містить значення втрат n вибірок. Як правило, ви вказуєте той самий метод втрати, який використовує ваш model під час навчання. Нарешті, додайте покажчик на свою модель у SiftingDataloader об'єкт, який використовується для оцінки зразків перед їх включенням у навчання. Перегляньте наступний код:

from smart_sifting.sift_config.sift_configs import RelativeProbabilisticSiftConfig, LossConfig, SiftingBaseConfig ## Defining Sift loss
class SiftBertLoss(Loss): # You should add the following initializaztion function # to calculate loss per sample, not per batch. def __init__(self): self.celoss = torch.nn.CrossEntropyLoss(reduction='none') def loss( self, model: torch.nn.Module, transformed_batch: SiftingBatch, original_batch: Any = None, ) -> torch.Tensor: device = next(model.parameters()).device batch = [t.to(device) for t in original_batch] # compute loss outputs = model(batch) return self.celoss(outputs.logits, batch[2]) ....
.... train_dataloader = SiftingDataloader( sift_config = sift_config, orig_dataloader=DataLoader(self.train, self.batch_size, shuffle=True), loss_impl=SiftBertLoss(), model=self.model
)

У наведеному нижче коді показано повний приклад увімкнення інтелектуального відсіву за допомогою наявного навчального завдання BERT:

from smart_sifting.dataloader.sift_dataloader import SiftingDataloader
from smart_sifting.loss.abstract_sift_loss_module import Loss
from smart_sifting.sift_config.sift_configs import RelativeProbabilisticSiftConfig, LossConfig, SiftingBaseConfig
...
...
... ## Defining Sift loss
class SiftBertLoss(Loss): # You should add the following initializaztion function # to calculate loss per sample, not per batch. def __init__(self): self.celoss = torch.nn.CrossEntropyLoss(reduction='none') def loss( self, model: torch.nn.Module, transformed_batch: SiftingBatch, original_batch: Any = None, ) -> torch.Tensor: device = next(model.parameters()).device batch = [t.to(device) for t in original_batch] # compute loss outputs = model(batch) return self.celoss(outputs.logits, batch[2]) .... .... .... sift_config = RelativeProbabilisticSiftConfig( beta_value=3, loss_history_length=500, loss_based_sift_config=LossConfig( sift_config=SiftingBaseConfig(sift_delay=10) )
) train_dataloader = SiftingDataloader( sift_config = sift_config, orig_dataloader=DataLoader(self.train, self.batch_size, shuffle=True), loss_impl=SiftBertLoss(), model=self.model
) ...... # use train_dataloader in the rest of the training logic.

Висновок

У цьому дописі ми ознайомилися з публічною попередньою версією інтелектуального відсіву, нової можливості SageMaker, яка може зменшити витрати на навчання моделі глибокого навчання до 35%. Ця функція покращує ефективність даних під час навчання, відфільтровуючи менш інформативні зразки даних. Включаючи лише найбільш впливові дані для конвергенції моделі, ви можете значно скоротити час і витрати на навчання, зберігаючи при цьому точність. Більше того, він легко інтегрується у ваші існуючі процеси, не вимагаючи змін у ваших даних або конвеєрі навчання.

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


Про авторів

Прискоріть навчання моделі глибокого навчання до 35% за допомогою інтелектуального просіювання Amazon SageMaker | Amazon Web Services PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.Роберт Ван Дусен є старшим менеджером із продуктів Amazon SageMaker. Він керує фреймворками, компіляторами та методами оптимізації для глибокого навчання.

Прискоріть навчання моделі глибокого навчання до 35% за допомогою інтелектуального просіювання Amazon SageMaker | Amazon Web Services PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.К Локеш Кумар Редді є старшим інженером у команді Amazon Applied AI. Він зосереджений на ефективних методах навчання ML та створенні інструментів для вдосконалення розмовних систем ШІ. У вільний час він любить шукати нові культури, нові враження та бути в курсі останніх технологічних тенденцій.

Прискоріть навчання моделі глибокого навчання до 35% за допомогою інтелектуального просіювання Amazon SageMaker | Amazon Web Services PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.Абхішек Ден є старшим менеджером із розробки в команді Amazon Applied AI і працює над машинним навчанням і розмовними системами штучного інтелекту. Він захоплюється технологіями штучного інтелекту та працює на перетині науки та техніки, надаючи можливості систем штучного інтелекту створювати більш інтуїтивно зрозумілу та безперебійну взаємодію між людиною та комп’ютером. Зараз він створює додатки на великих мовних моделях, щоб підвищити ефективність і покращити CX для Amazon.

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

Більше від AWS Машинне навчання