Тяжелая неделя. Думал, что закончу с релизом примерно к среде-четвергу, и успею добавить несколько feature-request'ов, но, видимо, у судьбы были другие планы.
В общем, вроде +/- стабилизоровал билд и добавил новый сервис как запасной вариант. Не знаю, через сколько времени придется писать очередные костыли поверх новой апишки, поэтому на всякий пожарный лучше заведите левые аккаунты на нескольких платформах.
Ну и еще успел накидать аналогичный проекта для Ирана [тык]
Пока возьму передышку до выходных - хочу накатать пару постов на отвлеченные темы. А там, думаю, завезу пару вещей, о которых просили в issues и [чате канала].
Релиз все [там же]😋
В общем, вроде +/- стабилизоровал билд и добавил новый сервис как запасной вариант. Не знаю, через сколько времени придется писать очередные костыли поверх новой апишки, поэтому на всякий пожарный лучше заведите левые аккаунты на нескольких платформах.
Ну и еще успел накидать аналогичный проекта для Ирана [тык]
Пока возьму передышку до выходных - хочу накатать пару постов на отвлеченные темы. А там, думаю, завезу пару вещей, о которых просили в issues и [чате канала].
Релиз все [там же]
This media is not supported in your browser
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
1.03K🔥38🙏5 3
Про Groq LPU и dataflow
Как говорится: “сначала маленькая историческая справка”. Dataflow-архитектуры это концепция, которую сформулировал Джек Деннис в MIT ещё в 1974. Идея простая: процессор не исполняет программу как последовательность инструкций, а гоняет данные через сеть вычислительных узлов. Узел запускается ровно тогда, когда на всех его входах накопились операнды, и порядок исполнения определяется готовностью данных, а не счётчиком команд. Сама идея идет в противовес фон Неймановской машине с регистровым файлом и указателем на следующую инструкцию. В 80-х под это пилили реальные машины (Manchester Dataflow, MIT Tagged-Token, Monsoon), и все они померли, потому что фон Нейман + кэш + спекулятивное исполнение оказались дешевле и универсальнее. Идея ушла в спячку и осталась жить в нишах вроде систолических массивов, FPGA-пайплайнов, DSP и т.п. А через 40+ лет ее снова стали реанимировать, потому что наконец появился новый клаас задач, на который эта архитектура хорошо ложится.
Что это за класс задач. Инференс LLM на batch=1 упирается в memory bandwidth: на каждый сгенерированный токен надо прочитать все веса модели целиком и прогнать через них один входной вектор. Например, Llama-70B в fp16 это 140 ГБ весов, и эти 140 ГБ надо протащить из памяти в матричные юниты один раз на токен. На современном GPU с HBM3 на ~3 ТБ/с теоретический потолок 3000/140 ~ 21 ток/с, и никакие TFLOPS тензорных ядер не спасут, потому что matmul вырождается в matrix-vector ([1, hidden] x [hidden, hidden]), и использование тензорных ядер падает до однозначных процентов. Они большую часть времени простаивают в ожидании данных.
Под эту нишу и заточен Groq. Так как модель исполнения другая, из чипа уходит большая часть привычной GPU инфраструктуры. HBM не нужна, потому что веса целиком держатся в on-chip SRAM. Кэши не нужны, из-за той же SRAM с равномерным доступом => иерархию строить незачем. Warp scheduler не нужен, потому что нет конкурирующих за вычислители потоков. Остаются функциональные блоки: MXM для матриц, VXM для векторов, SXM для пермутаций, MEM для банков SRAM. Они разложены полосами, и данные физически текут через них с фиксированной скоростью, один шаг полосы за такт. Всё расписание фиксируется на этапе компиляции: компилятор знает, что веса лежат в таком-то банке SRAM, активация окажется напротив MXM на такте T, и расставляет операции так, чтобы под каждым юнитом в каждый такт был нужный тензор. В рантайме железо просто исполняет план.
В такой архитектуре кратно возрастает пропускная для весов. SRAM сидит прямо рядом с MAC-ами, доступ занимает фиксированное число тактов, без промахов кэша и без очередей к контроллеру памяти. По пропускной способности это на порядок выше любой HBM (в текущем поколении LP30 порядка 150 ТБ/с против 20 ТБ/с на стек HBM3e). MXM-массивы не простаивают, потому что операнд гарантированно приедет в нужный такт по расписанию.
Но у этого подхода есть ряд недостатков. SRAM маленький, поэтому модель приходится размазывать на много чипов в детерминированной сети + компилятор планирует ещё и межчиповые передачи такт в такт. Под обучение всё это в принципе не годится: там нужны большие батчи, динамические графы, бэкпроп и прочее. Плюс вся сложность размещения, шедулинга и межчиповой синхронизации переехала в компилятор, и под каждую модель надо перекомпилировать весь граф
Как говорится: “сначала маленькая историческая справка”. Dataflow-архитектуры это концепция, которую сформулировал Джек Деннис в MIT ещё в 1974. Идея простая: процессор не исполняет программу как последовательность инструкций, а гоняет данные через сеть вычислительных узлов. Узел запускается ровно тогда, когда на всех его входах накопились операнды, и порядок исполнения определяется готовностью данных, а не счётчиком команд. Сама идея идет в противовес фон Неймановской машине с регистровым файлом и указателем на следующую инструкцию. В 80-х под это пилили реальные машины (Manchester Dataflow, MIT Tagged-Token, Monsoon), и все они померли, потому что фон Нейман + кэш + спекулятивное исполнение оказались дешевле и универсальнее. Идея ушла в спячку и осталась жить в нишах вроде систолических массивов, FPGA-пайплайнов, DSP и т.п. А через 40+ лет ее снова стали реанимировать, потому что наконец появился новый клаас задач, на который эта архитектура хорошо ложится.
Что это за класс задач. Инференс LLM на batch=1 упирается в memory bandwidth: на каждый сгенерированный токен надо прочитать все веса модели целиком и прогнать через них один входной вектор. Например, Llama-70B в fp16 это 140 ГБ весов, и эти 140 ГБ надо протащить из памяти в матричные юниты один раз на токен. На современном GPU с HBM3 на ~3 ТБ/с теоретический потолок 3000/140 ~ 21 ток/с, и никакие TFLOPS тензорных ядер не спасут, потому что matmul вырождается в matrix-vector ([1, hidden] x [hidden, hidden]), и использование тензорных ядер падает до однозначных процентов. Они большую часть времени простаивают в ожидании данных.
Под эту нишу и заточен Groq. Так как модель исполнения другая, из чипа уходит большая часть привычной GPU инфраструктуры. HBM не нужна, потому что веса целиком держатся в on-chip SRAM. Кэши не нужны, из-за той же SRAM с равномерным доступом => иерархию строить незачем. Warp scheduler не нужен, потому что нет конкурирующих за вычислители потоков. Остаются функциональные блоки: MXM для матриц, VXM для векторов, SXM для пермутаций, MEM для банков SRAM. Они разложены полосами, и данные физически текут через них с фиксированной скоростью, один шаг полосы за такт. Всё расписание фиксируется на этапе компиляции: компилятор знает, что веса лежат в таком-то банке SRAM, активация окажется напротив MXM на такте T, и расставляет операции так, чтобы под каждым юнитом в каждый такт был нужный тензор. В рантайме железо просто исполняет план.
В такой архитектуре кратно возрастает пропускная для весов. SRAM сидит прямо рядом с MAC-ами, доступ занимает фиксированное число тактов, без промахов кэша и без очередей к контроллеру памяти. По пропускной способности это на порядок выше любой HBM (в текущем поколении LP30 порядка 150 ТБ/с против 20 ТБ/с на стек HBM3e). MXM-массивы не простаивают, потому что операнд гарантированно приедет в нужный такт по расписанию.
Но у этого подхода есть ряд недостатков. SRAM маленький, поэтому модель приходится размазывать на много чипов в детерминированной сети + компилятор планирует ещё и межчиповые передачи такт в такт. Под обучение всё это в принципе не годится: там нужны большие батчи, динамические графы, бэкпроп и прочее. Плюс вся сложность размещения, шедулинга и межчиповой синхронизации переехала в компилятор, и под каждую модель надо перекомпилировать весь граф
1 25🔥13👌4
Weekly update - v0.3.4
Пока промежуточный билд в рамках большого обновления. Сделан полный редизайн андроида; теперь выглядит +/- по-человечески.
Добавлено переподключение в случае утери связи/перехода с wifi на cellular для всех платформ.
Для wbstream'a реанимирован dc режим. Так же (пока только для wbstream) по просьбам появилась настройка vp8 -> dual track, чтобы получить x2 скорость в режиме data over video. По дефолту отключено, и я настойчиво прошу не нагружать инфраструктуру без крайней нужды кучей трафика.
Также появилась возможность задать интерфейс для socks5 - если нужно раздать сеть надо поменять в settings -> proxy -> socks5 host с 127.0.0.1 на 0.0.0.0.
Пребилды как всегда [тут], а щитпостильня с обсуждением багов и feature-request'ов - [здесь]😋
Пока промежуточный билд в рамках большого обновления. Сделан полный редизайн андроида; теперь выглядит +/- по-человечески.
Добавлено переподключение в случае утери связи/перехода с wifi на cellular для всех платформ.
Для wbstream'a реанимирован dc режим. Так же (пока только для wbstream) по просьбам появилась настройка vp8 -> dual track, чтобы получить x2 скорость в режиме data over video. По дефолту отключено, и я настойчиво прошу не нагружать инфраструктуру без крайней нужды кучей трафика.
Также появилась возможность задать интерфейс для socks5 - если нужно раздать сеть надо поменять в settings -> proxy -> socks5 host с 127.0.0.1 на 0.0.0.0.
Пребилды как всегда [тут], а щитпостильня с обсуждением багов и feature-request'ов - [здесь]
Please open Telegram to view this post
VIEW IN TELEGRAM
8🔥52 8💅3🙏2
Кажется цивилизованному миру все же нужен не дискорд по паспорту, а ЛЛМки по справке от психиатра
1😁102💊33 8🔥2
Требуются вайбкодеры убыточных Crypto AI B2B SaaS решений (не штурм)
1😁63 13 7
Хотел накидать пару алогоритмических длиннопостов касаемо одной CV задачи, но пока, видимо, не судьба.
В ближайшее время хочу поресерчить и генерализировать одну вещь в data-over-webrtc проектах. Хз, что из этого выйдет.
Сейчас раскатил v0.3.5 [тык] с небольшими улучшениями. Теперь в релизах добавлены headless бинарники для arm64. Немного улучшено андроид приложение (спасибо автору [реквеста]). Добавлена возможность закидывать трафик creator'a в проксю, ну и всякое остальное по мелочи.
По возможности поднимайте на локальных машинах/одноплатниках, потому что, кажется, сейчас стали усердно следить за тем, какие айпишники совершают звонок
В ближайшее время хочу поресерчить и генерализировать одну вещь в data-over-webrtc проектах. Хз, что из этого выйдет.
Сейчас раскатил v0.3.5 [тык] с небольшими улучшениями. Теперь в релизах добавлены headless бинарники для arm64. Немного улучшено андроид приложение (спасибо автору [реквеста]). Добавлена возможность закидывать трафик creator'a в проксю, ну и всякое остальное по мелочи.
По возможности поднимайте на локальных машинах/одноплатниках, потому что, кажется, сейчас стали усердно следить за тем, какие айпишники совершают звонок
🔥26 6👌4🙏3
Прикольное - nvidia представила ARM чип для ноутбуков
https://www.nvidia.com/en-us/products/rtx-spark/
https://www.nvidia.com/en-us/products/rtx-spark/
1🔥25 10 2