Forwarded from Machinelearning
Группа инженеров из Google DeepMind опубликовали 12-ю главу своего он-лайн учебника "How to Scale Your Model: A Systems View of LLMs on TPUs"
How to Scale Your Model - практико-ориентированное руководство по масштабированию LLM из 12 разделов для разработчиков и исследователей. Оно объясняет, как анализировать и оптимизировать производительность модели, учитывая системные ресурсы: вычисления, память и пропускную способность.
Пособие научит выбирать оптимальные стратегии параллелизма, оценивать стоимость и время обучения и инференса, а также глубже понять взаимодействие между TPU/GPU и алгоритмами масштабирования как на одном, так и на тысячах ускорителей.
12-я глава - глубокое техническое руководство по архитектуре GPU и стратегиям масштабирования больших моделей. В ней детально разбирается устройство современных GPU NVIDIA: Streaming Multiprocessors, Tensor Cores, иерархия памяти (HBM, L2, SMEM), все это с подробными сравнительными таблицами характеристик для разных поколений чипов.
Очень подробно выполнено сравнение архитектур GPU и TPU, с объясняем ключевого различия между модульностью GPU и монолитностью TPU.
Особое внимание, что редкость для обучающих материалов, уделено сетевой организации кластеров. Авторы доступно объясняют как GPU соединяются внутри узлов через NVLink/NVSwitch и между узлами через InfiniBand в топологии "Fat tree", и как пропускная способность на каждом уровне влияет на реальную производительность коллективных операций (AllReduce, AllGather).
Описаны основные стратегии параллелизма: Data Parallelism, Tensor Parallelism, Expert Parallelism и Pipeline Parallelism, с разбором их ограничений и примеров из реальных проектов.
В конце главы есть хороший анализ новых возможностей архитектуры Blackwell.
@ai_machinelearning_big_data
#AI #ML #LLM #Scaling #GPU #TPU
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤5❤🔥2🔥1
🔥 БЕСПЛАТНЫЙ КУРС ПО СОЗДАНИЮ НЕЙРО-СОТРУДНИКОВ НА GPT И ДРУГИХ LLM 🔥
Ищете практический и углубленный курс, чтобы освоить создание нейро-сотрудников? Мы создали курс из 5 объемных занятий. Это именно то, что нужно, чтобы прокачать свои навыки абсолютно бесплатно!
📌 Темы занятий:
1. Введение в мир нейро-сотрудников
2. Как работают LLM и их аналоги
3. Создание базы знаний для нейро-сотрудника (RAG)
4. Тестирование и отладка нейро-сотрудников
5. Интеграция нейро-сотрудников в Production
Вот 5 тем курса - он максимально простой и доступный, общеобразовательный, без какого-либо сложного программирования 📚Прохождение этого курса, скорее всего, займет у вас от 1 до 3 часов
🤖 Присоединяйтесь к нашему бесплатному курсу и разберитесь в этой увлекательной теме с нами!
Ищете практический и углубленный курс, чтобы освоить создание нейро-сотрудников? Мы создали курс из 5 объемных занятий. Это именно то, что нужно, чтобы прокачать свои навыки абсолютно бесплатно!
📌 Темы занятий:
1. Введение в мир нейро-сотрудников
2. Как работают LLM и их аналоги
3. Создание базы знаний для нейро-сотрудника (RAG)
4. Тестирование и отладка нейро-сотрудников
5. Интеграция нейро-сотрудников в Production
Вот 5 тем курса - он максимально простой и доступный, общеобразовательный, без какого-либо сложного программирования 📚Прохождение этого курса, скорее всего, займет у вас от 1 до 3 часов
🤖 Присоединяйтесь к нашему бесплатному курсу и разберитесь в этой увлекательной теме с нами!
🧠 C++ хитрая задача — SPSC-кольцевая очередь без блокировок (lock-free), корректная по memory ordering
Задача.
Реализуйте обобщённую кольцевую очередь single-producer / single-consumer (один писатель, один читатель), которая:
- не использует мьютексы;
- корректна по отношению к перезагрузкам CPU/компиляторным переупорядочиваниям (правильные `memory_order`);
- не падает на гонках при чтении/записи индексов;
- работает на произвольных типах
- имеет фиксированную ёмкость
Требования:
1)
2)
3) Между продюсером и консюмером ровно по одному потоку.
4) Без UB: корректно управлять временем жизни
5) Отсутствие ложных срабатываний на гонки: индексы —
Решение
Ключевая идея: у нас **отдельные** атомики для `head` (читатель продвигает) и `tail` (писатель продвигает).
- Писатель смотрит `head` только с `memory_order_acquire` (наблюдать продвинутые позиции),
обновляет `tail` с `memory_order_release`.
- Читатель зеркально: читает `tail` с `acquire`, продвигает `head` с `release`.
Так мы гарантируем, что **запись объекта** произойдёт до публикации индекса, а **чтение** — после наблюдения индекса.
Частые ошибки (и почему это «хитро»):
- Неверные порядки памяти. seq_cst «вылечит», но дорого; relaxed везде — сломает HB-отношения. Нужны именно пары release/acquire на публикации индексов.
- Забыли разрушить объект в слоте. Утечки и нарушение инвариантов времени жизни.
- Модуль через % и N не степень 2. Работает, но медленнее; очень заметно на горячих путях.
- Многопоточность не SPSC. Даже два продюсера ломают модель: нужны дополнительные атомики/барьеры (или MPMC структура).
- false sharing на head_/tail_. Без выравнивания производительность деградирует на нагрузке.
Задача.
Реализуйте обобщённую кольцевую очередь single-producer / single-consumer (один писатель, один читатель), которая:
- не использует мьютексы;
- корректна по отношению к перезагрузкам CPU/компиляторным переупорядочиваниям (правильные `memory_order`);
- не падает на гонках при чтении/записи индексов;
- работает на произвольных типах
T
(в том числе не `trivially copyable`);- имеет фиксированную ёмкость
N
, лучше степенью двойки для дешёвого модуля через маску.Требования:
1)
try_push(T)
— помещает элемент, если не переполнено; возвращает false
иначе. 2)
try_pop(T&)
— извлекает элемент, если не пусто; возвращает false
иначе. 3) Между продюсером и консюмером ровно по одному потоку.
4) Без UB: корректно управлять временем жизни
T
(placement new / явный деструктор). 5) Отсутствие ложных срабатываний на гонки: индексы —
std::atomic<size_t>
с правильными порядками.Ключевая идея: у нас **отдельные** атомики для `head` (читатель продвигает) и `tail` (писатель продвигает).
- Писатель смотрит `head` только с `memory_order_acquire` (наблюдать продвинутые позиции),
обновляет `tail` с `memory_order_release`.
- Читатель зеркально: читает `tail` с `acquire`, продвигает `head` с `release`.
Так мы гарантируем, что **запись объекта** произойдёт до публикации индекса, а **чтение** — после наблюдения индекса.
Частые ошибки (и почему это «хитро»):
- Неверные порядки памяти. seq_cst «вылечит», но дорого; relaxed везде — сломает HB-отношения. Нужны именно пары release/acquire на публикации индексов.
- Забыли разрушить объект в слоте. Утечки и нарушение инвариантов времени жизни.
- Модуль через % и N не степень 2. Работает, но медленнее; очень заметно на горячих путях.
- Многопоточность не SPSC. Даже два продюсера ломают модель: нужны дополнительные атомики/барьеры (или MPMC структура).
- false sharing на head_/tail_. Без выравнивания производительность деградирует на нагрузке.
👍7🔥6❤3🗿2🥰1
📦 C++ обертка для SQLite с расширенными возможностями ⚙️
Библиотека boost_sqlite предоставляет удобный интерфейс для работы с SQLite в C++. Она поддерживает типизированные запросы, подготовленные выражения, функции на основе JSON и пользовательские функции. Библиотека не скрывает C-API SQLite, а дополняет его.
🚀Основные моменты:
- Типизированные запросы и подготовленные выражения
- Поддержка JSON и пользовательских функций
- Виртуальные таблицы и хуки событий
- Легкая интеграция с существующими проектами
📌 GitHub: https://github.com/klemens-morgenstern/sqlite
@cpluspluc
Библиотека boost_sqlite предоставляет удобный интерфейс для работы с SQLite в C++. Она поддерживает типизированные запросы, подготовленные выражения, функции на основе JSON и пользовательские функции. Библиотека не скрывает C-API SQLite, а дополняет его.
🚀Основные моменты:
- Типизированные запросы и подготовленные выражения
- Поддержка JSON и пользовательских функций
- Виртуальные таблицы и хуки событий
- Легкая интеграция с существующими проектами
📌 GitHub: https://github.com/klemens-morgenstern/sqlite
@cpluspluc
👍11❤7🔥3🥰1
🧩 Умный текстовый анализатор для обработки данных
Этот репозиторий предлагает инструменты для анализа и обработки текстовой информации. Он включает в себя функции для извлечения ключевых слов, анализа частоты слов и других полезных методов, которые помогут в работе с текстовыми данными.
🚀 Основные моменты:
- Извлечение ключевых слов из текста
- Анализ частоты слов и фраз
- Поддержка различных форматов входных данных
- Легкий в использовании интерфейс
📌 GitHub: https://github.com/conanhujinming/text_dedup
@cpluspluc
Этот репозиторий предлагает инструменты для анализа и обработки текстовой информации. Он включает в себя функции для извлечения ключевых слов, анализа частоты слов и других полезных методов, которые помогут в работе с текстовыми данными.
🚀 Основные моменты:
- Извлечение ключевых слов из текста
- Анализ частоты слов и фраз
- Поддержка различных форматов входных данных
- Легкий в использовании интерфейс
📌 GitHub: https://github.com/conanhujinming/text_dedup
@cpluspluc
👍6🔥3❤1
Тренировки Яндекса по алгоритмам: от решения задач к карьере в IT
Вас ждет 4 недели практики, чтобы систематизировать знания и научиться решать задачи, которые встречаются на собеседованиях и в реальной работе.
Программа включает восемь ключевых тем: множества, словари, динамическое программирование и не только. Лекции и разборы будет вести Михаил Густокашин — директор Центра студенческих олимпиад ВШЭ и тренер чемпионов мира по программированию.
Топ-300 участников смогут пропустить контест при отборе на стажировку в Яндекс по направлениям бэкенд, фронтенд, мобилка и пройти пробное техническое собеседование. А еще лидеры рейтинга смогут получить персональные карьерные консультации.
Подать заявку можно до 29 сентября.
Вас ждет 4 недели практики, чтобы систематизировать знания и научиться решать задачи, которые встречаются на собеседованиях и в реальной работе.
Программа включает восемь ключевых тем: множества, словари, динамическое программирование и не только. Лекции и разборы будет вести Михаил Густокашин — директор Центра студенческих олимпиад ВШЭ и тренер чемпионов мира по программированию.
Топ-300 участников смогут пропустить контест при отборе на стажировку в Яндекс по направлениям бэкенд, фронтенд, мобилка и пройти пробное техническое собеседование. А еще лидеры рейтинга смогут получить персональные карьерные консультации.
Подать заявку можно до 29 сентября.
❤4👍4
librats — это современная библиотека для пиринговых сетей, обеспечивающая высокую производительность и простоту использования. Она предлагает кроссплатформенные решения с поддержкой автоматического обнаружения узлов, NAT-траверсала и безопасной передачи данных.
🚀 Основные моменты:
- Высокая производительность с использованием C++17
- Поддержка DHT, mDNS и STUN для обнаружения узлов
- Безопасная передача данных с шифрованием и проверкой целостности
- Удобный API для работы с событиями и сообщениями
- Кроссплатформенность: Windows, Linux, macOS
📌 GitHub: https://github.com/DEgitx/librats
#cpp
@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12👍3🥰1
🎮⚓ Консольная игра "Морской бой" на C++
Классическая игра "Морской бой" в консольном формате. Реализована на C++ с использованием ООП. Игроки могут размещать свои корабли на 10x10 поле и сражаться с компьютерным противником.
🚀Основные моменты:
- 10 кораблей разных размеров
- Редактор размещения кораблей
- Игра против бота
- Интуитивно понятный интерфейс
📌 GitHub: https://github.com/Savvas200/BattleShip-Console-Game
@cpluspluc
Классическая игра "Морской бой" в консольном формате. Реализована на C++ с использованием ООП. Игроки могут размещать свои корабли на 10x10 поле и сражаться с компьютерным противником.
🚀Основные моменты:
- 10 кораблей разных размеров
- Редактор размещения кораблей
- Игра против бота
- Интуитивно понятный интерфейс
📌 GitHub: https://github.com/Savvas200/BattleShip-Console-Game
@cpluspluc
❤8❤🔥2👍2🥰1
📂 Ввод-вывод в C: от fopen до системных вызовов
📅 4 сентября | 20:00 мск | бесплатно
На вебинаре разберём:
📜 Стандартные функции C: fopen, fread, fwrite, printf, scanf
⚡️ Буферизацию и почему fflush() не всегда срабатывает
🛠 Системные вызовы: read, write, open vs стандартная библиотека
🚫 Как избежать типичных ошибок при работе с файлами и потоками
Полезно для:
💡 Junior-разработчиков и тех, кто хочет глубже понять подсистему I/O в C и ОС
👉 Регистрируйтесь:
https://otus.pw/6MBa/
Занятие приурочено к старту курса "Программист С", обучение на котором позволит не только глубоко погрузиться в возможности языка С, но и изучить низкоуровневые особенности устройства UNIX-совместимых ОС и ОС семейства Windows
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ", ИНН: 9705100963
📅 4 сентября | 20:00 мск | бесплатно
На вебинаре разберём:
📜 Стандартные функции C: fopen, fread, fwrite, printf, scanf
⚡️ Буферизацию и почему fflush() не всегда срабатывает
🛠 Системные вызовы: read, write, open vs стандартная библиотека
🚫 Как избежать типичных ошибок при работе с файлами и потоками
Полезно для:
💡 Junior-разработчиков и тех, кто хочет глубже понять подсистему I/O в C и ОС
👉 Регистрируйтесь:
https://otus.pw/6MBa/
Занятие приурочено к старту курса "Программист С", обучение на котором позволит не только глубоко погрузиться в возможности языка С, но и изучить низкоуровневые особенности устройства UNIX-совместимых ОС и ОС семейства Windows
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ", ИНН: 9705100963
❤1
🐘 Tarantool — необычная платформа, сочетающая in-memory базу данных с полноценным сервером приложений на Lua. Проект имеет два движка хранения: in-memory с WAL и LSM-дерево, поддерживает ANSI SQL и асинхронную репликацию.
Инструмент имеет встроенный JIT-компилятор LuaJIT, позволяющий исполнять бизнес-логику прямо рядом с данными. При этом сохраняется совместимость с внешними СУБД вроде PostgreSQL через коннекторы. Проект полезен для высоконагруженных веб-сервисов, кэширующих слоёв и систем обработки очередей сообщений.
🤖 GitHub
Инструмент имеет встроенный JIT-компилятор LuaJIT, позволяющий исполнять бизнес-логику прямо рядом с данными. При этом сохраняется совместимость с внешними СУБД вроде PostgreSQL через коннекторы. Проект полезен для высоконагруженных веб-сервисов, кэширующих слоёв и систем обработки очередей сообщений.
🤖 GitHub
❤6👍6🥰2😁1
🛠️ Оптимизированные компиляторы с LLVM
LLVM — это мощный инструмент для создания высокоэффективных компиляторов и сред выполнения. Он включает в себя множество компонентов, таких как Clang для компиляции C и C++, а также библиотеки и утилиты для работы с промежуточными представлениями.
🚀 Основные моменты:
- Поддержка множества языков программирования.
- Включает стандартную библиотеку libc++.
- Инструменты для анализа и оптимизации биткода.
- Активное сообщество и поддержка.
📌 GitHub: https://github.com/llvm/llvm-project
#cpp
LLVM — это мощный инструмент для создания высокоэффективных компиляторов и сред выполнения. Он включает в себя множество компонентов, таких как Clang для компиляции C и C++, а также библиотеки и утилиты для работы с промежуточными представлениями.
🚀 Основные моменты:
- Поддержка множества языков программирования.
- Включает стандартную библиотеку libc++.
- Инструменты для анализа и оптимизации биткода.
- Активное сообщество и поддержка.
📌 GitHub: https://github.com/llvm/llvm-project
#cpp
👍6❤4🔥2