Post #271
36
Очень люботную тему сегодня изучаю с Клодом - как модельки запускаются на маках - отдельных, и собранных в кластеры. Из важного и неожиданного.
Первое ограничение память. Проблема не столько в размере, вернее не только в размере (модель банально должна поместиться и оставить место для контекста), но и в скорости передачи данных процессорам. А здесь у обычного М4 пропускная способность 120GB/s, у М4 PRO - 273GB/s, у M4MAX - 550 GB/s, M3Ultra - 1000 GB/s. И это часто главное, что определяет скорость.
История в том, что количество вычислений в расчете на количество параметров в нейронках не так велико, и процы нужны не так, как память. Поэтому в обычной ситуации процы не будут загружены полностью - будут лопатить на 40-60% и ждать информации от памяти.
Но здесь есть но. Если модель квантованная, например, у нее параметры не 16битные, а 8ми, то количество памяти требуется в 2 раза меньше. Если это 4х битная модель - то в 4. При этом качетство модели при 8битном квантовании падает на 1%, на 4х-битном - процентов на 5. И при работе с квантованной моделью процессоры становятся важны. Более того, у эппла есть не только cpu и gpu, но и нейронные ядра. Они обычно не очень активно используются, но при квантовании грузятся максимально. Поэтому в четырехбитном варианте уже в максимуме используются нейронные процессоры, а графические процы и скорость шины памяти - это вторые факторы.
Если взять несколько мак мини, то играют важную роль задержки в передаче данных между ними. Нужен обязательно thunderbolt 4, кабель не самый дешевый. Интересно то, что модель параллелится слоями - когда из 32 слоев на каждой из 4 машин по 8, и они токен проходит все эти 4 машины последовательно. Так лучше утилизируются процессоры, чем пытаться, допустим, модель с экспертами разбросать на разные машины по экспертам.
Это убивает скорость - для 64гб памяти один m4max будет быстрее 2 m4pro и 4 m4. Но опять есть но. Если работают несколько человек, то один комп будет все считать по очереди, а стойка из 4 будет обрабатывать сразу несколько запросов и общее количество обработанных токенов за единицу времени будет выше.
Но самое любопытное, что если брать большую, но квантованную модель, то и при единичном запросе скорость у нескольких компов будет выше, чем у одного мощного. Дело в том, что у 4 m4 в сумме 40 cpu, 40 gpu и 64 neural engines. У 2 m4pro - 24, 32, 32. У одного m4max - 16, 40 и 16. А нейронные ядра для квантованных моделей решают. И по цене 4 минимальные машины в сумме заметно дешевле.
Вот такая любопытная арифметика. Руки чешутся попробовать на практике
Первое ограничение память. Проблема не столько в размере, вернее не только в размере (модель банально должна поместиться и оставить место для контекста), но и в скорости передачи данных процессорам. А здесь у обычного М4 пропускная способность 120GB/s, у М4 PRO - 273GB/s, у M4MAX - 550 GB/s, M3Ultra - 1000 GB/s. И это часто главное, что определяет скорость.
История в том, что количество вычислений в расчете на количество параметров в нейронках не так велико, и процы нужны не так, как память. Поэтому в обычной ситуации процы не будут загружены полностью - будут лопатить на 40-60% и ждать информации от памяти.
Но здесь есть но. Если модель квантованная, например, у нее параметры не 16битные, а 8ми, то количество памяти требуется в 2 раза меньше. Если это 4х битная модель - то в 4. При этом качетство модели при 8битном квантовании падает на 1%, на 4х-битном - процентов на 5. И при работе с квантованной моделью процессоры становятся важны. Более того, у эппла есть не только cpu и gpu, но и нейронные ядра. Они обычно не очень активно используются, но при квантовании грузятся максимально. Поэтому в четырехбитном варианте уже в максимуме используются нейронные процессоры, а графические процы и скорость шины памяти - это вторые факторы.
Если взять несколько мак мини, то играют важную роль задержки в передаче данных между ними. Нужен обязательно thunderbolt 4, кабель не самый дешевый. Интересно то, что модель параллелится слоями - когда из 32 слоев на каждой из 4 машин по 8, и они токен проходит все эти 4 машины последовательно. Так лучше утилизируются процессоры, чем пытаться, допустим, модель с экспертами разбросать на разные машины по экспертам.
Это убивает скорость - для 64гб памяти один m4max будет быстрее 2 m4pro и 4 m4. Но опять есть но. Если работают несколько человек, то один комп будет все считать по очереди, а стойка из 4 будет обрабатывать сразу несколько запросов и общее количество обработанных токенов за единицу времени будет выше.
Но самое любопытное, что если брать большую, но квантованную модель, то и при единичном запросе скорость у нескольких компов будет выше, чем у одного мощного. Дело в том, что у 4 m4 в сумме 40 cpu, 40 gpu и 64 neural engines. У 2 m4pro - 24, 32, 32. У одного m4max - 16, 40 и 16. А нейронные ядра для квантованных моделей решают. И по цене 4 минимальные машины в сумме заметно дешевле.
Вот такая любопытная арифметика. Руки чешутся попробовать на практике
- ❤ 1