Пара замечаний: - Приведенные ссылки на код лишь указывают на использование стандартного NVML API - того же самого, который используется nvidia-smi. Реальная логика находится здесь https://github.com/nebuly-ai/nos/blob/d5cc1d72b8ee52b79b8751c0b49122366e026ce1/internal/controllers/migagent/actuator.go#L152C25-L152C25. Здесь же видно, как именно происходит попытка создания-удаления и что при каждом чихе перезапускается nvidia-device-plugin на ноде. - Ограничение не реконфигурацию MIG улучшилось в новых поколениях - H100 может изменить конфигурацию MIG при наличии активных CUDA контекстов. Естественно поменять/удалить партицию, на которой запущен CUDA контекст все еще нельзя.
Почему же не материализовалась? Мы уже минимум двоих поймали за подобным "списыванием" во время собеседования. Не удивляйтесь, если собеседование начнет выглядеть как экзамен у "чокнутого" профессора, который время от времени начинает спрашивать совершенно отстраненные сбивающие с толку вопросы или прямо заявляет что верный ответ таковым не является. Хорошая была практика - студент уверенный в своих знаниях отстаивал правильность ответа, а студент без знаний начинал "уплывать". Вот так же теперь и ChatGPT ловить будут, и если собеседуемый бездумно читает с экрана, то попадется.
Если брать Нвидийные карточки, то большинство решений о которых есть публикации (FB/Meta, MS) делают решения на основе DCGM так или иначе. Есть несколько опенсорсных попыток сделать что-то вроде top/htop (кажется nvtop назывался), но они все, по сути, обертки над nvml со всеми вытекающими издержками на получение метрик. DCGM использует непубличные интерфейсы для возможности уменьшить издержки на системные вызовы. Так получилось, что это физически те же механизмы, что использует nsight, так что одновременный профайлинг и сбор метрик не работает. У Меты есть презентации как они на своих кластерах решают эту проблему (у DCGM есть механизм временной остановки сбора метрик, которые влияют на nsight).
Ну, по правде говоря, как раз модуль, ответственный за profiling metrics, как раз в open-source и не выложен. В nvml их к сожалению тоже нет. Все, что есть в NVML, вы видите в выводе nvidia-smi, по сути просто cli обертка над nvml api.
Это не "фейковая" утилизация. То, что вы смотрите через nvidia-smi это утилизация пайплайна. Она будет 100% даже если ядро не делает ничего кроме yield, как вы заметили.
Оставь надежду всяк сюда входящий. В свое время намучились с переносом управляющей софтины с qnx на винду. Нужно было с железкой общаться по протоколу где пакеты разделялись задержками меньше 1мс. В итоге плюнули и добавили в железку буфер с разбором пакетов на 16ms. Заставить винду стабильно работать с таймерами меньше 16мс это та еще головная боль. А разбираться почему эта фигня перестает работать у оператора у черта на куличках это х10 головная боль.
Пара замечаний:
- Приведенные ссылки на код лишь указывают на использование стандартного NVML API - того же самого, который используется nvidia-smi. Реальная логика находится здесь https://github.com/nebuly-ai/nos/blob/d5cc1d72b8ee52b79b8751c0b49122366e026ce1/internal/controllers/migagent/actuator.go#L152C25-L152C25. Здесь же видно, как именно происходит попытка создания-удаления и что при каждом чихе перезапускается nvidia-device-plugin на ноде.
- Ограничение не реконфигурацию MIG улучшилось в новых поколениях - H100 может изменить конфигурацию MIG при наличии активных CUDA контекстов. Естественно поменять/удалить партицию, на которой запущен CUDA контекст все еще нельзя.
Почему же не материализовалась? Мы уже минимум двоих поймали за подобным "списыванием" во время собеседования. Не удивляйтесь, если собеседование начнет выглядеть как экзамен у "чокнутого" профессора, который время от времени начинает спрашивать совершенно отстраненные сбивающие с толку вопросы или прямо заявляет что верный ответ таковым не является. Хорошая была практика - студент уверенный в своих знаниях отстаивал правильность ответа, а студент без знаний начинал "уплывать". Вот так же теперь и ChatGPT ловить будут, и если собеседуемый бездумно читает с экрана, то попадется.
А разве последний пример не проще будет написать в таком виде?
Если брать Нвидийные карточки, то большинство решений о которых есть публикации (FB/Meta, MS) делают решения на основе DCGM так или иначе. Есть несколько опенсорсных попыток сделать что-то вроде top/htop (кажется nvtop назывался), но они все, по сути, обертки над nvml со всеми вытекающими издержками на получение метрик. DCGM использует непубличные интерфейсы для возможности уменьшить издержки на системные вызовы. Так получилось, что это физически те же механизмы, что использует nsight, так что одновременный профайлинг и сбор метрик не работает. У Меты есть презентации как они на своих кластерах решают эту проблему (у DCGM есть механизм временной остановки сбора метрик, которые влияют на nsight).
Ну, по правде говоря, как раз модуль, ответственный за profiling metrics, как раз в open-source и не выложен. В nvml их к сожалению тоже нет. Все, что есть в NVML, вы видите в выводе nvidia-smi, по сути просто cli обертка над nvml api.
Это не "фейковая" утилизация. То, что вы смотрите через nvidia-smi это утилизация пайплайна. Она будет 100% даже если ядро не делает ничего кроме yield, как вы заметили.
Для более полной картины есть средства мониторинга DCGM https://developer.nvidia.com/dcgm. Посмотрите на метрики здесь https://docs.nvidia.com/datacenter/dcgm/latest/dcgm-user-guide/feature-overview.html#profiling. То, nvidia-smi показывает как утилизацию, наиболее близко к Graphics Engine Activity метрике. Обратите внимание на другие метрики и их значение. Да, они не работают с пользовательскими картами GTX/RTX серии. Нужны карты семейства Quadro/Tesla/Titan.
Оставь надежду всяк сюда входящий. В свое время намучились с переносом управляющей софтины с qnx на винду. Нужно было с железкой общаться по протоколу где пакеты разделялись задержками меньше 1мс. В итоге плюнули и добавили в железку буфер с разбором пакетов на 16ms. Заставить винду стабильно работать с таймерами меньше 16мс это та еще головная боль. А разбираться почему эта фигня перестает работать у оператора у черта на куличках это х10 головная боль.