Кароткі адказ: выкарыстоўвайце відэакарты NVIDIA для навучання штучнага інтэлекту, спачатку пераканаўшыся, што драйвер і відэакарта бачныя з дапамогай nvidia-smi , затым усталяваўшы сумяшчальны стэк фрэймворка/CUDA і запусціўшы невялікі тэст «мадэль + пакет на CUDA». Калі вы сутыкнуліся з недахопам памяці, паменшыце памер пакета і выкарыстоўвайце змешаную дакладнасць, кантралюючы пры гэтым выкарыстанне, памяць і тэмпературу.
Асноўныя высновы:
Базавыя праверкі : пачніце з nvidia-smi ; выпраўце бачнасць драйвера перад усталёўкай фрэймворкаў.
Сумяшчальнасць са стэкам : падтрымлівайце адпаведнасць версій драйвера, асяроддзя выканання CUDA і фрэймворка, каб прадухіліць збоі і нетрывалую ўстаноўку.
Невялікі поспех : перад маштабаваннем эксперыментаў пераканайцеся, што адзін праход прайшоў на CUDA.
Дысцыпліна відэапамяці : абапірайцеся на змешаную дакладнасць, назапашванне градыентаў і кантрольныя кропкі для адпавядання больш буйным мадэлям.
Маніторынг звычак : адсочвайце выкарыстанне, мадэлі памяці, магутнасць і тэмпературу, каб своечасова выяўляць вузкія месцы.

Артыкулы, якія вам могуць спадабацца пасля гэтага:
🔗 Як стварыць агента са штучным інтэлектам
Распрацуйце працоўны працэс, інструменты, памяць і меры бяспекі вашага агента.
🔗 Як разгарнуць мадэлі штучнага інтэлекту
Наладжвайце асяроддзі, мадэлі ўпакоўак і надзейна адпраўляйце ў прадукцыйную вытворчасць.
🔗 Як вымераць прадукцыйнасць штучнага інтэлекту
Выбірайце паказчыкі, праводзьце ацэнкі і адсочвайце прадукцыйнасць з цягам часу.
🔗 Як аўтаматызаваць задачы з дапамогай штучнага інтэлекту
Аўтаматызуйце паўтаральную працу з дапамогай падказак, працоўных працэсаў і інтэграцый.
1) Агульная карціна — што вы робіце, калі «трэніруецеся на GPU» 🧠⚡
Калі вы навучаеце мадэлі штучнага інтэлекту, вы ў асноўным выконваеце кучу матрычных матэматычных аперацый. Графічныя працэсары створаны для такога тыпу паралельнай працы, таму такія фрэймворкі, як PyTorch, TensorFlow і JAX, могуць перакласці цяжкую працу на графічны працэсар. ( Дакументацыя PyTorch CUDA , устаноўка TensorFlow (pip) , хуткі старт JAX ).
На практыцы «выкарыстанне відэакарт NVIDIA для навучання» звычайна азначае:
-
Параметры вашай мадэлі (у асноўным) захоўваюцца ў відэапамяці графічнага працэсара (GPU VRAM)
-
Вашы пакеты перамяшчаюцца з аператыўнай памяці ў відэапамяць на кожным кроку
-
Вашы прамыя і зваротныя перадачы выконваюцца на ядрах CUDA ( Кіраўніцтва па праграмаванні CUDA )
-
Абнаўленні аптымізатара адбываюцца на графічным працэсары (у ідэале)
-
Вы кантралюеце тэмпературу, памяць, выкарыстанне рэсурсаў, каб нічога не падсмажыць 🔥 ( дакументацыя NVIDIA nvidia-smi )
Калі гэта гучыць занадта шмат, не хвалюйцеся. У асноўным гэта кантрольны спіс і некалькі звычак, якія вы выпрацоўваеце з цягам часу.
2) Што робіць версію трэніровачнай сістэмы штучнага інтэлекту на базе графічнага працэсара NVIDIA добрай 🤌
Гэта раздзел «не будуйце дом на жэле». Добрая канфігурацыя для выкарыстання відэакарт NVIDIA для навучання штучнага інтэлекту — гэта нізкая драматычнасць. Нізкая драматычнасць — гэта стабільнасць. Стабільнасць — гэта хуткасць. Хуткасць — гэта… ну, хуткасць 😄
Надзейная трэніровачная сістэма звычайна мае:
-
Дастаткова відэапамяці для памеру вашай партыі + мадэлі + станаў аптымізатара
-
Відэааператыўная памяць — гэта як месца ў чамадане. Можна ўпакоўваць рэчы разумней, але бясконца не ўпакоўваць.
-
-
Адпаведны праграмны стэк (драйвер + асяроддзе выканання CUDA + сумяшчальнасць з фрэймворкам) ( Пачатак працы з PyTorch (селектар CUDA) , усталёўка TensorFlow (pip) )
-
Хуткае захоўванне (NVMe вельмі дапамагае для вялікіх набораў дадзеных)
-
Прыстойны працэсар + аператыўная памяць , каб загрузка дадзеных не перагружала графічны працэсар ( Кіраўніцтва па наладзе прадукцыйнасці PyTorch )
-
Запас астуджэння і магутнасці (недаацэнены, пакуль не перастане быць такім 😬)
-
Аднаўляльнае асяроддзе (venv/conda або кантэйнеры), каб абнаўленні не ператварыліся ў хаос ( агляд NVIDIA Container Toolkit )
І яшчэ адна рэч, якую людзі прапускаюць:
-
Звычка маніторынгу — вы правяраеце памяць і выкарыстанне відэакарты гэтак жа, як люстэркі падчас кіравання аўтамабілем. ( Дакументацыя NVIDIA nvidia-smi )
3) Параўнальная табліца — папулярныя спосабы навучання з відэакартамі NVIDIA (з асаблівасцямі) 📊
Ніжэй прыведзены кароткі спіс варыянтаў «які з іх падыходзіць?». Цэны прыблізныя (бо рэальнасць адрозніваецца), і так, адна з гэтых ячэек наўмысна крыху неакуратная.
| Інструмент / Падыход | Лепш за ўсё падыходзіць для | Кошт | Чаму гэта працуе (у асноўным) |
|---|---|---|---|
| PyTorch (ванільны) PyTorch | большасць людзей, большасць праектаў | Бясплатна | Гнуткая, велізарная экасістэма, лёгкая адладка — акрамя таго, у кожнага ёсць меркаванне |
| PyTorch Lightning Дакументацыя Lightning | каманды, структураванае навучанне | Бясплатна | Памяншае колькасць шаблонаў, ачышчае цыклы; часам адчуваецца як «магія», пакуль гэта не перастане здавацца |
| Трансформеры Hugging Face + Трэнер Дакументацыя для | НЛП + дапрацоўка магістра права | Бясплатна | Трэніроўкі з батарэйкамі, выдатныя паказчыкі па змаўчанні, хуткія перамогі 👍 |
| Паскорыць дакументацыю па паскарэнні | мультыграфічныя працэсары без праблем | Бясплатна | Робіць DDP менш раздражняльным, добра падыходзіць для маштабавання без перапісвання ўсяго |
| DeepSpeed ZeRO | вялікія мадэлі, хітрыкі з памяццю | Бясплатна | ZeroRO, разгрузка, маштабаванне — можа быць складана, але прыемна, калі націскае кнопку |
| Усталёўка TensorFlow + Keras | вытворчыя трубаправоды | Бясплатна | Моцныя інструменты, добрая гісторыя разгортвання; некаторым падабаецца, некаторым ціха не |
| JAX + Flax Хуткі старт JAX / Дакументацыя па Flax | даследаванні + аматары хуткасці | Бясплатна | Кампіляцыя XLA можа быць неверагодна хуткай, але адладка можа здавацца… абстрактнай |
| Агляд NVIDIA NeMo | маўленне + працоўныя працэсы LLM | Бясплатна | Аптымізаваны для NVIDIA стэк, добрыя рэцэпты — адчуваецца, як гатаваць у шыкоўнай духоўцы 🍳 |
| Агляд набору інструментаў Docker + NVIDIA Container Toolkit | прайгравальныя асяроддзі | Бясплатна | «Працуе на маёй машыне» становіцца «працуе на нашых машынах» (зноў жа, у асноўным) |
4) Крок першы — пераканайцеся, што ваш відэакартны працэсар правільна бачны 🕵️♂️
Перш чым усталёўваць дзясятак рэчаў, праверце асновы.
Рэчы, якія вы хочаце, каб былі праўдай:
-
Машына бачыць графічны працэсар
-
Драйвер NVIDIA ўсталяваны правільна
-
Графічны працэсар не затрымаўся на чымсьці іншым
-
Вы можаце надзейна запытаць яго
Класічная праверка выглядае наступным чынам:
-
nvidia-smi( дакументацыя NVIDIA nvidia-smi )
Што вы шукаеце:
-
Назва відэакарты (напрыклад, RTX, серыя A і г.д.)
-
Версія драйвера
-
Выкарыстанне памяці
-
Запушчаныя працэсы ( дакументацыя NVIDIA nvidia-smi )
Калі nvidia-smi не працуе, спыніцеся на гэтым. Пакуль не ўсталёўвайце фрэймворкі. Гэта як спрабаваць спячы хлеб, калі ваша духоўка не падключана да сеткі. ( Інтэрфейс кіравання сістэмай NVIDIA (NVSMI) )
Невялікая заўвага ад чалавека: часам nvidia-smi працуе, але навучанне ўсё роўна не атрымліваецца, таму што асяроддзе выканання CUDA, якое выкарыстоўваецца вашым фрэймворкам, не адпавядае чаканням драйвера. Гэта не ваша дурасць. Гэта… проста так ёсць 😭 ( Пачатак працы з PyTorch (селектар CUDA) , усталёўка TensorFlow (pip) )
5) Збярыце праграмны стэк — драйверы, CUDA, cuDNN і «танец сумяшчальнасці» 💃
Вось тут людзі і губляюць гадзіны. Хітрасць у тым, каб выбраць шлях і прытрымлівацца яго .
Варыянт A: CUDA ў камплекце з фрэймворкам (часта самы просты)
Шмат якія зборкі PyTorch пастаўляюцца з уласным асяроддзем выканання CUDA, гэта значыць, вам не патрэбен поўны набор інструментаў CUDA, усталяваны на ўсю сістэму. У асноўным вам патрэбен толькі сумяшчальны драйвер NVIDIA. ( Пачатак працы з PyTorch (селектар CUDA) , Папярэднія версіі PyTorch (дыскі CUDA) ).
Плюсы:
-
Менш рухомых частак
-
Прасцейшая ўстаноўка
-
Больш узнаўляльны ў залежнасці ад асяроддзя
Мінусы:
-
Калі вы выпадкова змешваеце асяроддзі, вы можаце заблытацца
Варыянт B: Набор інструментаў System CUDA (больш кантролю)
Вы ўсталёўваеце набор інструментаў CUDA ў сістэму і выраўноўваеце ўсё паводле яго. ( Дакументацыя па наборы інструментаў CUDA )
Плюсы:
-
Больш кантролю для карыстальніцкіх зборак, некаторыя спецыяльныя інструменты
-
Зручна для кампіляцыі пэўных аперацый
Мінусы:
-
Больш спосабаў не супадаць з версіямі і ціха плакаць
cuDNN і NCCL, з пункту гледжання чалавека
-
cuDNN паскарае прымітывы глыбокага навучання (згорткі, біты RNN і г.д.) ( дакументацыя NVIDIA cuDNN )
-
NCCL — гэта хуткая бібліятэка «камунікацыі паміж графічнымі працэсарамі» для навучання працы з некалькімі графічнымі працэсарамі ( агляд NCCL )
Калі вы трэніруецеся на некалькіх відэакартах, NCCL — ваш найлепшы сябар, а часам і капрызны сусед па пакоі. ( Агляд NCCL )
6) Ваш першы трэніровачны запуск на GPU (прыклад PyTorch) ✅🔥
Каб прачытаць, як выкарыстоўваць відэакарты NVIDIA для навучання штучнаму інтэлекту , вам не патрэбен спачатку маштабны праект. Вам патрэбен невялікі поспех.
Асноўныя ідэі:
-
Выявіць прыладу
-
Перанесці мадэль на графічны працэсар
-
Перанесці тэнзары на графічны працэсар
-
Пацвердзіце, што праход наперад выконваецца там ( дакументацыя PyTorch CUDA )
Рэчы, якія я заўсёды правяраю загадзя:
-
torch.cuda.is_available()вяртаеTrue( torch.cuda.is_available ) -
next(model.parameters()).deviceпаказваеCUDA( Форум PyTorch: праверка мадэлі на CUDA ) -
Адзін праход партыі наперад не выклікае памылак
-
Памяць відэакарты павялічваецца, калі вы пачынаеце трэніроўку (добры знак!) ( дакументацыя NVIDIA nvidia-smi )
Распаўсюджаныя пытанні "чаму гэта павольна?", зразумеў
-
Ваш загрузчык дадзеных занадта павольны (графічны працэсар чакае ў рэжыме чакання) ( Кіраўніцтва па наладзе прадукцыйнасці PyTorch )
-
Вы забыліся перанесці дадзеныя на графічны працэсар (ой)
-
Памер пакета вельмі малы (графічны працэсар недастаткова выкарыстаны)
-
Вы робіце інтэнсіўную папярэднюю апрацоўку працэсара на этапе навучання
Акрамя таго, так, ваш графічны працэсар часта будзе выглядаць «не вельмі загружаным», калі вузкім месцам з'яўляюцца дадзеныя. Гэта як наняць гоншчыка, а потым прымушаць яго чакаць паліва кожны круг.
7) Гульня з VRAM — памер пакета, змешаная дакладнасць і адсутнасць выбухаў 💥🧳
Большасць праблем практычнай падрыхтоўкі зводзяцца да праблемы памяці. Калі вы асвоіце адзін навык, навучыцеся кіраваць відэааперацыйнай памяццю.
Хуткія спосабы паменшыць выкарыстанне памяці
-
Змяшаная дакладнасць (FP16/BF16)
-
Звычайна таксама значнае павелічэнне хуткасці. Выйгрыш для ўсіх 😌 ( дакументацыя PyTorch AMP , кіраўніцтва па змешанай дакладнасці TensorFlow )
-
-
Назапашванне градыенту
-
Мадэлюйце большы памер партыі, назапашваючы градыенты на працягу некалькіх крокаў ( навучальная дакументацыя па Transformers (назапашванне градыентаў, fp16) )
-
-
Меншая даўжыня паслядоўнасці / памер кадравання
-
Жорстка, але эфектыўна
-
-
Кантрольныя пункты актывацыі
-
Абмяняць вылічэнні на памяць (пералічваць актывацыі падчас адваротнага вылічэння) ( torch.utils.checkpoint )
-
-
Выкарыстоўвайце больш лёгкі аптымізатар
-
Некаторыя аптымізатары захоўваюць дадатковыя станы, якія "спальваюць" відэапамяць
-
Момант «чаму відэапамяць усё яшчэ запоўненая пасля таго, як я спыніўся?»
Фрэймворкі часта кэшуюць памяць для павышэння прадукцыйнасці. Гэта нармальна. Гэта выглядае страшнавата, але не заўсёды з'яўляецца ўцечкай. Вы вучыцеся чытаць шаблоны. ( Семантыка PyTorch CUDA: размеркавальнік кэшавання )
Практычная звычка:
-
Параўнанне размеркаванай і рэзерваванай памяці (спецыфічна для фрэймворка) ( семантыка PyTorch CUDA: размеркавальнік кэшавання )
-
Не панікуйце пры першай жахлівай лічбе 😅
8) Прымусьце графічны працэсар працаваць — налада прадукцыйнасці, якая вартая вашага часу 🏎️
Першы крок — «запусціць навучанне графічнага працэсара». Другі — хуткае
Высокаэфектыўная аптымізацыя
-
Павялічце памер партыі (пакуль не стане балюча, затым трохі зменшыце)
-
Выкарыстоўвайце замацаваную памяць у загрузніках дадзеных (хутчэйшае капіраванне з хоста на прыладу) ( Кіраўніцтва па наладзе прадукцыйнасці PyTorch , кіраўніцтва па PyTorch pin_memory/non_blocking )
-
Павялічце колькасць загрузнікаў дадзеных (асцярожна, занадта шмат можа мець зваротны эфект) ( Кіраўніцтва па наладзе прадукцыйнасці PyTorch )
-
Папярэдне загружаць пакеты , каб графічны працэсар не бяздзейнічаў
-
Выкарыстоўвайце аб'яднаныя аперацыйныя сістэмы / аптымізаваныя ядры, калі яны даступныя
-
Выкарыстоўвайце змешаную дакладнасць (зноў жа, гэта добра) ( дакументацыя PyTorch AMP )
Найбольш забытае вузкае месца
Ваш канвеер захоўвання і папярэдняй апрацоўкі. Калі ваш набор дадзеных велізарны і захоўваецца на павольным дыску, ваш графічны працэсар ператвараецца ў дарагі абагравальнік прасторы. Вельмі прасунуты, вельмі бліскучы абагравальнік прасторы.
І яшчэ невялікае прызнанне: я «аптымізаваў» мадэль цэлую гадзіну, але потым зразумеў, што вузкім месцам было рэгістраванне. Занадта вялікі друк можа запаволіць навучанне. Так, можа.
9) Навучанне працы з некалькімі графічнымі працэсарамі — DDP, NCCL і маштабаванне без хаосу 🧩🤝
Калі вам патрэбна большая хуткасць або больш магутныя мадэлі, выбірайце мультыграфічныя працэсары. Вось тут і пачынаецца пік.
Распаўсюджаныя падыходы
-
Паралельная перадача дадзеных (DDP)
-
Падзяліць пакеты паміж графічнымі працэсарамі, сінхранізаваць градыенты
-
Звычайна гэта варыянт па змаўчанні «добры» ( дакументацыя PyTorch DDP ).
-
-
Мадэльны паралельны / тэнзарны паралельны
-
Падзяліць мадэль паміж графічнымі працэсарамі (для вельмі вялікіх мадэляў)
-
-
Паралельны трубаправод
-
Падзяліць пласты мадэлі на этапы (як зборачны канвеер, але для тэнзарных элементаў)
-
Калі вы толькі пачынаеце, навучанне ў стылі DDP — гэта ідэальны варыянт. ( Падручнік па PyTorch DDP )
Практычныя парады па выкарыстанні некалькіх відэакарт
-
Пераканайцеся, што відэакарты маюць аднолькавыя магчымасці (змешванне можа быць вузкім месцам)
-
Глядзіце міжзлучэнне: NVLink супраць PCIe мае значэнне для працоўных нагрузак з вялікай колькасцю сінхранізацыі ( агляд NVIDIA NVLink , дакументацыя NVIDIA NVLink )
-
Захоўвайце баланс памераў пакетаў для кожнага графічнага працэсара
-
Не ігнаруйце працэсар і сховішча дадзеных — некалькі відэакарт могуць пагоршыць праблемы з перадачай дадзеных
І так, памылкі NCCL могуць здавацца загадкай, ахутанай таямніцай «чаму менавіта цяпер». Вы не праклятыя. Напэўна. ( Агляд NCCL )
10) Маніторынг і прафіляванне — непрывабныя рэчы, якія эканомяць вашы гадзіны 📈🧯
Вам не патрэбныя мудрагелістыя панэлі кіравання, каб пачаць. Вам трэба заўважаць, калі нешта не так.
Ключавыя сігналы, на якія варта звярнуць увагу
-
Загрузка графічнага працэсара : яна пастаянна высокая ці рэзка вагаецца?
-
Выкарыстанне памяці : стабільнае, расце ці дзіўнае?
-
Спажыванне энергіі : незвычайна нізкае можа азначаць недастатковае выкарыстанне
-
Тэмпература : працяглыя высокія тэмпературы могуць знізіць прадукцыйнасць
-
Выкарыстанне працэсара : праблемы з канвеерам дадзеных адлюстроўваюцца тут ( Кіраўніцтва па наладзе прадукцыйнасці PyTorch )
Прафіляванне мыслення (спрошчаная версія)
-
Калі нізкая загрузка графічнага працэсара - вузкае месца ў дадзеных або працэсары
-
Калі графічны працэсар высокі, але павольны - неэфектыўнасць ядра, дакладнасць або архітэктура мадэлі
-
Калі хуткасць навучання выпадковым чынам падае - цеплавое дросельванне, фонавыя працэсы, збоі ўводу/вываду
Ведаю, маніторынг гучыць нецікава. Але гэта як чыстка зубной ніткай. Надакучліва, а потым раптам жыццё паляпшаецца.
11) Пошук і ліквідацыя няспраўнасцей — звычайныя падазраваныя (і менш звычайныя) 🧰😵💫
Гэты раздзел у асноўным такі: «тыя ж пяць праблем, заўсёды»
Праблема: CUDA не хапае памяці
Выпраўленні:
-
паменшыць памер партыі
-
выкарыстоўваць змешаную дакладнасць ( дакументацыя PyTorch AMP , кіраўніцтва па змешанай дакладнасці TensorFlow )
-
назапашванне градыенту ( навучальная дакументацыя па Трансформерах (назапашванне градыенту, fp16) )
-
актывацыі кантрольных пунктаў ( torch.utils.checkpoint )
-
закрыць іншыя працэсы графічнага працэсара
Праблема: навучанне выпадкова запускаецца на працэсары
Выпраўленні:
-
пераканайцеся, што мадэль перанесена ў
CUDA -
пераканайцеся, што тэнзары перамешчаны ў
CUDA -
праверыць канфігурацыю прылады фрэймворка ( дакументацыя PyTorch CUDA )
Праблема: Дзіўныя збоі або незаконны доступ да памяці
Выпраўленні:
-
пацверджанне сумяшчальнасці драйвера + асяроддзя выканання ( PyTorch Get Started (селектар CUDA) , устаноўка TensorFlow (pip) )
-
паспрабуйце чыстае асяроддзе
-
скараціць колькасць карыстальніцкіх аперацый
-
перазапусціць з дэтэрмінаванымі наладамі для прайгравання
Праблема: Павольней, чым чакалася
Выпраўленні:
-
праверыць прапускную здольнасць загрузніка дадзеных ( Кіраўніцтва па наладзе прадукцыйнасці PyTorch )
-
павялічыць памер партыі
-
скараціць высечку лесу
-
уключыць змешаную дакладнасць ( дакументацыя PyTorch AMP )
-
размеркаванне часу крокаў профілю
Праблема: завісанне пры працы з некалькімі відэакартамі
Выпраўленні:
-
пацвердзіць правільныя налады бэкенда ( размеркаваная дакументацыя PyTorch )
-
праверце канфігурацыі асяроддзя NCCL (уважліва) ( агляд NCCL )
-
спачатку праверце адзін графічны працэсар
-
забяспечыць спраўнасць сеткі / міжзлучальных сувязяў
Невялікая заўвага назад: часам выпраўленне літаральна перазагрузка. Гэта здаецца недарэчным. Але гэта працуе. Кампутары такія.
12) Кошт і практычнасць — выбар правільнай відэакарты NVIDIA і яе налады без лішніх роздумаў 💸🧠
Не кожнаму праекту патрэбна самая магутная відэакарта. Часам патрэбна дастаткова відэакарты.
Калі вы дапрацоўваеце мадэлі сярэдняга памеру
-
Прыярытэты для відэапамяці і стабільнасці
-
Змяшаная дакладнасць вельмі дапамагае ( дакументацыя PyTorch AMP , кіраўніцтва па змяшанай дакладнасці TensorFlow )
-
Часта можна абысціся адной магутнай відэакартай
Калі вы навучаеце больш буйныя мадэлі з нуля
-
Вам спатрэбіцца некалькі відэакарт або вельмі вялікі аб'ём відэапамяці
-
Вам будуць важныя NVLink і хуткасць сувязі ( агляд NVIDIA NVLink , агляд NCCL )
-
Хутчэй за ўсё, вы будзеце выкарыстоўваць аптымізатары памяці (ZeRO, offload і г.д.) ( дакументацыя DeepSpeed ZeRO , Microsoft Research: ZeRO/DeepSpeed )
Калі вы праводзіце эксперыменты
-
Вы хочаце хуткай ітэрацыі
-
Не трацьце ўсе грошы на відэакарту, а потым не марнуйце месца для захоўвання і аператыўнай памяці
-
Збалансаваная сістэма перамагае аднабаковую (у большасці выпадкаў)
І па праўдзе кажучы, вы можаце змарнаваць тыдні ў пошуках «ідэальнага» выбару абсталявання. Зрабіце нешта працаздольнае, вымерайце, а потым адрэгулюйце. Сапраўдны вораг — гэта адсутнасць зваротнай сувязі.
Заключныя нататкі - Як выкарыстоўваць відэакарты NVIDIA для навучання штучнаму інтэлекту, не губляючы пры гэтым розуму 😌✅
Калі вы больш нічога не запомнілі з гэтага кіраўніцтва па выкарыстанні відэакарт NVIDIA для навучання штучнаму інтэлекту , вазьміце вось гэта:
-
пераканайцеся, што
nvidia-smiпрацуе ( дакументацыя NVIDIA nvidia-smi ) -
Выберыце чысты праграмны шлях (CUDA ў камплекце з фрэймворкам часта прасцей за ўсё падыходзіць) ( Пачатак працы з PyTorch (селектар CUDA) )
-
Праверка невялікага трэніровачнага запуску на графічным працэсары перад маштабаваннем ( torch.cuda.is_available )
-
Кіруйце відэапамяццю, як быццам гэта абмежаваная паліца ў кладоўцы
-
Выкарыстоўвайце змешаную дакладнасць рана — гэта не проста «прасунутыя рэчы» ( дакументацыя PyTorch AMP , кіраўніцтва па змешанай дакладнасці TensorFlow ).
-
Калі ён павольны, падазрайце загрузчык дадзеных і ўвод/вывад, перш чым вінаваціць графічны працэсар ( Кіраўніцтва па наладзе прадукцыйнасці PyTorch )
-
Мультыграфічныя працэсары магутныя, але складаныя — маштабуйце паступова ( дакументацыя PyTorch DDP , агляд NCCL )
-
Кантралюйце выкарыстанне і тэмпературу, каб праблемы выяўляліся своечасова ( дакументацыя NVIDIA nvidia-smi )
Навучанне на відэакартах NVIDIA — гэта адзін з тых навыкаў, якія спачатку здаюцца страшнымі, а потым раптам становяцца… нармальнымі. Як вучыцца кіраваць аўтамабілем. Спачатку ўсё гучна і заблытана, і ты занадта моцна сціскаеш руль. Потым аднойчы ты едзеш, пацягваеш каву і міжволі вырашаеш праблему з памерам пакета, быццам гэта дробязь ☕😄
Часта задаваныя пытанні
Што азначае навучанне мадэлі штучнага інтэлекту на графічным працэсары NVIDIA
Навучанне на відэакарце NVIDIA азначае, што параметры вашай мадэлі і трэніровачныя пакеты захоўваюцца ў відэапамяці відэакарты, а складаная матэматыка (прамы праход, зваротны праход, крокі аптымізатара) выконваецца праз ядра CUDA. На практыцы гэта часта зводзіцца да таго, каб пераканацца, што мадэль і тэнзары знаходзяцца на CUDA , а затым сачыць за памяццю, выкарыстаннем і тэмпературай, каб прапускная здольнасць заставалася стабільнай.
Як пераканацца, што відэакарта NVIDIA працуе, перш чым усталёўваць што-небудзь яшчэ
Пачніце з nvidia-smi . Ён павінен паказаць назву відэакарты, версію драйвера, бягучае выкарыстанне памяці і любыя запушчаныя працэсы. Калі nvidia-smi не працуе, пачакайце PyTorch/TensorFlow/JAX — спачатку выпраўце бачнасць драйвера. Гэта базавая праверка «ці падключана духоўка» для навучання відэакарты.
Выбар паміж сістэмай CUDA і CUDA, якая пастаўляецца з PyTorch
Распаўсюджаны падыход — выкарыстанне CUDA, якая ўваходзіць у камплект фрэймворка (як і многія іншыя драйверы PyTorch), бо гэта памяншае колькасць рухомых частак — у асноўным патрэбен сумяшчальны драйвер NVIDIA. Усталёўка поўнага набору інструментаў CUDA для сістэмы прапануе большы кантроль (карыстальніцкія зборкі, аперацыі кампіляцыі), але таксама стварае больш магчымасцей для неадпаведнасцей версій і заблытаных памылак падчас выканання.
Чаму навучанне можа быць павольным нават з відэакартай NVIDIA
Часта графічны працэсар не хапае з-за ўваходнага канвеера. Запаволенне загрузнікаў дадзеных, інтэнсіўная папярэдняя апрацоўка працэсарам на этапе навучання, малыя памеры пакетаў або павольнае захоўванне дадзеных могуць прывесці да таго, што магутны графічны працэсар паводзіць сябе як бяздзейны абагравальнік. Павелічэнне колькасці загрузнікаў дадзеных, уключэнне замацаванай памяці, даданне папярэдняй выбаркі і абрэзка рэгістрацыі — гэта звычайныя першыя крокі перад тым, як вінаваціць мадэль.
Як прадухіліць памылкі «CUDA out of memory» падчас навучання відэакарты NVIDIA
Большасць выпраўленняў — гэта тактыка выкарыстання відэапамяці: памяншэнне памеру пакета, уключэнне змешанай дакладнасці (FP16/BF16), выкарыстанне градыентнага назапашвання, скарачэнне даўжыні паслядоўнасці/памеру кадравання або выкарыстанне кантрольных кропак актывацыі. Таксама праверце наяўнасць іншых працэсаў графічнага працэсара, якія спажываюць памяць. Некаторыя спробы і памылкі з'яўляюцца нармальнай з'явай — бюджэтаванне відэапамяці становіцца асноўнай звычкай у практычным навучанні графічнаму працэсару.
Чаму відэапамяць можа выглядаць запоўненай пасля завяршэння навучальнага сцэнарыя
Фрэймворкі часта кэшуюць памяць графічнага працэсара для павышэння хуткасці, таму рэзерваваная памяць можа заставацца высокай, нават калі выдзеленая памяць зніжаецца. Гэта можа нагадваць уцечку, але часта гэта размеркавальнік кэшавання, які паводзіць сябе належным чынам. Практычная звычка заключаецца ў тым, каб адсочваць заканамернасць з цягам часу і параўноўваць «выдзеленую і рэзерваваную», а не засяроджвацца на адным трывожным здымку.
Як пераканацца, што мадэль не ціха навучаецца на працэсары
Праверце на надзейнасць загадзя: пераканайцеся, што torch.cuda.is_available() вяртае True , пераканайцеся, што next(model.parameters()).device паказвае cuda , і выканайце адзін праход наперад без памылак. Калі прадукцыйнасць падазрона павольная, пераканайцеся таксама, што вашы пакеты перамяшчаюцца на графічны працэсар. Часта здараецца, што мадэль перамяшчаецца, і даныя выпадкова застаюцца.
Найпрасцейшы шлях да навучання працы з некалькімі відэакартамі
Паралельная апрацоўка дадзеных (навучанне ў стылі DDP) часта з'яўляецца найлепшым першым крокам: падзяліце пакеты паміж графічнымі працэсарамі і сінхранізуйце градыенты. Такія інструменты, як Accelerate, могуць зрабіць працу з некалькімі графічнымі працэсарамі менш балючай без поўнага перапісвання. Будзьце гатовыя да дадатковых зменных - сувязі NCCL, адрозненняў у міжзлучэннях (NVLink супраць PCIe) і ўзмоцненых вузкіх месцаў у дадзеных - таму паступовае маштабаванне пасля стабільнага запуску на адным графічным працэсары, як правіла, ідзе лепш.
Што трэба кантраляваць падчас навучання відэакарты NVIDIA, каб выявіць праблемы на ранняй стадыі
Сачыце за выкарыстаннем графічнага працэсара, выкарыстаннем памяці (стабільна ў параўнанні з ростам), спажываннем энергіі і тэмпературай — рэгуляванне хуткасці можа незаўважна зніжаць хуткасць. Таксама сачыце за выкарыстаннем працэсара, бо праблемы з канвеерам дадзеных часта выяўляюцца менавіта там. Калі выкарыстанне рэзкае або нізкае, падазрайце ўвод/вывад або загрузчыкі дадзеных; калі яно высокае, але час выканання крокаў усё яшчэ павольны, прааналізуйце ядры профіляў, рэжым дакладнасці і разбіўку часу выканання крокаў.
Спасылкі
-
NVIDIA - Дакументацыя NVIDIA nvidia-smi - docs.nvidia.com
-
NVIDIA - Інтэрфейс кіравання сістэмай NVIDIA (NVSMI) - developer.nvidia.com
-
NVIDIA - Агляд NVIDIA NVLink - nvidia.com
-
PyTorch - Пачатак працы з PyTorch (селектар CUDA) - pytorch.org
-
PyTorch - Дакументацыя PyTorch CUDA - docs.pytorch.org
-
TensorFlow - Усталёўка TensorFlow (pip) - tensorflow.org
-
JAX - Хуткі старт JAX - docs.jax.dev
-
Абдымаючы твар - дакументацыя для трэнера - huggingface.co
-
Штучны інтэлект Lightning - Дакументацыя Lightning - lightning.ai
-
DeepSpeed - дакументацыя ZeRO - deepspeed.readthedocs.io
-
Даследаванні Microsoft - Даследаванні Microsoft: ZeRO/DeepSpeed - microsoft.com
-
Форумы PyTorch - Форум PyTorch: праверка мадэлі на CUDA - discuss.pytorch.org