Поврзете се со нас

Вештачка интелигенција

Разбирање на параметрите на моделот на големи јазици и барањата за меморија: длабоко нуркање

mm

Објавено

 on

Пресметување параметри во LLM базирани на трансформатори

Големи јазични модели (LLMs) забележа извонреден напредок во последниве години. Моделите како GPT-4, Gemini на Google и Claude 3 поставуваат нови стандарди во можностите и апликациите. Овие модели не само што го подобруваат генерирањето и преводот на текст, туку и отвораат нови терени во мултимодалната обработка, комбинирајќи текст, слика, аудио и видео влезови за да обезбедат посеопфатни решенија за вештачка интелигенција.

На пример, GPT-4 на OpenAI покажа значителни подобрувања во разбирањето и генерирањето на текст сличен на човекот, додека моделите на Google Gemini се одлични во справувањето со различни типови податоци, вклучувајќи текст, слики и аудио, овозможувајќи повеќе беспрекорни и контекстуално релевантни интеракции. Слично на тоа, моделите Claude 3 на Anthropic се познати по нивните повеќејазични способности и подобрени перформанси во задачите со вештачка интелигенција.

Како што развојот на LLM продолжува да се забрзува, разбирањето на сложеноста на овие модели, особено нивните параметри и барања за меморија, станува клучно. Овој водич има за цел да ги демистифицира овие аспекти, нудејќи детално и лесно разбирливо објаснување.

Основите на големите јазични модели

Кои се големите јазични модели?

Големите јазични модели се невронски мрежи обучени на огромни збирки на податоци за разбирање и генерирање на човечки јазик. Тие се потпираат на архитектури како Transformers, кои користат механизми како самовнимание за обработка и производство на текст.

Важноста на параметрите во LLMs

Параметрите се основните компоненти на овие модели. Тие вклучуваат тегови и предрасуди, кои моделот ги прилагодува за време на тренингот за да ги минимизира грешките во предвидувањата. Бројот на параметри често е во корелација со капацитетот и перформансите на моделот, но исто така влијае и на неговите пресметковни и мемориски барања.

Разбирање на архитектурата на трансформаторот

Трансформатори-архитектура

Архитектура на трансформатори

Преглед

Архитектурата на трансформаторот, воведена во трудот „Внимание е сè што ти треба“ од Васвани и сор. (2017), стана основа за многу LLM. Се состои од енкодер и декодер, секој составен од неколку идентични слоеви.

Компоненти на енкодер и декодер

  • кодер: Ја обработува влезната секвенца и создава приказ на контекстот.
  • Декодер: Ја генерира излезната секвенца користејќи ја претставата на енкодерот и претходно генерираните токени.

Клучни градежни блокови

  1. Внимание со повеќе глави: Овозможува моделот да се фокусира на различни делови од влезната низа истовремено.
  2. Невронски мрежи за напојување: Додава нелинеарност и сложеност на моделот.
  3. Нормализација на слојот: Го стабилизира и забрзува тренингот со нормализирање на средните резултати.

Пресметување на бројот на параметри

Трансформатор обука

Претходно обучени модели за ефикасна обука за трансформатори

Пресметување параметри во LLM базирани на трансформатори

Ајде да ја разложиме пресметката на параметрите за секоја компонента на LLM базиран на трансформатор. Ќе ја користиме ознаката од оригиналната хартија, каде d_model ја претставува димензијата на скриените состојби на моделот.

  1. Слој за вградување:
    • Параметри = vocab_size * d_model
  2. Внимание со повеќе глави:
    • на h глави, со d_k = d_v = d_model / h:
    • Параметри = 4 * d_model^2 (за Q, K, V и излезни проекции)
  3. Мрежа за пренасочување:
    • Параметри = 2 * d_model * d_ff + d_model + d_ff
    • каде d_ff обично е 4 * d_model
  4. Нормализација на слојот:
    • Параметри = 2 * d_model (за размер и пристрасност)

Вкупни параметри за еден слој на трансформаторот:

  • Parameters_layer = Parameters_attention + Parameters_ffn + 2 * Parameters_layernorm

За модел со N слоеви:

  • Вкупни параметри = N * Parameters_layer + Parameters_embedding + Parameters_output

Пример пресметка

Да разгледаме модел со следните спецификации:

  • d_model = 768
  • h (број на глави за внимание) = 12
  • N (број на слоеви) = 12
  • vocab_size = 50,000
  1. Слој за вградување:
    • 50,000 * 768 = 38,400,000
  2. Внимание со повеќе глави:
    • 4 * 768^2 = 2,359,296
  3. Мрежа за пренасочување:
    • 2 * 768 * (4 * 768) + 768 + (4 * 768) = 4,719,616
  4. Нормализација на слојот:
    • 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, треба да разгледаме два главни типа на употреба на меморија:

  1. Модел меморија: Меморијата потребна за складирање на параметрите на моделот.
  2. Работната меморија: Меморијата потребна за време на заклучоците или обуката за складирање на средни активирања, градиенти и состојби на оптимизатор.

Пресметување на меморијата на моделот

Меморијата на моделот е директно поврзана со бројот на параметри. Секој параметар обично се складира како 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, разбирањето на употребата на меморијата е од клучно значење за ефикасна распределба на ресурсите. Ајде да ги разложиме барањата за меморија во две главни категории: употреба на меморија во стабилна состојба и максимална употреба на меморија.

Употреба на меморија во стабилна состојба

Употребата на меморија во стабилна состојба ги содржи следните компоненти:

  1. Тежини на моделот: FP32 копии од параметрите на моделот, за кои се потребни 4N бајти, каде N е бројот на параметри.
  2. Држави на оптимизатор: За Adam оптимизатор, ова бара 8N бајти (2 состојби по параметар).
  3. Градиенти: FP32 копии од градиентите, за кои се потребни 4N бајти.
  4. Внесени податоци: Претпоставувајќи int64 влезови, ова бара 8BD бајти, каде што B е големината на серијата, а D е влезната димензија.

Вкупната употреба на меморија во стабилна состојба може да се приближи со:

  • M_steady = 16N + 8BD бајти

Употреба на врвна меморија

Максималното користење на меморијата се јавува за време на враќањето наназад кога активациите се складираат за пресметување на градиент. Главните придонесувачи за врвната меморија се:

  1. Нормализација на слојот: Потребни се 4E бајти по норма на слојот, каде што E = BSH (B: големина на серија, S: должина на секвенца, H: скриена големина).
  2. Блок за внимание:
    • QKV пресметка: 2E бајти
    • Матрица за внимание: 4BSS бајти (S: должина на секвенца)
    • Излез на внимание: 2Е бајти
  3. Блок за повлекување напред:
    • Прв линеарен слој: 2Е бајти
    • Активирање GELU: 8E бајти
    • Втор линеарен слој: 2Е бајти
  4. Вкрстена ентропија загуба:
    • Логити: 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, добиваме подлабок увид во сложеноста и обемот на овие модели.

За дополнително да ги разберете најновите достигнувања во големите јазични модели и нивните апликации, проверете ги овие сеопфатни водичи:

Изминатите пет години ги поминав потопувајќи се во фасцинантниот свет на машинското учење и длабокото учење. Мојата страст и експертиза ме наведоа да придонесам за над 50 различни проекти за софтверско инженерство, со посебен фокус на AI/ML. Мојата постојана љубопитност, исто така, ме привлече кон Обработка на природни јазици, поле кое јас сум желен да го истражам понатаму.