Вештачка интелигенција
Разбирање на параметрите на моделот на големи јазици и барањата за меморија: длабоко нуркање
![mm](https://www.unite.ai/wp-content/uploads/2023/07/Aayush_mittal-150x150.jpg)
Објавено
пред 6 деновиon
By
Ајуш МиталСодржина
![Пресметување параметри во LLM базирани на трансформатори](https://www.unite.ai/wp-content/uploads/2024/07/DALL·E-2024-07-16-16.06.52-A-16_9-aspect-ratio-clean-minimal-theme-illustration-of-computer-memory-and-a-2D-matrix.-The-artwork-features-simple-and-sleek-lines-representing-com.webp)
Големи јазични модели (LLMs) забележа извонреден напредок во последниве години. Моделите како GPT-4, Gemini на Google и Claude 3 поставуваат нови стандарди во можностите и апликациите. Овие модели не само што го подобруваат генерирањето и преводот на текст, туку и отвораат нови терени во мултимодалната обработка, комбинирајќи текст, слика, аудио и видео влезови за да обезбедат посеопфатни решенија за вештачка интелигенција.
На пример, GPT-4 на OpenAI покажа значителни подобрувања во разбирањето и генерирањето на текст сличен на човекот, додека моделите на Google Gemini се одлични во справувањето со различни типови податоци, вклучувајќи текст, слики и аудио, овозможувајќи повеќе беспрекорни и контекстуално релевантни интеракции. Слично на тоа, моделите Claude 3 на Anthropic се познати по нивните повеќејазични способности и подобрени перформанси во задачите со вештачка интелигенција.
Како што развојот на LLM продолжува да се забрзува, разбирањето на сложеноста на овие модели, особено нивните параметри и барања за меморија, станува клучно. Овој водич има за цел да ги демистифицира овие аспекти, нудејќи детално и лесно разбирливо објаснување.
Основите на големите јазични модели
Кои се големите јазични модели?
Големите јазични модели се невронски мрежи обучени на огромни збирки на податоци за разбирање и генерирање на човечки јазик. Тие се потпираат на архитектури како Transformers, кои користат механизми како самовнимание за обработка и производство на текст.
Важноста на параметрите во LLMs
Параметрите се основните компоненти на овие модели. Тие вклучуваат тегови и предрасуди, кои моделот ги прилагодува за време на тренингот за да ги минимизира грешките во предвидувањата. Бројот на параметри често е во корелација со капацитетот и перформансите на моделот, но исто така влијае и на неговите пресметковни и мемориски барања.
Разбирање на архитектурата на трансформаторот
Преглед
Архитектурата на трансформаторот, воведена во трудот „Внимание е сè што ти треба“ од Васвани и сор. (2017), стана основа за многу LLM. Се состои од енкодер и декодер, секој составен од неколку идентични слоеви.
Компоненти на енкодер и декодер
- кодер: Ја обработува влезната секвенца и создава приказ на контекстот.
- Декодер: Ја генерира излезната секвенца користејќи ја претставата на енкодерот и претходно генерираните токени.
Клучни градежни блокови
- Внимание со повеќе глави: Овозможува моделот да се фокусира на различни делови од влезната низа истовремено.
- Невронски мрежи за напојување: Додава нелинеарност и сложеност на моделот.
- Нормализација на слојот: Го стабилизира и забрзува тренингот со нормализирање на средните резултати.
Пресметување на бројот на параметри
Пресметување параметри во LLM базирани на трансформатори
Ајде да ја разложиме пресметката на параметрите за секоја компонента на LLM базиран на трансформатор. Ќе ја користиме ознаката од оригиналната хартија, каде d_model
ја претставува димензијата на скриените состојби на моделот.
- Слој за вградување:
- Параметри =
vocab_size
*d_model
- Параметри =
- Внимание со повеќе глави:
- на
h
глави, соd_k = d_v = d_model / h
: - Параметри = 4 *
d_model
^2 (за Q, K, V и излезни проекции)
- на
- Мрежа за пренасочување:
- Параметри = 2 *
d_model
*d_ff
+d_model
+d_ff
- каде
d_ff
обично е 4 *d_model
- Параметри = 2 *
- Нормализација на слојот:
- Параметри = 2 *
d_model
(за размер и пристрасност)
- Параметри = 2 *
Вкупни параметри за еден слој на трансформаторот:
Parameters_layer
=Parameters_attention
+Parameters_ffn
+ 2 *Parameters_layernorm
За модел со N
слоеви:
- Вкупни параметри =
N
*Parameters_layer
+Parameters_embedding
+Parameters_output
Пример пресметка
Да разгледаме модел со следните спецификации:
d_model
= 768h
(број на глави за внимание) = 12N
(број на слоеви) = 12vocab_size
= 50,000
- Слој за вградување:
- 50,000 * 768 = 38,400,000
- Внимание со повеќе глави:
- 4 * 768^2 = 2,359,296
- Мрежа за пренасочување:
- 2 * 768 * (4 * 768) + 768 + (4 * 768) = 4,719,616
- Нормализација на слојот:
- 2 * 768 = 1,536
Вкупни параметри по слој:
- 2,359,296 + 4,719,616 + (2 * 1,536) = 7,081,984
Вкупно параметри за 12 слоеви:
- 12 * 7,081,984 = 84,983,808
Вкупни параметри на моделот:
- + = 84,983,808 38,400,000 123,383,808
Овој модел би имал приближно 123 милиони параметри.
Видови на употреба на меморија
Кога работиме со LLM, треба да разгледаме два главни типа на употреба на меморија:
- Модел меморија: Меморијата потребна за складирање на параметрите на моделот.
- Работната меморија: Меморијата потребна за време на заклучоците или обуката за складирање на средни активирања, градиенти и состојби на оптимизатор.
Пресметување на меморијата на моделот
Меморијата на моделот е директно поврзана со бројот на параметри. Секој параметар обично се складира како 32-битен број со подвижна запирка, иако некои модели користат обука со мешана прецизност со 16-битни плови.
Модел меморија (бајти) = Број на параметри * Бајти по параметар
За нашиот пример модел со 123 милиони параметри:
- Модел меморија (32-битна) = 123,383,808 * 4 бајти = 493,535,232 бајти ≈ 494 MB
- Модел меморија (16-битна) = 123,383,808 * 2 бајти = 246,767,616 бајти ≈ 247 MB
Проценка на работната меморија
Барањата за работна меморија може значително да се разликуваат врз основа на специфичната задача, големината на серијата и должината на секвенцата. Груба проценка за работната меморија за време на заклучувањето е:
Работна меморија ≈ 2 * Модел меморија
Ова е одговорно за складирање и на параметрите на моделот и на средното активирање. За време на тренингот, барањата за меморија може да бидат уште повисоки поради потребата да се складираат градиенти и состојби на оптимизатор:
Меморија за обука ≈ 4 * Модел меморија
За нашиот примерен модел:
- Заклучоци работна меморија ≈ 2 * 494 MB = 988 MB ≈ 1 GB
- Меморија за обука ≈ 4 * 494 MB = 1,976 MB ≈ 2 GB
Употреба на меморија во стабилна состојба и максимална употреба на меморија
Кога тренирате големи јазични модели базирани на архитектурата на Transformer, разбирањето на употребата на меморијата е од клучно значење за ефикасна распределба на ресурсите. Ајде да ги разложиме барањата за меморија во две главни категории: употреба на меморија во стабилна состојба и максимална употреба на меморија.
Употреба на меморија во стабилна состојба
Употребата на меморија во стабилна состојба ги содржи следните компоненти:
- Тежини на моделот: FP32 копии од параметрите на моделот, за кои се потребни 4N бајти, каде N е бројот на параметри.
- Држави на оптимизатор: За Adam оптимизатор, ова бара 8N бајти (2 состојби по параметар).
- Градиенти: FP32 копии од градиентите, за кои се потребни 4N бајти.
- Внесени податоци: Претпоставувајќи int64 влезови, ова бара 8BD бајти, каде што B е големината на серијата, а D е влезната димензија.
Вкупната употреба на меморија во стабилна состојба може да се приближи со:
- M_steady = 16N + 8BD бајти
Употреба на врвна меморија
Максималното користење на меморијата се јавува за време на враќањето наназад кога активациите се складираат за пресметување на градиент. Главните придонесувачи за врвната меморија се:
- Нормализација на слојот: Потребни се 4E бајти по норма на слојот, каде што E = BSH (B: големина на серија, S: должина на секвенца, H: скриена големина).
- Блок за внимание:
- QKV пресметка: 2E бајти
- Матрица за внимание: 4BSS бајти (S: должина на секвенца)
- Излез на внимание: 2Е бајти
- Блок за повлекување напред:
- Прв линеарен слој: 2Е бајти
- Активирање GELU: 8E бајти
- Втор линеарен слој: 2Е бајти
- Вкрстена ентропија загуба:
- Логити: 6 BSV бајти (V: големина на вокабулар)
Вкупната меморија за активирање може да се процени како:
- M_act = L * (14E + 4BSS) + 6BSV бајти
Каде што L е бројот на слоеви на трансформаторот.
Вкупно максимална употреба на меморија
Максималното користење на меморијата за време на тренингот може да се приближи со комбинирање на меморијата во стабилна состојба и меморијата за активирање:
- M_peak = M_steady + M_act + 4BSV бајти
Дополнителниот рок 4BSV претставува дополнителна распределба на почетокот на пропусницата за назад.
Со разбирање на овие компоненти, можеме да го оптимизираме користењето на меморијата за време на обуката и заклучоците, обезбедувајќи ефикасна распределба на ресурсите и подобрени перформанси на големите јазични модели.
Закони за скалирање и размислувања за ефикасност
Закони за скалирање за LLMs
Истражувањата покажаа дека перформансите на LLM имаат тенденција да следат одредени закони за скалирање како што се зголемува бројот на параметри. Каплан и сор. (2020) забележа дека перформансите на моделот се подобруваат како закон за моќност на бројот на параметри, пресметаниот буџет и големината на податоци.
Врската помеѓу перформансите на моделот и бројот на параметри може да се приближи со:
Перформанси ∝ N^α
Каде што N е бројот на параметри, а α е експонент на скалирање обично околу 0.07 за задачи за моделирање јазик.
Ова имплицира дека за да постигнеме 10% подобрување во перформансите, треба да го зголемиме бројот на параметри за фактор од 10^(1/α) ≈ 3.7.
Техники за ефикасност
Како што LLM продолжуваат да растат, истражувачите и практичарите развија различни техники за подобрување на ефикасноста:
a) Мешана прецизна обука: Користење на 16-битни или дури 8-битни броеви со подвижна запирка за одредени операции за да се намали употребата на меморијата и барањата за пресметување.
b) Модел паралелизам: Дистрибуција на моделот низ повеќе графички процесори или TPU за ракување со поголеми модели отколку што може да се собере на еден уред.
c) Градиент контролен пункт: Тргување со пресметување за меморија со повторно пресметување на одредени активирања за време на враќањето назад наместо нивно складирање.
d) Кастрење и квантизација: Отстранување на помалку важни тегови или намалување на нивната прецизност после тренинг за да се создадат помали, поефикасни модели.
e) Дестилација: Обучување на помали модели за имитирање на однесувањето на поголемите, потенцијално зачувувајќи голем дел од перформансите со помалку параметри.
Практичен пример и пресметки
GPT-3, еден од најголемите јазични модели, има 175 милијарди параметри. Го користи декодерскиот дел од архитектурата Transformer. За да го разбереме неговиот размер, ајде да го разложиме бројот на параметри со хипотетички вредности:
d_model = 12288
d_ff = 4 * 12288 = 49152
- Број на слоеви = 96
За еден слој на декодер:
Вкупни параметри = 8 * 12288^2 + 8 * 12288 * 49152 + 2 * 12288 ≈ 1.1 милијарди
Вкупно за 96 слоеви:
1.1 милијарди * 96 = 105.6 милијарди
Останатите параметри доаѓаат од вградување и други компоненти.
Заклучок
Разбирањето на параметрите и барањата за меморија на големите јазични модели е од клучно значење за ефективно дизајнирање, обука и имплементирање на овие моќни алатки. Со разложување на компонентите на архитектурата на Transformer и испитување на практични примери како GPT, добиваме подлабок увид во сложеноста и обемот на овие модели.
За дополнително да ги разберете најновите достигнувања во големите јазични модели и нивните апликации, проверете ги овие сеопфатни водичи:
- Истражете го целосниот водич за Gemma 2: Новиот модел на отворени големи јазици на Google за увид во неговите подобрени перформанси и иновативни карактеристики.
- Дознајте за Building LLM Agents for RAG од нула и пошироко: Сеопфатен водич кој ги разгледува предизвиците и решенијата во проширената генерација на пронаоѓање.
- Откријте ги сложеноста на Поставување обука, фино подесување и наведување на LLM со графички процесори NVIDIA и CUDA за оптимизирање на ВИ системи.
![](https://www.unite.ai/wp-content/uploads/2022/10/join-the-future-newsletter.png)
![](https://www.unite.ai/wp-content/uploads/2024/01/Unite-AI-Mobile-Newsletter-1.png)
Изминатите пет години ги поминав потопувајќи се во фасцинантниот свет на машинското учење и длабокото учење. Мојата страст и експертиза ме наведоа да придонесам за над 50 различни проекти за софтверско инженерство, со посебен фокус на AI/ML. Мојата постојана љубопитност, исто така, ме привлече кон Обработка на природни јазици, поле кое јас сум желен да го истражам понатаму.
Можеби ви се допаѓа
MARKLLM: Комплет алатки со отворен извор за LLM Watermarking
Распоредување на големи јазични модели на Kubernetes: сеопфатен водич
Разбирање на ретки автоенкодери, GPT-4 и Claude 3: длабинско техничко истражување
Qwen2 – Најновиот повеќејазичен јазичен модел на Alibaba предизвикува SOTA како Llama 3
LLaVA-UHD: LMM кој воочува каков било сооднос и слики со висока резолуција
Надополнување на големите јазични модели со предвидување со повеќе токени
Последни пораки
- Лама 3.1: Најнапредниот модел со вештачка интелигенција со отворен извор на Мета - Сè што треба да знаете
- Револуционизирање на искуството со вашиот уред: Како вештачката интелигенција на Apple ја редефинира технологијата
- Клучот за успешни решенија за вештачка интелигенција? Податоци за однесувањето
- Улогата на ГАН во подобрувањето на сајбер безбедноста
- 10 најдобри апликации за фризури со вештачка интелигенција (јули 2024 година)