Лучше смотреть в Task Manager на Dedicated memory (VRAM) и Shared memory (RAM).
Кстати, если поставить вулкан бэкэнд, то память выделяется только в VRAM и так можно узнать максимальный контекст. Только просто выделения контекста недостаточно, нужно его еще заполнить на 100%
Суть в том что между каждым умножением на скрытый слой нужно делать ReLU или SiLU и подобные.
Gpt как раз и пишет про SiLU, что для него потребуется еще инструкции тащить. А если модели перейдут на какой-нибудь xxLU, то железку придется выкинуть и напечатать новую.
Вариант умножать в памяти, а потом загружать все на чип для SiLU и прочего не подходит. Хотя трафика в 2 раза меньше будет.
А я себе взял Intel Ultra 7 255H (6P + 8E + 2LP) на 64Гб (хотел докупить 96Гб, но не успел). У него 32гб видеопамяти, но всю использовать нельзя - не может выделить слишком большой кусок. На встройке около 20т/с, на ЦП 10-15т/с но тротлит и работает на 3.5ГГц вместо 5.1+4.5. gpt-oss-20b на встройке до 64К контекст, на ЦП все 128К. Из плюсов 2 thunderbolt и еще oculink можно воткнуть во второй m2.
На gpt-oss-20b у меня с 16гб предел 16К контекст. Кстати с CUDA бэкэндом можно сделать и больше, часть уйдет в RAM, но скорость не сильно проседает, видимо драйвер умеет переливать в VRAM часто используемые части.
Кроме операция над матрицами есть еще ReLU, где mix/max, sin, cos и тд в зависимости от архитектуры при обучении модели. Так что придется полноценный чип приделать к памяти.
gpt-oss-20b справляется не сильно хуже моделей на 1Тб, так что с ростом памяти прирост в качестве небольшой и кажется что чуть-чуть улучшить обучение маленькой модели и будет прям совсем хорошо.
Свой проект имеет смысл для B2B, как кирпичик (SDK, фреймворк, тулза) в большом продукте. Я в нескольких таких копаниях работал и это намного эффективнее чем аналогичные команды в больших компаниях.
Свой проект в виде B2C имеет большой минус - ты навсегда привязываешься к этому проекту. Хочешь делать что-то другое и снова сидишь без денег, потому что конкуренты быстро сделают аналог и накинут новых фичей. А поддержка проекта и развитие проекта отнимает все время, еще нужно нанимать чтобы самому не тестировать и не фиксить примитивные баги. Когда ИИ сможет избавить от такой рутины, тогда станет намного проще запускать проекты.
Чисто теоретически можно обучить нейронку правильно складывать даже длинные числа, только на само обучение будет тратиться куча денег каждый раз. Правильней все же чтобы нейронки писали код и выполняли его.
А вот есть задачки посложнее - проекции 3д фигур на плоскость. Недавно нашел баг в чужом коде и скормил этот код разным нейронкам, в итоге только Грок нашел ошибку с неправильной проекцией, остальные выдавали одинаковый ответ указывая на другой кусок кода.
По спекам видеокарты давно могут рисовать однопиксельные треугольники в 5К 60фпс. Чтение текстур и расчеты тоже дешевые. Но почему-то все тормозит и требует 16гб памяти.
Только llama не работает с NPU, остается только посчитать TOPS на CPU и GPU.
Но для локального запуска все равно лучше NV на 16гб, стоит не дорого, токенов/с в десятки раз больше, а с помощью разбиения задачи на мелкие куски и небольшой контекст не проблема.
Со старыми играми тоже не очень, где-то с 2010 слишком нагруженные постэффекты которые плохо подходят для тайловой архитектуры. Дешевые АМД на RDNA2-3 в этом случае намного лучше и стабильнее.
В общем железка интересная, но нормального ПО под него нет и не скоро будет.
Пока что единствено возможной реализацией алгоритмической медели. Проблема в том, что создатели железа адаптируют его под существующие программы, а программы выбрали путь многопоточности.
Есть еще вариант SIMD/SIMT - когда одна инструкция выполняется для набора данных, такие вот виртуальные потоки с возможностью дешевого чтения регистров соседних потоков, что позволяет наплохо так оптимизировать математику.
Система тасков и корутины уже большой шаг к такой многопоточности. В зависимости от количества потоков выполняющих задачи и будет однопточные или многопоточные программы. Проблема только в устаревших ОС и устаревшей кодовой базе, включая популярные либы.
Я больше по графике, но у меня вылезают проблемы, когда CPU выжирает всю пропускную способность общей памяти. Поэтому смотрю как можно оптимизировать эту часть.
По оптимизации по L2 идея в том, чтобы загрузить часть данных в L2 и прогнать все системы для них, затем загрузить следующую часть. Аналогично работают тайловые ГПУ на мобилках.
Оптимизации примитивные, проблема продумать архитектуру, чтобы эти оптимизации можно было использовать.
Про такие оптимизации расказывали еще на GDC 10 лет назад. Утеряные технологии древних) Сейчас оптимизация по L2 есть в MASS для UE.
А зачем нужно оптимизировать по L2 можно убедиться если нагрузить RAM всего одним потоком и посмотреть как работает встройка. На дешевых интелах у меня получались лаги в 100-200мс на каждый кадр.
Сделал так и нашел у себя такую же ошибку.
Кстати, для ассертов уже давно добавил bool{} конструктор чтобы отлавливать неправильные касты.
Лучше тогда андроид ТВ приставку с али за 4К. Там нет видеокамеры и микрофона, 100% отключается при выдергивании из розетки.
А кто их засудит за недоступ к еще разрешенным ресурсам?
Лучше смотреть в Task Manager на Dedicated memory (VRAM) и Shared memory (RAM).
Кстати, если поставить вулкан бэкэнд, то память выделяется только в VRAM и так можно узнать максимальный контекст. Только просто выделения контекста недостаточно, нужно его еще заполнить на 100%
Суть в том что между каждым умножением на скрытый слой нужно делать ReLU или SiLU и подобные.
Gpt как раз и пишет про SiLU, что для него потребуется еще инструкции тащить. А если модели перейдут на какой-нибудь xxLU, то железку придется выкинуть и напечатать новую.
Вариант умножать в памяти, а потом загружать все на чип для SiLU и прочего не подходит. Хотя трафика в 2 раза меньше будет.
А я себе взял Intel Ultra 7 255H (6P + 8E + 2LP) на 64Гб (хотел докупить 96Гб, но не успел). У него 32гб видеопамяти, но всю использовать нельзя - не может выделить слишком большой кусок. На встройке около 20т/с, на ЦП 10-15т/с но тротлит и работает на 3.5ГГц вместо 5.1+4.5. gpt-oss-20b на встройке до 64К контекст, на ЦП все 128К. Из плюсов 2 thunderbolt и еще oculink можно воткнуть во второй m2.
На gpt-oss-20b у меня с 16гб предел 16К контекст. Кстати с CUDA бэкэндом можно сделать и больше, часть уйдет в RAM, но скорость не сильно проседает, видимо драйвер умеет переливать в VRAM часто используемые части.
Кроме операция над матрицами есть еще ReLU, где mix/max, sin, cos и тд в зависимости от архитектуры при обучении модели. Так что придется полноценный чип приделать к памяти.
gpt-oss-20b справляется не сильно хуже моделей на 1Тб, так что с ростом памяти прирост в качестве небольшой и кажется что чуть-чуть улучшить обучение маленькой модели и будет прям совсем хорошо.
Теми кто дожил до этого) Но большинство слили все с убытком чтобы расплатиться за кредиты.
Свой проект имеет смысл для B2B, как кирпичик (SDK, фреймворк, тулза) в большом продукте. Я в нескольких таких копаниях работал и это намного эффективнее чем аналогичные команды в больших компаниях.
Свой проект в виде B2C имеет большой минус - ты навсегда привязываешься к этому проекту. Хочешь делать что-то другое и снова сидишь без денег, потому что конкуренты быстро сделают аналог и накинут новых фичей. А поддержка проекта и развитие проекта отнимает все время, еще нужно нанимать чтобы самому не тестировать и не фиксить примитивные баги. Когда ИИ сможет избавить от такой рутины, тогда станет намного проще запускать проекты.
Такие же заявления были в 2017 когда раздували пузырь крипты. Тогда все брали кредиты и продавали квартиры лишь бы вложиться в битки и получить 10х.
Чисто теоретически можно обучить нейронку правильно складывать даже длинные числа, только на само обучение будет тратиться куча денег каждый раз. Правильней все же чтобы нейронки писали код и выполняли его.
А вот есть задачки посложнее - проекции 3д фигур на плоскость. Недавно нашел баг в чужом коде и скормил этот код разным нейронкам, в итоге только Грок нашел ошибку с неправильной проекцией, остальные выдавали одинаковый ответ указывая на другой кусок кода.
По спекам видеокарты давно могут рисовать однопиксельные треугольники в 5К 60фпс. Чтение текстур и расчеты тоже дешевые. Но почему-то все тормозит и требует 16гб памяти.
Только llama не работает с NPU, остается только посчитать TOPS на CPU и GPU.
Но для локального запуска все равно лучше NV на 16гб, стоит не дорого, токенов/с в десятки раз больше, а с помощью разбиения задачи на мелкие куски и небольшой контекст не проблема.
Со старыми играми тоже не очень, где-то с 2010 слишком нагруженные постэффекты которые плохо подходят для тайловой архитектуры. Дешевые АМД на RDNA2-3 в этом случае намного лучше и стабильнее.
В общем железка интересная, но нормального ПО под него нет и не скоро будет.
Пока что единствено возможной реализацией алгоритмической медели. Проблема в том, что создатели железа адаптируют его под существующие программы, а программы выбрали путь многопоточности.
Есть еще вариант SIMD/SIMT - когда одна инструкция выполняется для набора данных, такие вот виртуальные потоки с возможностью дешевого чтения регистров соседних потоков, что позволяет наплохо так оптимизировать математику.
Система тасков и корутины уже большой шаг к такой многопоточности. В зависимости от количества потоков выполняющих задачи и будет однопточные или многопоточные программы. Проблема только в устаревших ОС и устаревшей кодовой базе, включая популярные либы.
Я больше по графике, но у меня вылезают проблемы, когда CPU выжирает всю пропускную способность общей памяти. Поэтому смотрю как можно оптимизировать эту часть.
По использованию SIMD https://gdcvault.com/play/1022248/SIMD-at-Insomniac-Games-How
По оптимизации по L2 идея в том, чтобы загрузить часть данных в L2 и прогнать все системы для них, затем загрузить следующую часть. Аналогично работают тайловые ГПУ на мобилках.
Оптимизации примитивные, проблема продумать архитектуру, чтобы эти оптимизации можно было использовать.
Про такие оптимизации расказывали еще на GDC 10 лет назад. Утеряные технологии древних) Сейчас оптимизация по L2 есть в MASS для UE.
А зачем нужно оптимизировать по L2 можно убедиться если нагрузить RAM всего одним потоком и посмотреть как работает встройка. На дешевых интелах у меня получались лаги в 100-200мс на каждый кадр.