Наприкінці червня Яндекс
виклав у відкритий доступ нейромережу на 100 мільярдів параметрів під назвою YaLM 100B. Це найбільша GPT-подібна нейромережа у вільному доступі. Розповідається про те, як навчали, показали кращі приклади і на що здатна нейронка. Але чи така хороша вона на практиці і застосовна в домашніх умовах? Про це стаття замовчує, навіть її не так просто запустити і перевірити, оскільки потрібно приблизно 200 Gb GPU RAM. Найточніше ситуацію розкриває
цей коментар на хабрі.
Нібито в Яндексах усі такі розумники, а навіть нормального How-to не виклали. Немає api для великої моделі, не існує готової урізаної середньої або малої моделі для звичайних людей (Google Colab). Не вказано прикладу як налаштувати модель, як генерувати текст. Просто в статті вказано пару нюансів для дротів і все. Досить придивитися як зробив це банк на букву “C” і зробити так само. У мене склалося враження, що ця модель – просто один із невдалих експериментів, який було шкода викинути на сміття, тому вона була викладена в Open Source, щоб показати, які чудові моделі створює Яндекс, і більше того, це відкритий вихідний код!
В інтернеті дуже багато питань, як запустити yalm або навіть спробувати онлайн, але відповіді на це немає. Я був серед користувачів, які задавалися цими питаннями. І взявся розібратися. Тому що мені дуже потрібний був спосіб генерувати тексти для фінансових роботів. Щоб вони могли прогнозувати не лише значення, а й коментувати це текстом, ґрунтуючись на фінансових зведеннях. По суті буде те саме, що роблять фінансові аналітики, тільки із застосуванням штучного інтелекту. Є два способи запустити yalm.
Арендувати у хмарі серверз 200+ Gb GPU RAM або допрацювати код і запустити за допомогою deepspeed zero offload (коли GPU послідовно обробляє частину нейромережі, а решта зберігається в CPU RAM чи NVMe). Перший дуже дорогий, близько 2500 рублів на годину або 1.7 млн. на місяць. Другий невідомий, т.к. Код у репозиторії не надано, тільки
натяки на церепозиторія , що зробити не складно. Почнемо із простого.
- Інструкція із запуску YaLM 100B
- 1. Орендуємо 200 Гб GPU RAM, наприклад тут .
- 2. Клонуємо репозиторій із YaLM
- 3. Завантажуємо чекпоїнти (основну інформацію навчання моделі)
- 4. Встановлюємо nvidia – docker2
- 5. Збираємо контейнер для YaLM
- 6. Готуємо вміст
- 6.1 Чекпоінти
- 6.2 Відеокарти
- 7. Запускаємо docker контейнер
- 8. Запускаємо приклад із YaLM 100B
- 9. Результати роботи
- Як запустити YaLM без 200Gb GPU RAM?
- Підведемо підсумки
Інструкція із запуску YaLM 100B
1. Орендуємо 200 Гб GPU RAM, наприклад тут .
Потрібно не менше 200 Гб сумарно відеопам’яті. 8х40 = 320 Гб. Підходить лише цей. Менше 200 не можна, більше можна. Стрілка вказана на CPU RAM, на неї не дивимося. Вона може бути будь-якою.
Вказуємо диск близько 300 Гб, щоб із запаспом і бажано швидкий диск, т.к. даних буде передаватися до нього та з нього десятки гігабайт.
При створенні джерел вибираємо Ubuntu ML (Machine Learning). Це обов’язково, щоби були налаштовані відеокарти і нічого не потрібно було встановлювати додатково.
Після того, як сервер буде активований (це може зайняти 5-10 хвилин), підключаємося до сервера через ssh або прямо в веб-консолі на сторінці сервера і виконуємо команду.
nvidia-smi
Результатом має бути таблиця з відеокартами, версією драйверів та cuda. Приблизно так.
У шапці версії драйверів та куди. У лівій частині номера пристроїв у центрі розмір пам’яті пристроїв. Якщо цієї інформації у вас немає, то ви зібрали сервер не з того джерела. Ubuntu ML (Machine Learnong) є обов’язковим, про це написано вище.
2. Клонуємо репозиторій із YaLM
sudo git clone https://github.com/yandex/YaLM-100B/ yalm
cd yalm
Клонуйте в домашню папку, щоб потім не редагувати конфіг докера. Якщо клонували деінде, то
йдемо сюди і додаємо шлях туди, куди склонували.
3. Завантажуємо чекпоїнти (основну інформацію навчання моделі)
sudo chmod +x./download/download.sh
sudo bash./download/download.sh
Це триватиме близько години. Щоб не гаяти часу, створюємо нове ssh з’єднання і паралельно починаємо збирати docker контейнер.
4. Встановлюємо nvidia – docker 2
Звичайний docker не підходить, потрібен саме
nvidia-docker2 .
https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#setting-up-nvidia-container-toolkit
5. Збираємо контейнер для YaLM
cd yalm
sudo chmod +x ./docker/*
sudo bash ./docker/build.sh
Це також приблизно на годину.
Лайфхак. Завантажити чекпоїнти, встановити докер та зібрати контейнер можна на дешевому сервері з однією відеокартою. За часом це буде однаково, тож можна трохи заощадити. Після збирання на дешевому сервері видаляємо його, а бойовий сервер створюємо з використанням диска від дешевого сервера. Тоді ви не переплатите час за очікування складання та викачування чекпоінтів.
6. Готуємо вміст
6.1 Чекпоінти
Після того, як закінчилося скачування чекпоінтів, потрібно підсунути їх у конфіги. Є два способи поправити параметри або перенести чекпоїнти. Скрізь очікується, що чекпоїнти будуть лежати в основній директорії проекту, відповідно те, що завантажилося, потрібно перенести з папки download вище. Перебуваючи в папці yalm виконати
mv ./download/yalm100b_checkpoint ./
Або у файлах прикладів поміняти шляхи до
файлів
6.2 Відеокарти
Перевіряємо, що відеокарти правильно задані. Якщо у вас вісім відеокарт, нічого міняти не потрібно. Якщо інша кількість, то змінюємо ось ці рядки
У другому рядку номера девайсів, що використовуються (їх ви можете глянути в nvidia-smi, яку вже запускали). У четвертій їх кількість.
7. Запускаємо docker контейнер
Перебуваючи в папці yalm виконуємо команду
sudo bash ./docker/run.sh
Якщо все ок, то ви потрапите в контейнер, в якому потрібно перейти в папк yalm в домашній директорії.
cd ~/yalm
8. Запускаємо приклад із YaLM 100B
Ми готові до запуску одного із прикладів. Вони описані
тут .
chmod +x ./examples/generate_interactive.sh
./examples/generate_interactive.sh
Наберіться терпіння, залишилося почекати ще хвилин 10-15, поки створиться модель GPT2 і завантажаться ваги з чекпоінтів.
Коли збірка закінчиться, MegatronML запропонує ввести контекст для генерації тексту. Будьте обережні під час введення. При певному збігу обставин виникає помилка, програма вилітає і потрібно починати складання заново. Тому краще скористатися прикладами, які беруть текст із файлу.
9. Результати роботи
Виглядає цікаво. Щоправда, це лише гарні приклади. Я провів тест на різних вибірках. Як і очікувалося, що краще контекст, то осмислений текст буде згенерований. Повний набір експериментальних генерацій можна глянути за посиланнями:
За ціною мені це обійшлося близько 9 тисяч рублів за оренду серверів різної потужності від тренувань та підготовки до генерації. Особливим розчаруванням стало те, що не можна миттєво все згенерувати. Дуже довго запускається і текст генерує не так швидко, як хотілося б з огляду на вартість сервера на годину.
Як запустити YaLM без 200Gb GPU RAM?
Потрібно додати deepspeed zero offload у конфіг. Для тих, хто знає про що мова буде дуже просто це зробити. Для інших це зовсім не очевидне завдання. Важливо знати, що offload може бути або в CPU RAM, або NVMe. Про NVMe зараз можна забути, т.к. обробляється дуже великий обсяг даних і диск із цим не справляється. Zero offload CPU реальніший. Щоправда для цього потрібно мати в запасі 200 Gb CPU RAM, що теж не дешево. А один текст буде генеруватися близько 20-40 хвилин, оскільки поки що не вдалося розпаралелити на дві відеокарти. Як можете побачити на скріншоті нижче, у генерації була задіяна лише одна відеокарта, і то лише на четверту частину пам’яті. Ще потрібно розібратися чому не задіяні всі 24 Гб,
Ну і на закінчення скажу, що можна запустити навіть на одній RTX 3070 TI. Але сенсу особливо у тому немає, т.к. NVMe не дозволить швидко обробляти 150 Гб даних у свопі, які лежать на додачу в 96 Гб оперативної пам’яті.
Підведемо підсумки
Я, звичайно, спробую знайти оптимальні шляхи запуску. Але поки що для себе зробив висновки, що YaLM 100b надто дорого/занадто повільно для моїх завдань. За ці ж гроші люди напишуть набагато більше та якісніше. Але, гадаю, це тимчасово, спостерігатимемо. Якщо вам потрібна допомога із запуском, налаштуванням yalm або хочете глянути результати на прикладах контексту — пишіть на пошту або в телеграм.
Статья на Мега актуальную тему! Спасибо.
Крутая статья! Спасибо автору!
СПАСИБО !!!
три дня эту информацию искал
нет подобного о RuGPT3 и Порфириче?